Unifiying the plugin API

This commit is contained in:
Pierre Pronchery 2011-05-29 01:21:41 +00:00
parent 98c2a38df3
commit 176b0599f3
5 changed files with 37 additions and 26 deletions

View File

@ -39,8 +39,8 @@ typedef struct _PanelAppletHelper
void (*about_dialog)(Panel * panel); void (*about_dialog)(Panel * panel);
int (*lock)(Panel * panel); int (*lock)(Panel * panel);
void (*logout_dialog)(Panel * panel); void (*logout_dialog)(Panel * panel);
void (*position_menu)(GtkMenu * menu, gint * x, gint * y, void (*position_menu)(Panel * panel, GtkMenu * menu, gint * x, gint * y,
gboolean * push_in, gpointer data); gboolean * push_in);
void (*preferences_dialog)(Panel * panel); void (*preferences_dialog)(Panel * panel);
void (*shutdown_dialog)(Panel * panel); void (*shutdown_dialog)(Panel * panel);
int (*suspend)(Panel * panel); int (*suspend)(Panel * panel);

View File

@ -1,5 +1,5 @@
/* $Id$ */ /* $Id$ */
/* Copyright (c) 2010 Pierre Pronchery <khorben@defora.org> */ /* Copyright (c) 2011 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Panel */ /* This file is part of DeforaOS Desktop Panel */
/* This program is free software: you can redistribute it and/or modify /* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -227,8 +227,8 @@ static void _on_keyboard_toggled(GtkWidget * widget, gpointer data)
_init_idle(keyboard); _init_idle(keyboard);
if(keyboard->window == NULL) if(keyboard->window == NULL)
return; return;
keyboard->helper->position_menu((GtkMenu*)keyboard->window, &x, &y, keyboard->helper->position_menu(keyboard->helper->panel,
&push_in, keyboard->helper->panel); (GtkMenu*)keyboard->window, &x, &y, &push_in);
gtk_window_move(GTK_WINDOW(keyboard->window), x, y); gtk_window_move(GTK_WINDOW(keyboard->window), x, y);
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
gtk_widget_show(keyboard->window); gtk_widget_show(keyboard->window);

View File

@ -288,6 +288,9 @@ static void _on_about(gpointer data)
/* on_clicked */ /* on_clicked */
static void _clicked_position_menu(GtkMenu * menu, gint * x, gint * y,
gboolean * push_in, gpointer data);
static void _on_clicked(gpointer data) static void _on_clicked(gpointer data)
{ {
Main * main = data; Main * main = data;
@ -336,8 +339,16 @@ static void _on_clicked(gpointer data)
_on_shutdown), data); _on_shutdown), data);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
gtk_widget_show_all(menu); gtk_widget_show_all(menu);
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, main->helper->position_menu, gtk_menu_popup(GTK_MENU(menu), NULL, NULL, _clicked_position_menu,
main->helper->panel, 0, gtk_get_current_event_time()); main, 0, gtk_get_current_event_time());
}
static void _clicked_position_menu(GtkMenu * menu, gint * x, gint * y,
gboolean * push_in, gpointer data)
{
Main * main = data;
main->helper->position_menu(main->helper->panel, menu, x, y, push_in);
} }

View File

@ -55,6 +55,8 @@ typedef struct _PanelPrefs
# define PANEL_CLIENT_MESSAGE "DEFORAOS_DESKTOP_PANEL_CLIENT" # define PANEL_CLIENT_MESSAGE "DEFORAOS_DESKTOP_PANEL_CLIENT"
# define PANEL_CONFIG_FILE ".panel"
# define PANEL_ICON_SIZE_DEFAULT "panel-large" # define PANEL_ICON_SIZE_DEFAULT "panel-large"
# define PANEL_ICON_SIZE_UNSET NULL # define PANEL_ICON_SIZE_UNSET NULL
# define PANEL_ICON_SIZE_SMALL "panel-small" # define PANEL_ICON_SIZE_SMALL "panel-small"

View File

