From 8205d7e27a07f952ac26315a7d8af28f0c0b0e86 Mon Sep 17 00:00:00 2001 From: vhaudiquet Date: Thu, 28 Sep 2023 18:55:20 +0200 Subject: [PATCH] Graphical improvements, fix compile warnings --- README.md | 2 ++ drivers/g-wolves/g-wolves.c | 5 +++++ drivers/g-wolves/g-wolves.h | 1 + src/device/driver_interface.h | 1 + src/ui/main-window.c | 5 +++-- src/ui/panels/empty-panel.c | 2 -- src/ui/panels/mouse-panel.c | 21 +++++++++++++++++---- ui/panel-mouse.ui | 20 ++++++++++++++++++++ 8 files changed, 49 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9065829..deb80a7 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,11 @@ Drivers **must** expose the following symbols: ```c void driver_init(); // Initialization uint32_t driver_getkey(); // Calls to this function must return USB keys that this driver registers, until 0 + device_type_t driver_get_capacity(); // Returns device capacity (see below) char* driver_get_name(void* handle); // Returns peripheral name char* driver_get_image(void* handle); // Returns peripheral image +char* driver_get_manufacturer(void* handle); // Returns manufacturer name /* * Mouse drivers diff --git a/drivers/g-wolves/g-wolves.c b/drivers/g-wolves/g-wolves.c index 1be2082..8b1a541 100644 --- a/drivers/g-wolves/g-wolves.c +++ b/drivers/g-wolves/g-wolves.c @@ -94,6 +94,11 @@ device_capacity_t driver_get_capacity(void* handle) return DEVICE_CAPACITY_MOUSE | wireless; } +char* driver_get_manufacturer(void* handle) +{ + return MANUFACTURER_NAME; +} + char* driver_get_name(void* handle) { libusb_device* dev = handle; diff --git a/drivers/g-wolves/g-wolves.h b/drivers/g-wolves/g-wolves.h index 7e56b10..b5d1eb6 100644 --- a/drivers/g-wolves/g-wolves.h +++ b/drivers/g-wolves/g-wolves.h @@ -20,6 +20,7 @@ #include "devices/hts_plus.h" #include "devices/hsk_pro.h" +#define MANUFACTURER_NAME "G-Wolves" #define VENDOR_ID 0x33e4 #define REPORT_MAX_SIZE 0x40 // 64 Bytes diff --git a/src/device/driver_interface.h b/src/device/driver_interface.h index dd3847c..ee90bca 100644 --- a/src/device/driver_interface.h +++ b/src/device/driver_interface.h @@ -15,6 +15,7 @@ uint32_t driver_getkey(); // Calls to this function must return USB keys that th device_capacity_t driver_get_capacity(void* handle); // Returns device capacity (see above) char* driver_get_name(void* handle); // Returns peripheral name +char* driver_get_manufacturer(void* handle); // Returns peripheral manufacturer char* driver_get_image(void* handle); // Returns peripheral image /* Mouse drivers */ diff --git a/src/ui/main-window.c b/src/ui/main-window.c index 96c8099..b494beb 100644 --- a/src/ui/main-window.c +++ b/src/ui/main-window.c @@ -48,6 +48,7 @@ static gboolean activate_panel(MainWindow* self, Panel* panel, const gchar* id) self->active_panel = panel; gtk_stack_add_named(self->stack, self->current_panel, id); gtk_stack_set_visible_child_name (self->stack, id); + return true; } /* @@ -56,7 +57,7 @@ static gboolean activate_panel(MainWindow* self, Panel* panel, const gchar* id) static void main_window_map(GtkWidget* widget) { - MainWindow* self = (MainWindow*) widget; + // MainWindow* self = (MainWindow*) widget; GTK_WIDGET_CLASS(main_window_parent_class)->map(widget); } @@ -176,7 +177,7 @@ void main_window_device_selected(GtkListBox* self, GtkListBoxRow* row, gpointer } device_t* device = (device_t*) g_object_get_data(G_OBJECT(row), "ginput_device"); - MousePanel* mp = (Panel*) mouse_panel_new(); + MousePanel* mp = (MousePanel*) mouse_panel_new(); mouse_panel_set_device(mp, device); // TODO : change and use already added child if possible diff --git a/src/ui/panels/empty-panel.c b/src/ui/panels/empty-panel.c index d36595f..b8e8732 100644 --- a/src/ui/panels/empty-panel.c +++ b/src/ui/panels/empty-panel.c @@ -10,9 +10,7 @@ G_DEFINE_TYPE (EmptyPanel, empty_panel, panel_get_type()) static void empty_panel_class_init(EmptyPanelClass* klass) { - GObjectClass* object_class = G_OBJECT_CLASS(klass); GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(klass); - PanelClass* panel_class = GINPUT_PANEL_CLASS(klass); gtk_widget_class_set_template_from_resource(widget_class, "/v/ginput/panel-empty.ui"); } diff --git a/src/ui/panels/mouse-panel.c b/src/ui/panels/mouse-panel.c index c5c3a19..201940c 100644 --- a/src/ui/panels/mouse-panel.c +++ b/src/ui/panels/mouse-panel.c @@ -5,8 +5,10 @@ struct _MousePanel Panel parent_instance; GtkImage* mouse_image; + GtkLabel* mouse_manufacturer; GtkLabel* mouse_name; AdwPreferencesGroup* dpi_preference_group; + AdwButtonContent* dpi_stage_add_button; }; G_DEFINE_TYPE (MousePanel, mouse_panel, panel_get_type()) @@ -14,15 +16,15 @@ G_DEFINE_TYPE (MousePanel, mouse_panel, panel_get_type()) static void mouse_panel_class_init(MousePanelClass* klass) { - GObjectClass* object_class = G_OBJECT_CLASS(klass); GtkWidgetClass* widget_class = GTK_WIDGET_CLASS(klass); - PanelClass* panel_class = GINPUT_PANEL_CLASS(klass); gtk_widget_class_set_template_from_resource(widget_class, "/v/ginput/panel-mouse.ui"); gtk_widget_class_bind_template_child(widget_class, MousePanel, mouse_image); + gtk_widget_class_bind_template_child(widget_class, MousePanel, mouse_manufacturer); gtk_widget_class_bind_template_child(widget_class, MousePanel, mouse_name); gtk_widget_class_bind_template_child(widget_class, MousePanel, dpi_preference_group); + gtk_widget_class_bind_template_child(widget_class, MousePanel, dpi_stage_add_button); } static void @@ -44,15 +46,26 @@ void mouse_panel_set_device(MousePanel* self, device_t* device) gtk_image_set_from_file(self->mouse_image, image); free(image); + // Set device manufacturer + char* (*getmanufacturer_fn)(void*) = dlsym(device_driver(device), "driver_get_manufacturer"); + gtk_label_set_label(self->mouse_manufacturer, getmanufacturer_fn(device_handle(device))); + // Set device name - gtk_label_set_label(self->mouse_name, device_get_name(device)); - + // TODO inner window title + char* device_name = device_get_name(device); + gtk_label_set_label(self->mouse_name, device_name); + // Set mouse dpi struct MOUSE_DPI_LEVELS dpi; int (*driver_mouse_dpi_get)(void*, void*) = dlsym(device_driver(device), "driver_mouse_dpi_get"); int dpi_res = driver_mouse_dpi_get(device_handle(device), &dpi); if(!dpi_res) { + // Set dpi used/max label in add button + char dpi_used_max[10]; + sprintf(dpi_used_max, "%u/%u", dpi.level_count, dpi.max_level_count); + adw_button_content_set_label(self->dpi_stage_add_button, dpi_used_max); + // Set dpi list for(size_t i = 0; i < dpi.level_count; i++) { diff --git a/ui/panel-mouse.ui b/ui/panel-mouse.ui index 5589c5c..b71e227 100644 --- a/ui/panel-mouse.ui +++ b/ui/panel-mouse.ui @@ -23,6 +23,15 @@ + + center @@ -57,6 +66,17 @@ start + + + + + list-add-symbolic + 1/1 + True + + + + 300 DPI Stages DPI Stages of the mouse