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 #ifndef _ugadgets_hpp_
00026 #define _ugadgets_hpp_
00027
00028 #include <ubit/ustr.hpp>
00029 #include <ubit/ubox.hpp>
00030 #include <ubit/uedit.hpp>
00031
00032
00035 class USepar: public UBox {
00036 int orient;
00037 public:
00038 static UStyle *hstyle, *vstyle;
00039
00040 USepar(const class UOrient&, const UArgs& a = UArgs::none);
00041 USepar(const UArgs& a = UArgs::none);
00042
00043 friend USepar& usepar(const UArgs& a = UArgs::none);
00044 friend USepar& usepar(const class UOrient&, const UArgs& a = UArgs::none);
00045 friend USepar& uhsepar(const UArgs& a = UArgs::none);
00046 friend USepar& uvsepar(const UArgs& a = UArgs::none);
00047
00048 virtual const UStyle& getStyle(UContext*) const;
00049 static const UStyle& makeVStyle();
00050 static const UStyle& makeHStyle();
00051 };
00052
00053
00054
00055
00072 class ULabel: public UBox {
00073 public:
00074 static UStyle *style;
00075
00076 ULabel(const UArgs& a = UArgs::none);
00078
00079 friend ULabel& ulabel(const UArgs& a = UArgs::none) {return *new ULabel(a);}
00081
00082 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00083 static const UStyle& makeStyle();
00084 };
00085
00086
00087
00100 class UItem: public UBox {
00101 public:
00102 static UStyle *style;
00103
00104 UItem(const UArgs& = UArgs::none);
00105 friend UItem& uitem(const UArgs& a = UArgs::none) {return *new UItem(a);}
00106
00107 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00108 static const UStyle& makeStyle();
00109 };
00110
00111
00112
00154 class UButton: public UBox {
00155 public:
00156 static UStyle *style, *menuStyle, *barStyle, *flatStyle, *linkStyle;
00158
00159 UButton(const UArgs& a = UArgs::none);
00161
00162 friend UButton& ubutton(const UArgs& a = UArgs::none) {return *new UButton(a);}
00164
00165 virtual const UStyle& getStyle(UContext*) const;
00173 static const UStyle& makeStyle();
00174 static const UStyle& makeMenuStyle();
00175 static const UStyle& makeBarStyle();
00176 static const UStyle& makeFlatStyle();
00177 static const UStyle& makeLinkStyle();
00178 };
00179
00180
00184 class UFlatbutton: public UButton {
00185 public:
00186 UFlatbutton(const UArgs& a = UArgs::none);
00187 friend UFlatbutton& uflatbutton(const UArgs& a = UArgs::none) {return *new UFlatbutton(a);}
00188
00189 virtual const UStyle& getStyle(UContext*) const {return UButton::makeFlatStyle();}
00190 };
00191
00192
00196 class ULinkbutton: public UButton {
00197 public:
00198 ULinkbutton(const UArgs& a = UArgs::none);
00199 friend ULinkbutton& ulinkbutton(const UArgs& a = UArgs::none) {return *new ULinkbutton(a);}
00200
00201 virtual const UStyle& getStyle(UContext*) const {return UButton::makeLinkStyle();}
00202 };
00203
00204
00207 class URadiobutton: public UButton {
00208 public:
00209 URadiobutton(const UArgs& a = UArgs::none);
00210 friend URadiobutton& uradiobutton(const UArgs& a = UArgs::none) {return *new URadiobutton(a);}
00211
00212 virtual const UStyle& getStyle(UContext*) const;
00213 };
00214
00215
00229 class UCheckbox: public UBox {
00230 public:
00232 static UStyle *style, *menuStyle, *barStyle;
00233
00234 UCheckbox(const UArgs& = UArgs::none);
00235 friend UCheckbox& ucheckbox(const UArgs& a = UArgs::none) {return *new UCheckbox(a);};
00236
00237 virtual const UStyle& getStyle(UContext*) const;
00238 };
00239
00240
00241
00289 class UTextbox: public UBox {
00290 public:
00291 static UStyle *style;
00292
00293 UTextbox(const UArgs& = UArgs::none);
00295
00296 friend UTextbox& utextbox(const UArgs& a = UArgs::none) {return *new UTextbox(a);}
00298
00299 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00300 static const UStyle& makeStyle();
00301 };
00302
00303
00304
00366 class UTextfield: public UTextbox {
00367 public:
00368 UTextfield(const UArgs& = UArgs::none);
00370
00371 friend UTextfield& utextfield(const UArgs& a = UArgs::none)
00372 {return *new UTextfield(a);}
00374
00375 UEdit& edit() {return *pedit;}
00376 const UEdit& edit() const {return *pedit;}
00377
00378 virtual void setEditable(bool state = true) {edit().setEditable(state);}
00379 virtual bool isEditable() const {return edit().isEditable();}
00380
00381 private:
00382 uptr<UEdit> pedit;
00383 };
00384
00385
00386
00458 class UListbox: public UBox {
00459 public:
00460 static UStyle *style;
00461
00462 UListbox(const UArgs& a = UArgs::none);
00463
00464 friend UListbox& ulistbox(const UArgs& a = UArgs::none)
00465 {return *new UListbox(a);}
00466
00467 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00468 static const UStyle& makeStyle();
00469
00470 class UChoice& choice() const {return *pchoice;}
00471
00472
00473
00474
00475
00476 UListbox& addItem(UStr*);
00477 UListbox& addItems(const std::vector<UStr*>& str_list);
00478 UListbox& addItems(const UArgs& item_prefix, const std::vector<UStr*>& str_list);
00480
00481 UListbox& addItem(const char*);
00482 UListbox& addItems(const char* string_list[]);
00483 UListbox& addItems(const UArgs& item_prefix, const char* string_list[]);
00485
00486
00487
00488
00489
00490
00491
00492 protected:
00493 uptr<class UChoice> pchoice;
00494 uptr<UCall> callbacks;
00495 virtual void mouseCB(UEvent&);
00496 };
00497
00498
00499
00535 class UCombobox : public UTextfield {
00536 public:
00537 UCombobox(class UListbox& list, const UArgs& = UArgs::none);
00538
00539 friend UCombobox& ucombobox(class UListbox& list, const UArgs& a = UArgs::none)
00540 {return *new UCombobox(list, a);}
00541
00542 class UListbox& list() {return *plist;}
00543 const class UListbox& list() const {return *plist;}
00544
00545 class UChoice& choice();
00546 const class UChoice& choice() const;
00547
00548 bool isTextMode() const {return text_only;};
00549 void setTextMode(bool = true);
00550 UCombobox& textMode(bool st = true) {setTextMode(st); return *this;}
00551
00552
00553
00554 private:
00555 uptr<class UListbox> plist;
00556 uptr<UGroup> pentry;
00557 uptr<class UMenu> pmenu;
00558 bool text_only;
00559 virtual void changed(bool upd, bool call_cb);
00560 virtual void openMenu(UEvent&);
00561 };
00562
00563
00564
00567 class USpinbox : public UBox {
00568 public:
00569 static UStyle *style;
00570
00571 USpinbox(const UArgs& = UArgs::none);
00573
00574 USpinbox(UIntg& value, const UArgs& = UArgs::none);
00575 USpinbox(UIntg& value, UIntg& increment, const UArgs& = UArgs::none);
00588 friend USpinbox& uspinbox(const UArgs& a = UArgs::none)
00589 {return *new USpinbox(a);}
00590
00591 friend USpinbox& uspinbox(UIntg& value, const UArgs& a = UArgs::none)
00592 {return *new USpinbox(value, a);}
00594
00595 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00596 static const UStyle& makeStyle();
00597
00598
00599
00600 virtual void setValue(const UIntg&);
00601 virtual void setIncrement(const UIntg&);
00602 virtual void setStr(const UStr&);
00603
00604 UIntg& value() const {return *pvalue;}
00605 UIntg& increment() const {return *pincrement;}
00606 UStr& str() const {return *pstr;}
00614
00615
00616
00617 virtual void constructs(const UArgs& a);
00618 virtual void valueChanged();
00619 virtual void updateValue(int dir);
00620
00621 private:
00622 uptr<UIntg> pvalue, pincrement;
00623 uptr<UStr> pstr;
00624 UTextbox textbox;
00625 };
00626
00627
00628
00631 class UAlertbox : public UVbox {
00632 UGroup message;
00633
00634 public:
00635 UAlertbox(const UArgs& = UArgs::none);
00636 virtual void show(bool = true);
00637 virtual void show(const UStr& mesg);
00638 };
00639
00640 #endif
00641
00642