Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Edit/rm/PageView.py
diff options
context:
space:
mode:
Diffstat (limited to 'Edit/rm/PageView.py')
-rw-r--r--Edit/rm/PageView.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/Edit/rm/PageView.py b/Edit/rm/PageView.py
new file mode 100644
index 0000000..00b650b
--- /dev/null
+++ b/Edit/rm/PageView.py
@@ -0,0 +1,65 @@
+import pygtk
+pygtk.require( '2.0' )
+import gtk
+
+import pango
+
+from GUI.GUIConstants import GUIConstants
+
+class PageView( gtk.DrawingArea ):
+ def __init__( self, pageID, selectPageCallback, selected = False ):
+ gtk.DrawingArea.__init__( self )
+
+ self.pageID = pageID
+ self.selectPageCallback = selectPageCallback
+ self.selected = selected
+
+ self.add_events( gtk.gdk.BUTTON_PRESS_MASK )
+
+ self.connect( "expose-event", self.handleExposeEvent )
+ self.connect( "button-press-event", self.handleButtonPress )
+ self.connect( "drag_data_get", self.getData )
+
+ def handleButtonPress( self, widget, event ):
+ if event.button == 1 or event.button == 3:
+ self.selectPageCallback( self.pageID, event.button == 1 )
+
+ def getData( self, widget, context, selection, targetType, eventTime ):
+ return selection.set( gtk.gdk.SELECTION_PRIMARY, 32, "p %d" % self.pageID )
+
+ def toggleSelected( self ):
+ self.selected = not self.selected
+ self.queue_draw()
+
+ def setSelected( self, selected ):
+ if self.selected != selected:
+ self.selected = selected
+ self.queue_draw()
+
+ # TODO: this is temporary: replace with a visual representation of the page
+ def handleExposeEvent( self, drawingArea, event ):
+ size = self.get_allocation()
+ context = self.window.cairo_create()
+
+ if self.selected:
+ context.set_line_width( GUIConstants.PAGE_SELECTED_BORDER_SIZE )
+ else:
+ context.set_line_width( GUIConstants.PAGE_BORDER_SIZE )
+ context.move_to( 0, 0 )
+ context.rel_line_to( size.width, 0 )
+ context.rel_line_to( 0, size.height )
+ context.rel_line_to( -size.width, 0 )
+ context.close_path()
+
+ #blue background
+ context.set_source_rgb( 0.75, 0.75, 0.75 )
+ context.fill_preserve()
+
+ #black border
+ context.set_source_rgb( 0, 0, 0 )
+ context.stroke()
+
+ #text
+ layout = self.create_pango_layout( "%d" % ( self.pageID + 1 ) )
+ layout.set_font_description( pango.FontDescription( 'Sans 10' ) )
+ self.window.draw_layout( self.window.new_gc(), 5, 5, layout )