gwenhywfar
4.3.3
|
00001 /*************************************************************************** 00002 begin : August 10 2010 00003 copyright : (C) 2010 by Samuel Strupp 00004 00005 *************************************************************************** 00006 * Please see toplevel file COPYING for license details * 00007 ***************************************************************************/ 00008 00009 00010 #import "CocoaProgressbar.h" 00011 00012 00013 typedef struct W_PROGRESSBAR W_PROGRESSBAR; 00014 struct W_PROGRESSBAR { 00015 int minValue; 00016 int maxValue; 00017 int currentValue; 00018 }; 00019 00020 00021 GWEN_INHERIT(GWEN_WIDGET, W_PROGRESSBAR) 00022 00023 00024 00025 static GWENHYWFAR_CB 00026 int CocoaGui_WProgressBar_SetIntProperty(GWEN_WIDGET *w, 00027 GWEN_DIALOG_PROPERTY prop, 00028 int index, 00029 int value, 00030 int doSignal) { 00031 CocoaProgressbar *progressbar; 00032 W_PROGRESSBAR *xw; 00033 00034 assert(w); 00035 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, W_PROGRESSBAR, w); 00036 assert(xw); 00037 00038 progressbar=(CocoaProgressbar*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 00039 assert(progressbar); 00040 00041 switch(prop) { 00042 case GWEN_DialogProperty_Enabled: 00043 return 0; 00044 00045 case GWEN_DialogProperty_Focus: 00046 return 0; 00047 00048 case GWEN_DialogProperty_Width: { 00049 NSRect frame = [progressbar frame]; 00050 frame.size.width = value; 00051 [progressbar setFrame:frame]; 00052 } 00053 return 0; 00054 00055 case GWEN_DialogProperty_Height: { 00056 NSRect frame = [progressbar frame]; 00057 frame.size.height = value; 00058 [progressbar setFrame:frame]; 00059 } 00060 00061 return 0; 00062 00063 case GWEN_DialogProperty_Value: { 00064 double d; 00065 00066 xw->currentValue=value; 00067 d=(double)value; 00068 [progressbar setDoubleValue:d]; 00069 //NSLog(@"progressbar value = %f",d); 00070 return 0; 00071 } 00072 00073 case GWEN_DialogProperty_MinValue: { 00074 double d; 00075 00076 xw->minValue=value; 00077 d=(double)value; 00078 [progressbar setMinValue:d]; 00079 //NSLog(@"progressbar min value = %f",d); 00080 return 0; 00081 } 00082 00083 case GWEN_DialogProperty_MaxValue: { 00084 double d; 00085 00086 xw->maxValue=value; 00087 d=(double)value; 00088 [progressbar setMaxValue:d]; 00089 //NSLog(@"progressbar max value = %f",d); 00090 return 0; 00091 } 00092 00093 default: 00094 break; 00095 } 00096 00097 DBG_WARN(GWEN_LOGDOMAIN, 00098 "Function is not appropriate for this type of widget (%s)", 00099 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00100 return GWEN_ERROR_INVALID; 00101 } 00102 00103 00104 00105 00106 static GWENHYWFAR_CB 00107 int CocoaGui_WProgressBar_GetIntProperty(GWEN_WIDGET *w, 00108 GWEN_DIALOG_PROPERTY prop, 00109 int index, 00110 int defaultValue) { 00111 CocoaProgressbar *progressbar; 00112 W_PROGRESSBAR *xw; 00113 00114 assert(w); 00115 xw=GWEN_INHERIT_GETDATA(GWEN_WIDGET, W_PROGRESSBAR, w); 00116 assert(xw); 00117 00118 progressbar=(CocoaProgressbar*)(GWEN_Widget_GetImplData(w, COCOA_DIALOG_WIDGET_REAL)); 00119 assert(progressbar); 00120 00121 switch(prop) { 00122 case GWEN_DialogProperty_Enabled: 00123 return 1; 00124 00125 case GWEN_DialogProperty_Focus: 00126 return 0; 00127 00128 case GWEN_DialogProperty_Width: 00129 return [progressbar frame].size.width; 00130 case GWEN_DialogProperty_Height: 00131 return [progressbar frame].size.height; 00132 00133 case GWEN_DialogProperty_Value: 00134 return xw->currentValue; 00135 00136 case GWEN_DialogProperty_MinValue: 00137 return xw->minValue; 00138 00139 case GWEN_DialogProperty_MaxValue: 00140 return xw->maxValue; 00141 00142 default: 00143 break; 00144 } 00145 00146 DBG_WARN(GWEN_LOGDOMAIN, 00147 "Function is not appropriate for this type of widget (%s)", 00148 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00149 return defaultValue; 00150 } 00151 00152 00153 00154 static GWENHYWFAR_CB 00155 int CocoaGui_WProgressBar_SetCharProperty(GWEN_WIDGET *w, 00156 GWEN_DIALOG_PROPERTY prop, 00157 int index, 00158 const char *value, 00159 int doSignal) { 00160 DBG_WARN(GWEN_LOGDOMAIN, 00161 "Function is not appropriate for this type of widget (%s)", 00162 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00163 return GWEN_ERROR_INVALID; 00164 } 00165 00166 00167 00168 static GWENHYWFAR_CB 00169 const char* CocoaGui_WProgressBar_GetCharProperty(GWEN_WIDGET *w, 00170 GWEN_DIALOG_PROPERTY prop, 00171 int index, 00172 const char *defaultValue) { 00173 DBG_WARN(GWEN_LOGDOMAIN, 00174 "Function is not appropriate for this type of widget (%s)", 00175 GWEN_Widget_Type_toString(GWEN_Widget_GetType(w))); 00176 return defaultValue; 00177 } 00178 00179 00180 00181 static void GWENHYWFAR_CB CocoaGui_WProgressBar_FreeData(void *bp, void *p) { 00182 W_PROGRESSBAR *xw; 00183 00184 xw=(W_PROGRESSBAR*) p; 00185 GWEN_FREE_OBJECT(xw); 00186 } 00187 00188 00189 00190 int CocoaGui_WProgressBar_Setup(GWEN_WIDGET *w) { 00191 CocoaProgressbar *progressbar; 00192 //const char *s; 00193 uint32_t flags; 00194 GWEN_WIDGET *wParent; 00195 W_PROGRESSBAR *xw; 00196 00197 GWEN_NEW_OBJECT(W_PROGRESSBAR, xw); 00198 GWEN_INHERIT_SETDATA(GWEN_WIDGET, W_PROGRESSBAR, w, xw, CocoaGui_WProgressBar_FreeData); 00199 00200 flags=GWEN_Widget_GetFlags(w); 00201 wParent=GWEN_Widget_Tree_GetParent(w); 00202 //s=GWEN_Widget_GetText(w, 0); 00203 00204 //g=gtk_progress_bar_new(); 00205 progressbar = [[[CocoaProgressbar alloc] initWithFrame:NSMakeRect(0.0, 0.0, 100.0, 20.0)] autorelease]; 00206 if (flags & GWEN_WIDGET_FLAGS_FILLX) progressbar.fillX = YES; 00207 if (flags & GWEN_WIDGET_FLAGS_FILLY) progressbar.fillY = YES; 00208 [progressbar setIndeterminate:NO]; 00209 [progressbar setUsesThreadedAnimation:YES]; 00210 [progressbar startAnimation:nil]; 00211 GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_REAL, (void*) progressbar); 00212 GWEN_Widget_SetImplData(w, COCOA_DIALOG_WIDGET_CONTENT, (void*) progressbar); 00213 00214 GWEN_Widget_SetSetIntPropertyFn(w, CocoaGui_WProgressBar_SetIntProperty); 00215 GWEN_Widget_SetGetIntPropertyFn(w, CocoaGui_WProgressBar_GetIntProperty); 00216 GWEN_Widget_SetSetCharPropertyFn(w, CocoaGui_WProgressBar_SetCharProperty); 00217 GWEN_Widget_SetGetCharPropertyFn(w, CocoaGui_WProgressBar_GetCharProperty); 00218 00219 if (wParent) 00220 GWEN_Widget_AddChildGuiWidget(wParent, w); 00221 00222 return 0; 00223 } 00224 00225