2 # This file is part of gtkD.
4 # gtkD is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU Lesser General Public License as published by
6 # the Free Software Foundation; either version 2.1 of the License, or
7 # (at your option) any later version.
9 # gtkD is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public License
15 # along with gtkD; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 # Definitions for wrapping Glade
31 public import gtkc.glibtypes;
32 public import gtkc.gobjecttypes;
33 public import gtkc.gdktypes;
34 public import gtkc.gtktypes;
39 // hacks as we ignore all connect stuff at present..
40 alias void* GladeXMLConnectFunc;
41 alias void* GladeXMLCustomWidgetHandler;
66 # must start with wrap
70 ###########################################################
71 ### Glade #############################################
72 ###########################################################
84 structWrap: GladeXML* Glade
86 structWrap: GtkWidget* Widget
87 import: gobject.ObjectG
88 structWrap: GObject* ObjectG
90 structWrap: GList* ListG
93 nocode: glade_xml_signal_autoconnect
94 nocode: glade_xml_signal_connect_data
95 nocode: glade_xml_signal_connect
96 nocode: glade_xml_signal_connect_full
97 nocode: glade_xml_signal_autoconnect_full
98 nocode: GladeXMLConnectFunc
99 nocode: GladeXMLCustomWidgetHandler
100 nocode: glade_set_custom_handler
102 nocode: glade_xml_get_widget
103 nocode: glade_xml_new
104 nocode: glade_xml_get_widget_prefix
108 * This function is used to get a pointer to the GtkWidget corresponding to
109 * name in the interface description. You would use this if you have to do
110 * anything to the widget after loading.
112 * the GladeXML object.
114 * the name of the widget.
116 * the widget matching name, or NULL if none exists.
118 public Widget getWidget(char[] name)
120 // GtkWidget* glade_xml_get_widget (GladeXML *self, const char *name);
121 return newFromWidget(cast(void *) glade_xml_get_widget(gladeXML, Str.toStringz(name)) );
130 * Creates a new GladeXML object (and the corresponding widgets) from the
131 * XML file fname. Optionally it will only build the interface from the
132 * widget node root (if it is not NULL). This feature is useful if you
133 * only want to build say a toolbar or menu from the XML file, but not the
134 * window it is embedded in. Note also that the XML parse tree is cached
135 * to speed up creating another GladeXML object for the same file
139 * the widget node in fname to start building from (or NULL)
141 * the translation domain for the XML file (or NULL for default)
143 * the newly created GladeXML object, or NULL on failure.
145 public this (char[] fname, char[] root = null, char[] domain=null)
147 // GladeXML* glade_xml_new (const char *fname, const char *root, const char *domain);
148 this(cast(GladeXML*)glade_xml_new(Str.toStringz(fname),
149 root ? Str.toStringz(root) : null,
150 domain ? Str.toStringz(domain) : null) );
154 * This function is used to get a list of pointers to the GtkWidget(s)
155 * with names that start with the string name in the interface description.
156 * You would use this if you have to do something to all of these widgets
159 * the GladeXML object.
161 * the name of the widget.
163 * A list of the widget that match name as the start of their
164 * name, or NULL if none exists.
166 public Widget[] getWidgetPrefix(char[] name)
168 // GList* glade_xml_get_widget_prefix (GladeXML *self, const char *name);
170 ListG widgets = new ListG( glade_xml_get_widget_prefix(gladeXML, Str.toStringz(name)) );
171 for (int i=0;i < widgets.length; i++) {
172 ret ~= newFromWidget( cast(void *)widgets.nthData(i) );
174 return widgets.length ? ret : null;
179 * Utilitiy method to create objects that are castable.
182 private import gobject.Type;
183 private import gtk.Container;
184 private import gtk.Bin;
185 private import gtk.Window;
186 private import gtk.Dialog;
187 private import gtk.AboutDialog;
188 private import gtk.ColorSelectionDialog;
189 private import gtk.FileChooserDialog;
190 private import gtk.FileSelection;
191 private import gtk.FontSelectionDialog;
192 private import gtk.InputDialog;
193 private import gtk.MessageDialog;
194 //private import gtk.PageSetupUnixDialog;
195 //private import gtk.PrintUnixDialog;
196 //private import gtk.RecentChooserDialog;
197 private import gtk.Assistant;
198 private import gtk.Plug;
199 private import gtk.Alignment;
200 private import gtk.Frame;
201 private import gtk.AspectFrame;
202 private import gtk.Button;
203 private import gtk.ToggleButton;
204 private import gtk.CheckButton;
205 private import gtk.RadioButton;
206 private import gtk.ColorButton;
207 private import gtk.FontButton;
208 //private import gtk.LinkButton;
209 //private import gtk.OptionMenu;
210 private import gtk.Item;
211 private import gtk.MenuItem;
212 private import gtk.CheckMenuItem;
213 private import gtk.RadioMenuItem;
214 private import gtk.ImageMenuItem;
215 private import gtk.SeparatorMenuItem;
216 private import gtk.TearoffMenuItem;
217 //private import gtk.ListItem;
218 //private import gtk.TreeItem;
219 private import gtk.ComboBox;
220 private import gtk.ComboBoxEntry;
221 private import gtk.EventBox;
222 private import gtk.Expander;
223 private import gtk.HandleBox;
224 private import gtk.ToolItem;
225 private import gtk.ToolButton;
226 private import gtk.MenuToolButton;
227 private import gtk.ToggleToolButton;
228 private import gtk.RadioToolButton;
229 private import gtk.SeparatorToolItem;
230 private import gtk.ScrolledWindow;
231 private import gtk.Viewport;
232 private import gtk.Box;
233 private import gtk.ButtonBox;
234 private import gtk.HButtonBox;
235 private import gtk.VButtonBox;
236 private import gtk.VBox;
237 private import gtk.ColorSelection;
238 private import gtk.FileChooserWidget;
239 private import gtk.FontSelection;
240 private import gtk.GammaCurve;
241 //private import gtk.RecentChooserWidget;
242 private import gtk.HBox;
243 //private import gtk.Combo;
244 private import gtk.FileChooserButton;
245 private import gtk.Statusbar;
246 //private import gtk.CList;
247 //private import gtk.CTree;
248 private import gtk.Fixed;
249 private import gtk.Paned;
250 private import gtk.HPaned;
251 private import gtk.VPaned;
252 private import gtk.IconView;
253 private import gtk.Layout;
254 //private import gtk.List;
255 private import gtk.MenuShell;
256 private import gtk.MenuBar;
257 private import gtk.Menu;
258 //private import gtk.RecentChooserMenu;
259 private import gtk.Notebook;
260 private import gtk.Socket;
261 private import gtk.Table;
262 private import gtk.TextView;
263 private import gtk.Toolbar;
264 //private import gtk.Tree;
265 private import gtk.TreeView;
266 private import gtk.Misc;
267 private import gtk.Label;
268 private import gtk.AccelLabel;
269 //private import gtk.TipsQuery;
270 private import gtk.Arrow;
271 private import gtk.Image;
272 //private import gtk.Pixmap;
273 private import gtk.Calendar;
274 private import gtk.CellView;
275 private import gtk.DrawingArea;
276 private import gtk.Curve;
277 private import gtk.Entry;
278 private import gtk.SpinButton;
279 private import gtk.Ruler;
280 private import gtk.HRuler;
281 private import gtk.VRuler;
282 private import gtk.Range;
283 private import gtk.Scale;
284 private import gtk.HScale;
285 private import gtk.VScale;
286 private import gtk.Scrollbar;
287 private import gtk.HScrollbar;
288 private import gtk.VScrollbar;
289 private import gtk.Separator;
290 private import gtk.HSeparator;
291 private import gtk.VSeparator;
292 private import gtk.Invisible;
293 //private import gtk.OldEditable;
294 //private import gtk.Text;
295 //private import gtk.Preview;
296 private import gtk.Progress;
297 private import gtk.ProgressBar;
299 Widget newFromWidget(void * ptr)
305 int* pt =cast(int*)ptr;
307 int* pt2 =cast(int*) (cast(int*)(*pt));
308 uint utype = cast(uint)(*pt2);
310 char[] tname = Type.name(cast(GType)utype);
313 case "GtkContainer": return new Container(cast(GtkContainer *)ptr);
314 case "GtkBin": return new Bin(cast(GtkBin *)ptr);
315 case "GtkWindow": return new Window(cast(GtkWindow *)ptr);
316 case "GtkDialog": return new Dialog(cast(GtkDialog *)ptr);
317 case "GtkAboutDialog": return new AboutDialog(cast(GtkAboutDialog *)ptr);
318 case "GtkColorSelectionDialog": return new ColorSelectionDialog(cast(GtkColorSelectionDialog *)ptr);
319 case "GtkFileChooserDialog": return new FileChooserDialog(cast(GtkFileChooserDialog *)ptr);
320 case "GtkFileSelection": return new FileSelection(cast(GtkFileSelection *)ptr);
321 case "GtkFontSelectionDialog": return new FontSelectionDialog(cast(GtkFontSelectionDialog *)ptr);
322 case "GtkInputDialog": return new InputDialog(cast(GtkInputDialog *)ptr);
323 case "GtkMessageDialog": return new MessageDialog(cast(GtkMessageDialog *)ptr);
324 //case "GtkPageSetupUnixDialog": return new PageSetupUnixDialog(cast(GtkPageSetupUnixDialog *)ptr);
325 //case "GtkPrintUnixDialog": return new PrintUnixDialog(cast(GtkPrintUnixDialog *)ptr);
326 //case "GtkRecentChooserDialog": return new RecentChooserDialog(cast(GtkRecentChooserDialog *)ptr);
327 case "GtkAssistant": return new Assistant(cast(GtkAssistant *)ptr);
328 case "GtkPlug": return new Plug(cast(GtkPlug *)ptr);
329 case "GtkAlignment": return new Alignment(cast(GtkAlignment *)ptr);
330 case "GtkFrame": return new Frame(cast(GtkFrame *)ptr);
331 case "GtkAspectFrame": return new AspectFrame(cast(GtkAspectFrame *)ptr);
332 case "GtkButton": return new Button(cast(GtkButton *)ptr);
333 case "GtkToggleButton": return new ToggleButton(cast(GtkToggleButton *)ptr);
334 case "GtkCheckButton": return new CheckButton(cast(GtkCheckButton *)ptr);
335 case "GtkRadioButton": return new RadioButton(cast(GtkRadioButton *)ptr);
336 case "GtkColorButton": return new ColorButton(cast(GtkColorButton *)ptr);
337 case "GtkFontButton": return new FontButton(cast(GtkFontButton *)ptr);
338 //case "GtkLinkButton": return new LinkButton(cast(GtkLinkButton *)ptr);
339 //case "GtkOptionMenu": return new OptionMenu(cast(GtkOptionMenu *)ptr);
340 case "GtkItem": return new Item(cast(GtkItem *)ptr);
341 case "GtkMenuItem": return new MenuItem(cast(GtkMenuItem *)ptr);
342 case "GtkCheckMenuItem": return new CheckMenuItem(cast(GtkCheckMenuItem *)ptr);
343 case "GtkRadioMenuItem": return new RadioMenuItem(cast(GtkRadioMenuItem *)ptr);
344 case "GtkImageMenuItem": return new ImageMenuItem(cast(GtkImageMenuItem *)ptr);
345 case "GtkSeparatorMenuItem": return new SeparatorMenuItem(cast(GtkSeparatorMenuItem *)ptr);
346 case "GtkTearoffMenuItem": return new TearoffMenuItem(cast(GtkTearoffMenuItem *)ptr);
347 //case "GtkListItem": return new ListItem(cast(GtkListItem *)ptr);
348 //case "GtkTreeItem": return new TreeItem(cast(GtkTreeItem *)ptr);
349 case "GtkComboBox": return new ComboBox(cast(GtkComboBox *)ptr);
350 case "GtkComboBoxEntry": return new ComboBoxEntry(cast(GtkComboBoxEntry *)ptr);
351 case "GtkEventBox": return new EventBox(cast(GtkEventBox *)ptr);
352 case "GtkExpander": return new Expander(cast(GtkExpander *)ptr);
353 case "GtkHandleBox": return new HandleBox(cast(GtkHandleBox *)ptr);
354 case "GtkToolItem": return new ToolItem(cast(GtkToolItem *)ptr);
355 case "GtkToolButton": return new ToolButton(cast(GtkToolButton *)ptr);
356 case "GtkMenuToolButton": return new MenuToolButton(cast(GtkMenuToolButton *)ptr);
357 case "GtkToggleToolButton": return new ToggleToolButton(cast(GtkToggleToolButton *)ptr);
358 case "GtkRadioToolButton": return new RadioToolButton(cast(GtkRadioToolButton *)ptr);
359 case "GtkSeparatorToolItem": return new SeparatorToolItem(cast(GtkSeparatorToolItem *)ptr);
360 case "GtkScrolledWindow": return new ScrolledWindow(cast(GtkScrolledWindow *)ptr);
361 case "GtkViewport": return new Viewport(cast(GtkViewport *)ptr);
362 case "GtkBox": return new Box(cast(GtkBox *)ptr);
363 case "GtkButtonBox": return new ButtonBox(cast(GtkButtonBox *)ptr);
364 case "GtkHButtonBox": return new HButtonBox(cast(GtkHButtonBox *)ptr);
365 case "GtkVButtonBox": return new VButtonBox(cast(GtkVButtonBox *)ptr);
366 case "GtkVBox": return new VBox(cast(GtkVBox *)ptr);
367 case "GtkColorSelection": return new ColorSelection(cast(GtkColorSelection *)ptr);
368 case "GtkFileChooserWidget": return new FileChooserWidget(cast(GtkFileChooserWidget *)ptr);
369 case "GtkFontSelection": return new FontSelection(cast(GtkFontSelection *)ptr);
370 case "GtkGammaCurve": return new GammaCurve(cast(GtkGammaCurve *)ptr);
371 //case "GtkRecentChooserWidget": return new RecentChooserWidget(cast(GtkRecentChooserWidget *)ptr);
372 case "GtkHBox": return new HBox(cast(GtkHBox *)ptr);
373 //case "GtkCombo": return new Combo(cast(GtkCombo *)ptr);
374 case "GtkFileChooserButton": return new FileChooserButton(cast(GtkFileChooserButton *)ptr);
375 case "GtkStatusbar": return new Statusbar(cast(GtkStatusbar *)ptr);
376 //case "GtkCList": return new CList(cast(GtkCList *)ptr);
377 //case "GtkCTree": return new CTree(cast(GtkCTree *)ptr);
378 case "GtkFixed": return new Fixed(cast(GtkFixed *)ptr);
379 case "GtkPaned": return new Paned(cast(GtkPaned *)ptr);
380 case "GtkHPaned": return new HPaned(cast(GtkHPaned *)ptr);
381 case "GtkVPaned": return new VPaned(cast(GtkVPaned *)ptr);
382 case "GtkIconView": return new IconView(cast(GtkIconView *)ptr);
383 case "GtkLayout": return new Layout(cast(GtkLayout *)ptr);
384 //case "GtkList": return new List(cast(GtkList *)ptr);
385 case "GtkMenuShell": return new MenuShell(cast(GtkMenuShell *)ptr);
386 case "GtkMenuBar": return new MenuBar(cast(GtkMenuBar *)ptr);
387 case "GtkMenu": return new Menu(cast(GtkMenu *)ptr);
388 //case "GtkRecentChooserMenu": return new RecentChooserMenu(cast(GtkRecentChooserMenu *)ptr);
389 case "GtkNotebook": return new Notebook(cast(GtkNotebook *)ptr);
390 case "GtkSocket": return new Socket(cast(GtkSocket *)ptr);
391 case "GtkTable": return new Table(cast(GtkTable *)ptr);
392 case "GtkTextView": return new TextView(cast(GtkTextView *)ptr);
393 case "GtkToolbar": return new Toolbar(cast(GtkToolbar *)ptr);
394 //case "GtkTree": return new Tree(cast(GtkTree *)ptr);
395 case "GtkTreeView": return new TreeView(cast(GtkTreeView *)ptr);
396 case "GtkMisc": return new Misc(cast(GtkMisc *)ptr);
397 case "GtkLabel": return new Label(cast(GtkLabel *)ptr);
398 case "GtkAccelLabel": return new AccelLabel(cast(GtkAccelLabel *)ptr);
399 //case "GtkTipsQuery": return new TipsQuery(cast(GtkTipsQuery *)ptr);
400 case "GtkArrow": return new Arrow(cast(GtkArrow *)ptr);
401 case "GtkImage": return new Image(cast(GtkImage *)ptr);
402 //case "GtkPixmap": return new Pixmap(cast(GtkPixmap *)ptr);
403 case "GtkCalendar": return new Calendar(cast(GtkCalendar *)ptr);
404 case "GtkCellView": return new CellView(cast(GtkCellView *)ptr);
405 case "GtkDrawingArea": return new DrawingArea(cast(GtkDrawingArea *)ptr);
406 case "GtkCurve": return new Curve(cast(GtkCurve *)ptr);
407 case "GtkEntry": return new Entry(cast(GtkEntry *)ptr);
408 case "GtkSpinButton": return new SpinButton(cast(GtkSpinButton *)ptr);
409 case "GtkRuler": return new Ruler(cast(GtkRuler *)ptr);
410 case "GtkHRuler": return new HRuler(cast(GtkHRuler *)ptr);
411 case "GtkVRuler": return new VRuler(cast(GtkVRuler *)ptr);
412 case "GtkRange": return new Range(cast(GtkRange *)ptr);
413 case "GtkScale": return new Scale(cast(GtkScale *)ptr);
414 case "GtkHScale": return new HScale(cast(GtkHScale *)ptr);
415 case "GtkVScale": return new VScale(cast(GtkVScale *)ptr);
416 case "GtkScrollbar": return new Scrollbar(cast(GtkScrollbar *)ptr);
417 case "GtkHScrollbar": return new HScrollbar(cast(GtkHScrollbar *)ptr);
418 case "GtkVScrollbar": return new VScrollbar(cast(GtkVScrollbar *)ptr);
419 case "GtkSeparator": return new Separator(cast(GtkSeparator *)ptr);
420 case "GtkHSeparator": return new HSeparator(cast(GtkHSeparator *)ptr);
421 case "GtkVSeparator": return new VSeparator(cast(GtkVSeparator *)ptr);
422 case "GtkInvisible": return new Invisible(cast(GtkInvisible *)ptr);
423 //case "GtkOldEditable": return new OldEditable(cast(GtkOldEditable *)ptr);
424 //case "GtkText": return new Text(cast(GtkText *)ptr);
425 //case "GtkPreview": return new Preview(cast(GtkPreview *)ptr);
426 case "GtkProgress": return new Progress(cast(GtkProgress *)ptr);
427 case "GtkProgressBar": return new ProgressBar(cast(GtkProgressBar *)ptr);
428 default: return null;
446 file: libglade-Libglade-Initialisation.html
452 structWrap: GtkWidget* Widget
453 import: gobject.ObjectG
454 structWrap: GObject* ObjectG
456 structWrap: GList* ListG