diff options
Diffstat (limited to 'Edit/rm/TuneView.py')
-rw-r--r-- | Edit/rm/TuneView.py | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/Edit/rm/TuneView.py b/Edit/rm/TuneView.py deleted file mode 100644 index 63cf468..0000000 --- a/Edit/rm/TuneView.py +++ /dev/null @@ -1,123 +0,0 @@ -import pygtk -pygtk.require( '2.0' ) -import gtk - -from GUI.GUIConstants import GUIConstants -from GUI.Core.TunePageView import TunePageView - -def swap(l,i,j): - e = l[i] - l[i] = l[j] - l[j] = e - -class TuneView( gtk.ScrolledWindow ): - - NO_PAGE = -1 - - def _page_width(self): - return self.pageContainer.get_allocation().width / GUIConstants.NUMBER_OF_PAGE_BANK_COLUMNS - - def __init__( self, selectPageCallback ): - gtk.ScrolledWindow.__init__( self ) - - #selectPageCallback(): currently connected to pagePlayer.setPlayTune, which skips to a given page of the tune. - self.selectPageCallback = selectPageCallback - self.selectedPageIndex = self.NO_PAGE - - self.set_policy( gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC ) - self.set_placement( gtk.CORNER_TOP_LEFT ) - - #self.pageViews: list of our custom PageView widgets - self.pageViews = [] - self.pageContainer = gtk.HBox( False ) - self.add_with_viewport( self.pageContainer ) - - #the old part - self.pageContainer.drag_dest_set( gtk.DEST_DEFAULT_ALL, - [ ( "bank page", gtk.TARGET_SAME_APP, 10 ), - ( "tune page", gtk.TARGET_SAME_APP, 11 )], - gtk.gdk.ACTION_COPY|gtk.gdk.ACTION_MOVE ) - - self.pageContainer.connect( "drag_data_received", self.dragDataReceived ) - - #private method: called by gtk when pages get dragged onto the tune-view - def dragDataReceived( self, widget, context, x, y, selectionData, info, time ): - print 'dragDataReceived: ', selectionData.data, info, selectionData.data - recv = selectionData.data.split() - if recv[0] == 'p': - pageId = int( recv[1] ) - self.addPage( pageId, min( x / self._page_width(), len( self.pageViews )) ) - elif recv[0] == 't': - self.moveSelectedPage( min( x / self._page_width(), len( self.pageViews ) -1)) - else: - raise 'ERROR' - - #public method: called by MainWindow on file load - def syncFromPagePlayer(self): - raise 'never call this' - map( lambda pv:pv.destroy(), self.pageViews ) - self.pageViews = [] - tunePages = self.tunePagesCallback() - for i in range( len(tunePages)): - self.addPage( tunePages[i], i, False) - - - def addPage( self, pageID, position ): - #create a new widget - pageView = TunePageView( pageID, position, self.selectPage ) - self.pageViews.insert( position, pageView ) - self.pageContainer.pack_start( pageView, False ) - self.pageContainer.reorder_child( pageView, position ) - - pageView.set_size_request( self.pageContainer.get_allocation().width / GUIConstants.NUMBER_OF_PAGE_BANK_COLUMNS, - GUIConstants.PAGE_HEIGHT ) - pageView.show() - - for i in range( len(self.pageViews)) : - self.pageViews[i].tuneIndex = i - self.pageViews[i].setSelected( i == position) - self.selectPageCallback( pageID, position ) - pageView.drag_source_set( - gtk.gdk.BUTTON1_MASK, - [ ( "tune page", gtk.TARGET_SAME_APP, 11 ) ], - gtk.gdk.ACTION_COPY|gtk.gdk.ACTION_MOVE ) - - def moveSelectedPage( self, position): - self.pageContainer.reorder_child( self.pageViews[self.selectedPageIndex], position ) - swap( self.pageViews, self.selectedPageIndex, position ) - self.selectedPageIndex = position - for i in range( len(self.pageViews) ) : - self.pageViews[i].tuneIndex = i - self.pageViews[i].setSelected( i == position) - - def removePage( self, position ): - pv = self.pageViews[position] - self.pageViews[position:position+1] = [] - if self.selectedPageIndex >= position : self.selectedPageIndex -= 1 - for i in range( len(self.pageViews)) : - self.pageViews[i].tuneIndex = i - self.pageViews[i].setSelected( i == position) - self.pageContainer.remove(pv) - del pv - - def selectPage( self, selectedPageIndex, invokeCallback = True ): - if selectedPageIndex >= len( self.pageViews ): selectedPageIndex = self.NO_PAGE - self.selectedPageIndex = selectedPageIndex - if selectedPageIndex == self.NO_PAGE: - for pv in self.pageViews: pv.setSelected(False) - if invokeCallback: self.selectPageCallback( -1, -1 ) - else: - if not self.pageViews[ selectedPageIndex ].selected: - map( lambda pv: pv.setSelected( pv.tuneIndex == selectedPageIndex), self.pageViews) - if invokeCallback: self.selectPageCallback( self.pageViews[selectedPageIndex].pageID, selectedPageIndex ) - - def set_size_request( self, width, height ): - gtk.ScrolledWindow.set_size_request( self, width, height ) - map( lambda pv: pv.set_size_request( width / GUIConstants.NUMBER_OF_PAGE_BANK_COLUMNS, GUIConstants.PAGE_HEIGHT ), self.pageViews) - - def getPageId( self, idx): - return self.pageViews[idx].pageID - - def getTune( self ): - return [ p.pageID for p in self.pageViews ] - |