diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/Applet/Applet.cpp | 9 | ||||
-rw-r--r-- | src/Applet/CCApplet.cpp | 30 | ||||
-rw-r--r-- | src/Applet/CCApplet.h | 13 | ||||
-rw-r--r-- | src/Applet/Makefile.am | 6 |
5 files changed, 33 insertions, 27 deletions
diff --git a/configure.ac b/configure.ac index abc1c3cb..652ed8df 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ AC_PROG_CXX PKG_CHECK_MODULES([DBUS_GLIB], [dbus-glib-1]) PKG_CHECK_MODULES([SQLITE3], [sqlite3]) -PKG_CHECK_MODULES([GTKMM], [gtkmm-2.4]) +PKG_CHECK_MODULES([GTK], [gtk+-2.0]) PKG_CHECK_MODULES([GLIBMM], [glibmm-2.4]) PKG_CHECK_MODULES([DBUSCPP], [dbus-c++-1]) PKG_CHECK_MODULES([PACKAGEKIT_GLIB], [packagekit-glib]) diff --git a/src/Applet/Applet.cpp b/src/Applet/Applet.cpp index cc40642e..b33cc9f1 100644 --- a/src/Applet/Applet.cpp +++ b/src/Applet/Applet.cpp @@ -38,7 +38,11 @@ crash_notify_cb(const char* progname) int main(int argc, char **argv) { - Gtk::Main kit(argc, argv); + /* need to be thread safe */ + g_thread_init(NULL); + gdk_threads_init(); + gdk_threads_enter(); + gtk_init(&argc,&argv); applet = new CApplet(); /* move to the DBusClient::connect */ DBus::Glib::BusDispatcher dispatcher; @@ -49,6 +53,7 @@ int main(int argc, char **argv) DBus::Connection conn = DBus::Connection::SystemBus(); CDBusClient client(conn, CC_DBUS_PATH, CC_DBUS_NAME); client.ConnectCrashHandler(crash_notify_cb); - Gtk::Main::run(); + gtk_main(); + gdk_threads_leave(); return 0; } diff --git a/src/Applet/CCApplet.cpp b/src/Applet/CCApplet.cpp index 17ff6f92..45062dc7 100644 --- a/src/Applet/CCApplet.cpp +++ b/src/Applet/CCApplet.cpp @@ -24,11 +24,12 @@ CApplet::CApplet() { - m_nStatusIcon = Gtk::StatusIcon::create(Gtk::Stock::DIALOG_WARNING); - m_nStatusIcon->set_visible(false); + m_pStatusIcon = gtk_status_icon_new_from_stock(GTK_STOCK_DIALOG_WARNING); + gtk_status_icon_set_visible(m_pStatusIcon,FALSE); // LMB click - m_nStatusIcon->signal_activate().connect(sigc::mem_fun(*this, &CApplet::OnAppletActivate_CB)); - m_nStatusIcon->signal_popup_menu().connect(sigc::mem_fun(*this, &CApplet::OnMenuPopup_cb)); + //TODO add some actions! + //gtk_signal_connect(m_pStatusIcon,"activate",CApplet::OnAppletActivate_CB, this); + //gtk_signal_connect(m_pStatusIcon,"popup_menu",CApplet::OnMenuPopup_cb, this); SetIconTooltip("Pending events: %i",m_mapEvents.size()); } @@ -41,7 +42,7 @@ void CApplet::SetIconTooltip(const char *format, ...) { va_list args; // change to smth sane like MAX_TOOLTIP length or rewrite this whole sh*t - size_t n,size = 10; + size_t n,size = 30; char *buf = new char[size]; va_start (args, format); while((n = vsnprintf (buf, size, format, args)) > size) @@ -55,38 +56,35 @@ void CApplet::SetIconTooltip(const char *format, ...) va_end (args); if (n != -1) { - m_nStatusIcon->set_tooltip(Glib::ustring((const char*)buf)); + gtk_status_icon_set_tooltip(m_pStatusIcon,buf); } else { - m_nStatusIcon->set_tooltip("Error while setting tooltip!"); + gtk_status_icon_set_tooltip(m_pStatusIcon,"Error while setting tooltip!"); } delete[] buf; + } void CApplet::OnAppletActivate_CB() { - m_nStatusIcon->set_visible(false); - //std::cout << "Activate" << std::endl; - //if(m_pMenuPopup) - //m_pMenuPopup->show(); - + gtk_status_icon_set_visible(m_pStatusIcon,false); } void CApplet::OnMenuPopup_cb(guint button, guint32 activate_time) { /* for now just hide the icon on RMB */ - m_nStatusIcon->set_blinking(false); + gtk_status_icon_set_blinking(m_pStatusIcon, false); } void CApplet::ShowIcon() { - m_nStatusIcon->set_visible(true); + gtk_status_icon_set_visible(m_pStatusIcon,true); } void CApplet::HideIcon() { - m_nStatusIcon->set_visible(false); + gtk_status_icon_set_visible(m_pStatusIcon,false); } int CApplet::AddEvent(int pUUID, const std::string& pProgname) @@ -101,5 +99,5 @@ int CApplet::RemoveEvent(int pUUID) } void CApplet::BlinkIcon(bool pBlink) { - m_nStatusIcon->set_blinking(pBlink); + gtk_status_icon_set_blinking(m_pStatusIcon,pBlink); } diff --git a/src/Applet/CCApplet.h b/src/Applet/CCApplet.h index 86c00efb..09aee38f 100644 --- a/src/Applet/CCApplet.h +++ b/src/Applet/CCApplet.h @@ -20,12 +20,15 @@ #ifndef CC_APPLET_H_ #define CC_APPLET_H_ -#include <gtkmm.h> +#include <gtk/gtk.h> +#include <map> +#include <string> class CApplet { private: - Glib::RefPtr<Gtk::StatusIcon> m_nStatusIcon; + //Glib::RefPtr<Gtk::StatusIcon> m_nStatusIcon; + GtkStatusIcon* m_pStatusIcon; std::map<int, std::string > m_mapEvents; public: CApplet(); @@ -46,9 +49,9 @@ class CApplet void OnAppletActivate_CB(); void OnMenuPopup_cb(guint button, guint32 activate_time); //menu - Glib::RefPtr<Gtk::UIManager> m_refUIManager; - Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; - Gtk::Menu* m_pMenuPopup; + //Glib::RefPtr<Gtk::UIManager> m_refUIManager; + //Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; + //Gtk::Menu* m_pMenuPopup; }; #endif /*CC_APPLET_H_*/ diff --git a/src/Applet/Makefile.am b/src/Applet/Makefile.am index e329accb..36410ee2 100644 --- a/src/Applet/Makefile.am +++ b/src/Applet/Makefile.am @@ -2,7 +2,7 @@ bin_PROGRAMS = applet applet_SOURCES = Applet.cpp CCApplet.cpp CCApplet.h applet_CPPFLAGS = -I../../lib/DBus \ -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \ - $(DBUS_GLIB_CFLAGS) $(GTKMM_CFLAGS) $(DBUSCPP_CFLAGS) \ - -I../../lib/MiddleWare + $(DBUS_GLIB_CFLAGS) $(GTK_CFLAGS) $(DBUSCPP_CFLAGS) \ + -I../../lib/MiddleWare -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -applet_LDADD = ../../lib/DBus/libDBus.la $(DL_LIBS) $(GTKMM_LIBS) +applet_LDADD = ../../lib/DBus/libDBus.la $(DL_LIBS) $(GTK_LIBS) -lglib-2.0 -lgthread-2.0 |