00001
00002
00003
00004
00005
00006
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
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
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
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
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
00203
00204
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