Disabled, because it makes the nightly builds fail quite often and it's already
[AROS-Contrib.git] / mui / gtk-mui / classes / menu.c
blobe49a1ec49b341336a1a8d558e2f7d2f20dae18b2
1 /*****************************************************************************
2 *
3 * mui-gtk - a wrapper library to wrap GTK+ calls to MUI
5 * Copyright (C) 2005 Oliver Brunner
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 * Contact information:
23 * Oliver Brunner
25 * E-Mail: mui-gtk "at" oliver-brunner.de
27 * $Id$
29 *****************************************************************************/
31 #include <stdlib.h>
32 #include <proto/utility.h>
33 #include <mui.h>
35 #include "debug.h"
36 #include "classes.h"
37 #include "gtk_globals.h"
39 struct Data
41 GtkWidget *widget;
45 /*******************************************
46 * MUIHook_menu
47 *******************************************/
48 HOOKPROTO(MUIHook_menu, ULONG, MGTK_HOOK_OBJECT_POINTER obj, MGTK_HOOK_APTR hookpointer)
50 MGTK_USERFUNC_INIT
51 GtkWidget *widget;
53 DebOut("MUIHook_menu(%x) called\n", (int) obj);
54 widget=mgtk_get_widget_from_obj(obj);
56 g_signal_emit_by_name(widget,"activate",0);
58 return 0;
59 MGTK_USERFUNC_EXIT
61 MakeHook(MyMuiHook_menu, MUIHook_menu);
63 /*******************************************
64 * mNew
66 * requires MA_Widget!
67 *******************************************/
68 static ULONG mNew(struct IClass *cl, APTR obj, Msg msg)
70 GtkWidget *widget;
71 struct TagItem *tstate, *tag;
73 DebOut("mNew (menu)\n");
75 obj = (APTR)DoSuperMethodA(cl, obj, msg);
77 if(!obj) {
78 ErrOut("menu: unable to create object!");
79 return (ULONG) NULL;
82 DebOut(" new obj=%lx\n",obj);
84 tstate=((struct opSet *)msg)->ops_AttrList;
86 widget=NULL;
87 while ((tag = (struct TagItem *) NextTagItem(&tstate)))
89 switch (tag->ti_Tag)
91 case MA_Widget:
92 widget = (GtkWidget *) tag->ti_Data;
93 break;
97 if(!widget) {
98 ErrOut("classes/menu.c: mNew: MA_Widget not supplied!\n");
99 return (ULONG) NULL;
102 DebOut(" widget=%d\n",widget);
104 /* setup internal hooks */
105 DoMethod(obj,MUIM_Notify,MUIA_Menuitem_Trigger,MUIV_EveryTime, obj,2,MUIM_CallHook,&MyMuiHook_menu);
107 if (obj)
109 GETDATA;
111 data->widget=widget;
114 return (ULONG)obj;
117 /*******************************************
118 * mSet
120 *******************************************/
121 static VOID mSet(struct Data *data, APTR obj, struct opSet *msg) {
122 DebOut("mSet(%lx,%lx,%lx)\n",data,obj,msg);
123 #if 0
124 struct TagItem *tstate, *tag;
125 GtkWidget *widget;
127 tstate = msg->ops_AttrList;
129 while ((tag = (struct TagItem *) NextTagItem(&tstate)))
131 switch (tag->ti_Tag)
135 #endif
138 /*******************************************
139 * mGet
141 * MA_Widget: GtkWidget
142 *******************************************/
143 static ULONG mGet(struct Data *data, APTR obj, struct opGet *msg, struct IClass *cl)
145 ULONG rc;
147 switch (msg->opg_AttrID) {
148 case MA_Widget :
149 DebOut("mGet: data->widget=%x\n",(int) data->widget);
150 rc = (ULONG) data->widget;
151 break;
152 default: return DoSuperMethodA(cl, obj, (Msg)msg);
155 *msg->opg_Storage = rc;
156 return TRUE;
159 /*******************************************
160 * Dispatcher
161 *******************************************/
162 BEGINMTABLE
163 GETDATA;
165 switch (msg->MethodID)
167 case OM_NEW : return mNew (cl, obj, msg);
168 case OM_SET : mSet (data, obj, (APTR)msg); break;
169 case OM_GET : return mGet (data, obj, (APTR)msg, cl);
172 ENDMTABLE
174 /*******************************************
175 * Custom class create/delete
176 *******************************************/
177 int mgtk_create_menu_class(void)
179 DebOut("mgtk_create_menu_class()\n");
181 CL_Menu = MUI_CreateCustomClass(NULL, MUIC_Menuitem, NULL, sizeof(struct Data), (APTR)&mDispatcher);
183 DebOut("CL_Menu=%lx\n",CL_Menu);
185 return CL_Menu ? 1 : 0;
188 void mgtk_delete_menu_class(void)
190 if (CL_Menu)
192 MUI_DeleteCustomClass(CL_Menu);