From 468ba7e90a5eec5213743b54aad03dde2f2f2a99 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 14 Aug 2015 22:21:51 +0200 Subject: Add UI for advanced hw actions (dummy functions so far) --- rcm-client-hardware-list.c | 35 ++++++++++- rcm-client.ui | 148 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 178 insertions(+), 5 deletions(-) diff --git a/rcm-client-hardware-list.c b/rcm-client-hardware-list.c index ec29b46..64a0236 100644 --- a/rcm-client-hardware-list.c +++ b/rcm-client-hardware-list.c @@ -84,6 +84,37 @@ hardware_properties_cb(GtkButton *button, gpointer user_data) gtk_widget_hide(dialog); } +static void +advanced_cb(GtkButton *button, gpointer user_data) +{ + RCDevice *object = user_data; + GtkWidget *dialog; + GtkWidget *title; + gchar *titlestr; + + dialog = GTK_WIDGET(gtk_builder_get_object(global->builder, "advanced")); + + title = GTK_WIDGET(gtk_builder_get_object(global->builder, "advanced_main_title_label")); + titlestr = g_markup_printf_escaped("Advanced Actions\nFor device %s", + rcdevice_get_sys_name(object)); + gtk_label_set_markup(GTK_LABEL(title), titlestr); + g_free(titlestr); + + g_signal_connect_swapped(dialog, "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), dialog); + gtk_widget_show(dialog); +} + +static void +hw_selected_cb(GtkListBox *box, GtkListBoxRow *row, gpointer user_data) +{ + RCDevice *object = user_data; + GtkWidget *advanced_button; + + advanced_button = GTK_WIDGET(gtk_builder_get_object(global->builder, "hardware_page_action_advanced")); + g_signal_connect(advanced_button, "clicked", G_CALLBACK(advanced_cb), object); + gtk_widget_set_sensitive(advanced_button, row ? true : false); +} + static gint rcdev_sort(GtkListBoxRow *a, GtkListBoxRow *b, gpointer user_data) { @@ -150,7 +181,7 @@ void rcng_client_hardware_list_add(GDBusObject *hw) gtk_widget_set_valign(label, GTK_ALIGN_CENTER); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); - button = gtk_button_new_from_icon_name("emblem-system-symbolic", GTK_ICON_SIZE_MENU); + button = gtk_button_new_from_icon_name("dialog-information-symbolic", GTK_ICON_SIZE_MENU); gtk_widget_set_valign(button, GTK_ALIGN_CENTER); gtk_widget_set_halign(button, GTK_ALIGN_END); g_signal_connect(button, "clicked", G_CALLBACK(hardware_properties_cb), object); @@ -173,7 +204,7 @@ void rcng_client_hardware_list_add(GDBusObject *hw) if (!hw_list_box) { hw_list_box = gtk_list_box_new(); - gtk_list_box_set_selection_mode(GTK_LIST_BOX(hw_list_box), GTK_SELECTION_NONE); + g_signal_connect(hw_list_box, "row-selected", G_CALLBACK(hw_selected_cb), object); gtk_list_box_set_sort_func(GTK_LIST_BOX(hw_list_box), rcdev_sort, NULL, NULL); gtk_container_add(GTK_CONTAINER(hw_list_swin), hw_list_box); gtk_widget_show_all(hw_list_swin); diff --git a/rcm-client.ui b/rcm-client.ui index 13ad0ad..ba5c893 100644 --- a/rcm-client.ui +++ b/rcm-client.ui @@ -2,6 +2,122 @@ + + True + False + network-receive-symbolic + + + True + False + network-transmit-symbolic + + + False + Advanced Actions + + + True + False + crossfade + + + True + False + 18 + 18 + 18 + 18 + 12 + 12 + + + True + False + 6 + 1 + input-dialpad + 6 + + + 0 + 0 + + + + + True + False + True + True + end + advanced_button_receive_image + + + 0 + 1 + + + + + True + False + True + True + end + advanced_button_transmit_image + + + 0 + 2 + + + + + True + False + 6 + True + 0 + + + 1 + 0 + + + + + True + False + Receive raw commands + 0 + + + 1 + 1 + + + + + True + False + Transmit raw commands + 0 + + + 1 + 2 + + + + + page0 + page0 + + + + + 1 100 @@ -96,6 +212,32 @@ Currently connected receivers/transmitters 2 + + + True + False + end + + + Advanced + True + False + True + True + + + True + True + 0 + + + + + 0 + 2 + 2 + + hardware_page @@ -122,7 +264,7 @@ Currently connected receivers/transmitters Edit Button True True - normal + dialog main_window @@ -272,7 +414,7 @@ Currently connected receivers/transmitters Hardware Properties True True - normal + dialog main_window @@ -443,7 +585,7 @@ Currently connected receivers/transmitters Keymap Properties True True - normal + dialog main_window -- cgit v1.2.3