1/*************************************************************************** 2 begin : August 10 2010 3 copyright : (C) 2010 by Samuel Strupp 4 5 *************************************************************************** 6 * Please see toplevel file COPYING for license details * 7 ***************************************************************************/ 8 9 10 11#import "CocoaHLayout.h" 12 13 14 15static GWENHYWFAR_CB 16int CocoaGui_WHLayout_SetIntProperty(GWEN_WIDGET *w, 17 GWEN_DIALOG_PROPERTY prop, 18 int index, 19 int value, 20 int doSignal) { 21 CocoaHLayout *hlayout; 22 23 hlayout=(CocoaHLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 24 assert(hlayout); 25 26 switch(prop) { 27 case GWEN_DialogProperty_Enabled: 28 //gtk_widget_set_sensitive(GTK_WIDGET(g), (value==0)?FALSE:TRUE); 29 return 0; 30 31 case GWEN_DialogProperty_Focus: 32 //gtk_widget_grab_focus(GTK_WIDGET(g)); 33 return 0; 34 35 default: 36 break; 37 } 38 39 DBG_WARN(GWEN_LOGDOMAIN, 40 "Function is not appropriate for this type of widget (%s)", 41 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 42 return GWEN_ERROR_INVALID; 43} 44 45 46 47 48static GWENHYWFAR_CB 49int CocoaGui_WHLayout_GetIntProperty(GWEN_WIDGET *w, 50 GWEN_DIALOG_PROPERTY prop, 51 int index, 52 int defaultValue) { 53 CocoaHLayout *hlayout; 54 55 hlayout=(CocoaHLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 56 assert(hlayout); 57 58 switch(prop) { 59 case GWEN_DialogProperty_Enabled: 60 //return (gtk_widget_get_sensitive(GTK_WIDGET(g))==TRUE)?1:0; 61 return 1; 62 63 case GWEN_DialogProperty_Focus: 64 //return (gtk_widget_has_focus(GTK_WIDGET(g))==TRUE)?1:0; 65 return 0; 66 67 default: 68 break; 69 } 70 DBG_WARN(GWEN_LOGDOMAIN, 71 "Function is not appropriate for this type of widget (%s)", 72 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 73 return defaultValue; 74} 75 76 77 78static GWENHYWFAR_CB 79int CocoaGui_WHLayout_SetCharProperty(GWEN_WIDGET *w, 80 GWEN_DIALOG_PROPERTY prop, 81 int index, 82 const char *value, 83 int doSignal) { 84 /*CocoaHLayout *hlayout; 85 86 hlayout=(CocoaHLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 87 assert(hlayout);*/ 88 89 DBG_WARN(GWEN_LOGDOMAIN, 90 "Function is not appropriate for this type of widget (%s)", 91 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 92 return GWEN_ERROR_INVALID; 93} 94 95 96 97static GWENHYWFAR_CB 98const char* CocoaGui_WHLayout_GetCharProperty(GWEN_WIDGET *w, 99 GWEN_DIALOG_PROPERTY prop, 100 int index, 101 const char *defaultValue) { 102 /*CocoaHLayout *hlayout; 103 104 hlayout=(CocoaHLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 105 assert(hlayout);*/ 106 107 DBG_WARN(GWEN_LOGDOMAIN, 108 "Function is not appropriate for this type of widget (%s)", 109 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 110 return defaultValue; 111} 112 113 114 115static GWENHYWFAR_CB 116int CocoaGui_WHLayout_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) { 117 CocoaHLayout *hlayout; 118 NSView *childView; 119 uint32_t cflags; 120 121 hlayout=(CocoaHLayout*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 122 assert(hlayout); 123 124 childView=(NSView*)(GWEN_Widget_GetImplData(wChild, COCOA_DIALOG_WIDGET_REAL)); 125 assert(childView); 126 127 cflags=GWEN_Widget_GetFlags(wChild); 128 129 [hlayout addLayoutSubview:childView]; 130 131 /*gtk_box_pack_start(GTK_BOX(g), gChild, 132 (cflags & GWEN_WIDGET_FLAGS_FILLX)?TRUE:FALSE, 133 (cflags & GWEN_WIDGET_FLAGS_FILLX)?TRUE:FALSE, 134 0);*/ 135 136 return 0; 137} 138 139 140 141int CocoaGui_WHLayout_Setup(GWEN_WIDGET *w) { 142 CocoaHLayout *hlayout; 143 uint32_t flags; 144 GWEN_WIDGET *wParent; 145 146 flags=GWEN_Widget_GetFlags(w); 147 wParent=GWEN_Widget_Tree_GetParent(w); 148 149 150 hlayout = [[[CocoaHLayout alloc] initWithFrame:NSMakeRect(10.0, 10.0, 200.0, 200.0)] autorelease]; 151 if (flags & GWEN_WIDGET_FLAGS_FILLX) hlayout.fillX = YES; 152 if (flags & GWEN_WIDGET_FLAGS_FILLY) hlayout.fillY = YES; 153 /*#if 0 154 // using equal width here doesn't seem to be working as expected: 155 // I would expect al children be of equal width, but instead all children are 156 // equally distant to each other while still being of different width... 157 // 158 g=gtk_hbox_new((flags & GWEN_WIDGET_FLAGS_EQUAL_WIDTH)?TRUE:FALSE, 159 GTK2_GUI_DIALOG_DEFAULT_BOX_SPACING); 160 #else 161 g=gtk_hbox_new(FALSE, GTK2_GUI_DIALOG_DEFAULT_BOX_SPACING); 162 #endif*/ 163 GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_REAL, (void*) hlayout); 164 GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_CONTENT, (void*) hlayout); 165 166 GWEN_Widget_SetSetIntPropertyFn(w, CocoaGui_WHLayout_SetIntProperty); 167 GWEN_Widget_SetGetIntPropertyFn(w, CocoaGui_WHLayout_GetIntProperty); 168 GWEN_Widget_SetSetCharPropertyFn(w, CocoaGui_WHLayout_SetCharProperty); 169 GWEN_Widget_SetGetCharPropertyFn(w, CocoaGui_WHLayout_GetCharProperty); 170 GWEN_Widget_SetAddChildGuiWidgetFn(w, CocoaGui_WHLayout_AddChildGuiWidget); 171 172 if (wParent) 173 GWEN_Widget_AddChildGuiWidget(wParent, w); 174 175 return 0; 176} 177 178 179