AePopupUI.c++
1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <assert.h>
#include <Xm/RowColumn.h>
#include "Matrix.h"
#include <Vk/VkApp.h>
#include <Vk/VkPopupMenu.h>
#include "AeBinView.h"
void
AeBinView::PopupCreate (void)
{
assert (fList);
if (fPopup = new VkPopupMenu)
{
fPopup->build (fList);
XtVaSetValues (fPopup->baseWidget (), XmNpopupEnabled, False, NULL);
XtAddCallback (fPopup->baseWidget (), XmNunmapCallback,
AeBinView::PopupUnmapCallback, (XtPointer)this);
}
}
void
AeBinView::PopupShow (XEvent * event)
{
PopupSetFont ();
XtVaSetValues (fPopup->baseWidget (), XmNpopupEnabled, True, NULL);
fPopup->show (event);
}
void
AeBinView::PopupUnmap (void)
{
int i;
XtVaSetValues (fPopup->baseWidget (), XmNpopupEnabled, False, NULL);
// remove all items currently in the menu
for (i=fPopup->numItems (); --i>=0; )
(*fPopup)[i]->remove ();
}
void
AeBinView::PopupUnmapCallback (Widget list, XtPointer view, XtPointer callData)
{
assert (view);
((AeBinView *)view)->PopupUnmap ();
}
void
AeBinView::PopupSetFont (void)
{
WidgetList widgetList;
int widgetNum;
int i;
XtVaGetValues (fPopup->baseWidget (),
XmNnumChildren, &widgetNum,
XmNchildren, &widgetList,
NULL);
for (i=0; i<widgetNum; i++)
XtVaSetValues (widgetList[i], XmNfontList, fListFont, NULL);
}