From 1af3d14f3f995645a0de08a54b244c19840709e9 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 19 Jun 2025 23:17:58 +0200 Subject: init hs project --- src/widgets/panel/panel-item.c | 195 ----------------------------------------- 1 file changed, 195 deletions(-) delete mode 100644 src/widgets/panel/panel-item.c (limited to 'src/widgets/panel/panel-item.c') diff --git a/src/widgets/panel/panel-item.c b/src/widgets/panel/panel-item.c deleted file mode 100644 index 918d9f5..0000000 --- a/src/widgets/panel/panel-item.c +++ /dev/null @@ -1,195 +0,0 @@ -#include "widgets/panel/panel-item.h" -#include "application.h" - -// -// FoobarPanelItem: -// -// Base class for all panel items. This is basically a bin layout where the subclass usually sets the child widget. -// - -typedef struct _FoobarPanelItemPrivate -{ - GtkWidget* child; -} FoobarPanelItemPrivate; - -enum -{ - PROP_CHILD = 1, - N_PROPS, -}; - -static GParamSpec* props[N_PROPS] = { 0 }; - -static void foobar_panel_item_class_init ( FoobarPanelItemClass* klass ); -static void foobar_panel_item_init ( FoobarPanelItem* self ); -static void foobar_panel_item_get_property( GObject* object, - guint prop_id, - GValue* value, - GParamSpec* pspec ); -static void foobar_panel_item_set_property( GObject* object, - guint prop_id, - GValue const* value, - GParamSpec* pspec ); -static void foobar_panel_item_dispose ( GObject* object ); - -G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE( FoobarPanelItem, foobar_panel_item, GTK_TYPE_WIDGET ) - -// --------------------------------------------------------------------------------------------------------------------- -// Widget Implementation -// --------------------------------------------------------------------------------------------------------------------- - -// -// Static initialization for panel items. -// -void foobar_panel_item_class_init( FoobarPanelItemClass* klass ) -{ - GtkWidgetClass* widget_klass = GTK_WIDGET_CLASS( klass ); - gtk_widget_class_set_css_name( widget_klass, "panel-item" ); - gtk_widget_class_set_layout_manager_type( widget_klass, GTK_TYPE_BIN_LAYOUT ); - - GObjectClass* object_klass = G_OBJECT_CLASS( klass ); - object_klass->get_property = foobar_panel_item_get_property; - object_klass->set_property = foobar_panel_item_set_property; - object_klass->dispose = foobar_panel_item_dispose; - - props[PROP_CHILD] = g_param_spec_object( - "child", - "Child", - "Child widget for the panel item.", - GTK_TYPE_WIDGET, - G_PARAM_READWRITE ); - g_object_class_install_properties( object_klass, N_PROPS, props ); -} - -// -// Instance initialization for panel items. -// -void foobar_panel_item_init( FoobarPanelItem* self ) -{ - (void)self; -} - -// -// Property getter implementation, mapping a property id to a method. -// -void foobar_panel_item_get_property( - GObject* object, - guint prop_id, - GValue* value, - GParamSpec* pspec ) -{ - FoobarPanelItem* self = (FoobarPanelItem*)object; - - switch ( prop_id ) - { - case PROP_CHILD: - g_value_set_object( value, foobar_panel_item_get_child( self ) ); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID( object, prop_id, pspec ); - break; - } -} - -// -// Property setter implementation, mapping a property id to a method. -// -void foobar_panel_item_set_property( - GObject* object, - guint prop_id, - GValue const* value, - GParamSpec* pspec ) -{ - FoobarPanelItem* self = (FoobarPanelItem*)object; - - switch ( prop_id ) - { - case PROP_CHILD: - foobar_panel_item_set_child( self, g_value_get_object( value ) ); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID( object, prop_id, pspec ); - break; - } -} - -// -// Instance de-initialization for panel items. -// -void foobar_panel_item_dispose( GObject* object ) -{ - FoobarPanelItem* self = (FoobarPanelItem*)object; - FoobarPanelItemPrivate* priv = foobar_panel_item_get_instance_private( self ); - - g_clear_pointer( &priv->child, gtk_widget_unparent ); - - G_OBJECT_CLASS( foobar_panel_item_parent_class )->dispose( object ); -} - -// --------------------------------------------------------------------------------------------------------------------- -// Public API -// --------------------------------------------------------------------------------------------------------------------- - -// -// Get the child widget for the panel item. -// -GtkWidget* foobar_panel_item_get_child( FoobarPanelItem* self ) -{ - g_return_val_if_fail( FOOBAR_IS_PANEL_ITEM( self ), NULL ); - FoobarPanelItemPrivate* priv = foobar_panel_item_get_instance_private( self ); - - return priv->child; -} - -// -// Update the child widget for the panel item. -// -void foobar_panel_item_set_child( - FoobarPanelItem* self, - GtkWidget* child ) -{ - g_return_if_fail( FOOBAR_IS_PANEL_ITEM( self ) ); - FoobarPanelItemPrivate* priv = foobar_panel_item_get_instance_private( self ); - g_return_if_fail( child == NULL || priv->child == child || gtk_widget_get_parent( child ) == NULL ); - - if ( priv->child != child ) - { - g_clear_pointer( &priv->child, gtk_widget_unparent ); - - if ( child ) - { - priv->child = child; - gtk_widget_set_parent( child, GTK_WIDGET( self ) ); - } - - g_object_notify_by_pspec( G_OBJECT( self ), props[PROP_CHILD] ); - } -} - -// -// Invoke the action for the panel item. -// -// This needs to be triggered by a subclass, for example by adding a button to the item. Support for panel item actions -// is opt-in and subclasses have to explicitly implement it. This is just a helper for implementing the action. -// -void foobar_panel_item_invoke_action( - FoobarPanelItem* self, - FoobarPanelItemAction action ) -{ - g_return_if_fail( FOOBAR_IS_PANEL_ITEM( self ) ); - - switch ( action ) - { - case FOOBAR_PANEL_ITEM_ACTION_NONE: - break; - case FOOBAR_PANEL_ITEM_ACTION_LAUNCHER: - foobar_application_toggle_launcher( FOOBAR_APPLICATION_DEFAULT ); - break; - case FOOBAR_PANEL_ITEM_ACTION_CONTROL_CENTER: - foobar_application_toggle_control_center( FOOBAR_APPLICATION_DEFAULT ); - break; - default: - g_warn_if_reached( ); - break; - } -} -- cgit v1.3.1