gwenhywfar  4.3.1
w_gridlayout.mm
Go to the documentation of this file.
00001 /***************************************************************************
00002  begin       : August 16 2010
00003  copyright   : (C) 2010 by Samuel Strupp
00004  
00005  ***************************************************************************
00006  *          Please see toplevel file COPYING for license details           *
00007  ***************************************************************************/
00008 
00009 
00010 
00011 /*typedef struct GTK2_GRIDLAYOUT_WIDGET GTK2_GRIDLAYOUT_WIDGET;
00012  struct GTK2_GRIDLAYOUT_WIDGET {
00013  int sortByRow;
00014  int allocatedColumns;
00015  int allocatedRows;
00016  
00017  int currentColumn;
00018  int currentRow;
00019  };*/
00020 
00021 
00022 //GWEN_INHERIT(GWEN_WIDGET, GTK2_GRIDLAYOUT_WIDGET)
00023 
00024 #import "CocoaGridLayout.h"
00025 
00026 
00027 static GWENHYWFAR_CB
00028 int CocoaGui_WGridLayout_SetIntProperty(GWEN_WIDGET *w,
00029                                                                                 GWEN_DIALOG_PROPERTY prop,
00030                                                                                 int index,
00031                                                                                 int value,
00032                                                                                 int doSignal) {
00033         CocoaGridLayout *gridLayout;
00034         
00035         gridLayout = (CocoaGridLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL));
00036         assert(gridLayout);
00037         
00038         switch(prop) {
00039                 case GWEN_DialogProperty_Enabled:
00040                         //gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE);
00041                         return 0;
00042                         
00043                 case GWEN_DialogProperty_Focus:
00044                         //gtk_widget_grab_focus(GTK_WIDGET(g));
00045                         return 0;
00046                         
00047                 default:
00048                         break;
00049         }
00050         
00051         DBG_WARN(GWEN_LOGDOMAIN,
00052                          "Function is not appropriate for this type of widget (%s)",
00053                          GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00054         return GWEN_ERROR_INVALID;
00055 }
00056 
00057 
00058 
00059 
00060 static GWENHYWFAR_CB
00061 int CocoaGui_WGridLayout_GetIntProperty(GWEN_WIDGET *w,
00062                                                                                 GWEN_DIALOG_PROPERTY prop,
00063                                                                                 int index,
00064                                                                                 int defaultValue) {
00065         CocoaGridLayout *gridLayout;
00066         
00067         gridLayout = (CocoaGridLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL));
00068         assert(gridLayout);
00069         
00070         switch(prop) {
00071                 case GWEN_DialogProperty_Enabled:
00072                         //return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0;
00073                         return 1;
00074                         
00075                 case GWEN_DialogProperty_Focus:
00076                         //return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0;
00077                         return 0;
00078                         
00079                 default:
00080                         break;
00081         }
00082         
00083         DBG_WARN(GWEN_LOGDOMAIN,
00084                          "Function is not appropriate for this type of widget (%s)",
00085                          GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00086         return defaultValue;
00087 }
00088 
00089 
00090 
00091 static GWENHYWFAR_CB
00092 int CocoaGui_WGridLayout_SetCharProperty(GWEN_WIDGET *w,
00093                                                                                  GWEN_DIALOG_PROPERTY prop,
00094                                                                                  int index,
00095                                                                                  const char *value,
00096                                                                                  int doSignal) {
00097         CocoaGridLayout *gridLayout;
00098         
00099         gridLayout = (CocoaGridLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL));
00100         assert(gridLayout);
00101         
00102         DBG_WARN(GWEN_LOGDOMAIN,
00103                          "Function is not appropriate for this type of widget (%s)",
00104                          GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00105         return GWEN_ERROR_INVALID;
00106 }
00107 
00108 
00109 
00110 static GWENHYWFAR_CB
00111 const char* CocoaGui_WGridLayout_GetCharProperty(GWEN_WIDGET *w,
00112                                                                                                  GWEN_DIALOG_PROPERTY prop,
00113                                                                                                  int index,
00114                                                                                                  const char *defaultValue) {
00115         CocoaGridLayout *gridLayout;
00116         
00117         gridLayout = (CocoaGridLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL));
00118         assert(gridLayout);
00119         
00120         DBG_WARN(GWEN_LOGDOMAIN,
00121                          "Function is not appropriate for this type of widget (%s)",
00122                          GWEN_Widget_Type_toString(GWEN_Widget_GetType(w)));
00123         return defaultValue;
00124 }
00125 
00126 
00127 
00128 static GWENHYWFAR_CB
00129 int CocoaGui_WGridLayout_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) {
00130         CocoaGridLayout *gridLayout;
00131         NSView *childView;
00132         uint32_t cflags;
00133         
00134         gridLayout=(CocoaGridLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL));
00135         assert(gridLayout);
00136         
00137         childView=(NSView*)(GWEN_Widget_GetImplData(wChild, COCOA_DIALOG_WIDGET_REAL));
00138         assert(childView);
00139         
00140         cflags=GWEN_Widget_GetFlags(wChild);
00141         
00142         [gridLayout addLayoutSubview:childView];
00143                 
00144         return 0;
00145         
00146         /*  GTK2_GRIDLAYOUT_WIDGET *xw;
00147          GtkWidget *g;
00148          GtkWidget *gChild;
00149          uint32_t cflags;
00150          int x;
00151          int y;
00152          
00153          assert(w);
00154          xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, GTK2_GRIDLAYOUT_WIDGET, w);
00155          assert(xw);
00156          
00157          cflags=GWEN_Widget_GetFlags(wChild);
00158          
00159          g=GTK_WIDGET(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL));
00160          assert(g);
00161          
00162          gChild=GTK_WIDGET(GWEN_Widget_GetImplData(wChild, GTK2_DIALOG_WIDGET_REAL));
00163          assert(gChild);
00164          
00165          if (xw->sortByRow) {
00166          // fill rows, enter next column if column full
00167          y=(xw->currentRow)++;
00168          if (y>=xw->allocatedRows) {
00169          xw->currentRow=0;
00170          y=(xw->currentRow)++;
00171          xw->currentColumn++;
00172          }
00173          
00174          x=xw->currentColumn;
00175          if (x>=xw->allocatedColumns) {
00176          xw->allocatedColumns=x+1;
00177          gtk_table_resize(GTK_TABLE(g), xw->allocatedRows, xw->allocatedColumns);
00178          }
00179          }
00180          else {
00181          // fill columns, enter next row if row full
00182          x=(xw->currentColumn)++;
00183          if (x>=xw->allocatedColumns) {
00184          xw->currentColumn=0;
00185          x=(xw->currentColumn)++;
00186          xw->currentRow++;
00187          }
00188          
00189          y=xw->currentRow;
00190          if (y>=xw->allocatedRows) {
00191          xw->allocatedRows=y+1;
00192          gtk_table_resize(GTK_TABLE(g), xw->allocatedRows, xw->allocatedColumns);
00193          }
00194          }
00195          
00196          gtk_table_attach(GTK_TABLE(g), gChild,
00197          x, x+1, y, y+1,
00198          (cflags & GWEN_WIDGET_FLAGS_FILLX)?(GTK_FILL|GTK_EXPAND):0,
00199          (cflags & GWEN_WIDGET_FLAGS_FILLY)?(GTK_FILL|GTK_EXPAND):0,
00200          GTK2_GUI_DIALOG_DEFAULT_BOX_SPACING,
00201          GTK2_GUI_DIALOG_DEFAULT_BOX_SPACING);*/
00202         
00203         return 0;
00204 }
00205 
00206 
00207 
00208 
00209 /*static GWENHYWFAR_CB
00210  void Gtk2Gui_WGridLayout_FreeData(void *bp, void *p) {
00211  GTK2_GRIDLAYOUT_WIDGET *xw;
00212  
00213  xw=(GTK2_GRIDLAYOUT_WIDGET*) p;
00214  
00215  GWEN_FREE_OBJECT(xw);
00216  }*/
00217 
00218 
00219 
00220 int CocoaGui_WGridLayout_Setup(GWEN_WIDGET *w) {
00221         CocoaGridLayout *gridLayout;
00222         uint32_t flags;
00223         GWEN_WIDGET *wParent;
00224         //GTK2_GRIDLAYOUT_WIDGET *xw;
00225         int rows;
00226         int cols;
00227         
00228         //GWEN_NEW_OBJECT(GTK2_GRIDLAYOUT_WIDGET, xw);
00229         //GWEN_INHERIT_SETDATA(GWEN_WIDGET, GTK2_GRIDLAYOUT_WIDGET, w, xw, Gtk2Gui_WGridLayout_FreeData);*/
00230         
00231         flags=GWEN_Widget_GetFlags(w);
00232         wParent=GWEN_Widget_Tree_GetParent(w);
00233         cols=GWEN_Widget_GetColumns(w);
00234         rows=GWEN_Widget_GetRows(w);
00235         
00236         
00237         gridLayout = [[[CocoaGridLayout alloc] initWithFrame:NSMakeRect(10.0, 10.0, 200.0, 200.0)] autorelease];
00238         gridLayout.columns = cols;
00239         gridLayout.rows = rows;
00240         if (flags & GWEN_WIDGET_FLAGS_FILLX) gridLayout.fillX = YES;
00241         if (flags & GWEN_WIDGET_FLAGS_FILLY) gridLayout.fillY = YES;
00242         
00243         
00244         GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_REAL, (void*) gridLayout);
00245         GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_CONTENT, (void*) gridLayout);
00246         
00247         GWEN_Widget_SetSetIntPropertyFn(w, CocoaGui_WGridLayout_SetIntProperty);
00248         GWEN_Widget_SetGetIntPropertyFn(w, CocoaGui_WGridLayout_GetIntProperty);
00249         GWEN_Widget_SetSetCharPropertyFn(w, CocoaGui_WGridLayout_SetCharProperty);
00250         GWEN_Widget_SetGetCharPropertyFn(w, CocoaGui_WGridLayout_GetCharProperty);
00251         GWEN_Widget_SetAddChildGuiWidgetFn(w, CocoaGui_WGridLayout_AddChildGuiWidget);
00252         
00253         if (wParent)
00254                 GWEN_Widget_AddChildGuiWidget(wParent, w);
00255         
00256         return 0;
00257 }
00258 
00259