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 _uwin_hpp_
00026 #define _uwin_hpp_
00027
00028 #include <ubit/ubox.hpp>
00029 #include <ubit/uview.hpp>
00030
00053 class UWin : public UBox {
00054 public:
00055 static UStyle *style;
00056
00057 UWin(const UArgs&);
00059
00060 virtual ~UWin();
00062
00063 virtual class UWin* winCast() {return this;}
00064
00065 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00066 static const UStyle& makeStyle();
00067
00068
00069
00070 virtual void move(UWin*, u_pos x_in_win, u_pos y_in_win, UDisp* = null);
00072
00073 virtual void move(class UView*, u_pos x_in_view, u_pos y_in_view);
00075
00076 virtual void move(class UView*, class UPlacement&);
00078
00079 virtual void move(class UEvent*, u_pos x_offset, u_pos y_offset);
00080 virtual void move(class UEvent&, u_pos x_offset, u_pos y_offset);
00082
00083 virtual void moveOnScreen(u_pos x_in_screen, u_pos y_in_screen, UDisp* = null);
00085
00086 virtual void moveAndCenter(UDisp* = null);
00088
00089 virtual bool where(UWin*, u_pos &x, u_pos &y, UDisp* = null) const;
00091
00092 virtual bool where(class UView*, u_pos &x, u_pos &y) const;
00094
00095 virtual bool whereOnScreen(u_pos &x, u_pos &y, UDisp* = null) const;
00097
00098 virtual void resize(u_dim width, u_dim height, UDisp* = null);
00100
00101 virtual bool getSize(u_dim& width, u_dim& height, UDisp* = null) const;
00102 virtual u_dim getWidth( UDisp* = null) const;
00103 virtual u_dim getHeight( UDisp* = null) const;
00105
00106
00107
00108 virtual void highlight(bool state);
00109
00110 virtual void close(int status = 0);
00124 virtual int lock(UDisp* = null);
00137 virtual void show(bool state, UDisp*);
00138 virtual void show(bool state = true);
00147 virtual bool isShown() const;
00149
00150 virtual void setModal(bool) ;
00152
00153 virtual bool isModal() const;
00155
00156 virtual void toBack();
00158
00159 virtual void toFront();
00161
00162 virtual void update();
00163 virtual void update(class UUpdate upmode);
00164 virtual void update(class UUpdate upmode, UDisp*);
00176
00177
00178 class UView* getWinViews() const {return winviews;}
00179 class UView* getWinView(class UDisp*) const;
00181
00182 class UAppli* getAppli() const;
00184
00185
00187
00188 virtual void setSoftwinMode(bool = true);
00189 UWin& softwin() {setSoftwinMode(true); return *this;}
00196 bool isHardwin() const {return is_hardwin;}
00197 bool isSoftwin() const {return !is_hardwin;}
00209
00210
00211
00212 virtual bool realize() = 0;
00220 class UWinGraph* getWinGraph(class UDisp* = null) const;
00222
00223 class UNatWin* getNatWin(class UDisp* = null) const;
00225
00226 #ifndef NO_DOC
00227
00228 friend class UBox;
00229 friend class UAppli;
00230 friend class UBoxLink;
00231 friend class UHardwinImpl;
00232 friend class USoftwinImpl;
00233 friend class UNatWin;
00234 friend class UNatDisp;
00235
00236 class ULink* getSubSoftwinLink() const;
00237 void addWinView(class UView*);
00238
00239 virtual void initView(ULink* selflink, UView* ancestor_view);
00240 virtual UView* _initView(ULink* selflink, UView* ancestor_view, UDisp*);
00241 virtual void deleteRelatedViews(class UView* parview, class ULink*);
00242
00243
00244 protected:
00245 bool is_hardwin;
00246 class UView* winviews;
00247 union {
00248 void* initialized;
00249 class USoftwinImpl* soft;
00250 class UHardwinImpl* hard;
00251 } impl;
00252
00253 virtual UView* realizeSoftwin(UWin* hardwin, UView* hardwin_view);
00254 virtual bool realizeHardwin(bool (*xrealize)(class UNatDisp*,
00255 class UNatWin*, UWin*));
00257
00258 virtual void realizeChildren(class UView* winview);
00260
00261 #endif
00262 };
00263
00264
00265
00266
00281 class UDialog : public UWin {
00282 public:
00283 static UStyle *style;
00284
00285 UDialog(const UArgs& = UArgs::none);
00287
00288 friend UDialog& udialog(const UArgs& a = UArgs::none) {return *new UDialog(a);}
00290
00291 virtual ~UDialog() {destructs();}
00292
00293
00294
00295 virtual void show(bool state, UDisp*);
00296 virtual void show(bool state = true);
00297 virtual bool realize();
00298
00299
00300
00301 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00302 static const UStyle& makeStyle();
00303
00304 #ifndef NO_DOC
00305
00306
00307
00308 virtual void addingTo(class ULink *selflink, UGroup *parent);
00309 virtual void removingFrom(class ULink *selflink, UGroup *parent);
00311
00312 private:
00313 UCall* open_call;
00314 #endif
00315 };
00316
00317
00318
00319
00335 class UFrame : public UDialog {
00336 friend class UAppli;
00337 bool is_main_frame;
00338 public:
00339 static UStyle *style;
00340
00341 UFrame(const UArgs& a = UArgs::none);
00343
00344 friend UFrame& uframe(const UArgs& a = UArgs::none) {return *new UFrame(a);}
00346
00347
00348
00349 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00350 static const UStyle& makeStyle();
00351
00352
00353
00354 virtual void close(int status);
00360 bool isMainFrame() const {return is_main_frame;}
00362
00363 virtual bool realize();
00364 };
00365
00366
00367
00368
00371 class UPlacement {
00372 public:
00373
00374
00375
00376 class UHalign *halign;
00377
00378
00379 class UValign *valign;
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396 bool hoppositeBorder, voppositeBorder;
00397
00398
00399
00400 u_dim hdist, vdist;
00401
00402 UPlacement();
00403 };
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00428 class UIncrust : public UWin {
00429 public:
00430 static UStyle *style;
00431
00432 UIncrust(const UArgs& a = UArgs::none);
00433 virtual ~UIncrust();
00434
00435 friend UIncrust& uincrust(const UArgs& a = UArgs::none);
00437
00438
00439
00440 virtual const UStyle& getStyle(UContext*) const {return makeStyle();}
00441 static const UStyle& makeStyle();
00442
00443
00444
00445 virtual unsigned long getXWin() const {return xwin;}
00447
00448 virtual void setExternalXWin(unsigned long external_xwin);
00454 virtual bool isExternalXWin() const {return is_external_win;}
00460 virtual bool realize();
00461
00462
00463
00464
00465 virtual void initView(ULink* selflink, UView* ancestor_view);
00466
00467
00468 private:
00469 friend class UNatWin;
00470 bool is_external_win;
00471 unsigned long xwin;
00472 };
00473
00474 #endif
00475
00476
00477
00478