// -*- c++ -*- #ifndef _PROCMAN_PRETTYTABLE_H_ #define _PROCMAN_PRETTYTABLE_H_ #include #include #include #include #include #include #include #ifdef HAVE_WNCK extern "C" { #define WNCK_I_KNOW_THIS_IS_UNSTABLE #include } #endif #include "iconthemewrapper.h" class ProcInfo; using std::string; class PrettyTable { public: PrettyTable(); ~PrettyTable(); void set_icon(ProcInfo &); private: #ifdef HAVE_WNCK static void on_application_opened(WnckScreen* screen, WnckApplication* app, gpointer data); static void on_application_closed(WnckScreen* screen, WnckApplication* app, gpointer data); void register_application(pid_t pid, Glib::RefPtr icon); void unregister_application(pid_t pid); #endif Glib::RefPtr get_icon_from_theme(const ProcInfo &); Glib::RefPtr get_icon_from_default(const ProcInfo &); Glib::RefPtr get_icon_from_gio(const ProcInfo &); #ifdef HAVE_WNCK Glib::RefPtr get_icon_from_wnck(const ProcInfo &); #endif Glib::RefPtr get_icon_from_name(const ProcInfo &); Glib::RefPtr get_icon_for_kernel(const ProcInfo &); Glib::RefPtr get_icon_dummy(const ProcInfo &); bool get_default_icon_name(const string &cmd, string &name); void file_monitor_event (Glib::RefPtr, Glib::RefPtr, Gio::FileMonitorEvent); void init_gio_app_cache (); typedef std::map > IconCache; typedef std::map > IconsForPID; typedef std::map > AppCache; typedef std::map > DesktopDirMonitors; IconsForPID apps; IconCache defaults; DesktopDirMonitors monitors; AppCache gio_apps; procman::IconThemeWrapper theme; }; #endif /* _PROCMAN_PRETTYTABLE_H_ */