gwenhywfar
4.3.1
|
00001 /*************************************************************************** 00002 begin : Aug 17 2010 00003 copyright : (C) 2010 by Samuel Strupp 00004 00005 *************************************************************************** 00006 * Please see toplevel file COPYING for license details * 00007 ***************************************************************************/ 00008 00009 00010 #import "CocoaScrollBox.h" 00011 00012 00013 00014 static GWENHYWFAR_CB 00015 int CocoaGui_WScrollArea_SetIntProperty(GWEN_WIDGET *w, 00016 GWEN_DIALOG_PROPERTY prop, 00017 int index, 00018 int value, 00019 int doSignal) { 00020 00021 CocoaScrollBox *scrollView; 00022 00023 scrollView = (CocoaScrollBox*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_CONTENT)); 00024 assert(scrollView); 00025 00026 switch(prop) { 00027 case GWEN_DialogProperty_Enabled: 00028 return 0; 00029 00030 case GWEN_DialogProperty_Focus: 00031 return 0; 00032 00033 case GWEN_DialogProperty_Width: { 00034 NSRect frame = [scrollView frame]; 00035 frame.size.width = value; 00036 [scrollView setFrame:frame]; 00037 } 00038 return 0; 00039 00040 case GWEN_DialogProperty_Height:{ 00041 NSRect frame = [scrollView frame]; 00042 frame.size.height = value; 00043 [scrollView setFrame:frame]; 00044 } 00045 return 0; 00046 00047 default: 00048 break; 00049 } 00050 DBG_WARN(GWEN_LOGDOMAIN, 00051 "Function is not appropriate for this type of widget (%s)", 00052 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00053 return GWEN_ERROR_INVALID; 00054 } 00055 00056 00057 00058 00059 static GWENHYWFAR_CB 00060 int CocoaGui_WScrollArea_GetIntProperty(GWEN_WIDGET *w, 00061 GWEN_DIALOG_PROPERTY prop, 00062 int index, 00063 int defaultValue) { 00064 CocoaScrollBox *scrollView; 00065 00066 scrollView = (CocoaScrollBox*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_CONTENT)); 00067 assert(scrollView); 00068 00069 switch(prop) { 00070 case GWEN_DialogProperty_Enabled: 00071 return 1; 00072 00073 case GWEN_DialogProperty_Focus: 00074 return 0; 00075 00076 case GWEN_DialogProperty_Width: 00077 return [scrollView frame].size.width; 00078 00079 case GWEN_DialogProperty_Height: 00080 return [scrollView frame].size.height; 00081 00082 default: 00083 break; 00084 } 00085 DBG_WARN(GWEN_LOGDOMAIN, 00086 "Function is not appropriate for this type of widget (%s)", 00087 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00088 return defaultValue; 00089 } 00090 00091 00092 00093 static GWENHYWFAR_CB 00094 int CocoaGui_WScrollArea_SetCharProperty(GWEN_WIDGET *w, 00095 GWEN_DIALOG_PROPERTY prop, 00096 int index, 00097 const char *value, 00098 int doSignal) { 00099 CocoaScrollBox *scrollView; 00100 00101 scrollView = (CocoaScrollBox*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_CONTENT)); 00102 assert(scrollView); 00103 00104 00105 DBG_WARN(GWEN_LOGDOMAIN, 00106 "Function is not appropriate for this type of widget (%s)", 00107 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00108 return GWEN_ERROR_INVALID; 00109 } 00110 00111 00112 00113 static GWENHYWFAR_CB 00114 const char* CocoaGui_WScrollArea_GetCharProperty(GWEN_WIDGET *w, 00115 GWEN_DIALOG_PROPERTY prop, 00116 int index, 00117 const char *defaultValue) { 00118 CocoaScrollBox *scrollView; 00119 00120 scrollView = (CocoaScrollBox*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_CONTENT)); 00121 assert(scrollView); 00122 00123 DBG_WARN(GWEN_LOGDOMAIN, 00124 "Function is not appropriate for this type of widget (%s)", 00125 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00126 return defaultValue; 00127 } 00128 00129 00130 00131 static GWENHYWFAR_CB 00132 int CocoaGui_WScrollArea_AddChildGuiWidget(GWEN_WIDGET *w, GWEN_WIDGET *wChild) { 00133 00134 00135 CocoaScrollBox *scrollView; 00136 NSView *childView; 00137 uint32_t cflags; 00138 00139 scrollView=(CocoaScrollBox*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 00140 assert(scrollView); 00141 00142 childView=(NSView*)(GWEN_Widget_GetImplData(wChild, COCOA_DIALOG_WIDGET_REAL)); 00143 assert(childView); 00144 00145 cflags=GWEN_Widget_GetFlags(wChild); 00146 00147 [scrollView setLayoutedDocumentView:childView]; 00148 00149 return 0; 00150 } 00151 00152 00153 00154 int CocoaGui_WScrollArea_Setup(GWEN_WIDGET *w) { 00155 //GtkWidget *g; 00156 //GtkWidget *gContent; 00157 CocoaScrollBox *scrollView; 00158 uint32_t flags; 00159 GWEN_WIDGET *wParent; 00160 00161 flags=GWEN_Widget_GetFlags(w); 00162 wParent=GWEN_Widget_Tree_GetParent(w); 00163 00164 /* create widget */ 00165 /*g=gtk_scrolled_window_new(NULL, NULL); 00166 gContent=gtk_vbox_new(TRUE, GTK2_GUI_DIALOG_DEFAULT_BOX_SPACING); 00167 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(g), gContent);*/ 00168 00169 scrollView = [[[CocoaScrollBox alloc] initWithFrame:NSMakeRect(0.0, 0.0, 100.0, 100.0)] autorelease]; 00170 [scrollView setHasVerticalScroller:YES]; 00171 [scrollView setHasHorizontalScroller:YES]; 00172 [scrollView setAutohidesScrollers:NO]; 00173 if (flags & GWEN_WIDGET_FLAGS_FILLX) scrollView.fillX = YES; 00174 if (flags & GWEN_WIDGET_FLAGS_FILLY) scrollView.fillY = YES; 00175 00176 GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_REAL, (void*) scrollView); 00177 GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_CONTENT, (void*) scrollView); 00178 00179 GWEN_Widget_SetSetIntPropertyFn(w, CocoaGui_WScrollArea_SetIntProperty); 00180 GWEN_Widget_SetGetIntPropertyFn(w, CocoaGui_WScrollArea_GetIntProperty); 00181 GWEN_Widget_SetSetCharPropertyFn(w, CocoaGui_WScrollArea_SetCharProperty); 00182 GWEN_Widget_SetGetCharPropertyFn(w, CocoaGui_WScrollArea_GetCharProperty); 00183 GWEN_Widget_SetAddChildGuiWidgetFn(w, CocoaGui_WScrollArea_AddChildGuiWidget); 00184 00185 if (wParent) 00186 GWEN_Widget_AddChildGuiWidget(wParent, w); 00187 00188 return 0; 00189 } 00190 00191