[gnote] Migrate to Gtk::Application
- From: Aurimas Äernius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Migrate to Gtk::Application
- Date: Sat, 23 Jun 2012 12:33:35 +0000 (UTC)
commit 50d0687e5d44ca24bfa38c55f72ffdeb1e166115
Author: Aurimas Äernius <aurisc4 gmail com>
Date: Sat Jun 23 15:30:06 2012 +0300
Migrate to Gtk::Application
Drop use of deprecated Gtk::Main.
Replace use of GtkApplication by Gtk::Application.
src/gnote.cpp | 95 ++++++++++--------------------------------------
src/gnote.hpp | 26 +++++++++----
src/main.cpp | 12 ++-----
src/note.cpp | 4 +-
src/recentchanges.cpp | 4 +-
5 files changed, 45 insertions(+), 96 deletions(-)
---
diff --git a/src/gnote.cpp b/src/gnote.cpp
index 483e0f1..c92af28 100644
--- a/src/gnote.cpp
+++ b/src/gnote.cpp
@@ -56,58 +56,14 @@
namespace gnote {
- namespace {
-
- typedef GtkApplicationClass GnoteAppClass;
-
- G_DEFINE_TYPE(GnoteApp, gnote_app, GTK_TYPE_APPLICATION)
-
- static void gnote_app_init(GnoteApp *)
- {}
-
- static void gnote_app_activate(GApplication *)
- {
- Gnote::obj().open_search_all();
- }
-
- static void gnote_app_startup(GApplication * application)
- {
- G_APPLICATION_CLASS(gnote_app_parent_class)->startup(application);
- Gnote::obj().startup();
- }
-
- static int gnote_app_command_line(GApplication *, GApplicationCommandLine * command_line)
- {
- int argc;
- char **argv = g_application_command_line_get_arguments(command_line, &argc);
- return Gnote::obj().command_line(argc, argv);
- }
-
- static void gnote_app_class_init(GnoteAppClass * klass)
- {
- G_APPLICATION_CLASS(klass)->activate = gnote_app_activate;
- G_APPLICATION_CLASS(klass)->startup = gnote_app_startup;
- G_APPLICATION_CLASS(klass)->command_line = gnote_app_command_line;
- }
-
- GnoteApp * gnote_app_new()
- {
- g_type_init();
- return static_cast<GnoteApp*>(g_object_new(gnote_app_get_type(),
- "application-id", "org.gnome.Gnote",
- "flags", G_APPLICATION_HANDLES_COMMAND_LINE,
- NULL));
- }
-
-}
-
+ Gnote *Gnote::s_obj = NULL;
Gnote::Gnote()
- : m_manager(NULL)
+ : Gtk::Application("org.gnome.Gnote", Gio::APPLICATION_HANDLES_COMMAND_LINE)
+ , m_manager(NULL)
, m_keybinder(NULL)
, m_is_background(false)
, m_prefsdlg(NULL)
- , m_app(NULL)
{
}
@@ -135,24 +91,33 @@ namespace gnote {
return 0;
}
- m_app = gnote_app_new();
- g_application_run(G_APPLICATION(m_app), argc, argv);
- g_object_unref(m_app);
- m_app = NULL;
+ int retval = run(argc, argv);
signal_quit();
- return 0;
+ return retval;
}
- void Gnote::startup()
+ void Gnote::on_startup()
{
+ Gtk::Application::on_startup();
m_icon_theme = Gtk::IconTheme::get_default();
m_icon_theme->append_search_path(DATADIR"/icons");
m_icon_theme->append_search_path(DATADIR"/gnote/icons");
}
- int Gnote::command_line(int argc, char **argv) {
+ void Gnote::on_activate()
+ {
+ Gtk::Application::on_activate();
+ open_search_all();
+ }
+
+
+ int Gnote::on_command_line(const Glib::RefPtr<Gio::ApplicationCommandLine> & command_line)
+ {
+ Gtk::Application::on_command_line(command_line);
+ int argc = 0;
+ char **argv = command_line->get_arguments(argc);
cmd_line.parse(argc, argv);
if(!m_manager) {
common_init();
@@ -348,11 +313,7 @@ namespace gnote {
void Gnote::on_quit_gnote_action()
{
-#ifdef HAVE_GLIB_2_32
- g_application_quit(G_APPLICATION(m_app));
-#else
- Gtk::Main::quit();
-#endif
+ quit();
}
void Gnote::on_preferences_response(int /*res*/)
@@ -459,22 +420,6 @@ namespace gnote {
}
- void Gnote::add_window(Gtk::Window * window)
- {
- if(m_app) {
- gtk_application_add_window(GTK_APPLICATION(m_app), GTK_WINDOW(window->gobj()));
- }
- }
-
-
- void Gnote::remove_window(Gtk::Window * window)
- {
- if(m_app) {
- gtk_application_remove_window(GTK_APPLICATION(m_app), GTK_WINDOW(window->gobj()));
- }
- }
-
-
std::string Gnote::cache_dir()
{
return Glib::get_user_cache_dir() + "/gnote";
diff --git a/src/gnote.hpp b/src/gnote.hpp
index 459be3d..69159bc 100644
--- a/src/gnote.hpp
+++ b/src/gnote.hpp
@@ -40,7 +40,6 @@
namespace gnote {
-typedef GtkApplication GnoteApp;
class PreferencesDialog;
class NoteManager;
class RemoteControlClient;
@@ -99,14 +98,21 @@ private:
class Gnote
- : public base::Singleton<Gnote>
+ : public Gtk::Application
{
public:
- Gnote();
+ static Gnote& obj()
+ {
+ return *s_obj;
+ }
+ static Glib::RefPtr<Gnote> create()
+ {
+ s_obj = new Gnote;
+ return Glib::RefPtr<Gnote>(s_obj);
+ }
+
~Gnote();
int main(int argc, char **argv);
- void startup();
- int command_line(int argc, char **argv);
NoteManager & default_note_manager()
{
return *m_manager;
@@ -127,8 +133,6 @@ public:
void on_show_about_action();
void open_search_all();
void open_note_sync_window();
- void add_window(Gtk::Window * window);
- void remove_window(Gtk::Window * window);
static std::string cache_dir();
static std::string conf_dir();
@@ -158,7 +162,14 @@ public:
{
return m_sync_dlg;
}
+protected:
+ virtual void on_activate();
+ virtual int on_command_line(const Glib::RefPtr<Gio::ApplicationCommandLine> & command_line);
+ virtual void on_startup();
private:
+ static Gnote *s_obj;
+
+ Gnote();
void start_note_created(const Note::Ptr & start_note);
std::string get_note_path(const std::string & override_path);
void on_setting_changed(const Glib::ustring & key);
@@ -174,7 +185,6 @@ private:
bool m_is_background;
PreferencesDialog *m_prefsdlg;
GnoteCommandLine cmd_line;
- GnoteApp *m_app;
sync::SyncDialog::Ptr m_sync_dlg;
};
diff --git a/src/main.cpp b/src/main.cpp
index e9ec7eb..ad0354d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -27,10 +27,6 @@
int main(int argc, char **argv)
{
-// if(!Glib::thread_supported()) {
-// Glib::thread_init();
-// }
-
bindtextdomain(GETTEXT_PACKAGE, GNOTE_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
textdomain(GETTEXT_PACKAGE);
@@ -39,9 +35,7 @@ int main(int argc, char **argv)
g_thread_init(NULL);
}
gdk_threads_init();
- Gtk::Main kit(argc, argv);
- gnote::Gnote *app = &gnote::Gnote::obj();
- int retval = app->main(argc, argv);
- delete app;
- return retval;
+
+ Glib::RefPtr<gnote::Gnote> app = gnote::Gnote::create();
+ return app->main(argc, argv);
}
diff --git a/src/note.cpp b/src/note.cpp
index 113d28c..ef4daec 100644
--- a/src/note.cpp
+++ b/src/note.cpp
@@ -1054,13 +1054,13 @@ namespace gnote {
void Note::on_window_show()
{
- Gnote::obj().add_window(m_window);
+ Gnote::obj().add_window(*m_window);
}
void Note::on_window_hide()
{
- Gnote::obj().remove_window(m_window);
+ Gnote::obj().remove_window(*m_window);
}
diff --git a/src/recentchanges.cpp b/src/recentchanges.cpp
index 136ae11..4389918 100644
--- a/src/recentchanges.cpp
+++ b/src/recentchanges.cpp
@@ -102,7 +102,7 @@ namespace gnote {
, m_entry_changed_timeout(NULL)
, m_clickX(0), m_clickY(0)
{
- Gnote::obj().add_window(this);
+ Gnote::obj().add_window(*this);
_init_static();
// get_window()->set_icon_name("gnote");
set_default_size(450,400);
@@ -239,7 +239,7 @@ namespace gnote {
NoteRecentChanges::~NoteRecentChanges()
{
- Gnote::obj().remove_window(this);
+ Gnote::obj().remove_window(*this);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]