static void
plugin_button_clicked_cb (GtkButton *button,
			  Totem     *totem)
{
	if (totem->plugins == NULL) {
		GtkWidget *manager;

		totem->plugins = gtk_dialog_new_with_buttons (_("Configure Plugins"),
							      GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (button))),
							      GTK_DIALOG_DESTROY_WITH_PARENT,
							      _("_Close"),
							      GTK_RESPONSE_CLOSE,
							      NULL);
		gtk_window_set_modal (GTK_WINDOW (totem->plugins), TRUE);
		gtk_container_set_border_width (GTK_CONTAINER (totem->plugins), 5);
		gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (totem->plugins))), 2);

		g_signal_connect_object (G_OBJECT (totem->plugins),
					 "delete_event",
					 G_CALLBACK (totem_plugins_window_delete_cb),
					 NULL, 0);
		g_signal_connect_object (G_OBJECT (totem->plugins),
					 "response",
					 G_CALLBACK (totem_plugins_response_cb),
					 NULL, 0);

		manager = peas_gtk_plugin_manager_new (NULL);
		gtk_widget_show_all (GTK_WIDGET (manager));
		gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (totem->plugins))),
				    manager, TRUE, TRUE, 0);
		gtk_window_set_default_size (GTK_WINDOW (totem->plugins), 600, 400);
	}

	gtk_window_present (GTK_WINDOW (totem->plugins));
}
Ejemplo n.º 2
0
static void consort_shell_init (ConsortShell *object) {
    ConsortShellPrivate *priv = CONSORT_SHELL_GET_PRIVATE (object);
    struct desktop *desktop;

    /* Set up the PeasEngine */
    priv->engine = peas_engine_get_default ();
    priv->extensions = peas_extension_set_new (peas_engine_get_default (), PEAS_TYPE_ACTIVATABLE, "object", object, NULL);
    peas_engine_add_search_path (priv->engine, CONSORT_SHELL_PLUGIN_DATA_DIR, CONSORT_SHELL_PLUGIN_DIR);
    peas_engine_enable_loader (priv->engine, "python3");
    
    /* Plugin manager */
    priv->plugin_manager = peas_gtk_plugin_manager_new (priv->engine);
    priv->plugin_window = plugin_window_create (priv);
    gtk_window_set_title (priv->plugin_window, "Consort2 Plugin Manager");
    gtk_widget_show_all (priv->plugin_window);
    
    /* Preload any plugins */
    peas_extension_set_foreach (priv->extensions, (PeasExtensionSetForeachFunc) on_extension_added, object);

    g_signal_connect (priv->extensions, "extension-added", G_CALLBACK (on_extension_added), object);
    g_signal_connect (priv->extensions, "extension-removed", G_CALLBACK (on_extension_removed), object);
    
    desktop = malloc(sizeof *desktop);
    desktop->output = NULL;
    desktop->shell = NULL;

    desktop->gdk_display = gdk_display_get_default();
    desktop->display =
        gdk_wayland_display_get_wl_display(desktop->gdk_display);
    if (desktop->display == NULL) {
        fprintf(stderr, "failed to get display: %m\n");
        return -1;
    }

    desktop->registry = wl_display_get_registry(desktop->display);
    wl_registry_add_listener(desktop->registry,
            &registry_listener, desktop);

    /* Wait until we have been notified about the compositor and shell
     * objects */
    while (!desktop->output || !desktop->shell)
        wl_display_roundtrip (desktop->display);
        
    priv->desktop = desktop;
}
Ejemplo n.º 3
0
/***************Plugins pages****************/
static void
setup_plugin_pages (GtrPreferencesDialog * dlg)
{
  GtkWidget *alignment;
  GtkWidget *page_content;

  alignment = gtk_alignment_new (0., 0., 1., 1.);
  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 12, 12, 12, 12);

  page_content = peas_gtk_plugin_manager_new (NULL);
  g_return_if_fail (page_content != NULL);

  gtk_container_add (GTK_CONTAINER (alignment), page_content);

  gtk_box_pack_start (GTK_BOX (dlg->priv->plugins_box),
                      alignment, TRUE, TRUE, 0);

  gtk_widget_show_all (page_content);
}
Ejemplo n.º 4
0
static GtkWidget *
create_main_window (void)
{
    GtkWidget *window;
    GtkWidget *box;
    GtkWidget *manager;
    GtkWidget *button_box;
    GtkWidget *button;

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL);
    gtk_container_set_border_width (GTK_CONTAINER (window), 6);
    gtk_window_set_title (GTK_WINDOW (window), "Peas Demo");

    gtk_window_set_has_resize_grip (GTK_WINDOW (window), FALSE);

    box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
    gtk_container_add (GTK_CONTAINER (window), box);

    manager = peas_gtk_plugin_manager_new (peas_engine_get_default ());
    gtk_box_pack_start (GTK_BOX (box), manager, TRUE, TRUE, 0);

    button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
    gtk_box_set_spacing (GTK_BOX (button_box), 6);
    gtk_button_box_set_layout (GTK_BUTTON_BOX (button_box), GTK_BUTTONBOX_END);
    gtk_box_pack_start (GTK_BOX (box), button_box, FALSE, FALSE, 0);

    button = gtk_button_new_with_label ("New window");
    g_signal_connect (button, "clicked", G_CALLBACK (create_new_window), NULL);
    gtk_container_add (GTK_CONTAINER (button_box), button);

    button = gtk_button_new_from_stock (GTK_STOCK_QUIT);
    g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);
    gtk_container_add (GTK_CONTAINER (button_box), button);

    return window;
}
static void
is_preferences_dialog_init(IsPreferencesDialog *self)
{
  IsPreferencesDialogPrivate *priv;
  GtkWidget *box;
  GtkWidget *notebook;
  GtkWidget *plugins;
  GtkWidget *label;
  gchar *markup;

  self->priv = priv =
    G_TYPE_INSTANCE_GET_PRIVATE(self, IS_TYPE_PREFERENCES_DIALOG,
                                IsPreferencesDialogPrivate);

  priv->application_settings = g_settings_new("indicator-sensors.application");
  priv->indicator_settings = g_settings_new("indicator-sensors.indicator");

  gtk_window_set_title(GTK_WINDOW(self), _("Hardware Sensors Indicator Preferences"));
  gtk_window_set_default_size(GTK_WINDOW(self), 500, 600);

  priv->sensor_properties_button = gtk_button_new_with_mnemonic(_("_Properties"));
  g_signal_connect(priv->sensor_properties_button, "clicked",
                   G_CALLBACK(sensor_properties_clicked_cb), self);
  gtk_widget_set_sensitive(priv->sensor_properties_button, FALSE);
  gtk_dialog_add_button(GTK_DIALOG(self),
                        _("_Close"), GTK_RESPONSE_ACCEPT);

  /* pack content into box */
  priv->grid = gtk_grid_new();
  gtk_grid_set_column_spacing(GTK_GRID(priv->grid), 6);
  gtk_grid_set_row_spacing(GTK_GRID(priv->grid), 6);
  gtk_container_set_border_width(GTK_CONTAINER(priv->grid), 6);

  label = gtk_label_new(NULL);
  markup = g_strdup_printf("<span weight='bold'>%s</span>",
                           _("General"));
  gtk_label_set_markup(GTK_LABEL(label), markup);
  g_free(markup);
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_grid_attach(GTK_GRID(priv->grid), label,
                  0, 0,
                  1, 1) ;
  priv->autostart_check_button = gtk_check_button_new_with_label
    (_("Start automatically on login"));
  gtk_widget_set_sensitive(priv->autostart_check_button, FALSE);
  gtk_grid_attach(GTK_GRID(priv->grid), priv->autostart_check_button,
                  0, 1,
                  3, 1);

  label = gtk_label_new(_("Primary sensor display"));
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_misc_set_padding(GTK_MISC(label), 2, 0);
  gtk_grid_attach(GTK_GRID(priv->grid), label,
                  0, 2,
                  1, 1);

  box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
  priv->display_icon_check_button = gtk_check_button_new_with_label (_("Icon"));
  gtk_widget_set_sensitive(priv->display_icon_check_button, FALSE);
  gtk_box_pack_start(GTK_BOX(box), priv->display_icon_check_button,
                     TRUE, TRUE, 0);

  priv->display_label_check_button = gtk_check_button_new_with_label (_("Label"));
  gtk_widget_set_sensitive(priv->display_label_check_button, FALSE);
  gtk_box_pack_start(GTK_BOX(box), priv->display_label_check_button,
                     TRUE, TRUE, 0);

  priv->display_value_check_button = gtk_check_button_new_with_label (_("Value"));
  gtk_widget_set_sensitive(priv->display_value_check_button, FALSE);
  gtk_box_pack_start(GTK_BOX(box), priv->display_value_check_button,
                     TRUE, TRUE, 0);

  gtk_grid_attach(GTK_GRID(priv->grid), box,
                  1, 2,
                  2, 1);

  label = gtk_label_new(_("Temperature scale"));
  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
  gtk_misc_set_padding(GTK_MISC(label), 2, 0);
  gtk_grid_attach(GTK_GRID(priv->grid), label,
                  0, 3,
                  1, 1);

  priv->celsius_radio_button = gtk_radio_button_new_with_label
    (NULL, _("Celsius (\302\260C)"));
  gtk_widget_set_sensitive(priv->celsius_radio_button, FALSE);
  gtk_widget_set_hexpand(priv->celsius_radio_button, TRUE);
  gtk_grid_attach(GTK_GRID(priv->grid), priv->celsius_radio_button,
                  1, 3,
                  1, 1);
  g_signal_connect(priv->celsius_radio_button, "toggled",
                   G_CALLBACK(temperature_scale_toggled), self);
  priv->fahrenheit_radio_button =
    gtk_radio_button_new_with_label_from_widget
    (GTK_RADIO_BUTTON(priv->celsius_radio_button),
     _("Fahrenheit (\302\260F)"));
  gtk_widget_set_sensitive(priv->fahrenheit_radio_button, FALSE);
  gtk_widget_set_hexpand(priv->fahrenheit_radio_button, TRUE);
  gtk_grid_attach(GTK_GRID(priv->grid), priv->fahrenheit_radio_button,
                  2, 3,
                  1, 1);
  g_signal_connect(priv->fahrenheit_radio_button, "toggled",
                   G_CALLBACK(temperature_scale_toggled), self);

  notebook = gtk_notebook_new();
  label = gtk_label_new(_("Preferences"));
  box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
  gtk_box_pack_start(GTK_BOX(box), priv->grid, TRUE, TRUE, 0);
  gtk_widget_set_hexpand(priv->sensor_properties_button, FALSE);
  gtk_widget_set_halign(priv->sensor_properties_button, GTK_ALIGN_END);
  gtk_box_pack_start(GTK_BOX(box), priv->sensor_properties_button, FALSE, TRUE, 0);

  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, label);

  plugins = peas_gtk_plugin_manager_new(NULL);
  label = gtk_label_new(_("Plugins"));
  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), plugins, label);

  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(self))),
                     notebook, TRUE, TRUE, 0);
}
Ejemplo n.º 6
0
void
preferences_dialog_init (PreferencesDialog *pd)
{
    GtkWidget		*widget, *entry;
    GtkComboBox		*combo;
    GtkListStore		*store;
    GtkTreeIter		treeiter;
    GtkAdjustment		*itemCount;
    GtkTreeStore		*treestore;
    GtkTreeViewColumn 	*column;
    GSList			*list;
    gchar			*proxyport;
    gchar			*configuredBrowser, *name;
    gboolean		enabled;
    static int		manual;
    struct browser		*iter;
    gint			tmp, i, iSetting, proxy_port;
    gboolean		bSetting, show_tray_icon;
    gchar			*proxy_host, *proxy_user, *proxy_passwd;
    gchar			*browser_command;

    prefdialog = pd;
    pd->priv = PREFERENCES_DIALOG_GET_PRIVATE (pd);
    pd->priv->dialog = liferea_dialog_new ("prefs.ui", "prefdialog");

    /* Set up browser selection popup */
    store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
    for(i = 0, iter = browser_get_all (); iter->id != NULL; iter++, i++) {
        gtk_list_store_append (store, &treeiter);
        gtk_list_store_set (store, &treeiter, 0, _(iter->display), 1, i, -1);
    }
    manual = i;
    /* This allows the user to choose their own browser by typing in the command. */
    gtk_list_store_append (store, &treeiter);
    gtk_list_store_set (store, &treeiter, 0, _("Manual"), 1, i, -1);
    combo = GTK_COMBO_BOX (liferea_dialog_lookup (pd->priv->dialog, "browserpopup"));
    gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
    ui_common_setup_combo_text (combo, 0);
    g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(on_browser_changed), pd);

    /* Create location menu */
    store = gtk_list_store_new (1, G_TYPE_STRING);

    combo = GTK_COMBO_BOX (liferea_dialog_lookup (pd->priv->dialog, "browserlocpopup"));
    gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
    ui_common_setup_combo_text (combo, 0);
    g_signal_connect(G_OBJECT(combo), "changed", G_CALLBACK(on_browser_place_changed), pd);

    gtk_list_store_append (store, &treeiter);
    gtk_list_store_set (store, &treeiter, 0, _("Browser default"), -1);

    gtk_list_store_append (store, &treeiter);
    gtk_list_store_set (store, &treeiter, 0, _("Existing window"), -1);

    gtk_list_store_append (store, &treeiter);
    gtk_list_store_set (store, &treeiter, 0, _("New window"), -1);

    gtk_list_store_append (store, &treeiter);
    gtk_list_store_set (store, &treeiter, 0, _("New tab"), -1);


    /* ================== panel 1 "feeds" ==================== */

    /* check box for feed startup update */
    conf_get_int_value (STARTUP_FEED_ACTION, &iSetting);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "startupactionbtn")), (iSetting == 0));

    /* cache size setting */
    widget = liferea_dialog_lookup (pd->priv->dialog, "itemCountBtn");
    itemCount = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
    conf_get_int_value (DEFAULT_MAX_ITEMS, &iSetting);
    gtk_adjustment_set_value (itemCount, iSetting);

    /* set default update interval spin button and unit combo box */
    ui_common_setup_combo_menu (liferea_dialog_lookup (pd->priv->dialog, "globalRefreshIntervalUnitComboBox"),
                                default_update_interval_unit_options,
                                G_CALLBACK (on_default_update_interval_unit_changed),
                                -1);

    widget = liferea_dialog_lookup (pd->priv->dialog, "globalRefreshIntervalUnitComboBox");
    conf_get_int_value (DEFAULT_UPDATE_INTERVAL, &tmp);
    if (tmp % 1440 == 0) {		/* days */
        gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 2);
        tmp /= 1440;
    } else if (tmp % 60 == 0) {	/* hours */
        gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 1);
        tmp /= 60;
    } else {			/* minutes */
        gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
    }
    widget = liferea_dialog_lookup (pd->priv->dialog,"globalRefreshIntervalSpinButton");
    gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), tmp);
    g_signal_connect (G_OBJECT (widget), "changed", G_CALLBACK (on_default_update_interval_value_changed), pd);

    /* ================== panel 2 "folders" ==================== */

    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "updateAllFavicons")), "clicked", G_CALLBACK(on_updateallfavicons_clicked), pd);

    conf_get_int_value (FOLDER_DISPLAY_MODE, &iSetting);
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "folderdisplaybtn")), iSetting?TRUE:FALSE);
    conf_get_bool_value (FOLDER_DISPLAY_HIDE_READ, &bSetting);
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "hidereadbtn")), bSetting?TRUE:FALSE);

    /* ================== panel 3 "headlines" ==================== */

    conf_get_int_value (BROWSE_KEY_SETTING, &iSetting);
    ui_common_setup_combo_menu (liferea_dialog_lookup (pd->priv->dialog, "skimKeyCombo"),
                                browser_skim_key_options,
                                G_CALLBACK (on_skim_key_changed),
                                iSetting);

    conf_get_int_value (DEFAULT_VIEW_MODE, &iSetting);
    ui_common_setup_combo_menu (liferea_dialog_lookup (pd->priv->dialog, "defaultViewModeCombo"),
                                default_view_mode_options,
                                G_CALLBACK (on_default_view_mode_changed),
                                iSetting);

    /* Setup social bookmarking list */
    i = 0;
    conf_get_str_value (SOCIAL_BM_SITE, &name);
    store = gtk_list_store_new (1, G_TYPE_STRING);
    list = bookmarkSites;
    while (list) {
        socialSitePtr siter = list->data;
        if (name && !strcmp (siter->name, name))
            tmp = i;
        gtk_list_store_append (store, &treeiter);
        gtk_list_store_set (store, &treeiter, 0, siter->name, -1);
        list = g_slist_next (list);
        i++;
    }

    combo = GTK_COMBO_BOX (liferea_dialog_lookup (pd->priv->dialog, "socialpopup"));
    g_signal_connect (G_OBJECT (combo), "changed", G_CALLBACK (on_socialsite_changed), pd);
    gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
    ui_common_setup_combo_text (combo, 0);
    gtk_combo_box_set_active (combo, tmp);

    /* ================== panel 4 "browser" ==================== */

    /* set the inside browsing flag */
    widget = liferea_dialog_lookup(pd->priv->dialog, "browseinwindow");
    conf_get_bool_value(BROWSE_INSIDE_APPLICATION, &bSetting);
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), bSetting);

    /* set the javascript-disabled flag */
    widget = liferea_dialog_lookup(pd->priv->dialog, "disablejavascript");
    conf_get_bool_value(DISABLE_JAVASCRIPT, &bSetting);
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), bSetting);

    /* set the enable Plugins flag */
    widget = liferea_dialog_lookup(pd->priv->dialog, "enableplugins");
    conf_get_bool_value(ENABLE_PLUGINS, &bSetting);
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), bSetting);

    tmp = 0;
    conf_get_str_value(BROWSER_ID, &configuredBrowser);

    if(!strcmp(configuredBrowser, "manual"))
        tmp = manual;
    else
        for(i=0, iter = browser_get_all (); iter->id != NULL; iter++, i++)
            if(!strcmp(configuredBrowser, iter->id))
                tmp = i;

    gtk_combo_box_set_active(GTK_COMBO_BOX(liferea_dialog_lookup(pd->priv->dialog, "browserpopup")), tmp);
    g_free(configuredBrowser);

    conf_get_int_value (BROWSER_PLACE, &iSetting);
    gtk_combo_box_set_active(GTK_COMBO_BOX(liferea_dialog_lookup(pd->priv->dialog, "browserlocpopup")), iSetting);

    conf_get_str_value (BROWSER_COMMAND, &browser_command);
    entry = liferea_dialog_lookup(pd->priv->dialog, "browsercmd");
    gtk_entry_set_text(GTK_ENTRY(entry), browser_command);
    g_free (browser_command);

    gtk_widget_set_sensitive (GTK_WIDGET (entry), tmp == manual);
    gtk_widget_set_sensitive (liferea_dialog_lookup (pd->priv->dialog, "manuallabel"), tmp == manual);
    gtk_widget_set_sensitive (liferea_dialog_lookup (pd->priv->dialog, "urlhintlabel"), tmp == manual);

    /* ================== panel 4 "GUI" ================ */

    widget = liferea_dialog_lookup (pd->priv->dialog, "popupwindowsoptionbtn");
    conf_get_bool_value (SHOW_POPUP_WINDOWS, &bSetting);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bSetting);

    widget = liferea_dialog_lookup (pd->priv->dialog, "trayiconoptionbtn");
    conf_get_bool_value (SHOW_TRAY_ICON, &show_tray_icon);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), show_tray_icon);

    widget = liferea_dialog_lookup (pd->priv->dialog, "newcountintraybtn");
    conf_get_bool_value (SHOW_NEW_COUNT_IN_TRAY, &bSetting);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bSetting);
    gtk_widget_set_sensitive (liferea_dialog_lookup (pd->priv->dialog, "newcountintraybtn"), show_tray_icon);

    widget = liferea_dialog_lookup (pd->priv->dialog, "minimizetotraybtn");
    conf_get_bool_value (DONT_MINIMIZE_TO_TRAY, &bSetting);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bSetting);
    gtk_widget_set_sensitive (liferea_dialog_lookup (pd->priv->dialog, "minimizetotraybtn"), show_tray_icon);

    widget = liferea_dialog_lookup (pd->priv->dialog, "startintraybtn");
    conf_get_bool_value (START_IN_TRAY, &bSetting);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bSetting);
    gtk_widget_set_sensitive (liferea_dialog_lookup (pd->priv->dialog, "startintraybtn"), show_tray_icon);

    if (ui_indicator_is_visible ()) {
        /*
           If we use the indicator applet:
           - The "show tray icon" and "minimize to tray icon" settings
             are interpreted as "show indicator" and "minimize to indicator"
           - The "new count in tray icon" setting doesn't make sense and
             is ignored by indicator handling code
        */

        gtk_widget_hide (liferea_dialog_lookup (pd->priv->dialog, "newcountintraybtn"));

        gtk_button_set_label (GTK_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "trayiconoptionbtn")),
                              _("Integrate with the messaging menu (indicator)"));

        gtk_button_set_label (GTK_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "minimizetotraybtn")),
                              _("Terminate instead of minimizing to the messaging menu"));

        gtk_button_set_label (GTK_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "startintraybtn")),
                              _("Start minimized to the messaging menu"));
    }

    /* tool bar settings */
    widget = liferea_dialog_lookup (pd->priv->dialog, "hidetoolbarbtn");
    conf_get_bool_value(DISABLE_TOOLBAR, &bSetting);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), bSetting);

    /* select currently active toolbar style option */
    conf_get_str_value (TOOLBAR_STYLE, &name);
    for (i = 0; gui_toolbar_style_values[i] != NULL; ++i) {
        if (strcmp (name, gui_toolbar_style_values[i]) == 0)
            break;
    }
    g_free (name);

    /* On invalid key value: revert to default */
    if (gui_toolbar_style_values[i] == NULL)
        i = 0;

    /* create toolbar style menu */
    ui_common_setup_combo_menu (liferea_dialog_lookup (pd->priv->dialog, "toolbarCombo"),
                                gui_toolbar_style_options,
                                G_CALLBACK (on_gui_toolbar_style_changed),
                                i);

    /* ================= panel 5 "proxy" ======================== */
    conf_get_str_value (PROXY_HOST, &proxy_host);
    gtk_entry_set_text (GTK_ENTRY (liferea_dialog_lookup (pd->priv->dialog, "proxyhostentry")), proxy_host);
    g_free (proxy_host);

    conf_get_int_value (PROXY_PORT, &proxy_port);
    proxyport = g_strdup_printf ("%d", proxy_port);
    gtk_entry_set_text (GTK_ENTRY (liferea_dialog_lookup (pd->priv->dialog, "proxyportentry")), proxyport);
    g_free (proxyport);

    conf_get_bool_value (PROXY_USEAUTH, &enabled);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "useProxyAuth")), enabled);

    conf_get_str_value (PROXY_USER, &proxy_user);
    gtk_entry_set_text (GTK_ENTRY (liferea_dialog_lookup (pd->priv->dialog, "proxyusernameentry")), proxy_user);
    g_free (proxy_user);

    conf_get_str_value (PROXY_PASSWD, &proxy_passwd);
    gtk_entry_set_text (GTK_ENTRY (liferea_dialog_lookup (pd->priv->dialog, "proxypasswordentry")), proxy_passwd);
    g_free (proxy_passwd);

    gtk_widget_set_sensitive (GTK_WIDGET (liferea_dialog_lookup(pd->priv->dialog, "proxyauthtable")), enabled);

    conf_get_int_value (PROXY_DETECT_MODE, &i);
    switch (i) {
    default:
    case 0: /* proxy auto detect */
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "proxyAutoDetectRadio")), TRUE);
        enabled = FALSE;
        break;
    case 1: /* no proxy */
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "noProxyRadio")), TRUE);
        enabled = FALSE;
        break;
    case 2: /* manual proxy */
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (liferea_dialog_lookup (pd->priv->dialog, "manualProxyRadio")), TRUE);
        enabled = TRUE;
        break;
    }
    gtk_widget_set_sensitive (GTK_WIDGET (liferea_dialog_lookup (pd->priv->dialog, "proxybox")), enabled);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "proxyAutoDetectRadio")), "clicked", G_CALLBACK (on_proxyAutoDetect_clicked), pd);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "noProxyRadio")), "clicked", G_CALLBACK (on_noProxy_clicked), pd);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "manualProxyRadio")), "clicked", G_CALLBACK (on_manualProxy_clicked), pd);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "proxyhostentry")), "changed", G_CALLBACK (on_proxyhostentry_changed), pd);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "proxyportentry")), "changed", G_CALLBACK (on_proxyportentry_changed), pd);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "proxyusernameentry")), "changed", G_CALLBACK (on_proxyusernameentry_changed), pd);
    g_signal_connect (G_OBJECT (liferea_dialog_lookup (pd->priv->dialog, "proxypasswordentry")), "changed", G_CALLBACK (on_proxypasswordentry_changed), pd);

    /* ================= panel 6 "Enclosures" ======================== */

    /* menu for download tool */
    conf_get_int_value (DOWNLOAD_TOOL, &iSetting);
    ui_common_setup_combo_menu (liferea_dialog_lookup (pd->priv->dialog, "downloadToolCombo"),
                                enclosure_download_tool_options,
                                G_CALLBACK (on_enclosure_download_tool_changed),
                                iSetting);

    /* set up list of configured enclosure types */
    treestore = gtk_tree_store_new (FTS_LEN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
    list = (GSList *)enclosure_mime_types_get ();
    while (list) {
        GtkTreeIter *newIter = g_new0 (GtkTreeIter, 1);
        gtk_tree_store_append (treestore, newIter, NULL);
        gtk_tree_store_set (treestore, newIter,
                            FTS_TYPE, (NULL != ((encTypePtr)(list->data))->mime)?((encTypePtr)(list->data))->mime:((encTypePtr)(list->data))->extension,
                            FTS_CMD, ((encTypePtr)(list->data))->cmd,
                            FTS_PTR, list->data,
                            -1);
        list = g_slist_next (list);
    }

    widget = liferea_dialog_lookup (pd->priv->dialog, "enc_action_view");
    gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (treestore));

    column = gtk_tree_view_column_new_with_attributes (_("Type"), gtk_cell_renderer_text_new (), "text", FTS_TYPE, NULL);
    gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column);
    gtk_tree_view_column_set_sort_column_id (column, FTS_TYPE);
    column = gtk_tree_view_column_new_with_attributes (_("Program"), gtk_cell_renderer_text_new (), "text", FTS_CMD, NULL);
    gtk_tree_view_column_set_sort_column_id (column, FTS_CMD);
    gtk_tree_view_append_column (GTK_TREE_VIEW(widget), column);

    gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW(widget)), GTK_SELECTION_SINGLE);

    /* ================= panel 7 "Plugins" ======================== */

    pd->priv->plugins_box = liferea_dialog_lookup (pd->priv->dialog, "plugins_box");
    g_assert (pd->priv->plugins_box != NULL);

    GtkWidget *alignment;

    alignment = gtk_alignment_new (0., 0., 1., 1.);
    gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 12, 12, 12, 12);

    widget = peas_gtk_plugin_manager_new (NULL);
    g_assert (widget != NULL);

    gtk_container_add (GTK_CONTAINER (alignment), widget);
    gtk_box_pack_start (GTK_BOX (pd->priv->plugins_box), alignment, TRUE, TRUE, 0);

    g_signal_connect_object (pd->priv->dialog, "destroy", G_CALLBACK (preferences_dialog_destroy_cb), pd, 0);

    gtk_widget_show_all (pd->priv->dialog);

    gtk_window_present (GTK_WINDOW (pd->priv->dialog));
}
Ejemplo n.º 7
0
static GObject *
eom_preferences_dialog_constructor (GType type,
				    guint n_construct_properties,
				    GObjectConstructParam *construct_params)

