settings: Hook up refresh rate
This commit is contained in:
committed by
Simon Steinbeiß
parent
c03eb44de4
commit
265b1c2f5b
@@ -25,6 +25,11 @@ static void show_about_dialog (GtkWidget *widget, gpointer user_data);
|
||||
static GtkWidget *xtm_settings_dialog_new (GtkBuilder *builder, GtkWidget *parent_window);
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkWidget *combobox;
|
||||
guint rate;
|
||||
} XtmRefreshRate;
|
||||
|
||||
static void
|
||||
button_toggled (GtkToggleButton *button, XtmSettings *settings)
|
||||
@@ -48,6 +53,57 @@ builder_bind_toggle_button (GtkBuilder *builder, gchar *widget_name, XtmSettings
|
||||
g_signal_connect (button, "toggled", G_CALLBACK (button_toggled), settings);
|
||||
}
|
||||
|
||||
static void
|
||||
combobox_changed (GtkComboBox *combobox, XtmSettings *settings)
|
||||
{
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
GValue prop = { 0, };
|
||||
gint rate;
|
||||
|
||||
gtk_combo_box_get_active_iter (combobox, &iter);
|
||||
model = gtk_combo_box_get_model (combobox);
|
||||
gtk_tree_model_get_value (model, &iter, 0, &prop);
|
||||
rate = g_value_get_int (&prop);
|
||||
g_object_set (settings, "refresh-rate", GUINT_TO_POINTER (rate), NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
combobox_foreach (GtkTreeModel *model,
|
||||
GtkTreePath *path,
|
||||
GtkTreeIter *iter,
|
||||
gpointer user_data)
|
||||
{
|
||||
XtmRefreshRate *refresh_rate = user_data;
|
||||
GValue prop = { 0, };
|
||||
|
||||
gtk_tree_model_get_value (model, iter, 0, &prop);
|
||||
|
||||
if (g_value_get_int (&prop) == refresh_rate->rate)
|
||||
{
|
||||
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (refresh_rate->combobox), iter);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
builder_bind_combobox (GtkBuilder *builder, XtmSettings *settings)
|
||||
{
|
||||
XtmRefreshRate *refresh_rate;
|
||||
GtkTreeModel *model;
|
||||
|
||||
refresh_rate = g_new0 (XtmRefreshRate, 1);
|
||||
g_object_get (settings, "refresh-rate", &refresh_rate->rate, NULL);
|
||||
|
||||
refresh_rate->combobox = GTK_WIDGET (gtk_builder_get_object (builder, "combobox-refresh-rate"));
|
||||
model = gtk_combo_box_get_model (GTK_COMBO_BOX (refresh_rate->combobox));
|
||||
gtk_tree_model_foreach (model, combobox_foreach, refresh_rate);
|
||||
g_object_set_data (G_OBJECT (refresh_rate->combobox), "setting-name", "refresh-rate");
|
||||
g_signal_connect (refresh_rate->combobox, "changed", G_CALLBACK (combobox_changed), settings);
|
||||
}
|
||||
|
||||
static void
|
||||
show_about_dialog (GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
@@ -132,6 +188,7 @@ xtm_settings_dialog_new (GtkBuilder *builder, GtkWidget *parent_window)
|
||||
builder_bind_toggle_button (builder, "button-more-precision", settings, "more-precision");
|
||||
builder_bind_toggle_button (builder, "button-process-tree", settings, "process-tree");
|
||||
builder_bind_toggle_button (builder, "button-show-legend", settings, "show-legend");
|
||||
builder_bind_combobox (builder, settings);
|
||||
// Miscellaneous
|
||||
builder_bind_toggle_button (builder, "button-prompt-terminate-task", settings, "prompt-terminate-task");
|
||||
builder_bind_toggle_button (builder, "button-show-status-icon", settings, "show-status-icon");
|
||||
|
||||
@@ -18,11 +18,37 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="icon_name">window-close-symbolic</property>
|
||||
</object>
|
||||
<object class="GtkListStore" id="liststore1">
|
||||
<columns>
|
||||
<!-- column-name rate -->
|
||||
<column type="gint"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0">500</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">750</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">1000</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">2000</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">5000</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0">10000</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
<object class="XfceTitledDialog" id="settings-dialog">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title" translatable="yes">Task Manager Settings</property>
|
||||
<property name="icon_name">org.xfce.taskmanager</property>
|
||||
<property name="type_hint">dialog</property>
|
||||
<property name="type_hint">normal</property>
|
||||
<child internal-child="vbox">
|
||||
<object class="GtkBox">
|
||||
<property name="can_focus">False</property>
|
||||
@@ -213,6 +239,13 @@
|
||||
<object class="GtkComboBox" id="combobox-refresh-rate">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="model">liststore1</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererText" id="cellrenderertext1"/>
|
||||
<attributes>
|
||||
<attribute name="text">0</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
||||
Reference in New Issue
Block a user