glom r2020 - in trunk: . glom glom/bakery glom/utility_widgets/adddel
- From: murrayc svn gnome org
- To: svn-commits-list gnome org
- Subject: glom r2020 - in trunk: . glom glom/bakery glom/utility_widgets/adddel
- Date: Tue, 24 Mar 2009 01:14:04 +0000 (UTC)
Author: murrayc
Date: Tue Mar 24 01:14:04 2009
New Revision: 2020
URL: http://svn.gnome.org/viewvc/glom?rev=2020&view=rev
Log:
2009-03-24 Murray Cumming <murrayc murrayc com>
* glom/bakery/Makefile.am:
* glom/bakery/App_WithDoc.h:
* glom/bakery/App_Gtk.[h|cc]: Remove this, merging it into:
* glom/bakery/App_WithDoc_Gtk.[h|cc]: allowing us to remove some
awkward virtual inheritance.
* glom/bakery/Dialog_OfferSave.cc:
* glom/application.cc:
* glom/utility_widgets/adddel/adddel.cc: Adapted.
Removed:
trunk/glom/bakery/App_Gtk.cc
trunk/glom/bakery/App_Gtk.h
Modified:
trunk/ChangeLog
trunk/glom/application.cc
trunk/glom/bakery/App_WithDoc.h
trunk/glom/bakery/App_WithDoc_Gtk.cc
trunk/glom/bakery/App_WithDoc_Gtk.h
trunk/glom/bakery/Dialog_OfferSave.cc
trunk/glom/bakery/Makefile.am
trunk/glom/utility_widgets/adddel/adddel.cc
Modified: trunk/glom/application.cc
==============================================================================
--- trunk/glom/application.cc (original)
+++ trunk/glom/application.cc Tue Mar 24 01:14:04 2009
@@ -93,16 +93,7 @@
App_Glom* global_application = NULL;
App_Glom::App_Glom(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
- // Note cobject is actually a GtkWindow, not a HildonWindow, because the
- // glade file specified the type as GtkWindow.
- // ParentWindow is defined in Bakery.
- // The compilation will fail here if you have not built Bakery with or without --enable-maemo as appropriate:
-#ifdef GLOM_ENABLE_MAEMO
-: ParentWindow(turn_gtk_window_into_hildon_window(GTK_WINDOW(cobject))), //It's a virtual base class, so we have to call the specific constructor to prevent the default constructor from being called.
-#else
-: ParentWindow(cobject), //It's a virtual base class, so we have to call the specific constructor to prevent the default constructor from being called.
-#endif
- type_base(cobject, "Glom"),
+: type_base(cobject, "Glom"),
m_pBoxTop(0),
m_pFrame(0),
#ifndef GLOM_ENABLE_CLIENT_ONLY
Modified: trunk/glom/bakery/App_WithDoc.h
==============================================================================
--- trunk/glom/bakery/App_WithDoc.h (original)
+++ trunk/glom/bakery/App_WithDoc.h Tue Mar 24 01:14:04 2009
@@ -52,7 +52,7 @@
* - File/New sub menu
* - Some way to associate a view with a document type: class factory.
*/
-class App_WithDoc : virtual public App //virtual because App_WithDoc_Gtk will inherit it via App_With_Doc and via App_Gtk.
+class App_WithDoc : public App
{
public:
///Don't forget to call init() too.
Modified: trunk/glom/bakery/App_WithDoc_Gtk.cc
==============================================================================
--- trunk/glom/bakery/App_WithDoc_Gtk.cc (original)
+++ trunk/glom/bakery/App_WithDoc_Gtk.cc Tue Mar 24 01:14:04 2009
@@ -27,6 +27,7 @@
#include <gtkmm/recentchoosermenu.h>
#include <gtkmm/messagedialog.h>
#include <gtkmm/filechooserdialog.h>
+#include <gtkmm/aboutdialog.h>
#include <giomm.h>
#include <algorithm>
#include <glibmm/i18n-lib.h>
@@ -42,34 +43,169 @@
App_WithDoc_Gtk::App_WithDoc_Gtk(const Glib::ustring& appname)
: App_WithDoc(appname),
- App_Gtk(appname)
+ m_pVBox(0),
+ m_pAbout(0)
{
+ init_app_name(appname);
+
+#ifndef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+ signal_hide().connect(sigc::mem_fun(*this, &App_WithDoc_Gtk::on_hide));
+ signal_delete_event().connect(sigc::mem_fun(*this, &App_WithDoc_Gtk::on_delete_event));
+#endif
}
/// This constructor can be used with Gtk::Builder::get_derived_widget().
App_WithDoc_Gtk::App_WithDoc_Gtk(BaseObjectType* cobject, const Glib::ustring& appname)
-: ParentWindow(cobject), //This is a virtual base class (not a direct base), so we must specify a constructor or the default constructor will be called, regardless of what the App_Gtk(cobject) constructor does. Derived classes must do this as well.
- App_WithDoc(appname),
- App_Gtk(cobject, appname)
-{
- //TODO: appname.
+: App_WithDoc(appname),
+ ParentWindow(cobject),
+ m_pVBox(0),
+ m_pAbout(0)
+{
+ init_app_name(appname);
+
+#ifndef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+ signal_hide().connect(sigc::mem_fun(*this, &App_WithDoc_Gtk::on_hide));
+ signal_delete_event().connect(sigc::mem_fun(*this, &App_WithDoc_Gtk::on_delete_event));
+#endif
}
App_WithDoc_Gtk::~App_WithDoc_Gtk()
{
+ if(m_pVBox)
+ {
+ delete m_pVBox;
+ m_pVBox = 0;
+ }
+
+ if(m_pAbout)
+ {
+ delete m_pAbout;
+ m_pAbout = 0;
+ }
+}
+
+
+void App_WithDoc_Gtk::on_hide()
+{
+ ui_signal_hide().emit();
+}
+
+void App_WithDoc_Gtk::ui_hide()
+{
+ hide();
+}
+
+void App_WithDoc_Gtk::ui_bring_to_front()
+{
+ get_window()->raise();
+}
+
+
+void App_WithDoc_Gtk::init_layout()
+{
+ set_resizable(); //resizable
+ set_default_size(640, 400); //A sensible default.
+
+ //This might have been instantiated by Gtk::Builder::get_widget() instead.
+ //If not, then we create a default one and add it to the window.
+ if(!m_pVBox)
+ {
+ m_pVBox = new Gtk::VBox();
+ Gtk::Window::add(*m_pVBox);
+ }
+
+ //Add menu bar at the top:
+ //These were defined in init_uimanager().
+#ifdef GLOM_ENABLE_MAEMO
+ Gtk::Menu* pMenu = static_cast<Gtk::Menu*>(m_refUIManager->get_widget("/Bakery_MainMenu"));
+ set_menu(*pMenu);
+#else
+ Gtk::MenuBar* pMenuBar = static_cast<Gtk::MenuBar*>(m_refUIManager->get_widget("/Bakery_MainMenu"));
+ m_pVBox->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
+#endif
+
+ Gtk::Toolbar* pToolBar = static_cast<Gtk::Toolbar*>(m_refUIManager->get_widget("/Bakery_ToolBar"));
+ if(pToolBar)
+ {
+#ifdef GLOM_ENABLE_MAEMO
+ add_toolbar(*pToolBar);
+#else
+ m_HandleBox_Toolbar.add(*pToolBar);
+ m_HandleBox_Toolbar.show();
+ m_pVBox->pack_start(m_HandleBox_Toolbar, Gtk::PACK_SHRINK);
+#endif
+ }
+
+ add_accel_group(m_refUIManager->get_accel_group());
+
+
+ //Add placeholder, to be used by add():
+ m_pVBox->pack_start(m_VBox_PlaceHolder);
+ m_VBox_PlaceHolder.show();
+
+ m_pVBox->show(); //Show it last so the child widgets all show at once.
}
+void App_WithDoc_Gtk::add_ui_from_string(const Glib::ustring& ui_description)
+{
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ m_refUIManager->add_ui_from_string(ui_description);
+ }
+ catch(const Glib::Error& ex)
+ {
+ std::cerr << "building menus failed: " << ex.what();
+ }
+#else
+ std::auto_ptr<Glib::Error> error;
+ m_refUIManager->add_ui_from_string(ui_description, error);
+ if(error.get() != NULL) std::cerr << "building menus failed: " << error->what();
+#endif
+}
void App_WithDoc_Gtk::init()
{
App_WithDoc::init(); //Create document and ask to show it in the UI.
-
- init_layout();
-
+ init_layout(); // start setting up layout after we've gotten all widgets from UIManager
show();
}
+
+void App_WithDoc_Gtk::init_ui_manager()
+{
+ using namespace Gtk;
+
+ m_refUIManager = UIManager::create();
+
+ //This is just a skeleton structure.
+ //The placeholders allow us to merge the menus and toolbars in later,
+ //by adding a us string with one of the placeholders, but with menu items underneath it.
+ static const Glib::ustring ui_description =
+ "<ui>"
+#ifdef GLOM_ENABLE_MAEMO
+ " <popup name='Bakery_MainMenu'>"
+#else
+ " <menubar name='Bakery_MainMenu'>"
+#endif
+ " <placeholder name='Bakery_MenuPH_File' />"
+ " <placeholder name='Bakery_MenuPH_Edit' />"
+ " <placeholder name='Bakery_MenuPH_Others' />" //Note that extra menus should be inserted before the Help menu, which should always be at the end.
+ " <placeholder name='Bakery_MenuPH_Help' />"
+#ifdef GLOM_ENABLE_MAEMO
+ " </popup>"
+#else
+ " </menubar>"
+#endif
+ " <toolbar name='Bakery_ToolBar'>"
+ " <placeholder name='Bakery_ToolBarItemsPH' />"
+ " </toolbar>"
+ "</ui>";
+
+ add_ui_from_string(ui_description);
+}
+
void App_WithDoc_Gtk::init_toolbars()
{
//Build part of the menu structure, to be merged in by using the "PH" placeholders:
@@ -87,6 +223,14 @@
add_ui_from_string(ui_description);
}
+void App_WithDoc_Gtk::init_menus()
+{
+ //Override this to add more menus
+ init_menus_file();
+ init_menus_edit();
+ init_menus_help();
+
+}
void App_WithDoc_Gtk::init_menus_file_recentfiles(const Glib::ustring& path)
{
if(!m_mime_types.empty()) //"Recent-files" is useless unless it knows what documents (which MIME-types) to show.
@@ -190,6 +334,145 @@
init_menus_file_recentfiles("/Bakery_MainMenu/Bakery_MenuPH_File/BakeryAction_Menu_File/BakeryAction_Menu_File_RecentFiles");
}
+void App_WithDoc_Gtk::init_menus_edit()
+{
+ using namespace Gtk;
+ //Edit menu
+
+ //Build actions:
+ m_refEditActionGroup = ActionGroup::create("BakeryEditActions");
+ m_refEditActionGroup->add(Action::create("BakeryAction_Menu_Edit", _("_Edit")));
+
+ m_refEditActionGroup->add(Action::create("BakeryAction_Edit_Cut", Gtk::Stock::CUT));
+ m_refEditActionGroup->add(Action::create("BakeryAction_Edit_Copy", Gtk::Stock::COPY));
+ m_refEditActionGroup->add(Action::create("BakeryAction_Edit_Paste", Gtk::Stock::PASTE));
+ m_refEditActionGroup->add(Action::create("BakeryAction_Edit_Clear", Gtk::Stock::CLEAR));
+
+ m_refUIManager->insert_action_group(m_refEditActionGroup);
+
+ //Build part of the menu structure, to be merged in by using the "PH" placeholders:
+ static const Glib::ustring ui_description =
+ "<ui>"
+#ifdef GLOM_ENABLE_MAEMO
+ " <popup name='Bakery_MainMenu'>"
+#else
+ " <menubar name='Bakery_MainMenu'>"
+#endif
+ " <placeholder name='Bakery_MenuPH_Edit'>"
+ " <menu action='BakeryAction_Menu_Edit'>"
+ " <menuitem action='BakeryAction_Edit_Cut' />"
+ " <menuitem action='BakeryAction_Edit_Copy' />"
+ " <menuitem action='BakeryAction_Edit_Paste' />"
+ " <menuitem action='BakeryAction_Edit_Clear' />"
+ " </menu>"
+ " </placeholder>"
+#ifdef GLOM_ENABLE_MAEMO
+ " </popup>"
+#else
+ " </menubar>"
+#endif
+ "</ui>";
+
+ //Add menu:
+ add_ui_from_string(ui_description);
+}
+
+void App_WithDoc_Gtk::init_menus_help()
+{
+ using namespace Gtk;
+ //Help menu
+
+ //Build actions:
+ m_refHelpActionGroup = ActionGroup::create("BakeryHelpActions");
+ m_refHelpActionGroup->add(Action::create("BakeryAction_Menu_Help", _("_Help")));
+
+ //TODO: Use stock?
+ m_refHelpActionGroup->add(Action::create("BakeryAction_Help_About",
+ _("_About"), _("About the application")),
+ sigc::mem_fun((GlomBakery::App&)*this, &App::on_menu_help_about));
+
+ m_refUIManager->insert_action_group(m_refHelpActionGroup);
+
+ //Build part of the menu structure, to be merged in by using the "PH" plaeholders:
+ static const Glib::ustring ui_description =
+ "<ui>"
+#ifdef GLOM_ENABLE_MAEMO
+ " <popup name='Bakery_MainMenu'>"
+#else
+ " <menubar name='Bakery_MainMenu'>"
+#endif
+ " <placeholder name='Bakery_MenuPH_Help'>"
+ " <menu action='BakeryAction_Menu_Help'>"
+ " <menuitem action='BakeryAction_Help_About' />"
+ " </menu>"
+ " </placeholder>"
+#ifdef GLOM_ENABLE_MAEMO
+ " </popup>"
+#else
+ " </menubar>"
+#endif
+ "</ui>";
+
+ //Add menu:
+ add_ui_from_string(ui_description);
+}
+
+
+void App_WithDoc_Gtk::on_menu_help_about()
+{
+ if(m_pAbout && m_bAboutShown) // "About" box hasn't been closed, so just raise it
+ {
+ m_pAbout->set_transient_for(*this);
+
+ Glib::RefPtr<Gdk::Window> about_win = m_pAbout->get_window();
+ about_win->show();
+ about_win->raise();
+ }
+ else
+ {
+ //Re-create About box:
+ if(m_pAbout)
+ {
+ delete m_pAbout;
+ m_pAbout = 0;
+ }
+
+ Gtk::AboutDialog* pDerived = new Gtk::AboutDialog;
+ m_pAbout = pDerived;
+
+ pDerived->set_name(m_strAppName);
+ pDerived->set_version(m_HelpInfo.m_strVersion);
+ pDerived->set_copyright(m_HelpInfo.m_strCopyright);
+ pDerived->set_authors(m_HelpInfo.m_vecAuthors);
+ pDerived->set_documenters(m_HelpInfo.m_vecDocumenters);
+ pDerived->set_translator_credits(m_HelpInfo.m_strTranslatorCredits);
+
+ m_pAbout->signal_hide().connect(sigc::mem_fun((App&)*this, &App::on_about_close));
+ m_bAboutShown = true;
+ static_cast<Gtk::Dialog*>(m_pAbout)->run(); //show() would be better. see below:
+ m_pAbout->hide();
+ //m_pAbout->show(); //TODO: respond to the OK button.
+ }
+}
+
+void App_WithDoc_Gtk::on_about_close()
+{
+ m_bAboutShown = false;
+}
+
+void App_WithDoc_Gtk::add(Gtk::Widget& child)
+{
+ m_VBox_PlaceHolder.pack_start(child);
+}
+
+bool App_WithDoc_Gtk::on_delete_event(GdkEventAny* /* event */)
+{
+ //Clicking on the [x] in the title bar should be like choosing File|New
+ on_menu_file_close();
+
+ return true; // true = don't hide, don't destroy
+}
+
void App_WithDoc_Gtk::update_window_title()
{
@@ -220,7 +503,7 @@
#ifdef GLOM_ENABLE_MAEMO
Hildon::Note dialog(Hildon::NOTE_TYPE_INFORMATION, text, Gtk::Stock::DIALOG_WARNING);
#else
- Gtk::MessageDialog dialog(App_Gtk::util_bold_message(text), true /* use markup */, Gtk::MESSAGE_WARNING);
+ Gtk::MessageDialog dialog(App_WithDoc_Gtk::util_bold_message(text), true /* use markup */, Gtk::MESSAGE_WARNING);
dialog.set_secondary_text(secondary_text);
dialog.set_title(""); //The HIG says that alert dialogs should not have titles. The default comes from the message type.
@@ -232,6 +515,12 @@
dialog.run();
}
+
+Glib::ustring App_WithDoc_Gtk::util_bold_message(const Glib::ustring& message)
+{
+ return "<b>" + message + "</b>";
+}
+
Glib::ustring App_WithDoc_Gtk::ui_file_select_open(const Glib::ustring& starting_folder_uri)
{
Gtk::Window* pWindow = this;
Modified: trunk/glom/bakery/App_WithDoc_Gtk.h
==============================================================================
--- trunk/glom/bakery/App_WithDoc_Gtk.h (original)
+++ trunk/glom/bakery/App_WithDoc_Gtk.h Tue Mar 24 01:14:04 2009
@@ -20,7 +20,22 @@
#define GLOM_BAKERY_APP_WITHDOC_GTK_H
#include <glom/bakery/App_WithDoc.h>
-#include <glom/bakery/App_Gtk.h>
+#include <config.h> // For GLOM_ENABLE_MAEMO
+#include <glom/bakery/App.h>
+
+#ifdef GLOM_ENABLE_MAEMO
+#include <hildonmm/window.h>
+#endif
+
+#include <gtkmm/menubar.h>
+#include <gtkmm/menu.h>
+#include <gtkmm/toolbar.h>
+#include <gtkmm/handlebox.h>
+#include <gtkmm/dialog.h>
+#include <gtkmm/uimanager.h>
+#include <gtkmm/builder.h>
+
+
#include <libglom/document/bakery/Document.h>
#include <gtkmm/toolbutton.h>
#include <gtkmm/recentmanager.h>
@@ -37,11 +52,20 @@
*
*/
class App_WithDoc_Gtk
- //These are virtual base classes, with shared shared App and sigc::trackable base classes:
- : public App_WithDoc,
- public App_Gtk
+ : public App_WithDoc,
+#ifdef GLOM_ENABLE_MAEMO
+ public Hildon::Window //inherit virtually to share sigc::trackable.
+#else
+ public Gtk::Window //inherit virtually to share sigc::trackable.
+#endif
{
public:
+#ifdef GLOM_ENABLE_MAEMO
+ typedef Hildon::Window ParentWindow;
+#else
+ typedef Gtk::Window ParentWindow;
+#endif
+
///Don't forget to call init() too.
App_WithDoc_Gtk(const Glib::ustring& appname);
@@ -52,10 +76,25 @@
virtual void init(); //Unique final overrider.
+ /// Overidden to add a widget in the middle, under the menu, instead of replacing the whole contents.
+ virtual void add(Gtk::Widget& child);
+
+ /// For instance, to create bold primary text for a dialog box, without marking the markup for translation.
+ static Glib::ustring util_bold_message(const Glib::ustring& message);
+
protected:
- virtual void init_menus_file(); //overridden to add open/save/save as.
+ virtual void init_layout(); //Arranges the menu, toolbar, etc.
virtual void init_menus_file_recentfiles(const Glib::ustring& path); // call this in init_menus_file()
- virtual void init_toolbars(); //overridden to add open/save
+ virtual void init_ui_manager(); //Override this to add more UI placeholders
+ virtual void init_menus(); //Override this to add more or different menus.
+ virtual void init_menus_file(); //Call this from init_menus() to add the standard file menu.
+ virtual void init_menus_edit(); //Call this from init_menus() to add the standard edit menu
+ virtual void init_menus_help(); //Call this from init_menus() to add the standard help menu.
+ virtual void init_toolbars();
+
+ virtual void add_ui_from_string(const Glib::ustring& ui_description); //Convenience function
+
+ virtual void on_hide(); //override.
virtual void document_history_add(const Glib::ustring& file_uri); //overridden.
virtual void document_history_remove(const Glib::ustring& file_uri); //overridden.
@@ -68,8 +107,40 @@
virtual void ui_show_modification_status();
virtual enumSaveChanges ui_offer_to_save_changes();
+
+ //Signal handlers:
+
+ //Menus:
+ virtual void on_menu_help_about();
+
+ virtual void on_about_close();
+
+
+ virtual void ui_hide();
+ virtual void ui_bring_to_front();
+
+ virtual bool on_delete_event(GdkEventAny* event); //override
+
void on_recent_files_activate(Gtk::RecentChooser& recent_chooser);
+ //UIManager and Actions
+ Glib::RefPtr<Gtk::UIManager> m_refUIManager;
+ Glib::RefPtr<Gtk::ActionGroup> m_refFileActionGroup;
+ Glib::RefPtr<Gtk::ActionGroup> m_refEditActionGroup;
+ Glib::RefPtr<Gtk::ActionGroup> m_refHelpActionGroup;
+
+ //Member widgets:
+ Gtk::VBox* m_pVBox;
+ Gtk::VBox m_VBox_PlaceHolder;
+
+ //Gtk::MenuBar m_MenuBar;
+ //Gtk::Menu m_Menu_File, m_Menu_Edit, m_Menu_Help;
+
+ Gtk::HandleBox m_HandleBox_Toolbar;
+ //Gtk::Toolbar m_Toolbar;
+
+ Gtk::Window* m_pAbout; //About box.
+
//Menu stuff:
Glib::RefPtr<Gtk::Action> m_action_save, m_action_saveas;
};
Modified: trunk/glom/bakery/Dialog_OfferSave.cc
==============================================================================
--- trunk/glom/bakery/Dialog_OfferSave.cc (original)
+++ trunk/glom/bakery/Dialog_OfferSave.cc Tue Mar 24 01:14:04 2009
@@ -18,7 +18,7 @@
#include <config.h>
#include <glom/bakery/Dialog_OfferSave.h>
-#include <glom/bakery/App_Gtk.h>
+#include <glom/bakery/App_WithDoc_Gtk.h>
#include <gtkmm/box.h>
#include <gtkmm/stock.h>
#include <glibmm/i18n-lib.h>
@@ -42,7 +42,7 @@
#ifdef GLOM_ENABLE_MAEMO
: Hildon::Note(Hildon::NOTE_TYPE_CONFIRMATION_BUTTON, get_confirmation_message(file_uri))
#else
-: Gtk::MessageDialog( App_Gtk::util_bold_message(_("Close without Saving")), true /* use markup */, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE)
+: Gtk::MessageDialog( App_WithDoc_Gtk::util_bold_message(_("Close without Saving")), true /* use markup */, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_NONE)
#endif
{
set_title(""); //The HIG says that alert dialogs should not have titles. The default comes from the message type.
Modified: trunk/glom/bakery/Makefile.am
==============================================================================
--- trunk/glom/bakery/Makefile.am (original)
+++ trunk/glom/bakery/Makefile.am Tue Mar 24 01:14:04 2009
@@ -1,7 +1,7 @@
AM_CPPFLAGS = -I top_srcdir@/ -I top_srcdir@/glom $(GLOM_CFLAGS)
-h_sources = App_Gtk.h App_WithDoc.h App.h App_WithDoc_Gtk.h Dialog_OfferSave.h
-cc_sources = App_Gtk.cc App_WithDoc.cc App.cc App_WithDoc_Gtk.cc Dialog_OfferSave.cc
+h_sources = App_WithDoc.h App.h App_WithDoc_Gtk.h Dialog_OfferSave.h
+cc_sources = App_WithDoc.cc App.cc App_WithDoc_Gtk.cc Dialog_OfferSave.cc
noinst_LIBRARIES = libbakery_app.a
libbakery_app_a_SOURCES = $(h_sources) $(cc_sources)
Modified: trunk/glom/utility_widgets/adddel/adddel.cc
==============================================================================
--- trunk/glom/utility_widgets/adddel/adddel.cc (original)
+++ trunk/glom/utility_widgets/adddel/adddel.cc Tue Mar 24 01:14:04 2009
@@ -28,7 +28,7 @@
#include <libglom/data_structure/glomconversions.h>
#include "../../dialog_invalid_data.h"
#include <libglom/utils.h>
-#include <glom/bakery/App_Gtk.h>
+//#include <glom/bakery/App_Gtk.h>
#include <iostream> //For debug output.
#ifdef GLOM_ENABLE_MAEMO
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]