[222] | 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 | }
|
---|