gwenhywfar  4.3.3
w_progressbar.mm
Go to the documentation of this file.
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