void ui_window_update(struct ui_psensor *ui)
{
struct config *cfg;
- GtkWidget *w_sensorlist;
+ int init = 1;
cfg = ui->config;
if (ui->sensor_box) {
- ui_sensorlist_create_widget(ui->ui_sensorlist);
+ g_object_ref(GTK_WIDGET(ui->ui_sensorlist->widget));
+
+ gtk_container_remove(GTK_CONTAINER(ui->sensor_box),
+ ui->ui_sensorlist->widget);
gtk_container_remove(GTK_CONTAINER(ui->main_box),
ui->sensor_box);
ui->w_graph = ui_graph_create(ui);
+
+ init = 0;
}
if (cfg->sensorlist_position == SENSORLIST_POSITION_RIGHT
else
ui->sensor_box = gtk_vpaned_new();
- w_sensorlist = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(w_sensorlist),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_container_add(GTK_CONTAINER(w_sensorlist),
- ui->ui_sensorlist->widget);
-
gtk_box_pack_end(GTK_BOX(ui->main_box), ui->sensor_box, TRUE, TRUE, 2);
if (cfg->sensorlist_position == SENSORLIST_POSITION_RIGHT
gtk_paned_pack1(GTK_PANED(ui->sensor_box),
GTK_WIDGET(ui->w_graph), TRUE, TRUE);
gtk_paned_pack2(GTK_PANED(ui->sensor_box),
- w_sensorlist, FALSE, TRUE);
+ ui->ui_sensorlist->widget, FALSE, TRUE);
} else {
gtk_paned_pack1(GTK_PANED(ui->sensor_box),
- w_sensorlist, FALSE, TRUE);
+ ui->ui_sensorlist->widget, FALSE, TRUE);
gtk_paned_pack2(GTK_PANED(ui->sensor_box),
GTK_WIDGET(ui->w_graph), TRUE, TRUE);
}
+ if (!init)
+ g_object_unref(GTK_WIDGET(ui->ui_sensorlist->widget));
+
gtk_widget_show_all(ui->sensor_box);
if (cfg->menu_bar_disabled)
{
GtkTreeIter iter;
GtkTreeModel *model
- = gtk_tree_view_get_model(GTK_TREE_VIEW(list->widget));
+ = gtk_tree_view_get_model(list->treeview);
gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
struct psensor **sensor = list->sensors;
{
GtkTreeIter iter;
GtkTreeModel *model
- = gtk_tree_view_get_model(GTK_TREE_VIEW(list->widget));
+ = gtk_tree_view_get_model(list->treeview);
gboolean valid = gtk_tree_model_get_iter_first(model, &iter);
struct psensor **sensor = list->sensors;
}
}
-static void cb_sensor_settings_activated(GtkWidget *menu_item, gpointer data)
+static void on_preferences_activated(GtkWidget *menu_item, gpointer data)
{
struct cb_data *cb_data = data;
struct psensor *sensor = cb_data->sensor;
g_signal_connect(item,
"activate",
- G_CALLBACK(cb_sensor_settings_activated), data);
+ G_CALLBACK(on_preferences_activated), data);
gtk_widget_show_all(menu);
return menu;
}
-static int
-cb_sensor_line_clicked(GtkWidget *widget,
- GdkEventButton *event, gpointer data)
+static int on_clicked(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
struct ui_sensorlist *list = (struct ui_sensorlist *)data;
- GtkTreeView *view = GTK_TREE_VIEW(list->widget);
+ GtkTreeView *view = list->treeview;
struct psensor *sensor = get_sensor_at_pos(view,
event->x,
}
static void
-ui_sensorlist_on_toggled(GtkCellRendererToggle *cell,
- gchar *path_str, gpointer data)
+on_toggled(GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
{
struct ui_sensorlist *list = (struct ui_sensorlist *)data;
GtkTreeModel *model
- = gtk_tree_view_get_model(GTK_TREE_VIEW(list->widget));
+ = gtk_tree_view_get_model(list->treeview);
GtkTreeIter iter;
GtkTreePath *path = gtk_tree_path_new_from_string(path_str);
gboolean fixed;
gtk_tree_path_free(path);
}
-void ui_sensorlist_create_widget(struct ui_sensorlist *ui)
+static void create_widget(struct ui_sensorlist *ui)
{
GtkListStore *store;
GtkCellRenderer *renderer;
- struct psensor **sensor_cur;
- struct psensor **sensors;
-
- sensors = ui->sensors;
+ struct psensor **s_cur;
store = gtk_list_store_new(COLS_COUNT,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_BOOLEAN, G_TYPE_STRING);
- if (ui->widget)
- gtk_widget_destroy(ui->widget);
-
- ui->widget =
- GTK_WIDGET(gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
+ ui->treeview = GTK_TREE_VIEW
+ (gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)));
- gtk_tree_selection_set_mode(gtk_tree_view_get_selection
- (GTK_TREE_VIEW(ui->widget)),
+ gtk_tree_selection_set_mode(gtk_tree_view_get_selection(ui->treeview),
GTK_SELECTION_NONE);
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
_("Sensor"),
renderer,
"text", COL_NAME, NULL);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
_("Current"),
renderer,
"text", COL_TEMP, NULL);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
_("Min"),
renderer,
"text", COL_TEMP_MIN, NULL);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
_("Max"),
renderer,
"text", COL_TEMP_MAX, NULL);
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
_("Color"),
renderer,
"background", COL_COLOR_STR,
NULL);
- g_signal_connect(ui->widget,
- "button-press-event",
- (GCallback) cb_sensor_line_clicked, ui);
+ g_signal_connect(ui->treeview,
+ "button-press-event", (GCallback) on_clicked, ui);
renderer = gtk_cell_renderer_toggle_new();
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
_("Enabled"),
renderer,
"active", COL_ENABLED,
NULL);
- g_signal_connect(G_OBJECT(renderer), "toggled",
- (GCallback) ui_sensorlist_on_toggled, ui);
+ g_signal_connect(G_OBJECT(renderer),
+ "toggled", (GCallback) on_toggled, ui);
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ui->widget),
+ gtk_tree_view_insert_column_with_attributes(ui->treeview,
-1,
"",
renderer,
"text", COL_EMPTY, NULL);
- sensor_cur = sensors;
- while (*sensor_cur) {
+ s_cur = ui->sensors;
+ while (*s_cur) {
GtkTreeIter iter;
GdkColor color;
gchar *scolor;
+ struct psensor *s = *s_cur;
- color.red = (*sensor_cur)->color->red;
- color.green = (*sensor_cur)->color->green;
- color.blue = (*sensor_cur)->color->blue;
+ color.red = s->color->red;
+ color.green = s->color->green;
+ color.blue = s->color->blue;
scolor = gdk_color_to_string(&color);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- COL_NAME, (*sensor_cur)->name,
+ COL_NAME, s->name,
COL_TEMP, _("N/A"),
COL_TEMP_MIN, _("N/A"),
COL_TEMP_MAX, _("N/A"),
COL_COLOR_STR, scolor,
- COL_ENABLED, (*sensor_cur)->enabled, -1);
+ COL_ENABLED, s->enabled, -1);
free(scolor);
- sensor_cur++;
+ s_cur++;
}
+
+ ui->widget = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ui->widget),
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ gtk_container_add(GTK_CONTAINER(ui->widget), GTK_WIDGET(ui->treeview));
}
struct ui_sensorlist *ui_sensorlist_create(struct psensor **sensors)
list = malloc(sizeof(struct ui_sensorlist));
list->sensors = sensors;
- list->widget = NULL;
- ui_sensorlist_create_widget(list);
+ create_widget(list);
return list;