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
19 // generated automatically - do not change
20 // find conversion definition on APILookup.txt
21 // implement new conversion functionalities on the wrap.utils pakage
24 * Conversion parameters:
25 * inFile = GladeXML.html
43 * - glade_xml_signal_autoconnect
44 * - glade_xml_signal_connect_data
45 * - glade_xml_signal_connect
46 * - glade_xml_signal_connect_full
47 * - glade_xml_signal_autoconnect_full
48 * - GladeXMLConnectFunc
49 * - GladeXMLCustomWidgetHandler
50 * - glade_set_custom_handler
51 * - glade_xml_get_widget
53 * - glade_xml_get_widget_prefix
61 * - GObject* -> ObjectG
62 * - GladeXML* -> Glade
63 * - GtkWidget* -> Widget
74 import tango
.io
.Stdout
; // use the tango loging?
78 private import gtkc
.gladetypes
;
80 private import gtkc
.glade
;
83 private import gtk
.Widget
;
84 private import gobject
.ObjectG
;
85 private import glib
.ListG
;
86 private import glib
.Str
;
93 * This object represents an `instantiation' of an XML interface description.
94 * When one of these objects is created, the XML file is read, and the
95 * interface is created. The GladeXML object then provides an interface for
96 * accessing the widgets in the interface by the names assigned to them
97 * inside the XML description.
98 * The GladeXML object can also be used to connect handlers to the named
99 * signals in the description. Libglade also provides an interface by which
100 * it can look up the signal handler names in the program's symbol table and
101 * automatically connect as many handlers up as it can that way.
103 private import gobject
.ObjectG
;
104 public class Glade
: ObjectG
107 /** the main Gtk struct */
108 protected GladeXML
* gladeXML
;
111 public GladeXML
* getGladeStruct()
117 /** the main Gtk struct as a void* */
118 protected void* getStruct()
120 return cast(void*)gladeXML
;
124 * Sets our main struct and passes it to the parent class
126 public this (GladeXML
* gladeXML
)
130 if ( gladeXML
is null )
135 Stdout("struct gladeXML is null on constructor").newline
;
139 printf("struct gladeXML is null on constructor");
146 assert(gladeXML
!is null, "struct gladeXML is null on constructor");
148 super(cast(GObject
*)gladeXML
);
149 this.gladeXML
= gladeXML
;
153 * This function is used to get a pointer to the GtkWidget corresponding to
154 * name in the interface description. You would use this if you have to do
155 * anything to the widget after loading.
157 * the GladeXML object.
159 * the name of the widget.
161 * the widget matching name, or NULL if none exists.
163 public Widget
getWidget(char[] name
)
165 // GtkWidget* glade_xml_get_widget (GladeXML *self, const char *name);
166 return newFromWidget(cast(void *) glade_xml_get_widget(gladeXML
, Str
.toStringz(name
)) );
175 * Creates a new GladeXML object (and the corresponding widgets) from the
176 * XML file fname. Optionally it will only build the interface from the
177 * widget node root (if it is not NULL). This feature is useful if you
178 * only want to build say a toolbar or menu from the XML file, but not the
179 * window it is embedded in. Note also that the XML parse tree is cached
180 * to speed up creating another GladeXML object for the same file
184 * the widget node in fname to start building from (or NULL)
186 * the translation domain for the XML file (or NULL for default)
188 * the newly created GladeXML object, or NULL on failure.
190 public this (char[] fname
, char[] root
= null, char[] domain
=null)
192 // GladeXML* glade_xml_new (const char *fname, const char *root, const char *domain);
193 this(cast(GladeXML
*)glade_xml_new(Str
.toStringz(fname
),
194 root ? Str
.toStringz(root
) : null,
195 domain ? Str
.toStringz(domain
) : null) );
199 * This function is used to get a list of pointers to the GtkWidget(s)
200 * with names that start with the string name in the interface description.
201 * You would use this if you have to do something to all of these widgets
204 * the GladeXML object.
206 * the name of the widget.
208 * A list of the widget that match name as the start of their
209 * name, or NULL if none exists.
211 public Widget
[] getWidgetPrefix(char[] name
)
213 // GList* glade_xml_get_widget_prefix (GladeXML *self, const char *name);
215 ListG widgets
= new ListG( glade_xml_get_widget_prefix(gladeXML
, Str
.toStringz(name
)) );
216 for (int i
=0;i
< widgets
.length
; i
++) {
217 ret ~= newFromWidget( cast(void *)widgets
.nthData(i
) );
219 return widgets
.length ?
ret : null;
224 * Utilitiy method to create objects that are castable.
227 private import gobject
.Type
;
228 private import gtk
.Container
;
229 private import gtk
.Bin
;
230 private import gtk
.Window
;
231 private import gtk
.Dialog
;
232 private import gtk
.AboutDialog
;
233 private import gtk
.ColorSelectionDialog
;
234 private import gtk
.FileChooserDialog
;
235 private import gtk
.FileSelection
;
236 private import gtk
.FontSelectionDialog
;
237 private import gtk
.InputDialog
;
238 private import gtk
.MessageDialog
;
239 //private import gtk.PageSetupUnixDialog;
240 //private import gtk.PrintUnixDialog;
241 //private import gtk.RecentChooserDialog;
242 private import gtk
.Assistant
;
243 private import gtk
.Plug
;
244 private import gtk
.Alignment
;
245 private import gtk
.Frame
;
246 private import gtk
.AspectFrame
;
247 private import gtk
.Button
;
248 private import gtk
.ToggleButton
;
249 private import gtk
.CheckButton
;
250 private import gtk
.RadioButton
;
251 private import gtk
.ColorButton
;
252 private import gtk
.FontButton
;
253 //private import gtk.LinkButton;
254 //private import gtk.OptionMenu;
255 private import gtk
.Item
;
256 private import gtk
.MenuItem
;
257 private import gtk
.CheckMenuItem
;
258 private import gtk
.RadioMenuItem
;
259 private import gtk
.ImageMenuItem
;
260 private import gtk
.SeparatorMenuItem
;
261 private import gtk
.TearoffMenuItem
;
262 //private import gtk.ListItem;
263 //private import gtk.TreeItem;
264 private import gtk
.ComboBox
;
265 private import gtk
.ComboBoxEntry
;
266 private import gtk
.EventBox
;
267 private import gtk
.Expander
;
268 private import gtk
.HandleBox
;
269 private import gtk
.ToolItem
;
270 private import gtk
.ToolButton
;
271 private import gtk
.MenuToolButton
;
272 private import gtk
.ToggleToolButton
;
273 private import gtk
.RadioToolButton
;
274 private import gtk
.SeparatorToolItem
;
275 private import gtk
.ScrolledWindow
;
276 private import gtk
.Viewport
;
277 private import gtk
.Box
;
278 private import gtk
.ButtonBox
;
279 private import gtk
.HButtonBox
;
280 private import gtk
.VButtonBox
;
281 private import gtk
.VBox
;
282 private import gtk
.ColorSelection
;
283 private import gtk
.FileChooserWidget
;
284 private import gtk
.FontSelection
;
285 private import gtk
.GammaCurve
;
286 //private import gtk.RecentChooserWidget;
287 private import gtk
.HBox
;
288 //private import gtk.Combo;
289 private import gtk
.FileChooserButton
;
290 private import gtk
.Statusbar
;
291 //private import gtk.CList;
292 //private import gtk.CTree;
293 private import gtk
.Fixed
;
294 private import gtk
.Paned
;
295 private import gtk
.HPaned
;
296 private import gtk
.VPaned
;
297 private import gtk
.IconView
;
298 private import gtk
.Layout
;
299 //private import gtk.List;
300 private import gtk
.MenuShell
;
301 private import gtk
.MenuBar
;
302 private import gtk
.Menu
;
303 //private import gtk.RecentChooserMenu;
304 private import gtk
.Notebook
;
305 private import gtk
.Socket
;
306 private import gtk
.Table
;
307 private import gtk
.TextView
;
308 private import gtk
.Toolbar
;
309 //private import gtk.Tree;
310 private import gtk
.TreeView
;
311 private import gtk
.Misc
;
312 private import gtk
.Label
;
313 private import gtk
.AccelLabel
;
314 //private import gtk.TipsQuery;
315 private import gtk
.Arrow
;
316 private import gtk
.Image
;
317 //private import gtk.Pixmap;
318 private import gtk
.Calendar
;
319 private import gtk
.CellView
;
320 private import gtk
.DrawingArea
;
321 private import gtk
.Curve
;
322 private import gtk
.Entry
;
323 private import gtk
.SpinButton
;
324 private import gtk
.Ruler
;
325 private import gtk
.HRuler
;
326 private import gtk
.VRuler
;
327 private import gtk
.Range
;
328 private import gtk
.Scale
;
329 private import gtk
.HScale
;
330 private import gtk
.VScale
;
331 private import gtk
.Scrollbar
;
332 private import gtk
.HScrollbar
;
333 private import gtk
.VScrollbar
;
334 private import gtk
.Separator
;
335 private import gtk
.HSeparator
;
336 private import gtk
.VSeparator
;
337 private import gtk
.Invisible
;
338 //private import gtk.OldEditable;
339 //private import gtk.Text;
340 //private import gtk.Preview;
341 private import gtk
.Progress
;
342 private import gtk
.ProgressBar
;
344 Widget
newFromWidget(void * ptr
)
350 int* pt
=cast(int*)ptr
;
352 int* pt2
=cast(int*) (cast(int*)(*pt
));
353 uint utype
= cast(uint)(*pt2
);
355 char[] tname
= Type
.name(cast(GType
)utype
);
358 case "GtkContainer": return new Container(cast(GtkContainer
*)ptr
);
359 case "GtkBin": return new Bin(cast(GtkBin
*)ptr
);
360 case "GtkWindow": return new Window(cast(GtkWindow
*)ptr
);
361 case "GtkDialog": return new Dialog(cast(GtkDialog
*)ptr
);
362 case "GtkAboutDialog": return new AboutDialog(cast(GtkAboutDialog
*)ptr
);
363 case "GtkColorSelectionDialog": return new ColorSelectionDialog(cast(GtkColorSelectionDialog
*)ptr
);
364 case "GtkFileChooserDialog": return new FileChooserDialog(cast(GtkFileChooserDialog
*)ptr
);
365 case "GtkFileSelection": return new FileSelection(cast(GtkFileSelection
*)ptr
);
366 case "GtkFontSelectionDialog": return new FontSelectionDialog(cast(GtkFontSelectionDialog
*)ptr
);
367 case "GtkInputDialog": return new InputDialog(cast(GtkInputDialog
*)ptr
);
368 case "GtkMessageDialog": return new MessageDialog(cast(GtkMessageDialog
*)ptr
);
369 //case "GtkPageSetupUnixDialog": return new PageSetupUnixDialog(cast(GtkPageSetupUnixDialog *)ptr);
370 //case "GtkPrintUnixDialog": return new PrintUnixDialog(cast(GtkPrintUnixDialog *)ptr);
371 //case "GtkRecentChooserDialog": return new RecentChooserDialog(cast(GtkRecentChooserDialog *)ptr);
372 case "GtkAssistant": return new Assistant(cast(GtkAssistant
*)ptr
);
373 case "GtkPlug": return new Plug(cast(GtkPlug
*)ptr
);
374 case "GtkAlignment": return new Alignment(cast(GtkAlignment
*)ptr
);
375 case "GtkFrame": return new Frame(cast(GtkFrame
*)ptr
);
376 case "GtkAspectFrame": return new AspectFrame(cast(GtkAspectFrame
*)ptr
);
377 case "GtkButton": return new Button(cast(GtkButton
*)ptr
);
378 case "GtkToggleButton": return new ToggleButton(cast(GtkToggleButton
*)ptr
);
379 case "GtkCheckButton": return new CheckButton(cast(GtkCheckButton
*)ptr
);
380 case "GtkRadioButton": return new RadioButton(cast(GtkRadioButton
*)ptr
);
381 case "GtkColorButton": return new ColorButton(cast(GtkColorButton
*)ptr
);
382 case "GtkFontButton": return new FontButton(cast(GtkFontButton
*)ptr
);
383 //case "GtkLinkButton": return new LinkButton(cast(GtkLinkButton *)ptr);
384 //case "GtkOptionMenu": return new OptionMenu(cast(GtkOptionMenu *)ptr);
385 case "GtkItem": return new Item(cast(GtkItem
*)ptr
);
386 case "GtkMenuItem": return new MenuItem(cast(GtkMenuItem
*)ptr
);
387 case "GtkCheckMenuItem": return new CheckMenuItem(cast(GtkCheckMenuItem
*)ptr
);
388 case "GtkRadioMenuItem": return new RadioMenuItem(cast(GtkRadioMenuItem
*)ptr
);
389 case "GtkImageMenuItem": return new ImageMenuItem(cast(GtkImageMenuItem
*)ptr
);
390 case "GtkSeparatorMenuItem": return new SeparatorMenuItem(cast(GtkSeparatorMenuItem
*)ptr
);
391 case "GtkTearoffMenuItem": return new TearoffMenuItem(cast(GtkTearoffMenuItem
*)ptr
);
392 //case "GtkListItem": return new ListItem(cast(GtkListItem *)ptr);
393 //case "GtkTreeItem": return new TreeItem(cast(GtkTreeItem *)ptr);
394 case "GtkComboBox": return new ComboBox(cast(GtkComboBox
*)ptr
);
395 case "GtkComboBoxEntry": return new ComboBoxEntry(cast(GtkComboBoxEntry
*)ptr
);
396 case "GtkEventBox": return new EventBox(cast(GtkEventBox
*)ptr
);
397 case "GtkExpander": return new Expander(cast(GtkExpander
*)ptr
);
398 case "GtkHandleBox": return new HandleBox(cast(GtkHandleBox
*)ptr
);
399 case "GtkToolItem": return new ToolItem(cast(GtkToolItem
*)ptr
);
400 case "GtkToolButton": return new ToolButton(cast(GtkToolButton
*)ptr
);
401 case "GtkMenuToolButton": return new MenuToolButton(cast(GtkMenuToolButton
*)ptr
);
402 case "GtkToggleToolButton": return new ToggleToolButton(cast(GtkToggleToolButton
*)ptr
);
403 case "GtkRadioToolButton": return new RadioToolButton(cast(GtkRadioToolButton
*)ptr
);
404 case "GtkSeparatorToolItem": return new SeparatorToolItem(cast(GtkSeparatorToolItem
*)ptr
);
405 case "GtkScrolledWindow": return new ScrolledWindow(cast(GtkScrolledWindow
*)ptr
);
406 case "GtkViewport": return new Viewport(cast(GtkViewport
*)ptr
);
407 case "GtkBox": return new Box(cast(GtkBox
*)ptr
);
408 case "GtkButtonBox": return new ButtonBox(cast(GtkButtonBox
*)ptr
);
409 case "GtkHButtonBox": return new HButtonBox(cast(GtkHButtonBox
*)ptr
);
410 case "GtkVButtonBox": return new VButtonBox(cast(GtkVButtonBox
*)ptr
);
411 case "GtkVBox": return new VBox(cast(GtkVBox
*)ptr
);
412 case "GtkColorSelection": return new ColorSelection(cast(GtkColorSelection
*)ptr
);
413 case "GtkFileChooserWidget": return new FileChooserWidget(cast(GtkFileChooserWidget
*)ptr
);
414 case "GtkFontSelection": return new FontSelection(cast(GtkFontSelection
*)ptr
);
415 case "GtkGammaCurve": return new GammaCurve(cast(GtkGammaCurve
*)ptr
);
416 //case "GtkRecentChooserWidget": return new RecentChooserWidget(cast(GtkRecentChooserWidget *)ptr);
417 case "GtkHBox": return new HBox(cast(GtkHBox
*)ptr
);
418 //case "GtkCombo": return new Combo(cast(GtkCombo *)ptr);
419 case "GtkFileChooserButton": return new FileChooserButton(cast(GtkFileChooserButton
*)ptr
);
420 case "GtkStatusbar": return new Statusbar(cast(GtkStatusbar
*)ptr
);
421 //case "GtkCList": return new CList(cast(GtkCList *)ptr);
422 //case "GtkCTree": return new CTree(cast(GtkCTree *)ptr);
423 case "GtkFixed": return new Fixed(cast(GtkFixed
*)ptr
);
424 case "GtkPaned": return new Paned(cast(GtkPaned
*)ptr
);
425 case "GtkHPaned": return new HPaned(cast(GtkHPaned
*)ptr
);
426 case "GtkVPaned": return new VPaned(cast(GtkVPaned
*)ptr
);
427 case "GtkIconView": return new IconView(cast(GtkIconView
*)ptr
);
428 case "GtkLayout": return new Layout(cast(GtkLayout
*)ptr
);
429 //case "GtkList": return new List(cast(GtkList *)ptr);
430 case "GtkMenuShell": return new MenuShell(cast(GtkMenuShell
*)ptr
);
431 case "GtkMenuBar": return new MenuBar(cast(GtkMenuBar
*)ptr
);
432 case "GtkMenu": return new Menu(cast(GtkMenu
*)ptr
);
433 //case "GtkRecentChooserMenu": return new RecentChooserMenu(cast(GtkRecentChooserMenu *)ptr);
434 case "GtkNotebook": return new Notebook(cast(GtkNotebook
*)ptr
);
435 case "GtkSocket": return new Socket(cast(GtkSocket
*)ptr
);
436 case "GtkTable": return new Table(cast(GtkTable
*)ptr
);
437 case "GtkTextView": return new TextView(cast(GtkTextView
*)ptr
);
438 case "GtkToolbar": return new Toolbar(cast(GtkToolbar
*)ptr
);
439 //case "GtkTree": return new Tree(cast(GtkTree *)ptr);
440 case "GtkTreeView": return new TreeView(cast(GtkTreeView
*)ptr
);
441 case "GtkMisc": return new Misc(cast(GtkMisc
*)ptr
);
442 case "GtkLabel": return new Label(cast(GtkLabel
*)ptr
);
443 case "GtkAccelLabel": return new AccelLabel(cast(GtkAccelLabel
*)ptr
);
444 //case "GtkTipsQuery": return new TipsQuery(cast(GtkTipsQuery *)ptr);
445 case "GtkArrow": return new Arrow(cast(GtkArrow
*)ptr
);
446 case "GtkImage": return new Image(cast(GtkImage
*)ptr
);
447 //case "GtkPixmap": return new Pixmap(cast(GtkPixmap *)ptr);
448 case "GtkCalendar": return new Calendar(cast(GtkCalendar
*)ptr
);
449 case "GtkCellView": return new CellView(cast(GtkCellView
*)ptr
);
450 case "GtkDrawingArea": return new DrawingArea(cast(GtkDrawingArea
*)ptr
);
451 case "GtkCurve": return new Curve(cast(GtkCurve
*)ptr
);
452 case "GtkEntry": return new Entry(cast(GtkEntry
*)ptr
);
453 case "GtkSpinButton": return new SpinButton(cast(GtkSpinButton
*)ptr
);
454 case "GtkRuler": return new Ruler(cast(GtkRuler
*)ptr
);
455 case "GtkHRuler": return new HRuler(cast(GtkHRuler
*)ptr
);
456 case "GtkVRuler": return new VRuler(cast(GtkVRuler
*)ptr
);
457 case "GtkRange": return new Range(cast(GtkRange
*)ptr
);
458 case "GtkScale": return new Scale(cast(GtkScale
*)ptr
);
459 case "GtkHScale": return new HScale(cast(GtkHScale
*)ptr
);
460 case "GtkVScale": return new VScale(cast(GtkVScale
*)ptr
);
461 case "GtkScrollbar": return new Scrollbar(cast(GtkScrollbar
*)ptr
);
462 case "GtkHScrollbar": return new HScrollbar(cast(GtkHScrollbar
*)ptr
);
463 case "GtkVScrollbar": return new VScrollbar(cast(GtkVScrollbar
*)ptr
);
464 case "GtkSeparator": return new Separator(cast(GtkSeparator
*)ptr
);
465 case "GtkHSeparator": return new HSeparator(cast(GtkHSeparator
*)ptr
);
466 case "GtkVSeparator": return new VSeparator(cast(GtkVSeparator
*)ptr
);
467 case "GtkInvisible": return new Invisible(cast(GtkInvisible
*)ptr
);
468 //case "GtkOldEditable": return new OldEditable(cast(GtkOldEditable *)ptr);
469 //case "GtkText": return new Text(cast(GtkText *)ptr);
470 //case "GtkPreview": return new Preview(cast(GtkPreview *)ptr);
471 case "GtkProgress": return new Progress(cast(GtkProgress
*)ptr
);
472 case "GtkProgressBar": return new ProgressBar(cast(GtkProgressBar
*)ptr
);
473 default: return null;
487 * These routines are used to initialise libglade, and to load addon modules
488 * that recognise extra widget sets. The glade_init
489 * routine must be called before any libglade routines are used, and the
490 * glade_load_module routine would be used to load
498 * Creates a new GladeXML object (and the corresponding widgets) from the
499 * buffer buffer. Optionally it will only build the interface from the
500 * widget node root (if it is not NULL). This feature is useful if you
501 * only want to build say a toolbar or menu from the XML document, but not the
502 * window it is embedded in.
504 * the memory buffer containing the XML document.
506 * the size of the buffer.
508 * the widget node in buffer to start building from (or NULL)
510 * the translation domain to use for this interface (or NULL)
512 * the newly created GladeXML object, or NULL on failure.
514 public this (char[] buffer
, int size
, char[] root
, char[] domain
)
516 // GladeXML* glade_xml_new_from_buffer (const char *buffer, int size, const char *root, const char *domain);
517 this(cast(GladeXML
*)glade_xml_new_from_buffer(Str
.toStringz(buffer
), size
, Str
.toStringz(root
), Str
.toStringz(domain
)) );
521 * This routine can be used by bindings (such as gtk--) to help construct
522 * a GladeXML object, if it is needed.
524 * the GladeXML object
528 * the root widget node (or NULL for none)
530 * the translation domain (or NULL for the default)
532 * TRUE if the construction succeeded.
534 public int construct(char[] fname
, char[] root
, char[] domain
)
536 // gboolean glade_xml_construct (GladeXML *self, const char *fname, const char *root, const char *domain);
537 return glade_xml_construct(gladeXML
, Str
.toStringz(fname
), Str
.toStringz(root
), Str
.toStringz(domain
));
546 * Used to get the name of a widget that was generated by a GladeXML object.
550 * the name of the widget.
552 public static char[] gladeGetWidgetName(Widget widget
)
554 // const char* glade_get_widget_name (GtkWidget *widget);
555 return Str
.toString(glade_get_widget_name((widget
is null) ?
null : widget
.getWidgetStruct()) );
559 * This function is used to get the GladeXML object that built this widget.
563 * the GladeXML object that built this widget.
565 public static Glade
gladeGetWidgetTree(Widget widget
)
567 // GladeXML* glade_get_widget_tree (GtkWidget *widget);
568 return new Glade( glade_get_widget_tree((widget
is null) ?
null : widget
.getWidgetStruct()) );
577 * It used to be necessary to call glade_init() before creating
578 * GladeXML objects. This is now no longer the case, as libglade will
579 * be initialised on demand now. Calling glade_init() manually will
580 * not cause any problems though.
582 public static void init()
584 // void glade_init (void);
589 * Ensure that a required library is available. If it is not already
590 * available, libglade will attempt to dynamically load a module that
591 * contains the handlers for that library.
593 * the required library
595 public static void require(char[] library
)
597 // void glade_require (const gchar *library);
598 glade_require(Str
.toStringz(library
));
602 * This function should be called by a module to assert that it
603 * provides wrappers for a particular library. This should be called
604 * by the register_widgets() function of a libglade module so that it
605 * isn't loaded twice, for instance.
607 * the provided library
609 public static void provide(char[] library
)
611 // void glade_provide (const gchar *library);
612 glade_provide(Str
.toStringz(library
));