void Plugin::debug_log(const Glib::ustring &msg) { /* When Plugin stream reference goes out of scope, it will be automatically * flushed and closed etc */ if (!debug_log_stream) { /* Work out a suitable log path in the same directory as the writeable * configuration path for this instance of the plugin - 'create_for_path' * doesn't actually create anything, but just instantiates the virtual * File object */ gchar* file_path = xfce_panel_plugin_save_location(xfce_plugin, FALSE); Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(file_path) ->get_parent() ->get_child( String::ucompose("%1-debug.log", xfce_panel_plugin_get_unique_id(xfce_plugin))); g_free(file_path); debug_log_stream = file->append_to(); // Debug code std::cerr << "XFCE4 Hardware Monitor Plugin: Debug log file created at " << file->get_path() << std::endl; } debug_log_stream->write(String::ucompose("%1\n", msg)); std::cerr << msg << "\n"; }
static GtkWidget * build_properties_area(WBPlugin *wb, const gchar *buffer, gsize length) { GError *error = NULL; GObject *area = NULL; GtkRadioButton *only_maximized, *active_window; GtkToggleButton *show_on_desktop, *sync_wm_theme; GtkTreeSelection *selection; GtkCellRenderer *renderer; GtkListStore *list_store; GtkWidget *view, *theme_name_treeview; GtkEntry *button_layout; wb->prefs->builder = gtk_builder_new(); if (gtk_builder_add_from_string(wb->prefs->builder, buffer, length, &error)) { area = gtk_builder_get_object(wb->prefs->builder, "alignment0"); if (G_LIKELY (area != NULL)) { only_maximized = GTK_RADIO_BUTTON(gtk_builder_get_object(wb->prefs->builder, "only_maximized")); active_window = GTK_RADIO_BUTTON(gtk_builder_get_object(wb->prefs->builder, "active_window")); if (G_LIKELY (only_maximized != NULL)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(only_maximized), wb->prefs->only_maximized); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(active_window), !wb->prefs->only_maximized); g_signal_connect(only_maximized, "toggled", G_CALLBACK(on_only_maximized_toggled), wb); } else { DBG("No widget with the name \"only_maximized\" found"); } show_on_desktop = GTK_TOGGLE_BUTTON(gtk_builder_get_object(wb->prefs->builder, "show_on_desktop")); if (G_LIKELY (show_on_desktop != NULL)) { gtk_toggle_button_set_active(show_on_desktop, wb->prefs->show_on_desktop); g_signal_connect(show_on_desktop, "toggled", G_CALLBACK(on_show_on_desktop_toggled), wb); } else { DBG("No widget with the name \"show_on_desktop\" found"); } /* Style widgets */ theme_name_treeview = GTK_WIDGET (gtk_builder_get_object (wb->prefs->builder, "theme_name_treeview")); /* theme name */ { list_store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (list_store), COL_THEME_NAME, (GtkTreeIterCompareFunc) wckbuttons_theme_sort_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), COL_THEME_NAME, GTK_SORT_ASCENDING); gtk_tree_view_set_model (GTK_TREE_VIEW (theme_name_treeview), GTK_TREE_MODEL (list_store)); g_object_unref (G_OBJECT (list_store)); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (theme_name_treeview), 0, _("Directory"), renderer, "text", 1, NULL); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (theme_name_treeview), 0, _("Themes usable"), renderer, "text", 0, NULL); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (theme_name_treeview)); g_signal_connect (selection, "changed", G_CALLBACK (wckbuttons_theme_selection_changed), wb); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); view = GTK_WIDGET (gtk_builder_get_object (wb->prefs->builder, "theme_name_treeview")); wckbuttons_load_themes (view, wb); } sync_wm_theme = GTK_TOGGLE_BUTTON(gtk_builder_get_object(wb->prefs->builder, "sync_wm_theme")); if (G_LIKELY (sync_wm_theme != NULL)) { if (wb->wm_channel) { gtk_toggle_button_set_active(sync_wm_theme, wb->prefs->sync_wm_theme); g_signal_connect(sync_wm_theme, "toggled", G_CALLBACK(on_sync_theme_with_wm_toggled), wb); } else { gtk_widget_set_sensitive (GTK_WIDGET(sync_wm_theme), FALSE); } } else { DBG("No widget with the name \"sync_wm_theme\" found"); } button_layout = GTK_ENTRY(gtk_builder_get_object(wb->prefs->builder, "button_layout")); if (G_LIKELY (button_layout != NULL)) { gtk_entry_set_text(button_layout, wb->prefs->button_layout); g_signal_connect(GTK_EDITABLE(button_layout), "changed", G_CALLBACK(on_button_layout_changed), wb); } else { DBG("No widget with the name \"button_layout\" found"); } return GTK_WIDGET(area) ; } else { g_set_error_literal(&error, 0, 0, "No widget with the name \"contentarea\" found"); } } g_critical("Faild to construct the builder for plugin %s-%d: %s.", xfce_panel_plugin_get_name (wb->plugin), xfce_panel_plugin_get_unique_id (wb->plugin), error->message); g_error_free(error); g_object_unref(G_OBJECT (wb->prefs->builder) ); return NULL ; }