From a215500011290121925cfe929d71b80696732230 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 18 Jan 2015 02:03:56 +0100 Subject: initial import --- mate-applet/mdock-mate-panel-applet.c | 100 ++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 mate-applet/mdock-mate-panel-applet.c (limited to 'mate-applet/mdock-mate-panel-applet.c') diff --git a/mate-applet/mdock-mate-panel-applet.c b/mate-applet/mdock-mate-panel-applet.c new file mode 100644 index 0000000..73b7920 --- /dev/null +++ b/mate-applet/mdock-mate-panel-applet.c @@ -0,0 +1,100 @@ +/* + * Copyright 2015 Javier S. Pedro + * + * This file is part of MDock. + * + * MDock is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MDock is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with MDock. If not, see . + */ + +#include "mdock-mate-panel-applet.h" + +#include +#include + +G_DEFINE_TYPE(MDockMatePanelApplet, mdock_mate_panel_applet, PANEL_TYPE_APPLET) + +static void display_preferences_dialog(GtkAction *action, MDockMatePanelApplet *self) +{ + // TODO +} + +static void display_about_dialog(GtkAction *action, MDockMatePanelApplet *self) +{ + GtkWindow *parent = NULL; + GtkWidget *parent_widget = gtk_widget_get_toplevel(GTK_WIDGET(self)); + if (GTK_IS_WINDOW(parent_widget)) { + parent = GTK_WINDOW(parent_widget); + } + + gtk_show_about_dialog(parent, + "program-name", "MDock Mate Panel Applet", + NULL); +} + +static const GtkActionEntry menu_verbs[] = { + { "MDockPreferences", GTK_STOCK_PROPERTIES, N_("_Preferences"), + NULL, NULL, + G_CALLBACK (display_preferences_dialog) }, + { "MDockAbout", GTK_STOCK_ABOUT, N_("_About"), + NULL, NULL, + G_CALLBACK (display_about_dialog) } +}; + +static void mdock_mate_panel_applet_size_allocate(GtkWidget *widget, GtkAllocation *allocation) +{ + MDockMatePanelApplet *self = MDOCK_MATE_PANEL_APPLET(widget); + if (self->dock) { + gtk_widget_size_allocate(GTK_WIDGET(self->dock), allocation); + } + GTK_WIDGET_CLASS(mdock_mate_panel_applet_parent_class)->size_allocate(widget, allocation); +} + +static void mdock_mate_panel_applet_size_request(GtkWidget *widget, GtkRequisition *requisition) +{ + MDockMatePanelApplet *self = MDOCK_MATE_PANEL_APPLET(widget); + if (self->dock) { + gtk_widget_size_request(GTK_WIDGET(self->dock), requisition); + } +} + +static void mdock_mate_panel_applet_class_init(MDockMatePanelAppletClass *klass) +{ + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); + widget_class->size_allocate = mdock_mate_panel_applet_size_allocate; + widget_class->size_request = mdock_mate_panel_applet_size_request; +} + +static void mdock_mate_panel_applet_init(MDockMatePanelApplet *self) +{ + self->dock = MDOCK_WIDGET(mdock_widget_new()); + gtk_container_add(GTK_CONTAINER(self), GTK_WIDGET(self->dock)); + + GtkActionGroup *action_group = gtk_action_group_new("MDock Mate Panel Applet Actions"); + gtk_action_group_add_actions(action_group, + menu_verbs, G_N_ELEMENTS(menu_verbs), self); + + mate_panel_applet_set_flags(MATE_PANEL_APPLET(self), + MATE_PANEL_APPLET_EXPAND_MINOR); + mate_panel_applet_setup_menu(MATE_PANEL_APPLET(self), + "" + "", + action_group); + + g_object_unref(action_group); +} + +MatePanelApplet *mdock_mate_panel_applet_new(void) +{ + return MATE_PANEL_APPLET(g_object_new(MDOCK_TYPE_MATE_PANEL_APPLET, NULL)); +} -- cgit v1.2.3