annotate src/gui_motif.c @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children af1bcb9a13c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 /* vi:set ts=8 sts=4 sw=4:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 * GUI/Motif support by Robert Webb
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 * Do ":help uganda" in Vim to read copying and usage conditions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 * Do ":help credits" in Vim to see a list of people who contributed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 * See README.txt for an overview of the Vim source code.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 #include <Xm/Form.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 #include <Xm/RowColumn.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 #include <Xm/PushB.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 #include <Xm/Text.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 #include <Xm/TextF.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 #include <Xm/Separator.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 #include <Xm/Label.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 #include <Xm/CascadeB.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 #include <Xm/ScrollBar.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 #include <Xm/MenuShell.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 #include <Xm/DrawingA.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 # include <Xm/RepType.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 #include <Xm/Frame.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 #include <Xm/LabelG.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 #include <Xm/ToggleBG.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 #include <Xm/SeparatoG.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 #include <X11/keysym.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 #include <X11/Xatom.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 #include <X11/StringDefs.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 #include <X11/Intrinsic.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 #include "vim.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 #ifdef HAVE_X11_XPM_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 # include <X11/xpm.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 # ifdef HAVE_XM_XPMP_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 # include <Xm/XpmP.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 #if defined(FEAT_GUI_DIALOG) && defined(HAVE_XPM)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 # include "../pixmaps/alert.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 # include "../pixmaps/error.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 # include "../pixmaps/generic.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 # include "../pixmaps/info.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 # include "../pixmaps/quest.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 #define MOTIF_POPUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 extern Widget vimShell;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 static Widget vimForm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 static Widget textAreaForm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 Widget textArea;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 static Widget toolBarFrame;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 static Widget toolBar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 #ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 static Widget footer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 # if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 /* remember the last set value for the tearoff item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 static int tearoff_val = (int)XmTEAR_OFF_ENABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 static Widget menuBar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 static void scroll_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 # if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 static void toolbar_enter_cb __ARGS((Widget, XtPointer, XEvent *, Boolean *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 static void toolbar_leave_cb __ARGS((Widget, XtPointer, XEvent *, Boolean *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 # ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 static void toolbarbutton_enter_cb __ARGS((Widget, XtPointer, XEvent *, Boolean *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 static void toolbarbutton_leave_cb __ARGS((Widget, XtPointer, XEvent *, Boolean *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 static void gui_mch_reset_focus __ARGS((void));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 #ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 static int gui_mch_compute_footer_height __ARGS((void));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 #ifdef WSDEBUG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 static void attachDump(Widget, char *);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 static void gui_motif_menu_colors __ARGS((Widget id));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 static void gui_motif_scroll_colors __ARGS((Widget id));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 static void gui_motif_menu_fontlist __ARGS((Widget id));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 # define STRING_TAG XmFONTLIST_DEFAULT_TAG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 # define STRING_TAG XmSTRING_DEFAULT_CHARSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 * Call-back routines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 scroll_cb(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 XtPointer client_data, call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 long value;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 int dragging;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 sb = gui_find_scrollbar((long)client_data);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 value = ((XmScrollBarCallbackStruct *)call_data)->value;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 dragging = (((XmScrollBarCallbackStruct *)call_data)->reason ==
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 (int)XmCR_DRAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 gui_drag_scrollbar(sb, value, dragging);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 * End of call-back routines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 * Create all the motif widgets necessary.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137 gui_x11_create_widgets()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 * Start out by adding the configured border width into the border offset
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 gui.border_offset = gui.border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 * Install the tearOffModel resource converter.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 XmRepTypeInstallTearOffModelConverter();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 /* Make sure the "Quit" menu entry of the window manager is ignored */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 XtVaSetValues(vimShell, XmNdeleteResponse, XmDO_NOTHING, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 vimForm = XtVaCreateManagedWidget("vimForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 xmFormWidgetClass, vimShell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156 XmNborderWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 XmNhighlightThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 XmNresizePolicy, XmRESIZE_ANY,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 gui_motif_menu_colors(vimForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 Arg al[7]; /* Make sure there is enough room for arguments! */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 int ac = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 # if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 XtSetArg(al[ac], XmNtearOffModel, tearoff_val); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 # ifndef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 /* Always stick to right hand side. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 menuBar = XmCreateMenuBar(vimForm, "menuBar", al, ac);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 XtManageChild(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 /* Remember the default colors, needed for ":hi clear". */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 XtVaGetValues(menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 XmNbackground, &gui.menu_def_bg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 XmNforeground, &gui.menu_def_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 gui_motif_menu_colors(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 * Create an empty ToolBar. We should get buttons defined from menu.vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 toolBarFrame = XtVaCreateWidget("toolBarFrame",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 xmFrameWidgetClass, vimForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 gui_motif_menu_colors(toolBarFrame);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 toolBar = XtVaCreateManagedWidget("toolBar",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 xmRowColumnWidgetClass, toolBarFrame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 XmNchildType, XmFRAME_WORKAREA_CHILD,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 XmNrowColumnType, XmWORK_AREA,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210 XmNorientation, XmHORIZONTAL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 XmNtraversalOn, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 XmNisHomogeneous, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 XmNpacking, XmPACK_TIGHT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 XmNspacing, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 XmNhighlightThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 XmNadjustLast, True,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 gui_motif_menu_colors(toolBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223 # if 0 /* these don't work, because of the XmNtraversalOn above. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 XtAddEventHandler(toolBar, EnterWindowMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 toolbar_enter_cb, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226 XtAddEventHandler(toolBar, LeaveWindowMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 toolbar_leave_cb, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 textAreaForm = XtVaCreateManagedWidget("textAreaForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 xmFormWidgetClass, vimForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 XmNresizePolicy, XmRESIZE_ANY,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 gui_motif_scroll_colors(textAreaForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 textArea = XtVaCreateManagedWidget("textArea",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 xmDrawingAreaWidgetClass, textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 XmNforeground, gui.norm_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246 XmNbackground, gui.back_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 * These take some control away from the user, but avoids making them
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254 * add resources to get a decent looking setup.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 XmNborderWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 XmNhighlightThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 #ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 * Create the Footer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 footer = XtVaCreateWidget("footer",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 xmLabelGadgetClass, vimForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 XmNalignment, XmALIGNMENT_BEGINNING,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 XmNtraversalOn, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 XmNrecomputeSize, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 XmNleftOffset, 5,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
277 gui_mch_set_footer((char_u *) "");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
278 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 * Install the callbacks.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 gui_x11_callbacks(textArea, vimForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 /* Pretend we don't have input focus, we will get an event if we do. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 gui.in_focus = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 * Called when the GUI is not going to start after all.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293 gui_x11_destroy_widgets()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295 textArea = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 menuBar = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 gui_mch_set_text_area_pos(x, y, w, h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 int x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 int y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 int w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 int h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 /* Give keyboard focus to the textArea instead of the toolbar. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 gui_mch_reset_focus();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 gui_x11_set_back_color()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 if (textArea != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 XmChangeColor(textArea, gui.back_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 XtVaSetValues(textArea,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 XmNbackground, gui.back_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 * Manage dialog centered on pointer. This could be used by the Athena code as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330 * well.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332 static void manage_centered __ARGS((Widget dialog_child));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 manage_centered(dialog_child)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 Widget dialog_child;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 Widget shell = XtParent(dialog_child);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 Window root, child;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340 unsigned int mask;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 unsigned int width, height, border_width, depth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 int x, y, win_x, win_y, maxX, maxY;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343 Boolean mappedWhenManaged;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 /* Temporarily set value of XmNmappedWhenManaged
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 to stop the dialog from popping up right away */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 XtVaGetValues(shell, XmNmappedWhenManaged, &mappedWhenManaged, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 XtVaSetValues(shell, XmNmappedWhenManaged, False, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 XtManageChild(dialog_child);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352 /* Get the pointer position (x, y) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353 XQueryPointer(XtDisplay(shell), XtWindow(shell), &root, &child,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354 &x, &y, &win_x, &win_y, &mask);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
355
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 /* Translate the pointer position (x, y) into a position for the new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 window that will place the pointer at its center */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 XGetGeometry(XtDisplay(shell), XtWindow(shell), &root, &win_x, &win_y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359 &width, &height, &border_width, &depth);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
360 width += 2 * border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 height += 2 * border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362 x -= width / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 y -= height / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
364
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 /* Ensure that the dialog remains on screen */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
366 maxX = XtScreen(shell)->width - width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
367 maxY = XtScreen(shell)->height - height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
368 if (x < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
369 x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
370 if (x > maxX)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
371 x = maxX;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
372 if (y < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373 y = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 if (y > maxY)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
375 y = maxY;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
376
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
377 /* Set desired window position in the DialogShell */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
378 XtVaSetValues(shell, XmNx, x, XmNy, y, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
380 /* Map the widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
381 XtMapWidget(shell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
382
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
383 /* Restore the value of XmNmappedWhenManaged */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
384 XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387 #if defined(FEAT_MENU) || defined(FEAT_SUN_WORKSHOP) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388 || defined(FEAT_GUI_DIALOG) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
389
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
391 * Encapsulate the way an XmFontList is created.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
392 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393 XmFontList
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
394 gui_motif_create_fontlist(font)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 XFontStruct *font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 XmFontList font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 # if (XmVersion <= 1001)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 /* Motif 1.1 method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
401 font_list = XmFontListCreate(font, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
402 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
403 /* Motif 1.2 method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
404 XmFontListEntry font_list_entry;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
406 font_list_entry = XmFontListEntryCreate(STRING_TAG, XmFONT_IS_FONT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407 (XtPointer)font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
408 font_list = XmFontListAppendEntry(NULL, font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409 XmFontListEntryFree(&font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411 return font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
412 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
413
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
414 # if ((XmVersion > 1001) && defined(FEAT_XFONTSET)) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
415 XmFontList
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 gui_motif_fontset2fontlist(fontset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417 XFontSet *fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419 XmFontList font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421 /* Motif 1.2 method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 XmFontListEntry font_list_entry;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424 font_list_entry = XmFontListEntryCreate(STRING_TAG,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 XmFONT_IS_FONTSET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 (XtPointer)*fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 font_list = XmFontListAppendEntry(NULL, font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 XmFontListEntryFree(&font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429 return font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 #if defined(FEAT_MENU) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437 * Menu stuff.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
438 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 static void gui_motif_add_actext __ARGS((vimmenu_T *menu));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 static void toggle_tearoff __ARGS((Widget wid));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 static void gui_mch_recurse_tearoffs __ARGS((vimmenu_T *menu));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 static void gui_mch_submenu_change __ARGS((vimmenu_T *mp, int colors));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 static void do_set_mnemonics __ARGS((int enable));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 static int menu_enabled = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
449
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 gui_mch_enable_menu(flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 int flag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 if (flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 XtManageChild(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 if (XtIsManaged(XtParent(toolBar)))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 /* toolBar is attached to top form */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 XmNtopWidget, menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 XmNtopWidget, XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
475 XmNtopWidget, menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481 XtUnmanageChild(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 if (XtIsManaged(XtParent(toolBar)))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
488 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 XmNtopWidget, XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
494 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
495 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
499 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
502 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
503
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
504 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
505 * Enable or disable mnemonics for the toplevel menus.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
506 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
507 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
508 gui_motif_set_mnemonics(enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
509 int enable;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
510 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
511 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
512 * Don't enable menu mnemonics when the menu bar is disabled, LessTif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
513 * crashes when using a mnemonic then.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
514 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
515 if (!menu_enabled)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 enable = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517 do_set_mnemonics(enable);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 do_set_mnemonics(enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
522 int enable;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
524 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526 for (menu = root_menu; menu != NULL; menu = menu->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
527 if (menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
528 XtVaSetValues(menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
529 XmNmnemonic, enable ? menu->mnemonic : NUL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
530 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
531 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
532
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
533 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 gui_mch_add_menu(menu, idx)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536 int idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539 Widget shell;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
540 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
542 #ifdef MOTIF_POPUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
543 if (menu_is_popup(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
544 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
545 Arg arg[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
546 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
547
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
548 /* Only create the popup menu when it's actually used, otherwise there
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
549 * is a delay when using the right mouse button. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
550 # if (XmVersion <= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 if (mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
553 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
554 if (gui.menu_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
555 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
556 XtSetArg(arg[0], XmNbackground, gui.menu_bg_pixel); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
557 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
558 if (gui.menu_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560 XtSetArg(arg[1], XmNforeground, gui.menu_fg_pixel); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
562 menu->submenu_id = XmCreatePopupMenu(textArea, "contextMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563 arg, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564 menu->id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
565 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
566 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
567 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
569
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
570 if (!menu_is_menubar(menu->name)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
571 || (parent != NULL && parent->submenu_id == (Widget)0))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 label = XmStringCreate((char *)menu->dname, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
575 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577 menu->id = XtVaCreateWidget("subMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578 xmCascadeButtonWidgetClass,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579 (parent == NULL) ? menuBar : parent->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 XmNlabelString, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 XmNmnemonic, p_wak[0] == 'n' ? NUL : menu->mnemonic,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 /* submenu: count the tearoff item (needed for LessTif) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584 XmNpositionIndex, idx + (parent != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
585 && tearoff_val == (int)XmTEAR_OFF_ENABLED ? 1 : 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
587 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588 gui_motif_menu_colors(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 gui_motif_menu_fontlist(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
592 if (menu->id == (Widget)0) /* failed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
593 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
595 /* add accelerator text */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 gui_motif_add_actext(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598 shell = XtVaCreateWidget("subMenuShell",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 xmMenuShellWidgetClass, menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600 XmNwidth, 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 XmNheight, 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603 gui_motif_menu_colors(shell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
604 menu->submenu_id = XtVaCreateWidget("rowColumnMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605 xmRowColumnWidgetClass, shell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
606 XmNrowColumnType, XmMENU_PULLDOWN,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608 gui_motif_menu_colors(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610 if (menu->submenu_id == (Widget)0) /* failed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
611 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 /* Set the colors for the tear off widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 toggle_tearoff(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 XtVaSetValues(menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619 XmNsubMenuId, menu->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
620 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
621
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
622 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 * The "Help" menu is a special case, and should be placed at the far
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624 * right hand side of the menu-bar. It's recognized by its high priority.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
625 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 if (parent == NULL && menu->priority >= 9999)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
627 XtVaSetValues(menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
628 XmNmenuHelpWidget, menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
629 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
632 * When we add a top-level item to the menu bar, we can figure out how
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633 * high the menu bar should be.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 if (parent == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 gui_mch_compute_menu_height(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 * Add mnemonic and accelerator text to a menu button.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
643 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
644 gui_motif_add_actext(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
645 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
646 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 /* Add accelrator text, if there is one */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650 if (menu->actext != NULL && menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 label = XmStringCreate((char *)menu->actext, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 XtVaSetValues(menu->id, XmNacceleratorText, label, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661 gui_mch_toggle_tearoffs(enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 int enable;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665 if (enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666 tearoff_val = (int)XmTEAR_OFF_ENABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
667 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
668 tearoff_val = (int)XmTEAR_OFF_DISABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669 toggle_tearoff(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670 gui_mch_recurse_tearoffs(root_menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
671 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
675 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 * Set the tearoff for one menu widget on or off, and set the color of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677 * tearoff widget.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 toggle_tearoff(wid)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 Widget wid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685 XtVaSetValues(wid, XmNtearOffModel, tearoff_val, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686 if (tearoff_val == (int)XmTEAR_OFF_ENABLED
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687 && (w = XmGetTearOffControl(wid)) != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688 gui_motif_menu_colors(w);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
690
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 gui_mch_recurse_tearoffs(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 while (menu != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 if (!menu_is_popup(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699 if (menu->submenu_id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
700 toggle_tearoff(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701 gui_mch_recurse_tearoffs(menu->children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 menu = menu->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
705 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
707
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
708 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 gui_mch_text_area_extra_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 Dimension shadowHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 XtVaGetValues(textAreaForm, XmNshadowThickness, &shadowHeight, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714 return shadowHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
715 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
717 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
718 * Compute the height of the menu bar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
719 * We need to check all the items for their position and height, for the case
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 * there are several rows, and/or some characters extend higher or lower.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
721 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723 gui_mch_compute_menu_height(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
724 Widget id; /* can be NULL when deleting menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
725 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
726 Dimension y, maxy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
727 Dimension margin, shadow;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 vimmenu_T *mp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729 static Dimension height = 21; /* normal height of a menu item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
732 * Get the height of the new item, before managing it, because it will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733 * still reflect the font size. After managing it depends on the menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
734 * height, which is what we just wanted to get!.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736 if (id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
737 XtVaGetValues(id, XmNheight, &height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739 /* Find any menu Widget, to be able to call XtManageChild() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
740 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
741 for (mp = root_menu; mp != NULL; mp = mp->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
742 if (mp->id != (Widget)0 && menu_is_menubar(mp->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
744 id = mp->id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749 * Now manage the menu item, to make them all be positioned (makes an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 * extra row when needed, removes it when not needed).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
751 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752 if (id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 XtManageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
756 * Now find the menu item that is the furthest down, and get it's position.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
757 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758 maxy = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 for (mp = root_menu; mp != NULL; mp = mp->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
761 if (mp->id != (Widget)0 && menu_is_menubar(mp->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763 XtVaGetValues(mp->id, XmNy, &y, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
764 if (y > maxy)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
765 maxy = y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
768
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
769 XtVaGetValues(menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770 XmNmarginHeight, &margin,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771 XmNshadowThickness, &shadow,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
772 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
774 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
775 * This computation is the result of trial-and-error:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776 * maxy = The maximum position of an item; required for when there are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
777 * two or more rows
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
778 * height = height of an item, before managing it; Hopefully this will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
779 * change with the font height. Includes shadow-border.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
780 * shadow = shadow-border; must be subtracted from the height.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781 * margin = margin around the menu buttons; Must be added.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
782 * Add 4 for the underlining of shortcut keys.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
783 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
784 gui.menu_height = maxy + height - 2 * shadow + 2 * margin + 4;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
785
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
786 #ifdef LESSTIF_VERSION
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
787 /* Somehow the menu bar doesn't resize automatically. Set it here,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
788 * even though this is a catch 22. Don't do this when starting up,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
789 * somehow the menu gets very high then. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
790 if (gui.shell_created)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
791 XtVaSetValues(menuBar, XmNheight, gui.menu_height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
792 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
793 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
794
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
795 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
796 gui_mch_add_menu_item(menu, idx)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
797 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
798 int idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
799 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
800 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
802
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
803 # ifdef EBCDIC
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
804 menu->mnemonic = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
805 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
806
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
807 # if (XmVersion <= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
808 /* Don't add Popup menu items when the popup menu isn't used. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
809 if (menu_is_child_of_popup(menu) && !mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
810 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
811 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
812
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
813 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
814 if (menu_is_toolbar(parent->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
815 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
816 WidgetClass type;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
817 XmString xms = NULL; /* fallback label if pixmap not found */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
818 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
819 Arg args[18];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
821 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
822 if (menu_is_separator(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
824 char *cp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
825 Dimension wid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
826
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
827 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
828 * A separator has the format "-sep%d[:%d]-". The optional :%d is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
829 * a width specifier. If no width is specified then we choose one.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
830 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
831 cp = (char *)vim_strchr(menu->name, ':');
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
832 if (cp != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
833 wid = (Dimension)atoi(++cp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
834 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
835 wid = 4;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
836
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
837 #if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
838 /* We better use a FormWidget here, since it's far more
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
839 * flexible in terms of size. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
840 type = xmFormWidgetClass;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
841 XtSetArg(args[n], XmNwidth, wid); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
842 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 type = xmSeparatorWidgetClass;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
844 XtSetArg(args[n], XmNwidth, wid); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
845 XtSetArg(args[n], XmNminWidth, wid); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 XtSetArg(args[n], XmNorientation, XmVERTICAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
847 XtSetArg(args[n], XmNseparatorType, XmNO_LINE); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
848 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
849 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
850 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
851 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
852 get_toolbar_pixmap(menu, &menu->image, &menu->image_ins);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
853 /* Set the label here, so that we can switch between icons/text
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
854 * by changing the XmNlabelType resource. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
855 xms = XmStringCreate((char *)menu->dname, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
856 XtSetArg(args[n], XmNlabelString, xms); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
857
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
858 #ifndef FEAT_SUN_WORKSHOP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
859
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
860 /* Without shadows one can't sense whatever the button has been
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
861 * pressed or not! However we wan't to save a bit of space...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
862 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
863 XtSetArg(args[n], XmNhighlightThickness, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
864 XtSetArg(args[n], XmNhighlightOnEnter, True); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
865 XtSetArg(args[n], XmNmarginWidth, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
866 XtSetArg(args[n], XmNmarginHeight, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
867 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
868 if (menu->image == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
869 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
870 XtSetArg(args[n], XmNlabelType, XmSTRING); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871 XtSetArg(args[n], XmNlabelPixmap, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 XtSetArg(args[n], XmNlabelInsensitivePixmap, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
873 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
875 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
876 XtSetArg(args[n], XmNlabelPixmap, menu->image); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
877 XtSetArg(args[n], XmNlabelInsensitivePixmap, menu->image_ins); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
878 XtSetArg(args[n], XmNlabelType, XmPIXMAP); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
879 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
880 type = xmPushButtonWidgetClass;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
881 XtSetArg(args[n], XmNwidth, 80); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
882 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
883
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
884 XtSetArg(args[n], XmNpositionIndex, idx); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
885 if (menu->id == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 menu->id = XtCreateManagedWidget((char *)menu->dname,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
888 type, toolBar, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
889 if (menu->id != NULL && type == xmPushButtonWidgetClass)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
890 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 XtAddCallback(menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892 XmNactivateCallback, gui_x11_menu_cb, menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
894 # ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895 XtAddEventHandler(menu->id, EnterWindowMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896 toolbarbutton_enter_cb, menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 XtAddEventHandler(menu->id, LeaveWindowMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 toolbarbutton_leave_cb, menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
899 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
900 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
901 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
902 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
903 XtSetValues(menu->id, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 if (xms != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
905 XmStringFree(xms);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
906
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 #ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
908 gui_mch_menu_set_tip(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
909 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911 menu->parent = parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
912 menu->submenu_id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
913 /* When adding first item to toolbar it might have to be enabled .*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
914 if (!XtIsManaged(XtParent(toolBar))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
915 && vim_strchr(p_go, GO_TOOLBAR) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
916 gui_mch_show_toolbar(TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
917 gui.toolbar_height = gui_mch_compute_toolbar_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
918 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
919 } /* toolbar menu item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922 /* No parent, must be a non-menubar menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
923 if (parent->submenu_id == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
924 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
925
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
926 menu->submenu_id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
927
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
928 /* Add menu separator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
929 if (menu_is_separator(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
930 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931 menu->id = XtVaCreateWidget("subMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932 xmSeparatorGadgetClass, parent->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
933 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934 /* count the tearoff item (needed for LessTif) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935 XmNpositionIndex, idx + (tearoff_val == (int)XmTEAR_OFF_ENABLED
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 ? 1 : 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
939 gui_motif_menu_colors(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
941 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 label = XmStringCreate((char *)menu->dname, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
945 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946 menu->id = XtVaCreateWidget("subMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
947 xmPushButtonWidgetClass, parent->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
948 XmNlabelString, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
949 XmNmnemonic, menu->mnemonic,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
950 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
951 /* count the tearoff item (needed for LessTif) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
952 XmNpositionIndex, idx + (tearoff_val == (int)XmTEAR_OFF_ENABLED
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
953 ? 1 : 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956 gui_motif_menu_colors(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
957 gui_motif_menu_fontlist(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
960 if (menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962 XtAddCallback(menu->id, XmNactivateCallback, gui_x11_menu_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963 (XtPointer)menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
964 /* add accelerator text */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
965 gui_motif_add_actext(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969 #if (XmVersion <= 1002) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 * This function will destroy/create the popup menus dynamically,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972 * according to the value of 'mousemodel'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
973 * This will fix the "right mouse button freeze" that occurs when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 * there exists a popup menu but it isn't managed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977 gui_motif_update_mousemodel(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980 int idx = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 /* When GUI hasn't started the menus have not been created. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986 while (menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 if (menu->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
989 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990 if (menu_is_popup(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
992 if (mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
994 /* Popup menu will be used. Create the popup menus. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
995 gui_mch_add_menu(menu, idx);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996 gui_motif_update_mousemodel(menu->children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
997 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
998 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
999 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1000 /* Popup menu will not be used. Destroy the popup menus. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1001 gui_motif_update_mousemodel(menu->children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1002 gui_mch_destroy_menu(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1003 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1004 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1006 else if (menu_is_child_of_popup(menu))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1007 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1008 if (mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009 gui_mch_add_menu_item(menu, idx);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1011 gui_mch_destroy_menu(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013 menu = menu->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1014 ++idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1015 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1016 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1017 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1018
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 gui_mch_new_menu_colors()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1021 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1022 if (menuBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1023 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 gui_motif_menu_colors(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 gui_motif_menu_colors(toolBarFrame);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 gui_motif_menu_colors(toolBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030 gui_mch_submenu_change(root_menu, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1031 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1032
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1033 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1034 gui_mch_new_menu_font()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036 if (menuBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 gui_mch_submenu_change(root_menu, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1039 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1040 Dimension height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1041 Position w, h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043 XtVaGetValues(menuBar, XmNheight, &height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 gui.menu_height = height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 XtVaGetValues(vimShell, XtNwidth, &w, XtNheight, &h, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 gui_resize_shell(w, h
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 - xim_get_status_area_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051 );
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 gui_set_shellsize(FALSE, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054 ui_new_shellsize();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1057 #if defined(FEAT_BEVAL) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1058 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1059 gui_mch_new_tooltip_font()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1060 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1061 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1062 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1063
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 if (toolBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1067 menu = gui_find_menu((char_u *)"ToolBar");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1068 if (menu != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1069 gui_mch_submenu_change(menu, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1070 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1072
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1073 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1074 gui_mch_new_tooltip_colors()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1077 vimmenu_T *toolbar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 if (toolBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1080 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082 toolbar = gui_find_menu((char_u *)"ToolBar");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 if (toolbar != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 gui_mch_submenu_change(toolbar, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1087 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1090 gui_mch_submenu_change(menu, colors)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 int colors; /* TRUE for colors, FALSE for font */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 vimmenu_T *mp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 for (mp = menu; mp != NULL; mp = mp->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1098 if (mp->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1099 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1100 if (colors)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1101 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1102 gui_motif_menu_colors(mp->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104 /* For a toolbar item: Free the pixmap and allocate a new one,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1105 * so that the background color is right. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 if (mp->image != (Pixmap)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108 XFreePixmap(gui.dpy, mp->image);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109 XFreePixmap(gui.dpy, mp->image_ins);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 get_toolbar_pixmap(mp, &mp->image, &mp->image_ins);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111 if (mp->image != (Pixmap)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1112 XtVaSetValues(mp->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113 XmNlabelPixmap, mp->image,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1114 XmNlabelInsensitivePixmap, mp->image_ins,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 # ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 /* If we have a tooltip, then we need to change it's font */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 if (mp->tip != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1121 Arg args[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 args[0].name = XmNbackground;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124 args[0].value = gui.tooltip_bg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1125 args[1].name = XmNforeground;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126 args[1].value = gui.tooltip_fg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1127 XtSetValues(mp->tip->balloonLabel, &args[0], XtNumber(args));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1128 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1129 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1133 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1134 gui_motif_menu_fontlist(mp->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1135 #ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1136 /* If we have a tooltip, then we need to change it's font */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137 if (mp->tip != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1139 Arg args[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1140
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1141 args[0].name = XmNfontList;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142 args[0].value = (XtArgVal)gui_motif_fontset2fontlist(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 &gui.tooltip_fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1144 XtSetValues(mp->tip->balloonLabel, &args[0], XtNumber(args));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1147 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1149
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150 if (mp->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1151 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1152 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153 /* Set the colors/font for the tear off widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 if (mp->submenu_id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 if (colors)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157 gui_motif_menu_colors(mp->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1158 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1159 gui_motif_menu_fontlist(mp->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160 toggle_tearoff(mp->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163 /* Set the colors for the children */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164 gui_mch_submenu_change(mp->children, colors);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1167 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1168
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1169 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1170 * Destroy the machine specific menu widget.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1171 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1172 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173 gui_mch_destroy_menu(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1175 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1176 /* Please be sure to destroy the parent widget first (i.e. menu->id).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177 * On the other hand, problems have been reported that the submenu must be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178 * deleted first...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1180 * This code should be basically identical to that in the file gui_athena.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 * because they are both Xt based.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183 if (menu->submenu_id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1184 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1185 XtDestroyWidget(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1186 menu->submenu_id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1187 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1188
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1189 if (menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1190 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1191 Widget parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1192
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1193 parent = XtParent(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1194 #if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1195 if ((parent == toolBar) && (menu->tip != NULL))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1196 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1197 /* We try to destroy this before the actual menu, because there are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1198 * callbacks, etc. that will be unregistered during the tooltip
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1199 * destruction.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1200 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1201 * If you call "gui_mch_destroy_beval_area()" after destroying
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1202 * menu->id, then the tooltip's window will have already been
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1203 * deallocated by Xt, and unknown behaviour will ensue (probably
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1204 * a core dump).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1205 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1206 gui_mch_destroy_beval_area(menu->tip);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1207 menu->tip = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1208 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1209 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1210 XtDestroyWidget(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1211 menu->id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1212 if (parent == menuBar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1213 gui_mch_compute_menu_height((Widget)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1214 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1215 else if (parent == toolBar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1216 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1217 Cardinal num_children;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1218
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1219 /* When removing last toolbar item, don't display the toolbar. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1220 XtVaGetValues(toolBar, XmNnumChildren, &num_children, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 if (num_children == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1222 gui_mch_show_toolbar(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1223 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1224 gui.toolbar_height = gui_mch_compute_toolbar_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1225 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1226 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1227 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1228 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1230 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1231 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1232 gui_mch_show_popupmenu(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1233 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235 #ifdef MOTIF_POPUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1236 XmMenuPosition(menu->submenu_id, gui_x11_get_last_mouse_event());
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1237 XtManageChild(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1238 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1239 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1240
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1241 #endif /* FEAT_MENU */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1242
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1243 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1244 * Set the menu and scrollbar colors to their default values.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1245 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1246 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1247 gui_mch_def_colors()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249 if (gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1250 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1251 /* Use the values saved when starting up. These should come from the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1252 * window manager or a resources file. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1253 gui.menu_fg_pixel = gui.menu_def_fg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1254 gui.menu_bg_pixel = gui.menu_def_bg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1255 gui.scroll_fg_pixel = gui.scroll_def_fg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1256 gui.scroll_bg_pixel = gui.scroll_def_bg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1257 #ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1258 gui.tooltip_fg_pixel =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1259 gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1260 gui.tooltip_bg_pixel =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1261 gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1262 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1263 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1264 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1265
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1266
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1267 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1268 * Scrollbar stuff.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1269 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1270
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1271 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1272 gui_mch_set_scrollbar_thumb(sb, val, size, max)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1273 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1274 long val;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1275 long size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1276 long max;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1277 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1278 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1279 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1280 XmNvalue, val,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1281 XmNsliderSize, size,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1282 XmNpageIncrement, (size > 2 ? size - 2 : 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1283 XmNmaximum, max + 1, /* Motif has max one past the end */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1284 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1285 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1286
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1287 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1288 gui_mch_set_scrollbar_pos(sb, x, y, w, h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1289 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1290 int x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1291 int y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1292 int w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1293 int h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1294 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1295 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1296 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1297 if (sb->type == SBAR_LEFT || sb->type == SBAR_RIGHT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1298 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1299 if (y == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300 h -= gui.border_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1301 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302 y -= gui.border_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304 XmNtopOffset, y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 XmNbottomOffset, -y - h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1306 XmNwidth, w,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1308 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1309 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1310 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1311 XmNtopOffset, y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1312 XmNleftOffset, x,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1313 XmNrightOffset, gui.which_scrollbars[SBAR_RIGHT]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1314 ? gui.scrollbar_width : 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1315 XmNheight, h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1317 XtManageChild(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1318 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1320
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1321 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1322 gui_mch_enable_scrollbar(sb, flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1323 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1324 int flag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1325 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1326 Arg args[16];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1327 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1328
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1329 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1331 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1332 if (flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1333 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1334 switch (sb->type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1335 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1336 case SBAR_LEFT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1337 XtSetArg(args[n], XmNleftOffset, gui.scrollbar_width); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1338 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1339
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1340 case SBAR_RIGHT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1341 XtSetArg(args[n], XmNrightOffset, gui.scrollbar_width); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1342 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1343
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1344 case SBAR_BOTTOM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1345 XtSetArg(args[n], XmNbottomOffset, gui.scrollbar_height);n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1346 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1347 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1348 XtSetValues(textArea, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1349 XtManageChild(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1350 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1351 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1352 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 if (!gui.which_scrollbars[sb->type])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1355 /* The scrollbars of this type are all disabled, adjust the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1356 * textArea attachment offset. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1357 switch (sb->type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1358 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1359 case SBAR_LEFT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1360 XtSetArg(args[n], XmNleftOffset, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1361 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1362
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1363 case SBAR_RIGHT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1364 XtSetArg(args[n], XmNrightOffset, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1365 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1366
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1367 case SBAR_BOTTOM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1368 XtSetArg(args[n], XmNbottomOffset, 0);n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1369 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1370 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1371 XtSetValues(textArea, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1372 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1373 XtUnmanageChild(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1374 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1375 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1376 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1377
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1378 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1379 gui_mch_create_scrollbar(sb, orient)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1380 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1381 int orient; /* SBAR_VERT or SBAR_HORIZ */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1382 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1383 Arg args[16];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1384 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1385
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1386 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1387 XtSetArg(args[n], XmNshadowThickness, 1); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1388 XtSetArg(args[n], XmNminimum, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1389 XtSetArg(args[n], XmNorientation,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1390 (orient == SBAR_VERT) ? XmVERTICAL : XmHORIZONTAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1391
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1392 switch (sb->type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1393 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1394 case SBAR_LEFT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1395 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1396 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1397 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1398 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1399
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1400 case SBAR_RIGHT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1401 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1402 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1403 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1404 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1405
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1406 case SBAR_BOTTOM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1407 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1408 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1409 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1410 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1411 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1412
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1413 sb->id = XtCreateWidget("scrollBar",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1414 xmScrollBarWidgetClass, textAreaForm, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1415
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1416 /* Remember the default colors, needed for ":hi clear". */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1417 if (gui.scroll_def_bg_pixel == (guicolor_T)0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1418 && gui.scroll_def_fg_pixel == (guicolor_T)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1419 XtVaGetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1420 XmNbackground, &gui.scroll_def_bg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1421 XmNforeground, &gui.scroll_def_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1422 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1423
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1424 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1425 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1426 gui_mch_set_scrollbar_colors(sb);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1427 XtAddCallback(sb->id, XmNvalueChangedCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1428 scroll_cb, (XtPointer)sb->ident);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1429 XtAddCallback(sb->id, XmNdragCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1430 scroll_cb, (XtPointer)sb->ident);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1431 XtAddEventHandler(sb->id, KeyPressMask, FALSE, gui_x11_key_hit_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1432 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1433 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1434 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1435
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1436 #if defined(FEAT_WINDOWS) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1437 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1438 gui_mch_destroy_scrollbar(sb)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1439 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1440 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1441 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1442 XtDestroyWidget(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1443 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1444 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1445
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1446 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1447 gui_mch_set_scrollbar_colors(sb)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1448 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1449 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1450 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1451 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1452 if (gui.scroll_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1453 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1454 #if (XmVersion>=1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1455 XmChangeColor(sb->id, gui.scroll_bg_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1456 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1457 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1458 XmNtroughColor, gui.scroll_bg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1459 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1460 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1461 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1462
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1463 if (gui.scroll_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1464 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1465 XmNforeground, gui.scroll_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1466 #if (XmVersion<1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1467 XmNbackground, gui.scroll_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1468 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1469 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1470 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1471
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1472 /* This is needed for the rectangle below the vertical scrollbars. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1473 if (sb == &gui.bottom_sbar && textAreaForm != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1474 gui_motif_scroll_colors(textAreaForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1475 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1476
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1477 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1478 * Miscellaneous stuff:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1479 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1480
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1481 Window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1482 gui_x11_get_wid()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1483 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1484 return(XtWindow(textArea));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1485 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1486
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1487
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1488 #if defined(FEAT_BROWSE) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1489
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1490 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1491 * file selector related stuff
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1492 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1493
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1494 #include <Xm/FileSB.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1495 #include <Xm/XmStrDefs.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1496
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1497 typedef struct dialog_callback_arg
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1498 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1499 char * args; /* not used right now */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1500 int id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1501 } dcbarg_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1502
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1503 static Widget dialog_wgt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1504 static char *browse_fname = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1505 static XmStringCharSet charset = (XmStringCharSet) XmSTRING_DEFAULT_CHARSET;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1506 /* used to set up XmStrings */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1507
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1508 static void DialogCancelCB __ARGS((Widget, XtPointer, XtPointer));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1509 static void DialogAcceptCB __ARGS((Widget, XtPointer, XtPointer));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1510
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1511 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1512 * This function is used to translate the predefined label text of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1513 * precomposed dialogs. We do this explicitly to allow:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1514 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1515 * - usage of gettext for translation, as in all the other places.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1516 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1517 * - equalize the messages between different GUI implementations as far as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1518 * possible.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1519 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1520 static void set_predefined_label __ARGS((Widget parent, String name, char * new_label));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1521
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1522 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1523 set_predefined_label(parent, name, new_label)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1524 Widget parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1525 String name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1526 char * new_label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1527 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1528 XmString str;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1529 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1530
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1531 w = XtNameToWidget(parent, name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1532
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1533 if (!w)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1534 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1535
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1536 str = XmStringCreate(new_label, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1537
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1538 if (str)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1539 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1540 XtVaSetValues(w, XmNlabelString, str, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1541 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1542 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1543 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1544
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1545 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1546 * Put up a file requester.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1547 * Returns the selected name in allocated memory, or NULL for Cancel.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1548 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1549 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1550 char_u *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1551 gui_mch_browse(saving, title, dflt, ext, initdir, filter)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1552 int saving; /* select file to write */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1553 char_u *title; /* title for the window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1554 char_u *dflt; /* default name */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1555 char_u *ext; /* not used (extension added) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1556 char_u *initdir; /* initial directory, NULL for current dir */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1557 char_u *filter; /* file name filter */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1558 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1559 char_u dirbuf[MAXPATHL];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1560 char_u dfltbuf[MAXPATHL];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1561 char_u *pattern;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1562 char_u *tofree = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1563
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1564 dialog_wgt = XmCreateFileSelectionDialog(vimShell, (char *)title, NULL, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1565
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1566 if (initdir == NULL || *initdir == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1567 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1568 mch_dirname(dirbuf, MAXPATHL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1569 initdir = dirbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1570 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1571
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1572 if (dflt == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1573 dflt = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1574 else if (STRLEN(initdir) + STRLEN(dflt) + 2 < MAXPATHL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1575 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1576 /* The default selection should be the full path, "dflt" is only the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1577 * file name. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1578 STRCPY(dfltbuf, initdir);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1579 add_pathsep(dfltbuf);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1580 STRCAT(dfltbuf, dflt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1581 dflt = dfltbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1582 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1583
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1584 /* Can only use one pattern for a file name. Get the first pattern out of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1585 * the filter. An empty pattern means everything matches. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1586 if (filter == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1587 pattern = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1588 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1589 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1590 char_u *s, *p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1591
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1592 s = filter;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1593 for (p = filter; *p != NUL; ++p)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1594 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1595 if (*p == '\t') /* end of description, start of pattern */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1596 s = p + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1597 if (*p == ';' || *p == '\n') /* end of (first) pattern */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1598 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1599 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1600 pattern = vim_strnsave(s, p - s);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1601 tofree = pattern;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1602 if (pattern == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1603 pattern = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1604 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1605
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1606 XtVaSetValues(dialog_wgt,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1607 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1608 XmNdirectory, XmRString, (char *)initdir, STRLEN(initdir) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1609 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1610 XmNdirSpec, XmRString, (char *)dflt, STRLEN(dflt) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1611 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1612 XmNpattern, XmRString, (char *)pattern, STRLEN(pattern) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1613 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1614 XmNdialogTitle, XmRString, (char *)title, STRLEN(title) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1615 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1616
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1617 set_predefined_label(dialog_wgt, "Apply", _("Filter"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1618 set_predefined_label(dialog_wgt, "Cancel", _("Cancel"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1619 set_predefined_label(dialog_wgt, "Dir", _("Directories"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1620 set_predefined_label(dialog_wgt, "FilterLabel", _("Filter"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1621 set_predefined_label(dialog_wgt, "Help", _("Help"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1622 set_predefined_label(dialog_wgt, "Items", _("Files"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1623 set_predefined_label(dialog_wgt, "OK", _("OK"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1624 set_predefined_label(dialog_wgt, "Selection", _("Selection"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1625
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1626 gui_motif_menu_colors(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1627 if (gui.scroll_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1628 XtVaSetValues(dialog_wgt, XmNtroughColor, gui.scroll_bg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1629
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1630 XtAddCallback(dialog_wgt, XmNokCallback, DialogAcceptCB, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1631 XtAddCallback(dialog_wgt, XmNcancelCallback, DialogCancelCB, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1632 /* We have no help in this window, so hide help button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1633 XtUnmanageChild(XmFileSelectionBoxGetChild(dialog_wgt,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1634 (unsigned char)XmDIALOG_HELP_BUTTON));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1635
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1636 manage_centered(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1637
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1638 /* sit in a loop until the dialog box has gone away */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1639 do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1640 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1641 XtAppProcessEvent(XtWidgetToApplicationContext(dialog_wgt),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1642 (XtInputMask)XtIMAll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1643 } while (XtIsManaged(dialog_wgt));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1644
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1645 XtDestroyWidget(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1646 vim_free(tofree);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1647
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1648 if (browse_fname == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1649 return NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1650 return vim_strsave((char_u *)browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1651 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1652
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1653 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1654 * The code below was originally taken from
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1655 * /usr/examples/motif/xmsamplers/xmeditor.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1656 * on Digital Unix 4.0d, but heavily modified.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1657 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1658
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1659 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1660 * Process callback from Dialog cancel actions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1661 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1662 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1663 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1664 DialogCancelCB(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1665 Widget w; /* widget id */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1666 XtPointer client_data; /* data from application */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1667 XtPointer call_data; /* data from widget class */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1668 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1669 if (browse_fname != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1670 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1671 XtFree(browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1672 browse_fname = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1673 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1674 XtUnmanageChild(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1675 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1676
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1677 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1678 * Process callback from Dialog actions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1679 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1680 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1681 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1682 DialogAcceptCB(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1683 Widget w; /* widget id */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1684 XtPointer client_data; /* data from application */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1685 XtPointer call_data; /* data from widget class */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1686 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1687 XmFileSelectionBoxCallbackStruct *fcb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1688
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1689 if (browse_fname != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1690 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1691 XtFree(browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1692 browse_fname = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1693 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1694 fcb = (XmFileSelectionBoxCallbackStruct *)call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1695
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1696 /* get the filename from the file selection box */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1697 XmStringGetLtoR(fcb->value, charset, &browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1698
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1699 /* popdown the file selection box */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1700 XtUnmanageChild(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1701 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1702
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1703 #endif /* FEAT_BROWSE */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1704
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1705 #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1706
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1707 static int dialogStatus;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1708
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1709 static void keyhit_callback __ARGS((Widget w, XtPointer client_data, XEvent *event, Boolean *cont));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1710 static void butproc __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1711
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1712 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1713 * Callback function for the textfield. When CR is hit this works like
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1714 * hitting the "OK" button, ESC like "Cancel".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1715 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1716 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1717 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1718 keyhit_callback(w, client_data, event, cont)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1719 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1720 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1721 XEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1722 Boolean *cont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1723 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1724 char buf[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1725 KeySym key_sym;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1726
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1727 if (XLookupString(&(event->xkey), buf, 2, &key_sym, NULL) == 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1728 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1729 if (*buf == CAR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1730 dialogStatus = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1731 else if (*buf == ESC)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1732 dialogStatus = 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1733 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1734 if ((key_sym == XK_Left || key_sym == XK_Right)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1735 && !(event->xkey.state & ShiftMask))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1736 XmTextFieldClearSelection(w, XtLastTimestampProcessed(gui.dpy));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1737 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1738
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1739 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1740 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1741 butproc(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1742 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1743 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1744 XtPointer call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1745 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1746 dialogStatus = (int)(long)client_data + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1747 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1748
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1749 static void gui_motif_set_fontlist __ARGS((Widget wg));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1750
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1751 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1752 * Use the 'guifont' or 'guifontset' as a fontlist for a dialog widget.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1753 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1754 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1755 gui_motif_set_fontlist(wg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1756 Widget wg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1757 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1758 XmFontList fl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1759
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1760 fl =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1761 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1762 gui.fontset != NOFONTSET ?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1763 gui_motif_fontset2fontlist((XFontSet *)&gui.fontset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1764 :
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1765 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1766 gui_motif_create_fontlist((XFontStruct *)gui.norm_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1767 if (fl != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1768 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1769 XtVaSetValues(wg, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1770 XmFontListFree(fl);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1771 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1772 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1773
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1774 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1775
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1776 static Widget create_pixmap_label(Widget parent, String name, char **data, ArgList args, Cardinal arg);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1777
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1778 static Widget
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1779 create_pixmap_label(parent, name, data, args, arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1780 Widget parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1781 String name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1782 char **data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1783 ArgList args;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1784 Cardinal arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1785 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1786 Widget label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1787 Display *dsp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1788 Screen *scr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1789 int depth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1790 Pixmap pixmap = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1791 XpmAttributes attr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1792 Boolean rs;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1793 XpmColorSymbol color[5] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1794 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1795 {"none", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1796 {"iconColor1", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1797 {"bottomShadowColor", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1798 {"topShadowColor", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1799 {"selectColor", NULL, 0}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1800 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1801
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1802 label = XmCreateLabelGadget(parent, name, args, arg);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1803
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1804 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1805 * We need to be carefull here, since in case of gadgets, there is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1806 * no way to get the background color directly from the widget itself.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1807 * In such cases we get it from The Core part of his parent instead.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1808 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1809 dsp = XtDisplayOfObject(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1810 scr = XtScreenOfObject(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1811 XtVaGetValues(XtIsSubclass(label, coreWidgetClass)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1812 ? label : XtParent(label),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1813 XmNdepth, &depth,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1814 XmNbackground, &color[0].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1815 XmNforeground, &color[1].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1816 XmNbottomShadowColor, &color[2].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1817 XmNtopShadowColor, &color[3].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1818 XmNhighlight, &color[4].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1819 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1820
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1821 attr.valuemask = XpmColorSymbols | XpmCloseness | XpmDepth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1822 attr.colorsymbols = color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1823 attr.numsymbols = 5;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1824 attr.closeness = 65535;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1825 attr.depth = depth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1826 XpmCreatePixmapFromData(dsp, RootWindowOfScreen(scr),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1827 data, &pixmap, NULL, &attr);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1828
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1829 XtVaGetValues(label, XmNrecomputeSize, &rs, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1830 XtVaSetValues(label, XmNrecomputeSize, True, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1831 XtVaSetValues(label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1832 XmNlabelType, XmPIXMAP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1833 XmNlabelPixmap, pixmap,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1834 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1835 XtVaSetValues(label, XmNrecomputeSize, rs, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1836
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1837 return label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1838 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1839 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1840
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1841 /* ARGSUSED */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1842 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1843 gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1844 int type;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1845 char_u *title;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1846 char_u *message;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1847 char_u *button_names;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1848 int dfltbutton;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1849 char_u *textfield; /* buffer of size IOSIZE */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1850 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1851 char_u *buts;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1852 char_u *p, *next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1853 XtAppContext app;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1854 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1855 int butcount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1856 Widget dialogform = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1857 Widget form = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1858 Widget dialogtextfield = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1859 Widget *buttons;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1860 Widget sep_form = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1861 Boolean vertical;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1862 Widget separator = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1863 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1864 Arg args[6];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1865 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1866 char **icon_data = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1867 Widget dialogpixmap = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1868 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1869
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1870 if (title == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1871 title = (char_u *)_("Vim dialog");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1872
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1873 /* if our pointer is currently hidden, then we should show it. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1874 gui_mch_mousehide(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1875
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1876 dialogform = XmCreateFormDialog(vimShell, (char *)"dialog", NULL, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1877
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1878 /* Check 'v' flag in 'guioptions': vertical button placement. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1879 vertical = (vim_strchr(p_go, GO_VERTICAL) != NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1880
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1881 /* Set the title of the Dialog window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1882 label = XmStringCreateSimple((char *)title);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1883 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1884 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1885 XtVaSetValues(dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1886 XmNdialogTitle, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1887 XmNhorizontalSpacing, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1888 XmNverticalSpacing, vertical ? 0 : 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1889 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1890 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1891
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1892 /* make a copy, so that we can insert NULs */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1893 buts = vim_strsave(button_names);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1894 if (buts == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1895 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1896
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1897 /* Count the number of buttons and allocate buttons[]. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1898 butcount = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1899 for (p = buts; *p; ++p)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1900 if (*p == DLG_BUTTON_SEP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1901 ++butcount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1902 buttons = (Widget *)alloc((unsigned)(butcount * sizeof(Widget)));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1903 if (buttons == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1904 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1905 vim_free(buts);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1906 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1907 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1908
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1909 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1910 * Create the buttons.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1911 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1912 sep_form = (Widget) 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1913 p = buts;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1914 for (butcount = 0; *p; ++butcount)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1915 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1916 for (next = p; *next; ++next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1917 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1918 if (*next == DLG_HOTKEY_CHAR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1919 mch_memmove(next, next + 1, STRLEN(next));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1920 if (*next == DLG_BUTTON_SEP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1921 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1922 *next++ = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1923 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1924 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1925 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1926 label = XmStringCreate(_((char *)p), STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1927 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1928 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1929
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1930 buttons[butcount] = XtVaCreateManagedWidget("button",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1931 xmPushButtonWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1932 XmNlabelString, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1933 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1934 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1935 XmNshowAsDefault, butcount == dfltbutton - 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1936 XmNdefaultButtonShadowThickness, 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1937 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1938 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1939
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1940 /* Layout properly. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1941
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1942 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1943 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1944 if (vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1945 XtVaSetValues(buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1946 XmNtopWidget, buttons[butcount - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1947 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1948 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1949 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1950 if (*next == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1951 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1952 XtVaSetValues(buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1953 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1954 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1955 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1956
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1957 /* fill in a form as invisible separator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1958 sep_form = XtVaCreateWidget("separatorForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1959 xmFormWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1960 XmNleftAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1961 XmNleftWidget, buttons[butcount - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1962 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1963 XmNrightWidget, buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1964 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1965 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1966 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1967 XtManageChild(sep_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1968 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1969 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1970 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1971 XtVaSetValues(buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1972 XmNleftAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1973 XmNleftWidget, buttons[butcount - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1974 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1975 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1976 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1977 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1978 else if (!vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1979 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1980 if (*next == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1981 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1982 XtVaSetValues(buttons[0],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1983 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1984 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1985 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1986
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1987 /* fill in a form as invisible separator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1988 sep_form = XtVaCreateWidget("separatorForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1989 xmFormWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1990 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1991 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1992 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1993 XmNrightWidget, buttons[0],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1994 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1995 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1996 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1997 XtManageChild(sep_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1998 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1999 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2000 XtVaSetValues(buttons[0],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2001 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2002 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2003 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2004 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2005
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2006 XtAddCallback(buttons[butcount], XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2007 (XtCallbackProc)butproc, (XtPointer)(long)butcount);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2008 p = next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2009 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2010 vim_free(buts);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2011
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2012 separator = (Widget) 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2013 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2014 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2015 /* Create the separator for beauty. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2016 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2017 XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2018 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2019 XtSetArg(args[n], XmNbottomWidget, buttons[0]); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2020 XtSetArg(args[n], XmNbottomOffset, 4); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2021 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2022 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2023 separator = XmCreateSeparatorGadget(dialogform, "separator", args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2024 XtManageChild(separator);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2025 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2026
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2027 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2028 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2029 dialogtextfield = XtVaCreateWidget("textField",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2030 xmTextFieldWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2031 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2032 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2033 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2034 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2035 XtVaSetValues(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2036 XmNbottomAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2037 XmNbottomWidget, separator,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2038 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2039 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2040 XtVaSetValues(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2041 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2042 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2043
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2044 gui_motif_set_fontlist(dialogtextfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2045 XmTextFieldSetString(dialogtextfield, (char *)textfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2046 XtManageChild(dialogtextfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2047 XtAddEventHandler(dialogtextfield, KeyPressMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2048 (XtEventHandler)keyhit_callback, (XtPointer)NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2049 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2050
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2051 /* Form holding both message and pixmap labels */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2052 form = XtVaCreateWidget("separatorForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2053 xmFormWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2054 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2055 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2056 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2057 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2058 XtManageChild(form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2059
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2060 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2061 /* Add a pixmap, left of the message. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2062 switch (type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2063 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2064 case VIM_GENERIC:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2065 icon_data = generic_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2066 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2067 case VIM_ERROR:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2068 icon_data = error_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2069 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2070 case VIM_WARNING:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2071 icon_data = alert_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2072 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2073 case VIM_INFO:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2074 icon_data = info_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2075 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2076 case VIM_QUESTION:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2077 icon_data = quest_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2078 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2079 default:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2080 icon_data = generic_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2081 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2082
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2083 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2084 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2085 XtSetArg(args[n], XmNtopOffset, 8); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2086 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2087 XtSetArg(args[n], XmNbottomOffset, 8); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2088 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2089 XtSetArg(args[n], XmNleftOffset, 8); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2090
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2091 dialogpixmap = create_pixmap_label(form, "dialogPixmap",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2092 icon_data, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2093 XtManageChild(dialogpixmap);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2094 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2095
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2096 /* Create the dialog message. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2097 label = XmStringLtoRCreate((char *)message, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2098 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2099 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2100 (void)XtVaCreateManagedWidget("dialogMessage",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2101 xmLabelGadgetClass, form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2102 XmNlabelString, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2103 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2104 XmNtopOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2105 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2106 XmNleftAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2107 XmNleftWidget, dialogpixmap,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2108 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2109 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2110 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2111 XmNleftOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2112 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2113 XmNrightOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2114 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2115 XmNbottomOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2116 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2117 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2118
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2119 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2120 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2121 XtVaSetValues(form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2122 XmNbottomAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2123 XmNbottomWidget, dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2124 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2125 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2126 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2127 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2128 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2129 XtVaSetValues(form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2130 XmNbottomAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2131 XmNbottomWidget, separator,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2132 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2133 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2134 XtVaSetValues(form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2135 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2136 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2137 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2138
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2139 if (dfltbutton < 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2140 dfltbutton = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2141 if (dfltbutton > butcount)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2142 dfltbutton = butcount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2143 XtVaSetValues(dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2144 XmNdefaultButton, buttons[dfltbutton - 1], NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2145 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2146 XtVaSetValues(dialogform, XmNinitialFocus, dialogtextfield, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2147 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2148 XtVaSetValues(dialogform, XmNinitialFocus, buttons[dfltbutton - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2149 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2150
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2151 manage_centered(dialogform);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2152
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2153 if (textfield != NULL && *textfield != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2154 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2155 /* This only works after the textfield has been realised. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2156 XmTextFieldSetSelection(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2157 (XmTextPosition)0, (XmTextPosition)STRLEN(textfield),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2158 XtLastTimestampProcessed(gui.dpy));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2159 XmTextFieldSetCursorPosition(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2160 (XmTextPosition)STRLEN(textfield));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2161 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2162
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2163 app = XtWidgetToApplicationContext(dialogform);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2164
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2165 /* Loop until a button is pressed or the dialog is killed somehow. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2166 dialogStatus = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2167 for (;;)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2168 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2169 XtAppProcessEvent(app, (XtInputMask)XtIMAll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2170 if (dialogStatus >= 0 || !XtIsManaged(dialogform))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2171 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2172 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2173
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2174 vim_free(buttons);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2175
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2176 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2177 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2178 p = (char_u *)XmTextGetString(dialogtextfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2179 if (p == NULL || dialogStatus < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2180 *textfield = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2181 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2182 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2183 STRNCPY(textfield, p, IOSIZE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2184 textfield[IOSIZE - 1] = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2185 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2186 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2187
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2188 XtDestroyWidget(dialogform);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2189
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2190 return dialogStatus;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2191 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2192 #endif /* FEAT_GUI_DIALOG */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2194 #if defined(FEAT_FOOTER) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2195
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2196 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2197 gui_mch_compute_footer_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2198 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2199 Dimension height; /* total Toolbar height */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2200 Dimension top; /* XmNmarginTop */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2201 Dimension bottom; /* XmNmarginBottom */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2202 Dimension shadow; /* XmNshadowThickness */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2203
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2204 XtVaGetValues(footer,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2205 XmNheight, &height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2206 XmNmarginTop, &top,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2207 XmNmarginBottom, &bottom,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2208 XmNshadowThickness, &shadow,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2209 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2210
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2211 return (int) height + top + bottom + (shadow << 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2212 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2213
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2214 #if 0 /* not used */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2215 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2216 gui_mch_set_footer_pos(h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2217 int h; /* textArea height */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2218 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2219 XtVaSetValues(footer,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2220 XmNtopOffset, h + 7,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2221 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2222 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2223 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2224
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2225 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2226 gui_mch_enable_footer(showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2227 int showit;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2228 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2229 if (showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2230 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2231 gui.footer_height = gui_mch_compute_footer_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2232 XtManageChild(footer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2233 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2234 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2235 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2236 gui.footer_height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2237 XtUnmanageChild(footer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2238 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2239 XtVaSetValues(textAreaForm, XmNbottomOffset, gui.footer_height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2240 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2241
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2242 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2243 gui_mch_set_footer(s)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2244 char_u *s;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2245 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2246 XmString xms;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2247
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2248 xms = XmStringCreate((char *)s, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2249 XtVaSetValues(footer, XmNlabelString, xms, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2250 XmStringFree(xms);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2251 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2252
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2253 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2254
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2255
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2256 #if defined(FEAT_TOOLBAR) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2257 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2258 gui_mch_show_toolbar(int showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2259 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2260 Cardinal numChildren; /* how many children toolBar has */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2261
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2262 if (toolBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2263 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2264 XtVaGetValues(toolBar, XmNnumChildren, &numChildren, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2265 if (showit && numChildren > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2266 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2267 /* Assume that we want to show the toolbar if p_toolbar contains
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2268 * valid option settings, therefore p_toolbar must not be NULL.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2269 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2270 WidgetList children;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2271
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2272 XtVaGetValues(toolBar, XmNchildren, &children, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2273 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2274 void (*action)(BalloonEval *);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2275 int text = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2276
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2277 if (strstr((const char *)p_toolbar, "tooltips"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2278 action = &gui_mch_enable_beval_area;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2279 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2280 action = &gui_mch_disable_beval_area;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2281 if (strstr((const char *)p_toolbar, "text"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2282 text = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2283 else if (strstr((const char *)p_toolbar, "icons"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2284 text = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2285 if (text != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2286 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2287 vimmenu_T *toolbar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2288 vimmenu_T *cur;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2289
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2290 for (toolbar = root_menu; toolbar; toolbar = toolbar->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2291 if (menu_is_toolbar(toolbar->dname))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2292 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2293 /* Assumption: toolbar is NULL if there is no toolbar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2294 * otherwise it contains the toolbar menu structure.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2295 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2296 * Assumption: "numChildren" == the number of items in the list
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2297 * of items beginning with toolbar->children.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2298 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2299 if (toolbar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2300 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2301 for (cur = toolbar->children; cur; cur = cur->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2302 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2303 Arg args[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2304 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2305
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2306 /* Enable/Disable tooltip (OK to enable while
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2307 * currently enabled)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2308 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2309 if (cur->tip != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2310 (*action)(cur->tip);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2311 if (!menu_is_separator(cur->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2312 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2313 if (text == 1 || cur->image == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2314 XtSetArg(args[n], XmNlabelType, XmSTRING);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2315 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2316 XtSetArg(args[n], XmNlabelType, XmPIXMAP);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2317 n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2318 if (cur->id != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2319 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2320 XtUnmanageChild(cur->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2321 XtSetValues(cur->id, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2322 XtManageChild(cur->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2323 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2324 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2325 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2326 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2327 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2328 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2329 gui.toolbar_height = gui_mch_compute_toolbar_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2330 XtManageChild(XtParent(toolBar));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2331 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2332 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2333 XmNtopWidget, XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2334 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2335 if (XtIsManaged(menuBar))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2336 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2337 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2338 XmNtopWidget, menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2339 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2340 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2341 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2342 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2343 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2344 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2345 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2346 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2347 gui.toolbar_height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2348 if (XtIsManaged(menuBar))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2349 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2350 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2351 XmNtopWidget, menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2352 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2353 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2354 XtVaSetValues(textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2355 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2356 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2357
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2358 XtUnmanageChild(XtParent(toolBar));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2359 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2360 gui_set_shellsize(FALSE, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2361 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2362
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2363 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2364 * A toolbar button has been pushed; now reset the input focus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2365 * such that the user can type page up/down etc. and have the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2366 * input go to the editor window, not the button
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2367 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2368 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2369 gui_mch_reset_focus()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2370 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2371 if (textArea != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2372 XmProcessTraversal(textArea, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2373 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2374
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2375 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2376 gui_mch_compute_toolbar_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2377 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2378 Dimension height; /* total Toolbar height */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2379 Dimension whgt; /* height of each widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2380 Dimension marginHeight; /* XmNmarginHeight of toolBar */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2381 Dimension shadowThickness; /* thickness of Xtparent(toolBar) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2382 WidgetList children; /* list of toolBar's children */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2383 Cardinal numChildren; /* how many children toolBar has */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2384 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2385
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2386 height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2387 shadowThickness = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2388 marginHeight = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2389 if (toolBar != (Widget)0 && toolBarFrame != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2390 { /* get height of XmFrame parent */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2391 XtVaGetValues(toolBarFrame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2392 XmNshadowThickness, &shadowThickness,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2393 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2394 XtVaGetValues(toolBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2395 XmNmarginHeight, &marginHeight,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2396 XmNchildren, &children,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2397 XmNnumChildren, &numChildren, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2398 for (i = 0; i < numChildren; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2399 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2400 whgt = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2401 XtVaGetValues(children[i], XmNheight, &whgt, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2402 if (height < whgt)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2403 height = whgt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2404 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2405 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2406
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2407 return (int)(height + (marginHeight << 1) + (shadowThickness << 1));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2408 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2409
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2410 #if 0 /* these are never called. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2411 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2412 * The next toolbar enter/leave callbacks make sure the text area gets the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2413 * keyboard focus when the pointer is not in the toolbar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2414 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2415 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2416 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2417 toolbar_enter_cb(w, client_data, event, cont)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2418 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2419 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2420 XEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2421 Boolean *cont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2422 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2423 XmProcessTraversal(toolBar, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2424 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2425
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2426 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2427 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2428 toolbar_leave_cb(w, client_data, event, cont)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2429 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2430 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2431 XEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2432 Boolean *cont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2433 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2434 XmProcessTraversal(textArea, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2435 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2436 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2437
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2438 # ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2439 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2440 * The next toolbar enter/leave callbacks should really do balloon help. But
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2441 * I have to use footer help for backwards compatability. Hopefully both will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2442 * get implemented and the user will have a choice.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2443 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2444 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2445 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2446 toolbarbutton_enter_cb(w, client_data, event, cont)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2447 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2448 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2449 XEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2450 Boolean *cont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2451 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2452 vimmenu_T *menu = (vimmenu_T *) client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2453
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2454 if (menu->strings[MENU_INDEX_TIP] != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2455 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2456 if (vim_strchr(p_go, GO_FOOTER) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2457 gui_mch_set_footer(menu->strings[MENU_INDEX_TIP]);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2458 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2459 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2460
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2461 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2462 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2463 toolbarbutton_leave_cb(w, client_data, event, cont)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2464 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2465 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2466 XEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2467 Boolean *cont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2468 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2469 gui_mch_set_footer((char_u *) "");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2470 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2471 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2472
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2473 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2474 gui_mch_get_toolbar_colors(bgp, fgp, bsp, tsp, hsp)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2475 Pixel *bgp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2476 Pixel *fgp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2477 Pixel *bsp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2478 Pixel *tsp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2479 Pixel *hsp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2480 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2481 XtVaGetValues(toolBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2482 XmNbackground, bgp,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2483 XmNforeground, fgp,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2484 XmNbottomShadowColor, bsp,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2485 XmNtopShadowColor, tsp,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2486 XmNhighlightColor, hsp,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2487 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2488 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2489 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2490
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2491 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2492 * Set the colors of Widget "id" to the menu colors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2493 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2494 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2495 gui_motif_menu_colors(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2496 Widget id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2497 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2498 if (gui.menu_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2499 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2500 XmChangeColor(id, gui.menu_bg_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2501 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2502 XtVaSetValues(id, XmNbackground, gui.menu_bg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2503 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2504 if (gui.menu_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2505 XtVaSetValues(id, XmNforeground, gui.menu_fg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2506 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2507
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2508 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2509 * Set the colors of Widget "id" to the scrollbar colors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2510 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2511 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2512 gui_motif_scroll_colors(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2513 Widget id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2514 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2515 if (gui.scroll_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2516 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2517 XmChangeColor(id, gui.scroll_bg_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2518 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2519 XtVaSetValues(id, XmNbackground, gui.scroll_bg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2520 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2521 if (gui.scroll_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2522 XtVaSetValues(id, XmNforeground, gui.scroll_fg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2523 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2524
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2525 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2526 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2527 * Set the fontlist for Widget "id" to use gui.menu_fontset or gui.menu_font.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2528 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2529 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2530 gui_motif_menu_fontlist(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2531 Widget id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2532 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2533 #ifdef FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2534 if (gui.menu_fontset != NOFONTSET)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2535 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2536 XmFontList fl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2537
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2538 fl = gui_motif_fontset2fontlist((XFontSet *)&gui.menu_fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2539 if (fl != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2540 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2541 if (XtIsManaged(id))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2542 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2543 XtUnmanageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2544 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2545 /* We should force the widget to recalculate it's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2546 * geometry now. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2547 XtManageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2548 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2549 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2550 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2551 XmFontListFree(fl);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2552 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2553 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2554 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2555 if (gui.menu_font != NOFONT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2556 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2557 XmFontList fl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2558
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2559 fl = gui_motif_create_fontlist((XFontStruct *)gui.menu_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2560 if (fl != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2561 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2562 if (XtIsManaged(id))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2563 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2564 XtUnmanageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2565 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2566 /* We should force the widget to recalculate it's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2567 * geometry now. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2568 XtManageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2569 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2570 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2571 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2572 XmFontListFree(fl);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2573 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2574 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2575 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2576 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2577
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2578 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2579
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2580 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2581 * We don't create it twice for the sake of speed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2582 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2583
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2584 typedef struct _SharedFindReplace
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2585 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2586 Widget dialog; /* the main dialog widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2587 Widget wword; /* 'Exact match' check button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2588 Widget mcase; /* 'match case' check button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2589 Widget up; /* search direction 'Up' radio button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2590 Widget down; /* search direction 'Down' radio button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2591 Widget what; /* 'Find what' entry text widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2592 Widget with; /* 'Replace with' entry text widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2593 Widget find; /* 'Find Next' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2594 Widget replace; /* 'Replace With' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2595 Widget all; /* 'Replace All' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2596 Widget undo; /* 'Undo' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2597
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2598 Widget cancel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2599 } SharedFindReplace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2600
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2601 static SharedFindReplace find_widgets = { NULL };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2602 static SharedFindReplace repl_widgets = { NULL };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2603
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2604 static void find_replace_destroy_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2605 static void find_replace_dismiss_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2606 static void entry_activate_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2607 static void find_replace_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2608 static void find_replace_keypress __ARGS((Widget w, SharedFindReplace * frdp, XKeyEvent * event));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2609 static void find_replace_dialog_create __ARGS((char_u *entry_text, int do_replace));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2610
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2611 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2612 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2613 find_replace_destroy_callback(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2614 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2615 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2616 XtPointer call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2617 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2618 SharedFindReplace *cd = (SharedFindReplace *)client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2619
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2620 if (cd != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2621 cd->dialog = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2622 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2623
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2624 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2625 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2626 find_replace_dismiss_callback(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2627 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2628 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2629 XtPointer call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2630 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2631 SharedFindReplace *cd = (SharedFindReplace *)client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2632
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2633 if (cd != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2634 XtUnmanageChild(cd->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2635 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2636
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2637 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2638 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2639 entry_activate_callback(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2640 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2641 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2642 XtPointer call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2643 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2644 XmProcessTraversal((Widget)client_data, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2645 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2646
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2647 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2648 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2649 find_replace_callback(w, client_data, call_data)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2650 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2651 XtPointer client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2652 XtPointer call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2653 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2654 long_u flags = (long_u)client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2655 char *find_text, *repl_text;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2656 Boolean direction_down = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2657 Boolean wword;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2658 Boolean mcase;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2659 SharedFindReplace *sfr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2660
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2661 if (flags == FRD_UNDO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2662 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2663 char_u *save_cpo = p_cpo;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2664
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2665 /* No need to be Vi compatible here. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2666 p_cpo = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2667 u_undo(1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2668 p_cpo = save_cpo;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2669 gui_update_screen();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2670 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2671 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2672
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2673 /* Get the search/replace strings from the dialog */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2674 if (flags == FRD_FINDNEXT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2675 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2676 repl_text = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2677 sfr = &find_widgets;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2678 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2679 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2680 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2681 repl_text = XmTextFieldGetString(repl_widgets.with);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2682 sfr = &repl_widgets;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2683 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2684 find_text = XmTextFieldGetString(sfr->what);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2685 XtVaGetValues(sfr->down, XmNset, &direction_down, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2686 XtVaGetValues(sfr->wword, XmNset, &wword, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2687 XtVaGetValues(sfr->mcase, XmNset, &mcase, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2688 if (wword)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2689 flags |= FRD_WHOLE_WORD;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2690 if (mcase)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2691 flags |= FRD_MATCH_CASE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2692
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2693 (void)gui_do_findrepl((int)flags, (char_u *)find_text, (char_u *)repl_text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2694 direction_down);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2695
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2696 if (find_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2697 XtFree(find_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2698 if (repl_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2699 XtFree(repl_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2700 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2701
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2702 /*ARGSUSED*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2703 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2704 find_replace_keypress(w, frdp, event)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2705 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2706 SharedFindReplace *frdp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2707 XKeyEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2708 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2709 KeySym keysym;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2710
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2711 if (frdp == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2712 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2713
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2714 keysym = XLookupKeysym(event, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2715
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2716 /* the scape key pops the whole dialog down */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2717 if (keysym == XK_Escape)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2718 XtUnmanageChild(frdp->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2719 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2720
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2721 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2722 find_replace_dialog_create(arg, do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2723 char_u *arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2724 int do_replace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2725 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2726 SharedFindReplace *frdp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2727 Widget separator;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2728 Widget input_form;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2729 Widget button_form;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2730 Widget toggle_form;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2731 Widget frame;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2732 XmString str;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2733 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2734 Arg args[6];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2735 int wword = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2736 int mcase = !p_ic;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2737 Dimension width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2738 Dimension widest;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2739 char_u *entry_text;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2740
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2741 frdp = do_replace ? &repl_widgets : &find_widgets;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2742
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2743 /* Get the search string to use. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2744 entry_text = get_find_dialog_text(arg, &wword, &mcase);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2745
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2746 /* If the dialog already exists, just raise it. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2747 if (frdp->dialog)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2748 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2749 /* If the window is already up, just pop it to the top */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2750 if (XtIsManaged(frdp->dialog))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2751 XMapRaised(XtDisplay(frdp->dialog),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2752 XtWindow(XtParent(frdp->dialog)));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2753 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2754 XtManageChild(frdp->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2755 XtPopup(XtParent(frdp->dialog), XtGrabNone);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2756 XmProcessTraversal(frdp->what, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2757
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2758 if (entry_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2759 XmTextFieldSetString(frdp->what, (char *)entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2760 vim_free(entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2761
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2762 XtVaSetValues(frdp->wword, XmNset, wword, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2763 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2764 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2765
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2766 /* Create a fresh new dialog window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2767 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2768 str = XmStringCreateSimple(_("VIM - Search and Replace..."));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2769 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2770 str = XmStringCreateSimple(_("VIM - Search..."));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2771
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2772 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2773 XtSetArg(args[n], XmNautoUnmanage, False); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2774 XtSetArg(args[n], XmNnoResize, True); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2775 XtSetArg(args[n], XmNdialogTitle, str); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2776
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2777 frdp->dialog = XmCreateFormDialog(vimShell, "findReplaceDialog", args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2778 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2779 XtAddCallback(frdp->dialog, XmNdestroyCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2780 find_replace_destroy_callback, frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2781
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2782 button_form = XtVaCreateWidget("buttonForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2783 xmFormWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2784 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2785 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2786 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2787 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2788 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2789 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2790 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2791
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2792 str = XmStringCreateSimple(_("Find Next"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2793 frdp->find = XtVaCreateManagedWidget("findButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2794 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2795 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2796 XmNsensitive, True,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2797 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2798 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2799 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2800 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2801 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2802
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2803 XtAddCallback(frdp->find, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2804 find_replace_callback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2805 (XtPointer) (do_replace ? FRD_R_FINDNEXT : FRD_FINDNEXT));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2806
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2807 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2808 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2809 str = XmStringCreateSimple(_("Replace"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2810 frdp->replace = XtVaCreateManagedWidget("replaceButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2811 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2812 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2813 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2814 XmNtopWidget, frdp->find,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2815 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2816 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2817 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2818 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2819 XtAddCallback(frdp->replace, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2820 find_replace_callback, (XtPointer)FRD_REPLACE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2821
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2822 str = XmStringCreateSimple(_("Replace All"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2823 frdp->all = XtVaCreateManagedWidget("replaceAllButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2824 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2825 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2826 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2827 XmNtopWidget, frdp->replace,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2828 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2829 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2830 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2831 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2832 XtAddCallback(frdp->all, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2833 find_replace_callback, (XtPointer)FRD_REPLACEALL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2834
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2835 str = XmStringCreateSimple(_("Undo"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2836 frdp->undo = XtVaCreateManagedWidget("undoButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2837 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2838 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2839 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2840 XmNtopWidget, frdp->all,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2841 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2842 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2843 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2844 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2845 XtAddCallback(frdp->undo, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2846 find_replace_callback, (XtPointer)FRD_UNDO);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2847 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2848
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2849 str = XmStringCreateSimple(_("Cancel"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2850 frdp->cancel = XtVaCreateManagedWidget("closeButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2851 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2852 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2853 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2854 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2855 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2856 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2857 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2858 XtAddCallback(frdp->cancel, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2859 find_replace_dismiss_callback, frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2860
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2861 XtManageChild(button_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2862
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2863 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2864 XtSetArg(args[n], XmNorientation, XmVERTICAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2865 XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2866 XtSetArg(args[n], XmNrightWidget, button_form); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2867 XtSetArg(args[n], XmNrightOffset, 4); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2868 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2869 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2870 separator = XmCreateSeparatorGadget(frdp->dialog, "separator", args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2871 XtManageChild(separator);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2872
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2873 input_form = XtVaCreateWidget("inputForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2874 xmFormWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2875 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2876 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2877 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2878 XmNrightWidget, separator,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2879 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2880 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2881 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2882 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2883
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2884 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2885 Widget label_what;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2886 Widget label_with = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2887
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2888 str = XmStringCreateSimple(_("Find what:"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2889 label_what = XtVaCreateManagedWidget("whatLabel",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2890 xmLabelGadgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2891 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2892 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2893 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2894 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2895 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2896 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2897
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2898 frdp->what = XtVaCreateManagedWidget("whatText",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2899 xmTextFieldWidgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2900 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2901 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2902 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2903 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2904
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2905 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2906 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2907 frdp->with = XtVaCreateManagedWidget("withText",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2908 xmTextFieldWidgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2909 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2910 XmNtopWidget, frdp->what,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2911 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2912 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2913 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2914 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2915 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2916
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2917 XtAddCallback(frdp->with, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2918 find_replace_callback, (XtPointer) FRD_R_FINDNEXT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2919
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2920 str = XmStringCreateSimple(_("Replace with:"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2921 label_with = XtVaCreateManagedWidget("withLabel",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2922 xmLabelGadgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2923 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2924 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2925 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2926 XmNtopWidget, frdp->what,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2927 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2928 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2929 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2930 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2931
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2932 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2933 * Make the entry activation only change the input focus onto the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2934 * with item.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2935 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2936 XtAddCallback(frdp->what, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2937 entry_activate_callback, frdp->with);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2938 XtAddEventHandler(frdp->with, KeyPressMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2939 (XtEventHandler)find_replace_keypress,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2940 (XtPointer) frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2941
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2942 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2943 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2944 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2945 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2946 * Make the entry activation do the search.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2947 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2948 XtAddCallback(frdp->what, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2949 find_replace_callback, (XtPointer)FRD_FINDNEXT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2950 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2951 XtAddEventHandler(frdp->what, KeyPressMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2952 (XtEventHandler)find_replace_keypress,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2953 (XtPointer)frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2954
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2955 /* Get the maximum width between the label widgets and line them up.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2956 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2957 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2958 XtSetArg(args[n], XmNwidth, &width); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2959 XtGetValues(label_what, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2960 widest = width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2961 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2962 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2963 XtGetValues(label_with, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2964 if (width > widest)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2965 widest = width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2966 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2967
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2968 XtVaSetValues(frdp->what, XmNleftOffset, widest, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2969 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2970 XtVaSetValues(frdp->with, XmNleftOffset, widest, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2971
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2972 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2973
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2974 XtManageChild(input_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2975
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2976 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2977 Widget radio_box;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2978
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2979 frame = XtVaCreateWidget("directionFrame",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2980 xmFrameWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2981 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2982 XmNtopWidget, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2983 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2984 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2985 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2986 XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2987 XmNrightWidget, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2988 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2989
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2990 str = XmStringCreateSimple(_("Direction"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2991 (void)XtVaCreateManagedWidget("directionFrameLabel",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2992 xmLabelGadgetClass, frame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2993 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2994 XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2995 XmNchildType, XmFRAME_TITLE_CHILD,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2996 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2997 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2998
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2999 radio_box = XmCreateRadioBox(frame, "radioBox",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3000 (ArgList)NULL, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3001
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3002 str = XmStringCreateSimple( _("Up"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3003 frdp->up = XtVaCreateManagedWidget("upRadioButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3004 xmToggleButtonGadgetClass, radio_box,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3005 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3006 XmNset, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3007 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3008 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3009
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3010 str = XmStringCreateSimple(_("Down"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3011 frdp->down = XtVaCreateManagedWidget("downRadioButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3012 xmToggleButtonGadgetClass, radio_box,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3013 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3014 XmNset, True,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3015 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3016 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3017
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3018 XtManageChild(radio_box);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3019 XtManageChild(frame);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3020 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3021
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3022 toggle_form = XtVaCreateWidget("toggleForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3023 xmFormWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3024 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3025 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3026 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3027 XmNrightWidget, frame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3028 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3029 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3030 XmNtopWidget, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3031 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3032 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3033 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3034 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3035
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3036 str = XmStringCreateSimple(_("Match whole word only"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3037 frdp->wword = XtVaCreateManagedWidget("wordToggle",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3038 xmToggleButtonGadgetClass, toggle_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3039 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3040 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3041 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3042 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3043 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3044 XmNset, wword,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3045 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3046 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3047
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3048 str = XmStringCreateSimple(_("Match case"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3049 frdp->mcase = XtVaCreateManagedWidget("caseToggle",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3050 xmToggleButtonGadgetClass, toggle_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3051 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3052 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3053 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3054 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3055 XmNtopWidget, frdp->wword,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3056 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3057 XmNset, mcase,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3058 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3059 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3060
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3061 XtManageChild(toggle_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3062
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3063 if (entry_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3064 XmTextFieldSetString(frdp->what, (char *)entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3065 vim_free(entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3066
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3067 XtManageChild(frdp->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3068 XmProcessTraversal(frdp->what, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3069 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3070
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3071 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3072 gui_mch_find_dialog(eap)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3073 exarg_T *eap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3074 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3075 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3076 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3077
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3078 find_replace_dialog_create(eap->arg, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3079 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3080
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3081
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3082 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3083 gui_mch_replace_dialog(eap)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3084 exarg_T *eap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3085 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3086 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3087 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3088
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3089 find_replace_dialog_create(eap->arg, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3090 }