{
	EomPreferencesDialogPrivate *priv;
	GtkWidget *dlg;
	GtkWidget *interpolate_check;
	GtkWidget *extrapolate_check;
	GtkWidget *autorotate_check;
	GtkWidget *bg_color_check;
	GtkWidget *bg_color_button;
	GtkWidget *color_radio;
	GtkWidget *checkpattern_radio;
	GtkWidget *background_radio;
	GtkWidget *color_button;
	GtkWidget *upscale_check;
	GtkWidget *random_check;
	GtkWidget *loop_check;
	GtkWidget *seconds_spin;
	GtkWidget *plugin_manager;
	GtkWidget *plugin_manager_container;
	GObject *object;

	object = G_OBJECT_CLASS (eom_preferences_dialog_parent_class)->constructor
			(type, n_construct_properties, construct_params);

	priv = EOM_PREFERENCES_DIALOG (object)->priv;

	priv->view_settings = g_settings_new (EOM_CONF_VIEW);
	priv->fullscreen_settings = g_settings_new (EOM_CONF_FULLSCREEN);

	eom_dialog_construct (EOM_DIALOG (object),
			      "eom-preferences-dialog.ui",
			      "eom_preferences_dialog");

	eom_dialog_get_controls (EOM_DIALOG (object),
			         "eom_preferences_dialog", &dlg,
			         "interpolate_check", &interpolate_check,
			         "extrapolate_check", &extrapolate_check,
			         "autorotate_check", &autorotate_check,
			         "bg_color_check", &bg_color_check,
			         "bg_color_button", &bg_color_button,
			         "color_radio", &color_radio,
			         "checkpattern_radio", &checkpattern_radio,
			         "background_radio", &background_radio,
			         "color_button", &color_button,
			         "upscale_check", &upscale_check,
			         "random_check", &random_check,
			         "loop_check", &loop_check,
			         "seconds_spin", &seconds_spin,
			         "plugin_manager_container", &plugin_manager_container,
			         NULL);

	g_signal_connect (G_OBJECT (dlg),
			  "response",
			  G_CALLBACK (eom_preferences_response_cb),
			  dlg);

	g_settings_bind (priv->view_settings,
					 EOM_CONF_VIEW_INTERPOLATE,
					 G_OBJECT (interpolate_check),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (priv->view_settings,
					 EOM_CONF_VIEW_EXTRAPOLATE,
					 G_OBJECT (extrapolate_check),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (priv->view_settings,
					 EOM_CONF_VIEW_AUTOROTATE,
					 G_OBJECT (autorotate_check),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_settings_bind (priv->view_settings,
					 EOM_CONF_VIEW_USE_BG_COLOR,
					 G_OBJECT (bg_color_check),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);

	g_settings_bind_with_mapping (priv->view_settings,
				      EOM_CONF_VIEW_BACKGROUND_COLOR,
				      bg_color_button, "color",
				      G_SETTINGS_BIND_DEFAULT,
				      pd_string_to_color_mapping,
				      pd_color_to_string_mapping,
				      NULL, NULL);

	g_object_set_data (G_OBJECT (color_radio),
			   GSETTINGS_OBJECT_VALUE,
			   GINT_TO_POINTER (EOM_TRANSP_COLOR));

	g_signal_connect (G_OBJECT (color_radio),
			  "toggled",
			  G_CALLBACK (pd_transp_radio_toggle_cb),
			  priv->view_settings);

	g_object_set_data (G_OBJECT (checkpattern_radio),
			   GSETTINGS_OBJECT_VALUE,
			   GINT_TO_POINTER (EOM_TRANSP_CHECKED));

	g_signal_connect (G_OBJECT (checkpattern_radio),
			  "toggled",
			  G_CALLBACK (pd_transp_radio_toggle_cb),
			  priv->view_settings);

	g_object_set_data (G_OBJECT (background_radio),
			   GSETTINGS_OBJECT_VALUE,
			   GINT_TO_POINTER (EOM_TRANSP_BACKGROUND));

	g_signal_connect (G_OBJECT (background_radio),
			  "toggled",
			  G_CALLBACK (pd_transp_radio_toggle_cb),
			  priv->view_settings);

	switch (g_settings_get_enum (priv->view_settings,
				    EOM_CONF_VIEW_TRANSPARENCY))
	{
	case EOM_TRANSP_COLOR:
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radio), TRUE);
		break;
	case EOM_TRANSP_CHECKED:
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkpattern_radio), TRUE);
		break;
	default:
		// Log a warning and use EOM_TRANSP_BACKGROUND as fallback
		g_warn_if_reached ();
	case EOM_TRANSP_BACKGROUND:
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (background_radio), TRUE);
		break;
	}

	g_settings_bind_with_mapping (priv->view_settings,
				      EOM_CONF_VIEW_TRANS_COLOR,
				      color_button, "color",
				      G_SETTINGS_BIND_DEFAULT,
				      pd_string_to_color_mapping,
				      pd_color_to_string_mapping,
				      NULL, NULL);

	g_settings_bind (priv->fullscreen_settings, EOM_CONF_FULLSCREEN_UPSCALE,
			 upscale_check, "active", G_SETTINGS_BIND_DEFAULT);

	g_settings_bind (priv->fullscreen_settings,
					 EOM_CONF_FULLSCREEN_LOOP,
					 G_OBJECT (loop_check),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);

	g_settings_bind (priv->fullscreen_settings,
					 EOM_CONF_FULLSCREEN_RANDOM,
					 G_OBJECT (random_check),
					 "active",
					 G_SETTINGS_BIND_DEFAULT);
	g_signal_connect (priv->fullscreen_settings,
					  "changed::" EOM_CONF_FULLSCREEN_RANDOM,
					  G_CALLBACK (random_change_cb),
					  loop_check);
	random_change_cb (priv->fullscreen_settings,
					  EOM_CONF_FULLSCREEN_RANDOM,
					  loop_check);

	g_settings_bind (priv->fullscreen_settings,
					 EOM_CONF_FULLSCREEN_SECONDS,
					 G_OBJECT (seconds_spin),
					 "value",
					 G_SETTINGS_BIND_DEFAULT);

	plugin_manager = peas_gtk_plugin_manager_new (NULL);

	g_assert (plugin_manager != NULL);

	gtk_box_pack_start (GTK_BOX (plugin_manager_container),
	                    plugin_manager,
	                    TRUE,
	                    TRUE,
	                    0);

	gtk_widget_show_all (plugin_manager);

	return object;
}