Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Edit/TuneInterface.py
diff options
context:
space:
mode:
authoramartin <olpc@localhost.localdomain>2007-02-20 22:43:12 (GMT)
committer amartin <olpc@localhost.localdomain>2007-02-20 22:43:12 (GMT)
commit1fcc777030bb0ca9d3768edf21bd0de704032c62 (patch)
tree3631fee8bdf561a4c2f4148e26464fc0cd07c3a9 /Edit/TuneInterface.py
parent14996eec6c02ec388f35114a910d7bdad9b3b899 (diff)
sample notes
Diffstat (limited to 'Edit/TuneInterface.py')
-rw-r--r--Edit/TuneInterface.py54
1 files changed, 28 insertions, 26 deletions
diff --git a/Edit/TuneInterface.py b/Edit/TuneInterface.py
index cc070b8..b5597cd 100644
--- a/Edit/TuneInterface.py
+++ b/Edit/TuneInterface.py
@@ -157,7 +157,7 @@ class TuneInterface( gtk.EventBox ):
self.alloced = False
self.width = self.baseWidth = self.height = -1
self.waitingForAlloc = True
- self.scrollTo = -1
+ self.scrollTo = None
self.clickX = -1
self.set_size_request( self.width, self.height )
@@ -192,9 +192,10 @@ class TuneInterface( gtk.EventBox ):
self.pageY = (self.height-Config.PAGE_THUMBNAIL_HEIGHT)//2
- if self.scrollTo >= 0:
- self.adjustment.set_value( self.scrollTo )
- self.scrollTo = -1
+ if self.scrollTo != None:
+ if self.scrollTo >= 0: self.adjustment.set_value( self.scrollTo )
+ else: self.adjustment.set_value( self.width - self.baseWidth )
+ self.scrollTo = None
self.waitingForAlloc = False
@@ -368,8 +369,6 @@ class TuneInterface( gtk.EventBox ):
startX = self.pageOffset + ind*Config.PAGE_THUMBNAIL_WIDTH
stopX = startX + Config.PAGE_THUMBNAIL_WIDTH
- self.invalidate_rect( startX, 0, Config.PAGE_THUMBNAIL_WIDTH, self.height )
-
if self.adjustment.value > startX:
scroll = startX + Config.PAGE_THUMBNAIL_WIDTH + Config.PAGE_THUMBNAIL_WIDTH_DIV2 - self.baseWidth
if scroll < 0: scroll = 0
@@ -377,11 +376,17 @@ class TuneInterface( gtk.EventBox ):
elif self.adjustment.value + self.baseWidth < stopX:
scroll = startX - Config.PAGE_THUMBNAIL_WIDTH_DIV2
if scroll + self.baseWidth > self.width:
- scroll = stopX - self.baseWidth
- if self.waitingForAlloc:
- self.scrollTo = scroll
- else:
- self.adjustment.set_value( scroll )
+ if self.waitingForAlloc:
+ self.scrollTo = -1
+ else:
+ self.adjustment.set_value( self.width - self.baseWidth )
+ else:
+ if self.waitingForAlloc:
+ self.scrollTo = scroll
+ else:
+ self.adjustment.set_value( scroll )
+
+ self.invalidate_rect( startX, 0, Config.PAGE_THUMBNAIL_WIDTH, self.height )
def selectPage( self, id, exclusive = True ):
if exclusive:
@@ -517,9 +522,11 @@ class TuneInterface( gtk.EventBox ):
stopX = event.area.x + event.area.width
stopY = event.area.y + event.area.height
- # draw bg for pageOffset
+ self.gc.set_clip_rectangle( self.clearMask )
+
+ # draw background
self.gc.foreground = self.bgColor
- drawingArea.window.draw_rectangle( self.gc, True, 0, 0, self.pageOffset, Config.PAGE_THUMBNAIL_HEIGHT )
+ drawingArea.window.draw_rectangle( self.gc, True, startX, startY, event.area.width, event.area.height )
tracks = [ self.owner.getTrackSelected(i) for i in range(Config.NUMBER_OF_TRACKS) ]
@@ -539,8 +546,8 @@ class TuneInterface( gtk.EventBox ):
if self.thumbnailDirty[pageId]:
self.gc.set_clip_origin( 0, 0 )
self.drawThumbnail( pageId, self.thumbnail[pageId], self.thumbnailDirtyRect[pageId] )
- self.gc.set_clip_origin( x, 0 )
- drawingArea.window.draw_drawable( self.gc, self.thumbnail[pageId], 0, 0, x, 0, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT )
+ self.gc.set_clip_origin( x, self.pageY )
+ drawingArea.window.draw_drawable( self.gc, self.thumbnail[pageId], 0, 0, x, self.pageY, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT )
# draw border if necessary
if pageId == self.displayedPage: # displayed page border
@@ -550,8 +557,8 @@ class TuneInterface( gtk.EventBox ):
drawingArea.window.draw_rectangle( self.gc, True, x + self.trackRect[i][0], self.trackRect[i][1], self.trackRect[i][2], self.trackRect[i][3] )
self.gc.set_function( gtk.gdk.COPY )
self.gc.foreground = self.displayedColor
- self.gc.set_clip_origin( x - Config.PAGE_THUMBNAIL_WIDTH, 0 )
- drawingArea.window.draw_rectangle( self.gc, True, x, 0, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT )
+ self.gc.set_clip_origin( x - Config.PAGE_THUMBNAIL_WIDTH, self.pageY )
+ drawingArea.window.draw_rectangle( self.gc, True, x, self.pageY, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT )
elif pageId in self.selectedIds: # selected page border
self.gc.set_function( gtk.gdk.INVERT )
for i in range(Config.NUMBER_OF_TRACKS):
@@ -559,18 +566,11 @@ class TuneInterface( gtk.EventBox ):
drawingArea.window.draw_rectangle( self.gc, True, x + self.trackRect[i][0], self.trackRect[i][1], self.trackRect[i][2], self.trackRect[i][3] )
self.gc.set_function( gtk.gdk.COPY )
self.gc.foreground = self.selectedColor
- self.gc.set_clip_origin( x - Config.PAGE_THUMBNAIL_WIDTH, 0 )
- drawingArea.window.draw_rectangle( self.gc, True, x, 0, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT )
+ self.gc.set_clip_origin( x - Config.PAGE_THUMBNAIL_WIDTH, self.pageY )
+ drawingArea.window.draw_rectangle( self.gc, True, x, self.pageY, Config.PAGE_THUMBNAIL_WIDTH, Config.PAGE_THUMBNAIL_HEIGHT )
x += Config.PAGE_THUMBNAIL_WIDTH
- self.gc.set_clip_rectangle( self.clearMask )
-
- # fill in extra background
- if x < self.width:
- self.gc.foreground = self.bgColor
- drawingArea.window.draw_rectangle( self.gc, True, x, 0, self.width-x, Config.PAGE_THUMBNAIL_HEIGHT )
-
# draw drop marker
if self.dropAt >= 0:
self.gc.set_line_attributes( self.dropWidth, gtk.gdk.LINE_SOLID, gtk.gdk.CAP_ROUND, gtk.gdk.JOIN_MITER )
@@ -581,6 +581,8 @@ class TuneInterface( gtk.EventBox ):
if self.alloced == False: return
if x < self.visibleX: x = self.visibleX
if x + width > self.visibleEndX: width = self.visibleEndX - x
+ if width <= 0: return
+
self.dirtyRectToAdd.x = x
self.dirtyRectToAdd.y = y
self.dirtyRectToAdd.width = width