diff --git a/drivers/g-wolves/htx/htx_0.png b/drivers/g-wolves/htx/htx_0.png new file mode 100644 index 0000000..523ef8c Binary files /dev/null and b/drivers/g-wolves/htx/htx_0.png differ diff --git a/src/device/device.c b/src/device/device.c new file mode 100644 index 0000000..4b73647 --- /dev/null +++ b/src/device/device.c @@ -0,0 +1,16 @@ +#include "device.h" + +struct DEVICE +{ + +}; + +char* device_get_image(device_t* device) +{ + return "/home/valentin/Documents/prjs/ginput/drivers/g-wolves/htx/htx_0.png"; +} + +char* device_get_name(device_t* device) +{ + return "G-Wolves HTX 4K"; +} diff --git a/src/device/device.h b/src/device/device.h new file mode 100644 index 0000000..d1ab28c --- /dev/null +++ b/src/device/device.h @@ -0,0 +1,9 @@ +#ifndef DEVICE_H +#define DEVICE_H + +typedef struct DEVICE device_t; + +char* device_get_image(device_t* device); +char* device_get_name(device_t* device); + +#endif \ No newline at end of file diff --git a/src/ui/panels/mouse-panel.c b/src/ui/panels/mouse-panel.c new file mode 100644 index 0000000..e54e9f9 --- /dev/null +++ b/src/ui/panels/mouse-panel.c @@ -0,0 +1,42 @@ +#include "mouse-panel.h" + +struct _MousePanel +{ + Panel parent_instance; + + GtkImage* mouse_image; + GtkLabel* mouse_name; +}; + +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_name); +} + +static void +mouse_panel_init(MousePanel* self) +{ + gtk_widget_init_template(GTK_WIDGET(self)); +} + +Panel* +mouse_panel_new(void) +{ + return g_object_new(mouse_panel_get_type(), NULL); +} + +void mouse_panel_set_device(MousePanel* self, device_t* device) +{ + gtk_image_set_from_file(self->mouse_image, device_get_image(device)); + gtk_label_set_label(self->mouse_name, device_get_name(device)); +} diff --git a/src/ui/panels/mouse-panel.h b/src/ui/panels/mouse-panel.h new file mode 100644 index 0000000..8ab0ec1 --- /dev/null +++ b/src/ui/panels/mouse-panel.h @@ -0,0 +1,15 @@ +#pragma once + +#include "ui/panel.h" +#include "device/device.h" + +G_BEGIN_DECLS + +G_DECLARE_FINAL_TYPE(MousePanel, mouse_panel, GINPUT, MOUSE_PANEL, Panel) + +G_END_DECLS + +Panel* mouse_panel_new(void); + +void mouse_panel_set_device(MousePanel* self, device_t* device); + diff --git a/ui/ginput.cmb b/ui/ginput.cmb index 682a4cc..3219afa 100644 --- a/ui/ginput.cmb +++ b/ui/ginput.cmb @@ -28,7 +28,10 @@ (2,16,"AdwWindowTitle","title",15,None,None,None,None,None), (3,1,"Panel","EmptyPanel",None,None,None,None,None,"\n"), (3,2,"GtkLabel",None,1,None,None,None,None,None), - (4,1,"Panel","MousePanel",None,None,None,None,None,"") + (4,1,"Panel","MousePanel",None,None,None,None,None,""), + (4,5,"GtkBox",None,1,None,None,None,1,None), + (4,6,"GtkImage","mouse_image",5,None,None,None,None,None), + (4,7,"GtkLabel","mouse_name",5,None,None,None,1,None) (1,1,"GtkWindow","default-height","980",None,None,None,None,None,None,None,None,None), @@ -62,7 +65,17 @@ (2,15,"AdwHeaderBar","show-start-title-buttons","False",None,None,None,None,None,None,None,None,None), (2,15,"AdwHeaderBar","title-widget",None,None,None,None,None,16,None,None,None,None), (3,2,"GtkLabel","justify","center",None,None,None,None,None,None,None,None,None), - (3,2,"GtkLabel","label","There is nothing here...\nPerhaps you don't have the needed drivers installed and active ?",None,None,None,None,None,None,None,None,None) + (3,2,"GtkLabel","label","There is nothing here...\nPerhaps you don't have the needed drivers installed and active ?",None,None,None,None,None,None,None,None,None), + (4,5,"GtkBox","spacing","10",None,None,None,None,None,None,None,None,None), + (4,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (4,5,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), + (4,6,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), + (4,6,"GtkWidget","height-request","250",None,None,None,None,None,None,None,None,None), + (4,6,"GtkWidget","margin-top","30",None,None,None,None,None,None,None,None,None), + (4,6,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), + (4,6,"GtkWidget","width-request","300",None,None,None,None,None,None,None,None,None), + (4,7,"GtkLabel","justify","center",None,None,None,None,None,None,None,None,None), + (4,7,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None) (1,6,"GtkWidget",1,1,None,None,None,None,None,None), @@ -70,7 +83,13 @@ (1,10,"GtkWidget",2,2,None,1,None,None,None,None), (1,8,"GtkWidget",1,1,None,None,None,None,None,None), (1,8,"GtkWidget",2,2,None,1,None,None,None,None), - (1,6,"GtkWidget",2,2,None,1,None,None,None,None) + (1,6,"GtkWidget",2,2,None,1,None,None,None,None), + (4,1,"GtkWidget",2,2,None,1,None,None,None,None), + (4,1,"GtkWidget",2,3,None,1,None,None,None,None), + (4,1,"GtkWidget",2,4,None,1,None,None,None,None), + (4,1,"GtkWidget",2,5,None,1,None,None,None,None), + (4,1,"GtkWidget",2,6,None,1,None,None,None,None), + (4,6,"GtkWidget",1,1,None,None,None,None,None,None) (1,10,"GtkWidget",2,2,"name","background"), diff --git a/ui/ginput.gresource.xml b/ui/ginput.gresource.xml index 0e487a6..78a4556 100644 --- a/ui/ginput.gresource.xml +++ b/ui/ginput.gresource.xml @@ -4,6 +4,7 @@ main-window.ui panel.ui panel-empty.ui + panel-mouse.ui style.css