[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r6188 - trunk/gnue-forms/src/uidrivers/gtk2/widgets
From: |
johannes |
Subject: |
r6188 - trunk/gnue-forms/src/uidrivers/gtk2/widgets |
Date: |
Thu, 12 Aug 2004 13:50:06 -0500 (CDT) |
Author: johannes
Date: 2004-08-12 13:50:04 -0500 (Thu, 12 Aug 2004)
New Revision: 6188
Modified:
trunk/gnue-forms/src/uidrivers/gtk2/widgets/image.py
Log:
Added image widget
Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/image.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/image.py 2004-08-12
13:04:23 UTC (rev 6187)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/image.py 2004-08-12
18:50:04 UTC (rev 6188)
@@ -1,6 +1,9 @@
+# GNU Enterprise Forms - GTK UI Driver - Image widget
#
-# This file is part of GNU Enterprise.
+# Copyright 2001-2004 Free Software Foundation
#
+# This file is part of GNU Enterprise
+#
# GNU Enterprise is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation; either
@@ -16,61 +19,103 @@
# write to the Free Software Foundation, Inc., 59 Temple Place
# - Suite 330, Boston, MA 02111-1307, USA.
#
-# Copyright 2000-2004 Free Software Foundation
-#
-# FILE:
-# gtk2/widgets/image.py
-#
-# DESCRIPTION:
-# A part of a gtk2 based user interface driver for GNUe forms.
-#
-# NOTES:
-#
+# $Id$
+
import gtk
+import StringIO
+import Image
from gnue.forms.uidrivers.gtk2.widgets._base import UIHelper
-#
-# UIImage
-#
-# Widget set specific function that creates a single instance of an image
-#
+# =============================================================================
+# This class implements an image widget for GTK2 driver
+# =============================================================================
+
class UIImage(UIHelper):
- def _createWidget(self, event, spacer):
- object = event.object
+ # ---------------------------------------------------------------------------
+ # Create the gtk-widget
+ # ---------------------------------------------------------------------------
- image = gtk.Image()
- # image.set_from_file(
+ def _createWidget (self, event, spacer):
+ image = gtk.Image ()
- png=wxEmptyBitmap(1,1)
+ self.pane = gtk.ScrolledWindow ()
+ self.pane.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self.pane.set_shadow_type (gtk.SHADOW_NONE)
+
+ self.pane.add_with_viewport (image)
+ self.pane.set_size_request (self.itemWidth, self.itemHeight)
+
+ event.container.put (self.pane, self.itemX, self.itemY)
- self.pane = gtk.ScrolledWindow()
+ return image
- pane.add_with_viewport(image)
- pane.set_size_request(self.itemWidth, self.itemHeight)
+ # ---------------------------------------------------------------------------
+ # Set the widget's PIL
+ # ---------------------------------------------------------------------------
- event.container.put(pane, object.Char__x * event.widgetWidth,
- (object.Char__y + spacer) * event.widgetHeight)
+ def setValue (self, value, index = 0, enabled = True):
+ widget = self.widgets [index]
+
+ imgx, imgy = value.size
+ scrx, scry = self.pane.size_request ()
+
+ # Subtract the surrounding frame
+ scrx -= 4
+ scry -= 4
+
+ scalex = scaley = 1
+
+ fit = self._gfObject.fit
+
+ if fit == "auto":
+ if float (scrx) / imgx < float (scry) / imgy:
+ fit = "width"
+ else:
+ fit = "height"
+
+ if fit == "width":
+ scalex = scaley = float (scrx) / imgx
+
+ elif fit == "height":
+ scalex = scaley = float (scry) / imgy
+
+ elif fit == "both":
+ scalex = float (scrx) / imgx
+ scaley = float (scry) / imgy
+
+ if scalex != 1 or scaley != 1:
+ nWidth = abs (int (imgx * scalex))
+ nHeight = abs (int (imgy * scaley))
+ value = value.resize ((nWidth, nHeight), Image.BICUBIC)
- return self.image
+ widget.set_from_pixbuf (self.__imageToGdkPixbuf (value))
- def setValue(self, value, index=0, enabled=1):
- widget = self.widgets[index]
-
- # widget.SetEvtHandlerEnabled(FALSE)
- # Convert the PIL Image to a wxBitmap
- #wxImg = wxEmptyImage(value.size[0],value.size[1])
- #wxImg.SetData(value.convert("RGB").tostring())
- #image = wxImg.ConvertToBitmap()
- print "Not Implemented Yet"
+ # ---------------------------------------------------------------------------
+ # Convert a PIL image into a Gdk.Pixbuf
+ # ---------------------------------------------------------------------------
- # widget.SetEvtHandlerEnabled(TRUE)
+ def __imageToGdkPixbuf (self, pilImage):
+ file = StringIO.StringIO ()
+ pilImage.save (file, 'ppm')
+ contents = file.getvalue()
+ file.close ()
+ loader = gtk.gdk.PixbufLoader ('pnm')
+ loader.write (contents, len (contents))
+ pixbuf = loader.get_pixbuf ()
+ loader.close ()
+ return pixbuf
+
+# -----------------------------------------------------------------------------
+# Configuration data
+# -----------------------------------------------------------------------------
+
configuration = {
- 'baseClass' : UIImage,
- 'provides' : 'GFImage',
- 'container' : 0,
- }
+ 'baseClass' : UIImage,
+ 'provides' : 'GFImage',
+ 'container' : 0,
+}
Property changes on: trunk/gnue-forms/src/uidrivers/gtk2/widgets/image.py
___________________________________________________________________
Name: svn:keywords
- +Id
+ Id
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6188 - trunk/gnue-forms/src/uidrivers/gtk2/widgets,
johannes <=