2 * Navit, a modular navigation system.
3 * Copyright (C) 2005-2008 Navit Team
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * version 2 as published by the Free Software Foundation.
9 * This program 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 General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
26 #include "data_window.h"
31 struct gui_methods meth;
32 struct gui_priv *priv;
37 gui_new(struct attr *parent, struct attr **attrs)
40 struct attr *type_attr;
41 struct gui_priv *(*guitype_new)(struct navit *nav, struct gui_methods *meth, struct attr **attrs);
43 if (! (type_attr=attr_search(attrs, NULL, attr_type))) {
47 guitype_new=plugin_get_gui_type(type_attr->u.str);
51 this_=g_new0(struct gui, 1);
52 this_->attrs=attr_list_dup(attrs);
53 cbl.type=attr_callback_list;
54 cbl.u.callback_list=callback_list_new();
55 this_->attrs=attr_generic_add_attr(this_->attrs, &cbl);
56 this_->priv=guitype_new(parent->u.navit, &this_->meth, this_->attrs);
61 gui_get_attr(struct gui *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter)
63 return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter);
67 gui_menubar_new(struct gui *gui)
70 if (! gui->meth.menubar_new)
72 this_=g_new0(struct menu, 1);
73 this_->priv=gui->meth.menubar_new(gui->priv, &this_->meth);
82 gui_popup_new(struct gui *gui)
85 if (! gui->meth.popup_new)
87 this_=g_new0(struct menu, 1);
88 this_->priv=gui->meth.popup_new(gui->priv, &this_->meth);
97 gui_datawindow_new(struct gui *gui, char *name, struct callback *click, struct callback *close)
99 struct datawindow *this_;
100 if (! gui->meth.datawindow_new)
102 this_=g_new0(struct datawindow, 1);
103 this_->priv=gui->meth.datawindow_new(gui->priv, name, click, close, &this_->meth);
112 gui_add_bookmark(struct gui *gui, struct pcoord *c, char *description)
116 if (! gui->meth.add_bookmark)
118 ret=gui->meth.add_bookmark(gui->priv, c, description);
120 dbg(2,"ret=%d\n", ret);
125 gui_set_graphics(struct gui *this_, struct graphics *gra)
127 if (! this_->meth.set_graphics)
129 return this_->meth.set_graphics(this_->priv, gra);
133 gui_disable_suspend(struct gui *this_)
135 if (this_->meth.disable_suspend)
136 this_->meth.disable_suspend(this_->priv);
140 gui_has_main_loop(struct gui *this_)
142 if (! this_->meth.run_main_loop)
148 gui_run_main_loop(struct gui *this_)
150 if (! gui_has_main_loop(this_))
152 return this_->meth.run_main_loop(this_->priv);