• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • superkaramba
 

superkaramba

imagelabel_python.cpp

00001 /****************************************************************************
00002 *  imagelabel_python.cpp  -  Imagelabel functions for python api
00003 *
00004 *  Copyright (C) 2003 Hans Karlsson <karlsson.h@home.se>
00005 *  Copyright (C) 2003-2004 Adam Geitgey <adam@rootnode.org>
00006 *  Copyright (c) 2004 Petri Damstén <damu@iki.fi>
00007 *
00008 *  This file is part of SuperKaramba.
00009 *
00010 *  SuperKaramba is free software; you can redistribute it and/or modify
00011 *  it under the terms of the GNU General Public License as published by
00012 *  the Free Software Foundation; either version 2 of the License, or
00013 *  (at your option) any later version.
00014 *
00015 *  SuperKaramba is distributed in the hope that it will be useful,
00016 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 *  GNU General Public License for more details.
00019 *
00020 *  You should have received a copy of the GNU General Public License
00021 *  along with SuperKaramba; if not, write to the Free Software
00022 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
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 "imagelabel.h"
00033 #include "meter_python.h"
00034 #include "imagelabel_python.h"
00035 #include "lineparser.h"
00036 
00037 ImageLabel* createImageLabel(karamba *theme, long x, long y,
00038                              char* path, bool bg)
00039 {
00040   TQString file;
00041   //TQString fakefile;
00042 
00043   /*tmp->setThemePath(theme->themePath);*/
00044   //FIXME: This is an ugly hack to ensure a unique reference
00045   //to add to the meterList.  It is a workaround for when a clickarea
00046   //is attached to an image, the image is deleted, and a new image is
00047   //created. A correct solution would be have dictionaries with a key/value
00048   //pair of ints->refs.
00049   ImageLabel *tmp2 = new ImageLabel(theme, x, y, 0, 0);
00050   ImageLabel *tmp = new ImageLabel(theme, x, y, 0, 0);
00051   delete tmp2;
00052   
00053   if(path)
00054   {
00055     file.setAscii(path);
00056     tmp->setValue(file);
00057     //tmp->parseImages(file, fakefile, x,y, 0, 0);
00058   }
00059   tmp->setBackground(bg);
00060   theme->setSensor(LineParser(file), tmp);
00061   theme->meterList->append (tmp);
00062   theme->imageList->append (tmp);
00063   if(bg)
00064     theme->kroot->repaint(true);
00065   return tmp;
00066 }
00067 
00068 PyObject* py_createImage(PyObject *, PyObject *args)
00069 {
00070   long widget, x, y;
00071   char *text;
00072   if (!PyArg_ParseTuple(args, (char*)"llls:createImage", &widget, &x, &y, &text))
00073     return NULL;
00074   if (!checkKaramba(widget))
00075     return NULL;
00076 
00077   ImageLabel *tmp = createImageLabel((karamba*)widget, x, y, text, 0);
00078   return (Py_BuildValue((char*)"l", (long)tmp));
00079 }
00080 
00081 PyObject* py_createBackgroundImage(PyObject *, PyObject *args)
00082 {
00083   long widget, x, y;
00084   char *text;
00085   if (!PyArg_ParseTuple(args, (char*)"llls:createBackgroundImage", &widget, &x, &y,
00086                         &text))
00087     return NULL;
00088   if (!checkKaramba(widget))
00089     return NULL;
00090   ImageLabel *tmp = createImageLabel((karamba*)widget, x, y, text, 1);
00091   return (Py_BuildValue((char*)"l", (long)tmp));
00092 }
00093 
00094 //Matthew Kay: new function for creating icons for tasks
00099 PyObject* py_createTaskIcon(PyObject *, PyObject *args)
00100 {
00101   long widget, x, y;
00102   long ctask;
00103   if (!PyArg_ParseTuple(args, (char*)"llll:createTaskIcon", &widget, &x, &y, &ctask))
00104     return NULL;
00105   if (!checkKaramba(widget))
00106     return NULL;
00107 
00108   //get the specified task and insure it exists
00109   TaskList taskList = ((karamba*)widget)->taskManager.tasks();
00110   Task* task = 0;
00111   Task* currTask = 0;
00112   for (task = taskList.first(); task; task = taskList.next())
00113   {
00114     if ((long)task == (long)ctask)
00115     {
00116       //task found
00117       currTask = task;
00118       break;
00119     }
00120   }
00121   if (currTask == 0)
00122   {
00123     //no task was found
00124     tqWarning("Task not found.");
00125     return NULL;
00126   }
00127   //retrieve the TQPixmap that represents this image
00128   TQPixmap iconPixmap = KWin::icon(currTask->window());
00129 
00130   ImageLabel *tmp = createImageLabel((karamba*)widget, x, y, 0, 0);
00131   tmp->setValue(iconPixmap);
00132   return (Py_BuildValue((char*)"l", (long)tmp));
00133 }
00134 
00135 PyObject* py_deleteImage(PyObject *, PyObject *args)
00136 {
00137   long widget, meter;
00138   if (!PyArg_ParseTuple(args, (char*)"ll:deleteImage", &widget, &meter))
00139     return NULL;
00140   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00141     return NULL;
00142 
00143   ((karamba*)widget)->deleteMeterFromSensors((Meter*)meter);
00144   ((karamba*)widget)->clickList->removeRef((Meter*)meter);
00145   ((karamba*)widget)->imageList->removeRef((Meter*)meter);
00146   return Py_BuildValue((char*)"l",
00147       ((karamba*)widget)->meterList->removeRef((Meter*)meter));
00148 }
00149 
00150 PyObject* py_getThemeImage(PyObject *self, PyObject *args)
00151 {
00152   return py_getThemeMeter(self, args, "ImageLabel");
00153 }
00154 
00155 PyObject* py_getImagePos(PyObject *self, PyObject *args)
00156 {
00157   return py_getPos(self, args, "ImageLabel");
00158 }
00159 
00160 PyObject* py_getImageSize(PyObject *self, PyObject *args)
00161 {
00162   return py_getSize(self, args, "ImageLabel");
00163 }
00164 
00165 PyObject* py_moveImage(PyObject *self, PyObject *args)
00166 {
00167   return py_move(self, args, "ImageLabel");
00168 }
00169 
00170 PyObject* py_hideImage(PyObject *self, PyObject *args)
00171 {
00172   return py_hide(self, args, "ImageLabel");
00173 }
00174 
00175 PyObject* py_showImage(PyObject *self, PyObject *args)
00176 {
00177   return py_show(self, args, "ImageLabel");
00178 }
00179 
00180 PyObject* py_getImageValue(PyObject *self, PyObject *args)
00181 {
00182   return py_getStringValue(self, args, "ImageLabel");
00183 }
00184 
00185 PyObject* py_setImageValue(PyObject *self, PyObject *args)
00186 {
00187   return py_setStringValue(self, args, "ImageLabel");
00188 }
00189 
00190 PyObject* py_getImageSensor(PyObject *self, PyObject *args)
00191 {
00192   return py_getSensor(self, args, "ImageLabel");
00193 }
00194 
00195 PyObject* py_setImageSensor(PyObject *self, PyObject *args)
00196 {
00197   return py_setSensor(self, args, "ImageLabel");
00198 }
00199 
00200 PyObject* py_removeImageEffects(PyObject *, PyObject *args)
00201 {
00202   long widget, meter;
00203   if (!PyArg_ParseTuple(args, (char*)"ll:removeImageEffects", &widget, &meter))
00204     return NULL;
00205   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00206     return NULL;
00207   ((ImageLabel*)meter)->removeEffects();
00208   return Py_BuildValue((char*)"l", 1);
00209 }
00210 
00211 PyObject* py_changeImageIntensity(PyObject *, PyObject *args)
00212 {
00213   long widget, meter;
00214   long millisec = 0;
00215   float ratio;
00216   if (!PyArg_ParseTuple(args, (char*)"llf|l:changeImageIntensity", &widget, &meter,
00217                         &ratio, &millisec))
00218     return NULL;
00219   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00220     return NULL;
00221   ((ImageLabel*)meter)->intensity(ratio, millisec);
00222   return Py_BuildValue((char*)"l", 1);
00223 }
00224 
00225 PyObject* py_changeImageChannelIntensity(PyObject *, PyObject *args)
00226 {
00227   long widget, meter;
00228   float ratio;
00229   char* channel;
00230   long millisec = 0;
00231   if (!PyArg_ParseTuple(args, (char*)"llfs|l:changeImageChannelIntensity", &widget,
00232                         &meter, &ratio, &channel, &millisec))
00233     return NULL;
00234   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00235     return NULL;
00236   ((ImageLabel*)meter)->channelIntensity(ratio, channel, millisec);
00237   return Py_BuildValue((char*)"l", 1);
00238 }
00239 
00240 PyObject* py_changeImageToGray(PyObject *, PyObject *args)
00241 {
00242   long widget, meter;
00243   long millisec = 0;
00244   if (!PyArg_ParseTuple(args, (char*)"ll|l:changeImageToGray", &widget, &meter,
00245                         &millisec))
00246     return NULL;
00247   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00248     return NULL;
00249   ((ImageLabel*)meter)->toGray(millisec);
00250   return Py_BuildValue((char*)"l", 1);
00251 }
00252 
00253 PyObject* py_removeImageTransformations(PyObject *, PyObject *args)
00254 {
00255   long widget, meter;
00256   if (!PyArg_ParseTuple(args, (char*)"ll:removeImageTransformations", &widget, &meter))
00257     return NULL;
00258   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00259     return NULL;
00260   ((ImageLabel*)meter)->removeImageTransformations();
00261   return Py_BuildValue((char*)"l", 1);
00262 }
00263 
00264 PyObject* py_rotateImage(PyObject *, PyObject *args)
00265 {
00266   long widget, meter;
00267   long deg;
00268   if (!PyArg_ParseTuple(args, (char*)"lll:rotateImage", &widget, &meter, &deg))
00269     return NULL;
00270   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00271     return NULL;
00272   ((ImageLabel*)meter)->rotate((int)deg);
00273   return Py_BuildValue((char*)"l", 1);
00274 }
00275 
00276 PyObject* py_getImageHeight(PyObject *, PyObject *args)
00277 {
00278   long widget, meter;
00279   if (!PyArg_ParseTuple(args, (char*)"ll:getImageHeight", &widget, &meter))
00280     return NULL;
00281   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00282     return NULL;
00283   return Py_BuildValue((char*)"l", ((ImageLabel*)meter)->getHeight());
00284 }
00285 
00286 PyObject* py_getImageWidth(PyObject *, PyObject *args)
00287 {
00288   long widget, meter;
00289   if (!PyArg_ParseTuple(args, (char*)"ll:getImageWidth", &widget, &meter))
00290     return NULL;
00291   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00292     return NULL;
00293   return Py_BuildValue((char*)"l", ((ImageLabel*)meter)->getWidth());
00294 }
00295 
00296 PyObject* py_resizeImageSmooth(PyObject *, PyObject *args)
00297 {
00298   long widget, meter;
00299   long w, h;
00300   if (!PyArg_ParseTuple(args, (char*)"llll:resizeImageSmooth", &widget, &meter,
00301                         &w, &h))
00302     return NULL;
00303   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00304     return NULL;
00305   ((ImageLabel*)meter)->smoothScale((int)w, (int)h);
00306   return Py_BuildValue((char*)"l", 1);
00307 }
00308 
00309 PyObject* py_resizeImage(PyObject *, PyObject *args)
00310 {
00311   long widget, meter, w, h;
00312   if (!PyArg_ParseTuple(args, (char*)"llll:resizeImage", &widget, &meter,
00313                         &w, &h))
00314     return NULL;
00315   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00316     return NULL;
00317   ((ImageLabel*)meter)->scale((int)w, (int)h);
00318   return Py_BuildValue((char*)"l", 1);
00319 }
00320 
00321 PyObject* py_addImageTooltip(PyObject *, PyObject *args)
00322 {
00323   long widget, meter;
00324   PyObject* t;
00325   if (!PyArg_ParseTuple(args, (char*)"llO:addImageTooltip", &widget, &meter, &t))
00326     return NULL;
00327   if (!checkKarambaAndMeter(widget, meter, "ImageLabel"))
00328     return NULL;
00329   ((ImageLabel*)meter)->setTooltip(PyString2TQString(t));
00330   return Py_BuildValue((char*)"l", 1);
00331 }

superkaramba

Skip menu "superkaramba"
  • Main Page
  • Alphabetical List
  • Class List
  • File List
  • Class Members

superkaramba

Skip menu "superkaramba"
  • kcalc
  •   knumber
  • superkaramba
Generated for superkaramba by doxygen 1.6.3
This website is maintained by Timothy Pearson.