Author: nick Date: 2008-07-18 14:48:17 +0000 (Fri, 18 Jul 2008) New Revision: 27340
Modified: xfce4-settings/trunk/ChangeLog xfce4-settings/trunk/dialogs/mouse-settings/main.c Log: * dialogs/mouse-settings/main.c: Allow editing the display name of the device in the dialog. This way users can set usable names for devices that are plugged. Modified: xfce4-settings/trunk/ChangeLog =================================================================== --- xfce4-settings/trunk/ChangeLog 2008-07-18 13:53:06 UTC (rev 27339) +++ xfce4-settings/trunk/ChangeLog 2008-07-18 14:48:17 UTC (rev 27340) @@ -1,5 +1,11 @@ 2008-07-18 Nick Schermer <[EMAIL PROTECTED]> + * dialogs/mouse-settings/main.c: Allow editing the display name + of the device in the dialog. This way users can set usable names + for devices that are plugged. + +2008-07-18 Nick Schermer <[EMAIL PROTECTED]> + * dialogs/mouse-settings/main.c: Change option values string. 2008-07-18 Nick Schermer <[EMAIL PROTECTED]> Modified: xfce4-settings/trunk/dialogs/mouse-settings/main.c =================================================================== --- xfce4-settings/trunk/dialogs/mouse-settings/main.c 2008-07-18 13:53:06 UTC (rev 27339) +++ xfce4-settings/trunk/dialogs/mouse-settings/main.c 2008-07-18 14:48:17 UTC (rev 27340) @@ -746,6 +746,55 @@ +static void +mouse_settings_device_name_edited (GtkCellRendererText *renderer, + gchar *path, + gchar *new_name, + GladeXML *gxml) +{ + GtkWidget *treeview; + GtkTreeSelection *selection; + gboolean has_selection; + GtkTreeModel *model; + GtkTreeIter iter; + gchar *internal_name; + gchar *property_name; + gchar *new_name_escaped; + + /* check if the new name is valid */ + if (new_name == NULL || *new_name == '\0') + return; + + /* get the treeview's selection */ + treeview = glade_xml_get_widget (gxml, "mouse-devices-treeview"); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); + + /* get the selected item */ + has_selection = gtk_tree_selection_get_selected (selection, &model, &iter); + if (G_LIKELY (has_selection)) + { + /* get the internal device name */ + gtk_tree_model_get (model, &iter, COLUMN_DEVICE_NAME, &internal_name, -1); + + /* store the new name in the channel */ + property_name = g_strdup_printf ("/%s", internal_name); + xfconf_channel_set_string (pointers_channel, property_name, new_name); + + /* escape before adding in the store */ + new_name_escaped = g_markup_escape_text (new_name, -1); + + /* set the new device name in the store */ + gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_DEVICE_DISPLAY_NAME, new_name_escaped, -1); + + /* cleanup */ + g_free (new_name_escaped); + g_free (property_name); + g_free (internal_name); + } +} + + + static gchar * mouse_settings_device_xfconf_name (const gchar *name) { @@ -795,6 +844,8 @@ GtkCellRenderer *renderer; GtkTreeSelection *selection; gchar *device_name; + gchar *property_name; + gchar *property_value; /* lock */ locked++; @@ -852,16 +903,28 @@ if (G_UNLIKELY (num_buttons <= 0)) continue; - /* get the device name, escaped */ - display_name = g_markup_escape_text (device_info->name, -1); - - /* get rid of usb crap in the name */ - if ((usb = strstr (display_name, "-usb")) != NULL) - *usb = '\0'; - /* create a valid xfconf device name */ device_name = mouse_settings_device_xfconf_name (device_info->name); + /* check if there is a custom name set by the user */ + property_name = g_strdup_printf ("/%s", device_name); + if (xfconf_channel_has_property (pointers_channel, property_name)) + { + /* get the name from the config file, escape it */ + property_value = xfconf_channel_get_string (pointers_channel, property_name, NULL); + display_name = g_markup_escape_text (property_value, -1); + g_free (property_value); + } + else + { + /* get the device name, escaped */ + display_name = g_markup_escape_text (device_info->name, -1); + + /* get rid of usb crap in the name */ + if ((usb = strstr (display_name, "-usb")) != NULL) + *usb = '\0'; + } + /* insert in the store */ gtk_list_store_insert_with_values (store, &iter, i, COLUMN_DEVICE_ICON, "input-mouse", @@ -870,8 +933,9 @@ COLUMN_DEVICE_XID, device_info->id, COLUMN_DEVICE_NBUTTONS, num_buttons, -1); - /* check if we should select this device */ - if (opt_device_name && strcmp (opt_device_name, device_info->name) == 0) + /* check if we should select this device (for user convience also the display name) */ + if (opt_device_name && (strcmp (opt_device_name, device_info->name) == 0 + || (display_name && strcmp (opt_device_name, display_name) == 0))) { path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &iter); g_free (opt_device_name); @@ -879,6 +943,7 @@ } /* cleanup */ + g_free (property_name); g_free (device_name); g_free (display_name); } @@ -907,7 +972,8 @@ /* text renderer */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("", renderer, "markup", COLUMN_DEVICE_DISPLAY_NAME, NULL); - g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); + g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, "editable", TRUE, NULL); + g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (mouse_settings_device_name_edited), gxml); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); /* setup tree selection */ _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits