static void screenshot_read_rc_file (XfcePanelPlugin *plugin, ScreenshotData *screenshot) { char *file; XfceRc *rc; gint screenshot_delay = 2; gint window_delay = 2; gint whole_screen = 1; gint ask_for_file = 1; if ((file = xfce_panel_plugin_lookup_rc_file (plugin)) != NULL) { rc = xfce_rc_simple_open (file, TRUE); g_free (file); if (rc != NULL) { screenshot_delay = xfce_rc_read_int_entry (rc, "screenshot_delay", 2); window_delay = xfce_rc_read_int_entry (rc, "window_delay", 2); whole_screen = xfce_rc_read_int_entry (rc, "whole_screen", 1); ask_for_file = xfce_rc_read_int_entry (rc, "ask_for_file", 1); xfce_rc_close (rc); } } screenshot->screenshot_delay = screenshot_delay; screenshot->window_delay = window_delay; screenshot->whole_screen = whole_screen; screenshot->ask_for_file = ask_for_file; }
Glib::ustring Plugin::find_empty_monitor_dir() { Glib::ustring mon_dir; int c = 1; // Search for read-only settings file gchar* file = xfce_panel_plugin_lookup_rc_file(xfce_plugin); if (file) { // One exists - loading readonly settings XfceRc* settings_ro = xfce_rc_simple_open(file, true); g_free(file); do { mon_dir = String::ucompose("%1", c++); } while (xfce_rc_has_group(settings_ro, mon_dir.c_str())); // Close settings file xfce_rc_close(settings_ro); } else { /* No configuration file exists yet - setting mon_dir to 1 and * informing user */ mon_dir = String::ucompose("%1", c); } // Returning next free monitor directory (number) return mon_dir; }
static void macmenu_load_from_rc(MacMenu* mmb) { char* file; if (!(file = xfce_panel_plugin_lookup_rc_file(mmb->applet))) return; XfceRc* rc = xfce_rc_simple_open(file, TRUE); g_free(file); if (!rc) return; mmb->hide_label = xfce_rc_read_bool_entry(rc, "HideLabel", FALSE); xfce_rc_close (rc); }
gpointer multiload_ps_settings_open_for_read(MultiloadPlugin *ma) { gchar *file; XfceRc *rc; file = xfce_panel_plugin_lookup_rc_file((XfcePanelPlugin*)(ma->panel_data)); if (G_UNLIKELY(file == NULL)) return NULL; rc = xfce_rc_simple_open (file, TRUE); g_free(file); return (gpointer)rc; }
static gboolean xfapplet_read_configuration (XfAppletPlugin *xap) { XfceRc *config; gchar *path; const gchar *iid; const gchar *name; const gchar *mateconf_key; path = xfce_panel_plugin_lookup_rc_file (xap->plugin); if (!path) return FALSE; config = xfce_rc_simple_open (path, TRUE); g_free (path); if (!config) return FALSE; xfce_rc_set_group (config, "xfapplet"); /* iid for matecomponent control */ iid = xfce_rc_read_entry (config, "iid", NULL); /* applet name (used in dialog messages) */ name = xfce_rc_read_entry (config, "name", NULL); /* mateconf key for applet preferences */ mateconf_key = xfce_rc_read_entry (config, "mateconfkey", NULL); if (!iid || !mateconf_key || !name) { xfce_rc_close (config); return FALSE; } xap->iid = g_strdup (iid); xap->name = g_strdup (name); xap->mateconf_key = g_strdup (mateconf_key); xfce_rc_close (config); return TRUE; }
static void eyes_read_rc_file (XfcePanelPlugin *plugin, t_eyes* eyes) { XfceRc* rc; gchar const* theme1; if (eyes->options.theme != NULL) { g_free (eyes->options.theme); eyes->options.theme = NULL; } if ((file = xfce_panel_plugin_lookup_rc_file (plugin)) != NULL) { rc = xfce_rc_simple_open (file, TRUE); g_free (file); if (rc != NULL) { theme1 = xfce_rc_read_entry (rc, "theme", NULL); if (theme1 != NULL) { eyes->options.theme = g_strdup (theme1); } } } }
static gboolean xfapplet_save_configuration (XfAppletPlugin *xap) { XfceRc *config; gchar *path; if (!xap->configured) return FALSE; path = xfce_panel_plugin_lookup_rc_file (xap->plugin); if (!path) path = xfce_panel_plugin_save_location (xap->plugin, TRUE); if (!path) return FALSE; config = xfce_rc_simple_open (path, FALSE); g_free (path); if (!config) return FALSE; xfce_rc_set_group (config, "xfapplet"); /* iid for matecomponent control */ xfce_rc_write_entry (config, "iid", xap->iid); /* applet name (used in dialog messages) */ xfce_rc_write_entry (config, "name", xap->name); /* mateconf key for applet preferences */ xfce_rc_write_entry (config, "mateconfkey", xap->mateconf_key); xfce_rc_close (config); return TRUE; }
static t_xkb * xkb_new (XfcePanelPlugin *plugin) { t_xkb *xkb; gchar *filename; WnckScreen *wnck_screen; xkb = panel_slice_new0 (t_xkb); xkb->plugin = plugin; filename = xfce_panel_plugin_lookup_rc_file (plugin); if ((!filename) || (!xkb_load_config (xkb, filename))) { xkb_load_default (xkb); } g_free (filename); xkb->btn = gtk_button_new (); gtk_button_set_relief (GTK_BUTTON (xkb->btn), GTK_RELIEF_NONE); gtk_container_add (GTK_CONTAINER (xkb->plugin), xkb->btn); xfce_panel_plugin_add_action_widget (xkb->plugin, xkb->btn); xkb->button_state = GTK_STATE_NORMAL; gtk_widget_show (xkb->btn); g_signal_connect (xkb->btn, "clicked", G_CALLBACK (xkb_plugin_button_clicked), xkb); g_signal_connect (xkb->btn, "scroll-event", G_CALLBACK (xkb_plugin_button_scrolled), NULL); g_object_set (G_OBJECT (xkb->btn), "has-tooltip", TRUE, NULL); g_signal_connect (xkb->btn, "query-tooltip", G_CALLBACK (xkb_plugin_set_tooltip), xkb); g_signal_connect (G_OBJECT (xkb->btn), "enter-notify-event", G_CALLBACK (xkb_plugin_button_entered), xkb); g_signal_connect (G_OBJECT (xkb->btn), "leave-notify-event", G_CALLBACK (xkb_plugin_button_left), xkb); g_signal_connect (G_OBJECT (xkb->btn), "size-allocate", G_CALLBACK (xkb_plugin_button_size_allocated), xkb); xkb->layout_image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (xkb->btn), xkb->layout_image); g_signal_connect (G_OBJECT (xkb->layout_image), "expose-event", G_CALLBACK (xkb_plugin_layout_image_exposed), xkb); gtk_widget_show (GTK_WIDGET (xkb->layout_image)); if (xkb_config_initialize (xkb->group_policy, xkb_state_changed, xkb)) { xkb_refresh_gui (xkb); xkb_populate_popup_menu (xkb); } wnck_screen = wnck_screen_get_default (); g_signal_connect (G_OBJECT (wnck_screen), "active-window-changed", G_CALLBACK (xkb_plugin_active_window_changed), xkb); g_signal_connect (G_OBJECT (wnck_screen), "window-closed", G_CALLBACK (xkb_plugin_window_closed), xkb); g_signal_connect (G_OBJECT (wnck_screen), "application-closed", G_CALLBACK (xkb_plugin_application_closed), xkb); return xkb; }
Plugin::Plugin(XfcePanelPlugin *xfce_plugin_) : xfce_plugin(xfce_plugin_), // Setting defaults icon_path("/usr/share/pixmaps/xfce4-hardware-monitor-plugin.png"), viewer_type("curve"), viewer_font(""), viewer_size(96), // Arbitrary default, see later in this function for notes background_color(0x000000FF), // Black as the night - note that the // transparency bits need to be set to max to // ensure the colour is visible use_background_color(false), next_color(0), viewer_text_overlay_enabled(false), viewer_text_overlay_format_string("%a %m"), viewer_text_overlay_separator(" "), viewer_text_overlay_font(""), viewer_text_overlay_use_font(false), viewer_text_overlay_color(0x000000FF), viewer_text_overlay_position(CanvasView::top_left), viewer_monitor_type_sync_enabled(true) { // Search for settings file XfceRc* settings_ro = NULL; gchar* file = xfce_panel_plugin_lookup_rc_file(xfce_plugin); if (file) { // One exists - loading settings settings_ro = xfce_rc_simple_open(file, true); g_free(file); // Ensuring default group is in focus xfce_rc_set_group(settings_ro, NULL); icon_path = xfce_rc_read_entry(settings_ro, "icon-path", icon_path.c_str()); viewer_type = xfce_rc_read_entry(settings_ro, "viewer_type", viewer_type.c_str()); viewer_size = xfce_rc_read_int_entry(settings_ro, "viewer_size", viewer_size); viewer_font = xfce_rc_read_entry(settings_ro, "viewer_font", viewer_font.c_str()); background_color = xfce_rc_read_int_entry(settings_ro, "background_color", background_color); use_background_color = xfce_rc_read_bool_entry(settings_ro, "use_background_color", use_background_color); next_color = xfce_rc_read_int_entry(settings_ro, "next_color", next_color); viewer_text_overlay_enabled = xfce_rc_read_bool_entry(settings_ro, "viewer_text_overlay_enabled", viewer_text_overlay_enabled); viewer_text_overlay_format_string = xfce_rc_read_entry(settings_ro, "viewer_text_overlay_format_string", viewer_text_overlay_format_string.c_str()); viewer_text_overlay_separator = xfce_rc_read_entry(settings_ro, "viewer_text_overlay_separator", viewer_text_overlay_separator.c_str()); viewer_text_overlay_font = xfce_rc_read_entry(settings_ro, "viewer_text_overlay_font", viewer_text_overlay_font.c_str()); viewer_text_overlay_color = xfce_rc_read_int_entry(settings_ro, "viewer_text_overlay_color", viewer_text_overlay_color); viewer_monitor_type_sync_enabled = xfce_rc_read_bool_entry(settings_ro, "viewer_monitor_type_sync_enabled", viewer_monitor_type_sync_enabled); // Enum is validated in set_viewer_text_overlay_position CanvasView::TextOverlayPosition text_overlay_position = static_cast<CanvasView::TextOverlayPosition>( xfce_rc_read_int_entry(settings_ro, "viewer_text_overlay_position", CanvasView::top_left)); set_viewer_text_overlay_position(text_overlay_position); } // Loading icon try { icon = Gdk::Pixbuf::create_from_file(icon_path); } catch (...) { std::cerr << String::ucompose(_("Hardware Monitor: cannot load the icon '%1'.\n"), icon_path); // It's a minor problem if we can't find the icon icon = Glib::RefPtr<Gdk::Pixbuf>(); } // Configuring viewer type viewer_type_listener(viewer_type); /* Actually setting the viewer size has no effect in this function - * seems that it needs to be done in or after the mainloop kicks off */ // Loading up monitors /* Plugin& is initialised from non-transient address of this ('this' itself * is an rvalue so not allowed for a reference) */ monitor_seq mon = load_monitors(settings_ro, *this); for (monitor_iter i = mon.begin(), end = mon.end(); i != end; ++i) add_monitor(*i); // All settings loaded if (settings_ro) xfce_rc_close(settings_ro); /* Connect plugin signals to functions - since I'm not really interested * in the plugin but the plugin pointer, swapped results in the signal * handler getting the plugin reference first - the plugin pointer is * passed next, but since the handler only takes one parameter this is * discarded * Providing About option */ g_signal_connect_swapped(xfce_plugin, "about", G_CALLBACK(display_about), this); // Hooking into Properties option g_signal_connect_swapped(xfce_plugin, "configure-plugin", G_CALLBACK(display_preferences), this); // Hooking into plugin destruction signal g_signal_connect_swapped(xfce_plugin, "free-data", G_CALLBACK(plugin_free), this); // Hooking into save signal g_signal_connect_swapped(xfce_plugin, "save", G_CALLBACK(save_monitors), this); /* Not needed as the canvas resizes on the fly // Hooking into size changed signal g_signal_connect(xfce_plugin, "size-changed", G_CALLBACK(size_changed), this); */ // Adding configure and about to the plugin's right-click menu xfce_panel_plugin_menu_show_configure(xfce_plugin); xfce_panel_plugin_menu_show_about(xfce_plugin); /* Add plugin to panel - I need to turn the Plugin (which inherits from * Gtk::EventBox) into a GtkWidget* - to do this I get at the GObject * pointer underneath the gtkmm layer */ gtk_container_add(GTK_CONTAINER(xfce_plugin), GTK_WIDGET(this->gobj())); // Initialising timer to run every second (by default) to trigger main_loop timer = Glib::signal_timeout().connect(sigc::mem_fun(*this, &Plugin::main_loop), update_interval); // Initial main_loop run main_loop(); }