00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifdef _XOPEN_SOURCE
00026 #undef _XOPEN_SOURCE
00027 #endif
00028
00029 #include <Python.h>
00030 #include <tqobject.h>
00031 #include "karamba.h"
00032 #include "meter.h"
00033 #include "meter_python.h"
00034 #include "menu_python.h"
00035
00036 long createMenu(long widget)
00037 {
00038 karamba* currTheme = (karamba*)widget;
00039
00040 KPopupMenu* tmp = new KPopupMenu(currTheme);
00041 currTheme->menuList->append( TQT_TQOBJECT(tmp) );
00042
00043 currTheme->connect(tmp, TQT_SIGNAL(activated(int)), currTheme,
00044 TQT_SLOT(passMenuItemClicked(int)));
00045
00046 return (long)tmp;
00047 }
00048
00049 PyObject* py_create_menu(PyObject *, PyObject *args)
00050 {
00051 long widget;
00052 if (!PyArg_ParseTuple(args, (char*)"l:createMenu", &widget))
00053 return NULL;
00054 return Py_BuildValue((char*)"l", createMenu(widget));
00055 }
00056
00057 bool menuExists(karamba* currTheme, KPopupMenu* menu)
00058 {
00059 bool foundMenu = false;
00060 KPopupMenu* tmp;
00061
00062 for(int i = 0; i < (int)currTheme->menuList->count(); i++)
00063 {
00064 if(i==0)
00065 {
00066 tmp = (KPopupMenu*) currTheme->menuList->first();
00067 }
00068 else
00069 {
00070 tmp = (KPopupMenu*) currTheme->menuList->next();
00071 }
00072 if(tmp != 0)
00073 {
00074 if(tmp == menu)
00075 {
00076 foundMenu = true;
00077 break;
00078 }
00079 }
00080 }
00081 return foundMenu;
00082 }
00083
00084 long deleteMenu(long widget, long menu)
00085 {
00086 karamba* currTheme = (karamba*)widget;
00087 KPopupMenu* tmp = (KPopupMenu*)menu;
00088
00089 currTheme->menuList->removeRef(TQT_TQOBJECT(tmp));
00090
00091 return 1;
00092 }
00093
00094 PyObject* py_delete_menu(PyObject *, PyObject *args)
00095 {
00096 long widget, menu;
00097 if (!PyArg_ParseTuple(args, (char*)"ll:deleteMenu", &widget, &menu))
00098 return NULL;
00099 return Py_BuildValue((char*)"l", deleteMenu(widget, menu));
00100 }
00101
00102 long addMenuItem(long widget, long menu, TQString text, TQString icon)
00103 {
00104 karamba* currTheme = (karamba*)widget;
00105 KPopupMenu* tmp = (KPopupMenu*)menu;
00106
00107 long id = 0;
00108 if(menuExists(currTheme, tmp))
00109 {
00110 id = tmp->insertItem(SmallIconSet(icon), text);
00111 }
00112 return id;
00113 }
00114
00115 PyObject* py_add_menu_item(PyObject *, PyObject *args)
00116 {
00117 long widget, menu;
00118 char* i;
00119 PyObject* t;
00120 if (!PyArg_ParseTuple(args, (char*)"llOs:addMenuItem", &widget, &menu, &t, &i))
00121 return NULL;
00122 TQString icon;
00123 TQString text;
00124 icon.setAscii(i);
00125 text = PyString2TQString(t);
00126 return Py_BuildValue((char*)"l", addMenuItem(widget, menu, text, icon));
00127 }
00128
00129 long addMenuSeparator(long widget, long menu)
00130 {
00131 karamba* currTheme = (karamba*)widget;
00132 KPopupMenu* tmp = (KPopupMenu*)menu;
00133
00134 long id = 0;
00135 if(menuExists(currTheme, tmp))
00136 {
00137 id = tmp->insertSeparator();
00138 }
00139
00140 return id;
00141 }
00142
00143 PyObject* py_add_menu_separator(PyObject *, PyObject *args)
00144 {
00145 long widget, menu;
00146
00147 if (!PyArg_ParseTuple(args, (char*)"ll:addMenuSeparator", &widget, &menu))
00148 return NULL;
00149
00150 return Py_BuildValue((char*)"l", addMenuSeparator(widget, menu));
00151 }
00152
00153 long removeMenuItem(long widget, long menu, long id)
00154 {
00155 karamba* currTheme = (karamba*)widget;
00156 KPopupMenu* tmp = (KPopupMenu*)menu;
00157
00158 if(menuExists(currTheme,tmp))
00159 {
00160 tmp->removeItem(id);
00161 return 1;
00162 }
00163 else
00164 {
00165 return 0;
00166 }
00167 }
00168
00169 PyObject* py_remove_menu_item(PyObject *, PyObject *args)
00170 {
00171 long widget, menu, id;
00172 if (!PyArg_ParseTuple(args, (char*)"lll:removeMenuItem", &widget, &menu, &id))
00173 return NULL;
00174 return Py_BuildValue((char*)"l", removeMenuItem(widget, menu, id));
00175 }
00176
00177 long popupMenu(long widget, long menu, long x, long y)
00178 {
00179 karamba* currTheme = (karamba*)widget;
00180 KPopupMenu* tmp = (KPopupMenu*)menu;
00181
00182 if(menuExists(currTheme,tmp))
00183 {
00184 tmp->popup(currTheme->mapToGlobal( TQPoint(x,y) ));
00185 return 1;
00186 }
00187 else
00188 {
00189 return 0;
00190 }
00191 }
00192
00193 PyObject* py_popup_menu(PyObject *, PyObject *args)
00194 {
00195 long widget, menu, x, y;
00196 if (!PyArg_ParseTuple(args, (char*)"llll:popupMenu", &widget, &menu, &x, &y))
00197 return NULL;
00198 return Py_BuildValue((char*)"l", popupMenu(widget, menu, x, y));
00199 }
00200