720 |
|
|
721 |
def _createWidget(self, event, spacer): |
def _createWidget(self, event, spacer): |
722 |
object = event.object |
object = event.object |
723 |
|
self._pos = 0 |
724 |
self._page= object.page |
self._page= object.page |
725 |
|
self._widgetHeight = event.widgetHeight |
726 |
self._widget= wxScrollBar(event.container,-1, |
self._widget= wxScrollBar(event.container,-1, |
727 |
wxPoint(object.x*event.widgetWidth,(object.y+spacer)*event.widgetHeight), |
wxPoint(object.x*event.widgetWidth,(object.y+spacer)*event.widgetHeight), |
728 |
wxSize(object.width*event.widgetWidth,object.height*event.widgetHeight), |
wxSize(object.width*event.widgetWidth,object.height*event.widgetHeight), |
729 |
wxSB_VERTICAL) |
wxSB_VERTICAL) |
730 |
# tie |
# tie |
731 |
if event.initialize: |
if event.initialize: |
|
# envetHandler is the gfuserinterface's dispatchEvent... |
|
|
self._eventHandler= event.eventHandler |
|
|
self.update (0, 0) |
|
|
EVT_SCROLL (self._widget, self.scroll) |
|
732 |
# raise Exception |
# raise Exception |
733 |
# also, hook on our block's events |
# also, hook on our block's events |
734 |
# how? I need a eventAware thing! |
# how? I need a eventAware thing! |
736 |
# or find the block and cross register. |
# or find the block and cross register. |
737 |
block= object.findParentOfType ('GFBlock') |
block= object.findParentOfType ('GFBlock') |
738 |
block.registerScrollBar (self) |
block.registerScrollBar (self) |
739 |
|
self._block = block |
740 |
|
# envetHandler is the gfuserinterface's dispatchEvent... |
741 |
|
self._eventHandler= event.eventHandler |
742 |
|
self.update (0, 0) |
743 |
|
EVT_SCROLL (self._widget, self.scroll) |
744 |
|
|
745 |
return self._widget |
return self._widget |
746 |
|
|
747 |
def scroll (self, event): |
def scroll (self, event): |
748 |
try: |
try: |
749 |
action = GFEvent('requestSCROLL', (self.wxToScroll[event.GetEventType()], self._page)) |
currPos = event.GetPosition() |
750 |
|
if currPos == self._pos: |
751 |
|
action = GFEvent('requestSCROLL', (self.wxToScroll[event.GetEventType()], self._page, self._block, self._pos, 0, float(self._page)/float(self._block.getRecordCount())*float(self._widgetHeight))) |
752 |
|
else: |
753 |
|
action = GFEvent('requestSCROLL', (self.wxToScroll[event.GetEventType()], self._page, self._block, self._pos, currPos, float(self._page)/float(self._block.getRecordCount())*float(self._widgetHeight))) |
754 |
self._eventHandler(action) |
self._eventHandler(action) |
755 |
except KeyError, e: |
except KeyError, e: |
756 |
# ignore; it's not a event we want to handle |
# ignore; it's not a event we want to handle |
759 |
|
|
760 |
# int position, int thumbSize, int range, int pageSize, const bool refresh = TRUE |
# int position, int thumbSize, int range, int pageSize, const bool refresh = TRUE |
761 |
def update (self, pos, range): |
def update (self, pos, range): |
762 |
# print pos, range |
self._pos = pos |
763 |
self._widget.SetScrollbar (pos, 1, range, self._page-1) |
try: |
764 |
|
tumbSize = float(self._page)/float(range)*float(self._widgetHeight) |
765 |
|
if tumbSize < 1: |
766 |
|
tumbSize = 1 |
767 |
|
except ZeroDivisionError: |
768 |
|
tumbSize = 0 |
769 |
|
pass |
770 |
|
#print pos, tumbSize, range, self._page |
771 |
|
self._widget.SetScrollbar (pos, tumbSize, range, self._page) |
772 |
|
|
773 |
|
|
774 |
# |
# |