source: Sophya/trunk/Poubelle/PI/piwdgx.h

Last change on this file was 222, checked in by ansari, 26 years ago

Creation module DPC/PI Reza 09/04/99

File size: 4.7 KB
RevLine 
[222]1// This may look like C code, but it is really -*- C++ -*-
2// Module PI : Peida Interactive PIWdgX
3// Reza 10/95
4// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
5
6#ifndef PIWDG_X_SEEN
7#define PIWDG_X_SEEN
8
9#include <X11/Xlib.h>
10#include <X11/Intrinsic.h>
11
12#include "piwdggen.h"
13
14typedef Widget SysDWdg;
15typedef WidgetClass SysDWdgClass;
16
17
18class PIWdgX : public PIWdgGen
19{
20public:
21// Les methodes ...
22 PIWdgX(int narg=0, char *arg[]=NULL);
23 PIWdgX(PIContainerGen *par, char *nom,
24 int sx=10, int sy=10, int px=0, int py=0);
25
26 virtual ~PIWdgX();
27
28 virtual void FinishCreate(); // apres avoir installe les sous-vues
29
30 virtual void SetSize(int sx, int sy);
31 virtual void SetPos(int px, int py);
32 virtual void SetLabel(string const & lab);
33
34
35 virtual void SetBinding(PIBindingKind left, PIBindingKind top,
36 PIBindingKind right, PIBindingKind bottom);
37 virtual bool GetBinding(PIBindingKind& left, PIBindingKind& top,
38 PIBindingKind& right, PIBindingKind& bottom);
39
40 virtual int XSize();
41 virtual int YSize();
42 virtual int XPos();
43 virtual int YPos();
44
45 virtual string Nom();
46 virtual void GetScreenPos(int & spx, int & spy);
47
48 virtual void Manage();
49 virtual void UnManage();
50 virtual bool IfManaged();
51 virtual bool IsVisible();
52
53// Fonction qui doit etre appelee pour rafraichir la fenetre
54 virtual void Refresh();
55
56// Pour rendre un composant graphique (PIWdg) sensible/insensible
57 virtual void SetSensitive();
58 virtual void SetUnSensitive();
59 virtual bool IfSensitive();
60
61// Gestion de copier-coller
62 virtual bool ClaimSelection(unsigned int typ=PICP_string);
63 virtual void SelectionLost();
64 virtual unsigned int RequestSelection(unsigned int typ=PICP_string);
65 virtual void* ProvideSelection(unsigned int& typ, unsigned int& len);
66 virtual void SelectionTransferEnd();
67 virtual void PasteSelection(unsigned int typ, void *, unsigned int l);
68
69// Copie depuis un PIWdgGen
70 virtual void CopyFrom(PIWdgGen* wdg, int ox, int oy, int dx, int dy, int x, int y);
71
72// Gestion des EventHandler
73 virtual void AddDrawHandler(PIEventHandler* drwh, bool ad=false);
74 virtual void RemoveDrawHandler(PIEventHandler* drwh);
75 virtual void AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad=false);
76 virtual void RemoveEventHandler(PIEventHandler* evh);
77
78// En public, pour permettre l'acces depuis call-back Xt
79 virtual void CallDrawHandlers(int x0, int y0, int dx, int dy);
80 virtual void CallEventHandlers(unsigned long evt, int px, int py,
81 int k, int km, unsigned long tm);
82
83// Usage limite a a la version X11
84 inline SysDWdg XtWdg() const {return(sdw); };
85 inline SysDWdg& XtWdg() {return(sdw); };
86 int CreateXtWdg(char *nom, SysDWdgClass wdgcl=NULL, SysDWdg pwdg=NULL,
87 int sx=10, int sy=10, int px=0, int py=0, Arg* oarg=NULL, int na=0);
88 int BorderWidth();
89 void SetBorderWidth(int bw);
90
91protected:
92// Definit le type de Widget, en particulier pour la gestion des feneteres de haut niveau
93// k_wmi_cascade : Widget cree en cascade d'un autre (Exemple pour PIWIndowX)
94 enum WmIntState { k_wmi_unknown=0,
95 k_wmi_normal=1, k_wmi_toplevel=2,
96 k_wmi_transient=3, k_wmi_override=4,
97 k_wmi_appshell=5, k_wmi_cascade=6 };
98
99 int InitXt(int narg=0, char *arg[]=NULL);
100
101 SysDWdg sdw;
102 WmIntState wmis;
103 bool stmng;
104 PIBindingKind mBKleft, mBKright, mBKtop, mBKbottom;
105};
106
107typedef PIWdgX PIWdg;
108
109// -------- La classe PIScreenBuffer ----------
110class PIScreenBuffer {
111public :
112 PIScreenBuffer(int sx, int sy);
113 virtual ~PIScreenBuffer();
114
115 virtual int XSize();
116 virtual int YSize();
117 virtual void CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y);
118 virtual void CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y);
119 virtual void CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y);
120
121// Acces au Drawable X
122 inline Pixmap XScrBuffer() { return(xScrbuff); }
123protected :
124 Pixmap xScrbuff;
125 int mSx, mSy;
126};
127
128
129// Utile pour avoir acces au Display et Screen X ...
130SysDWdg PIXtTopWdg();
131XtAppContext* PIXtAppCtx(int& szx, int& szy, int& szf);
132Display * PIXDisplay();
133#define PIXScreen() DefaultScreen(PIXDisplay())
134Time PIXGetLastEventTime();
135unsigned long PIXGetLastEventSerial();
136void PIXSetLastEventTimeSerial(Time t, unsigned long ser);
137void PIXGetLastEventInfo(unsigned int& st, Time& t);
138
139
140#endif/* PIWDGX_SEEN */
141
142
143
Note: See TracBrowser for help on using the repository browser.