From 3eaeebc60e9045a99aeac9616ccf25be6ec28370 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Tue, 26 Jun 2007 12:55:16 +0000 Subject: Lots of palette refactoring. --- (limited to 'lib') diff --git a/lib/Makefile.am b/lib/Makefile.am index 2ade166..445307e 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -17,6 +17,8 @@ libsugar_la_SOURCES = \ sugar-address-entry.h \ sugar-key-grabber.c \ sugar-key-grabber.h \ + sugar-menu.h \ + sugar-menu.c \ sugar-x11-util.c \ sugar-x11-util.h diff --git a/lib/sugar-menu.c b/lib/sugar-menu.c new file mode 100644 index 0000000..822b4a7 --- /dev/null +++ b/lib/sugar-menu.c @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2006-2007, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "sugar-menu.h" + +static void sugar_menu_class_init (SugarMenuClass *menu_class); +static void sugar_menu_init (SugarMenu *menu); + + +G_DEFINE_TYPE(SugarMenu, sugar_menu, GTK_TYPE_MENU) + +static void +sugar_menu_class_init(SugarMenuClass *menu_class) +{ +} + +static void +sugar_menu_init(SugarMenu *menu) +{ +} + +void +sugar_menu_popup(SugarMenu *menu, + int x, + int y) +{ + GtkWidget *window; + + window = GTK_WIDGET(menu)->parent; + g_return_if_fail(window != NULL); + + GTK_MENU_SHELL(menu)->active = TRUE; + + gtk_widget_show(GTK_WIDGET(menu)); + + gtk_window_move(GTK_WINDOW(window), x, y); + gtk_widget_show(window); +} + +void +sugar_menu_popdown(SugarMenu *menu) +{ + GtkWidget *window; + + window = GTK_WIDGET(menu)->parent; + g_return_if_fail(window != NULL); + + GTK_MENU_SHELL(menu)->active = FALSE; + + gtk_widget_hide(GTK_WIDGET(menu)); + gtk_widget_hide(window); +} + diff --git a/lib/sugar-menu.h b/lib/sugar-menu.h new file mode 100644 index 0000000..a9c3f67 --- /dev/null +++ b/lib/sugar-menu.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2006-2007, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __SUGAR_MENU_H__ +#define __SUGAR_MENU_H__ + +#include + +G_BEGIN_DECLS + +typedef struct _SugarMenu SugarMenu; +typedef struct _SugarMenuClass SugarMenuClass; + +#define SUGAR_TYPE_MENU (sugar_menu_get_type()) +#define SUGAR_MENU(object) (G_TYPE_CHECK_INSTANCE_CAST((object), SUGAR_TYPE_MENU, SugarMenu)) +#define SUGAR_MENU_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), SUGAR_TYPE_MENU, SugarMenuClass)) +#define SUGAR_IS_MENU(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), SUGAR_TYPE_MENU)) +#define SUGAR_IS_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SUGAR_TYPE_MENU)) +#define SUGAR_MENU_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), SUGAR_TYPE_MENU, SugarMenuClass)) + +struct _SugarMenu { + GtkMenu base_instance; +}; + +struct _SugarMenuClass { + GtkMenuClass base_class; +}; + +GType sugar_menu_get_type (void); +void sugar_menu_popup (SugarMenu *menu, + int x, + int y); +void sugar_menu_popdown (SugarMenu *menu); + +G_END_DECLS + +#endif /* __SUGAR_MENU_H__ */ -- cgit v0.9.1