@ -81,8 +81,6 @@ struct _Panel
/* constants */ /* constants */
#define PANEL_CONFIG_FILE ".panel"
static char const * _authors[] = static char const * _authors[] =
{ {
"Pierre Pronchery <khorben@defora.org>", "Pierre Pronchery <khorben@defora.org>",
@ -122,12 +120,12 @@ static int _panel_helper_lock(Panel * panel);
#ifndef EMBEDDED #ifndef EMBEDDED
static void _panel_helper_logout_dialog(Panel * panel); static void _panel_helper_logout_dialog(Panel * panel);
#endif #endif
static void _panel_helper_position_menu(GtkMenu * menu, gint * x, gint * y, static void _panel_helper_position_menu(Panel * panel, GtkMenu * menu, gint * x,
gboolean * push_in, PanelPosition position, gpointer data); gint * y, gboolean * push_in, PanelPosition position);
static void _panel_helper_position_menu_bottom(GtkMenu * menu, gint * x, static void _panel_helper_position_menu_bottom(Panel * panel, GtkMenu * menu,
gint * y, gboolean * push_in, gpointer data); gint * x, gint * y, gboolean * push_in);
static void _panel_helper_position_menu_top(GtkMenu * menu, gint * x, gint * y, static void _panel_helper_position_menu_top(Panel * panel, GtkMenu * menu,
gboolean * push_in, gpointer data); gint * x, gint * y, gboolean * push_in);
static void _panel_helper_preferences_dialog(Panel * panel); static void _panel_helper_preferences_dialog(Panel * panel);
static void _panel_helper_shutdown_dialog(Panel * panel); static void _panel_helper_shutdown_dialog(Panel * panel);
static int _panel_helper_suspend(Panel * panel); static int _panel_helper_suspend(Panel * panel);
@ -684,6 +682,7 @@ static void _preferences_on_ok(gpointer data)
/* private */ /* private */
/* functions */ /* functions */
/* config_get_filename */
static char * _config_get_filename(void) static char * _config_get_filename(void)
{ {
char const * homedir; char const * homedir;
@ -866,10 +865,9 @@ static void _logout_dialog_on_response(GtkWidget * widget, gint response)
/* panel_helper_position_menu */ /* panel_helper_position_menu */
static void _panel_helper_position_menu(GtkMenu * menu, gint * x, gint * y, static void _panel_helper_position_menu(Panel * panel, GtkMenu * menu, gint * x,
gboolean * push_in, PanelPosition position, gpointer data) gint * y, gboolean * push_in, PanelPosition position)
{ {
Panel * panel = data;
GtkRequisition req; GtkRequisition req;
gtk_widget_size_request(GTK_WIDGET(menu), &req); gtk_widget_size_request(GTK_WIDGET(menu), &req);
@ -893,20 +891,20 @@ static void _panel_helper_position_menu(GtkMenu * menu, gint * x, gint * y,
/* panel_helper_position_menu_bottom */ /* panel_helper_position_menu_bottom */
static void _panel_helper_position_menu_bottom(GtkMenu * menu, gint * x, static void _panel_helper_position_menu_bottom(Panel * panel, GtkMenu * menu,
gint * y, gboolean * push_in, gpointer data) gint * x, gint * y, gboolean * push_in)
{ {
_panel_helper_position_menu(menu, x, y, push_in, PANEL_POSITION_BOTTOM, _panel_helper_position_menu(panel, menu, x, y, push_in,
data); PANEL_POSITION_BOTTOM);
} }
/* panel_helper_position_menu_top */ /* panel_helper_position_menu_top */
static void _panel_helper_position_menu_top(GtkMenu * menu, gint * x, gint * y, static void _panel_helper_position_menu_top(Panel * panel, GtkMenu * menu,
gboolean * push_in, gpointer data) gint * x, gint * y, gboolean * push_in)
{ {
_panel_helper_position_menu(menu, x, y, push_in, PANEL_POSITION_TOP, _panel_helper_position_menu(panel, menu, x, y, push_in,
data); PANEL_POSITION_TOP);
} }