1 | #include<stdio.h>
|
---|
2 |
|
---|
3 | #include "pimenubarx.h"
|
---|
4 | #include PIAPP_H
|
---|
5 |
|
---|
6 | #include <Xm/Xm.h>
|
---|
7 | #include <Xm/RowColumn.h>
|
---|
8 | #include <Xm/PushB.h>
|
---|
9 | #include <Xm/ToggleB.h>
|
---|
10 | #include <Xm/CascadeB.h>
|
---|
11 |
|
---|
12 | /************* PIMenubarX ************/
|
---|
13 |
|
---|
14 | #define NBITEMB 10
|
---|
15 |
|
---|
16 | /* --Methode-- */
|
---|
17 | PIMenubarX::PIMenubarX(PIApplicationGen* par, char* nom)
|
---|
18 | : PIMenubarGen(par, nom)
|
---|
19 | {
|
---|
20 | mNItem = 0; mNItemMax = NBITEMB;
|
---|
21 | mMbb = new _pimbxit_[mNItemMax];
|
---|
22 |
|
---|
23 | XtWdg() = XmCreateMenuBar( ((PIApplicationX *)par)->MBCont()->XtWdg(),
|
---|
24 | nom, NULL, 0);
|
---|
25 |
|
---|
26 | wmis = k_wmi_normal ;
|
---|
27 | stmng = 0;
|
---|
28 |
|
---|
29 | SetPos(0,0);
|
---|
30 | SetBinding(PIBK_fixed, PIBK_fixed, PIBK_fixed, PIBK_free);
|
---|
31 |
|
---|
32 | Manage();
|
---|
33 | }
|
---|
34 |
|
---|
35 |
|
---|
36 | /* --Methode-- */
|
---|
37 | PIMenubarX::~PIMenubarX()
|
---|
38 | {
|
---|
39 | for(int i=0; i<mNItem; i++)
|
---|
40 | XtDestroyWidget(mMbb[i].itb);
|
---|
41 | delete[] mMbb ;
|
---|
42 | }
|
---|
43 |
|
---|
44 | /* --Methode-- */
|
---|
45 | void PIMenubarX::AppendMenu(PIMenu *pdm)
|
---|
46 | {
|
---|
47 | _pimbxit_ *buto;
|
---|
48 | Arg wargs[2];
|
---|
49 |
|
---|
50 | if (mNItem >= mNItemMax)
|
---|
51 | {
|
---|
52 | buto = mMbb;
|
---|
53 | mNItemMax += NBITEMB;
|
---|
54 | mMbb = new _pimbxit_[mNItemMax];
|
---|
55 | for(int i=0; i<mNItem; i++) mMbb[i] = buto[i];
|
---|
56 | delete[] buto;
|
---|
57 | }
|
---|
58 | XtSetArg(wargs[0], XmNsubMenuId, pdm->XtWdg());
|
---|
59 | mMbb[mNItem].itb = XtCreateManagedWidget(pdm->Nom().c_str(), xmCascadeButtonWidgetClass,
|
---|
60 | this->XtWdg(), wargs, 1) ;
|
---|
61 | mMbb[mNItem].pdm = pdm;
|
---|
62 | mNItem++;
|
---|
63 |
|
---|
64 | pdm->SetMsgParent(this);
|
---|
65 | return;
|
---|
66 | }
|
---|
67 |
|
---|
68 | /* --Methode-- */
|
---|
69 | void PIMenubarX::RemoveMenu(PIMenu *pdm)
|
---|
70 | {
|
---|
71 | int i,j;
|
---|
72 | for(i=0; i<mNItem; i++)
|
---|
73 | if ( mMbb[i].pdm == pdm ) {
|
---|
74 | XtDestroyWidget(mMbb[i].itb);
|
---|
75 | for(j=i; j<mNItem-1; j++) mMbb[j] = mMbb[j+1];
|
---|
76 | mNItem--; break;
|
---|
77 | }
|
---|
78 | return;
|
---|
79 | }
|
---|
80 |
|
---|
81 | /* --Methode-- */
|
---|
82 | void PIMenubarX::SetSensitivity(PIMenu *pdm, bool sens)
|
---|
83 | {
|
---|
84 | int i;
|
---|
85 | for(i=0; i<mNItem; i++)
|
---|
86 | if ( mMbb[i].pdm == pdm ) {
|
---|
87 | if (sens) XtSetSensitive(mMbb[i].itb, TRUE);
|
---|
88 | else XtSetSensitive(mMbb[i].itb, FALSE);
|
---|
89 | break;
|
---|
90 | }
|
---|
91 | return;
|
---|
92 | }
|
---|
93 |
|
---|
94 | /* --Methode-- */
|
---|
95 | bool PIMenubarX::IsSensitive(PIMenu *pdm)
|
---|
96 | {
|
---|
97 | int i;
|
---|
98 | for(i=0; i<mNItem; i++)
|
---|
99 | if ( mMbb[i].pdm == pdm ) {
|
---|
100 | if (XtIsSensitive(mMbb[i].itb) == TRUE) return(true);
|
---|
101 | else return(false);
|
---|
102 | break;
|
---|
103 | }
|
---|
104 | return(false);
|
---|
105 | }
|
---|