00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _vdkcustombutton_h
00028 #define _vdkcustombutton_h
00029 #include <vdk/vdkobj.h>
00030 #include <vdk/boxes.h>
00031 #include <vdk/label.h>
00032 #include <vdk/image.h>
00033 #include <vdk/menu.h>
00034
00047 class VDKCustomButton: public VDKObject
00048 {
00049 protected:
00050 void ConnectButtonSignals();
00051 static void ToggleEvent(GtkWidget *wid, gpointer gp);
00052 public:
00053
00059 VDKReadOnlyValueProp<VDKCustomButton, VDKBox*> ButtonBox;
00072 VDKReadOnlyValueProp<VDKCustomButton, VDKLabel*> Label;
00077 VDKReadOnlyValueProp<VDKCustomButton, VDKImage*> Pixmap;
00081 VDKReadWriteValueProp<VDKCustomButton, const char*> Caption;
00085 VDKReadWriteValueProp<VDKCustomButton, bool> CaptionWrap;
00086
00087
00088
00089
00090
00091 VDKReadWriteValueProp<VDKCustomButton, bool> Checked;
00092
00093
00094
00095
00096
00097 VDKReadWriteValueProp<VDKCustomButton, GtkReliefStyle> Relief;
00121 VDKCustomButton(VDKForm* owner,
00122 const char* label,
00123 unsigned int type =
00124 VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL);
00132 VDKCustomButton(VDKForm* owner,
00133 const char* pixfile,
00134 const char* label,
00135 unsigned int type =
00136 VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL,
00137 GtkPositionType position = GTK_POS_RIGHT);
00141 VDKCustomButton(VDKForm* owner,
00142 const char** pixdata,
00143 const char* label,
00144 unsigned int type =
00145 VDK_CBUTTON_UNTOGGLED | VDK_CBUTTON_NORMAL,
00146 GtkPositionType position = GTK_POS_RIGHT);
00147
00148 ~VDKCustomButton();
00154 void SetComboMenu(VDKMenu* menu);
00155
00156
00157
00158 virtual void SetForeground(VDKRgb color,
00159 GtkStateType state = GTK_STATE_NORMAL)
00160 {
00161 VDKLabel *label = Label;
00162 if( label)
00163 _setForeground_(label->Widget(),
00164 color.red,
00165 color.green,
00166 color.blue,
00167 state);
00168 }
00169
00170
00171 virtual void SetFont(VDKFont* font)
00172 {
00173 VDKLabel *label = Label;
00174 if( label)
00175 _setFont_(label->Widget(),font);
00176 }
00177
00178
00179 void SetCaption(const char* str)
00180 {
00181 VDKLabel *label = Label;
00182 if( label)
00183 label->Caption = str;
00184 }
00185
00186
00187 const char* GetCaption ()
00188 {
00189 VDKLabel *label = Label;
00190 if( label)
00191 return label->Caption;
00192 else
00193 return (const char*) NULL;
00194 }
00195
00196
00197 void SetCaptionWrap (bool flag)
00198 {
00199 VDKLabel *label = Label;
00200 if( label)
00201 gtk_label_set_line_wrap (GTK_LABEL (label->Widget()), flag);
00202 }
00203
00204
00205 bool GetCaptionWrap ()
00206 {
00207 VDKLabel *label = Label;
00208 if( label)
00209 return GTK_LABEL (label->Widget())->wrap;
00210 else
00211 return false;
00212 }
00213
00214
00215 void SetRelief(GtkReliefStyle style)
00216 {
00217 if(GTK_IS_BUTTON(widget))
00218 gtk_button_set_relief(GTK_BUTTON(widget), style);
00219 }
00220
00221
00222 GtkReliefStyle GetRelief()
00223 {
00224 if(GTK_IS_BUTTON(widget))
00225 return gtk_button_get_relief(GTK_BUTTON(widget));
00226 else
00227 return GTK_RELIEF_NORMAL;
00228 }
00229
00230
00231 void Toggle() {
00232 if(GTK_IS_TOGGLE_BUTTON(widget))
00233 Checked = Checked ? false : true;
00234 }
00235
00236
00237 void SetChecked(bool flag)
00238 {
00239 if(GTK_IS_TOGGLE_BUTTON(widget))
00240 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget),flag);
00241 }
00242
00243
00244 bool GetChecked()
00245 {
00246 if(GTK_IS_TOGGLE_BUTTON(widget))
00247 return GTK_TOGGLE_BUTTON(widget)->active ? true : false;
00248 else
00249 return false;
00250 }
00251
00252
00253 virtual void Enable(bool flag = true);
00254 #ifdef USE_SIGCPLUSPLUS
00255 public:
00261 VDKSignal1<void, bool> OnButtonToggled;
00266 VDKSignal0<void> OnButtonClicked;
00271 VDKSignal0<void> OnButtonPressed;
00276 VDKSignal0<void> OnButtonLeave;
00277 private:
00278 static void _handle_clicked(GtkWidget*, gpointer);
00279 static void _handle_pressed(GtkWidget*, gpointer);
00280 static void _handle_leave(GtkWidget*, gpointer);
00281 #endif
00282 };
00283
00284 #endif