def __CreateUI(self): self.__dictImages = { 'LEFT': { _ButtonState.NORMAL: ImageBox(), _ButtonState.HOVER: ImageBox(), _ButtonState.ACTIVE: ImageBox(), _ButtonState.DISABLED: ImageBox() }, 'CENTER': { _ButtonState.NORMAL: ExpandedImageBox(), _ButtonState.HOVER: ExpandedImageBox(), _ButtonState.ACTIVE: ExpandedImageBox(), _ButtonState.DISABLED: ExpandedImageBox() }, 'RIGHT': { _ButtonState.NORMAL: ImageBox(), _ButtonState.HOVER: ImageBox(), _ButtonState.ACTIVE: ImageBox(), _ButtonState.DISABLED: ImageBox() } } self.__txtText = None for position, imageDictByState in self.__dictImages.iteritems(): for state, image in imageDictByState.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage(self.IMAGES[position][state]) image.Hide()
def _CreateUI(self): self._dictImages = { 'CORNER': { 'LEFTTOP': ImageBox(), 'RIGHTTOP': ImageBox(), 'LEFTBOTTOM': ImageBox(), 'RIGHTBOTTOM': ImageBox() }, 'BAR': { 'LEFT': ExpandedImageBox(), 'TOP': ExpandedImageBox(), 'RIGHT': ExpandedImageBox(), 'BOTTOM': ExpandedImageBox() }, 'FILL': ExpandedImageBox() } for imageDictKey in (['CORNER', 'BAR']): for position, image in self._dictImages[imageDictKey].iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/%s%s_%s.tga" % (self.BASE_PATH, self.FILE_NAME_POSTFIX, imageDictKey.lower(), position.lower())) image.Show() self._dictImages['FILL'].SetParent(self) self._dictImages['FILL'].AddFlag("not_pick") self._dictImages['FILL'].LoadImage( "%s/%sfill.tga" % (self.BASE_PATH, self.FILE_NAME_POSTFIX)) self._dictImages['FILL'].Show()
def __CreateUI(self): self.__dictImages = { 'LEFT' : ImageBox(), 'CENTER' : ExpandedImageBox(), 'RIGHT' : ImageBox() } for position, image in self.__dictImages.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/bg_%s.tga" % (self.BASE_PATH, position.lower())) image.Show() self.__imgRange = ExpandedImageBox() self.__imgRange.SetParent(self) self.__imgRange.SetPosition(4, self.GetHeight() / 2 - 1) self.__imgRange.LoadImage("%s/bg_range.tga" % Slider.BASE_PATH) self.__imgRange.Hide() self.__btnSlider = SimpleDragButton() self.__btnSlider.SetParent(self) self.__btnSlider.AddFlag("movable") self.__btnSlider.AddFlag("restrict_y") self.__btnSlider.SetPosition(0, 0) self.__btnSlider.SetUpVisual("%s/btn_01_normal.tga" % Slider.BASE_PATH) self.__btnSlider.SetOverVisual("%s/btn_02_hover.tga" % Slider.BASE_PATH) self.__btnSlider.SetDownVisual("%s/btn_01_normal.tga" % Slider.BASE_PATH) self.__btnSlider.Show() self.__dictImages['LEFT'].SetPosition(0, 6) self.__dictImages['CENTER'].SetPosition(3, 6) self.__btnSlider.AddEventListener(SimpleDragButton.Events.ON_MOVE, self.__OnMove)
def __init__(self, layer = "UI"): ExpandedImageBox.__init__(self, layer) self.__width = 0 self.__CreateUI() self.SetWidth(HorizontalBar.WIDTH)
def __CreateUI(self): self.__dictImages = { 'LEFT': ImageBox(), 'CENTER': ExpandedImageBox(), 'RIGHT': ImageBox() } for position, image in self.__dictImages.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/bg_%s.tga" % (self.BASE_PATH, position.lower())) image.Show() self.__imgRange = ExpandedImageBox() self.__imgRange.SetParent(self) self.__imgRange.AddFlag("not_pick") self.__imgRange.LoadImage("%s/bg_range.tga" % self.BASE_PATH) self.__imgRange.Show() self.__liRangeSlider = [SimpleDragButton() for obj in xrange(2)] for rangeSlider in self.__liRangeSlider: rangeSlider.SetParent(self) rangeSlider.AddFlag("movable") rangeSlider.AddFlag("restrict_y") rangeSlider.SetPosition(0, 0) rangeSlider.SetUpVisual("%s/btn_01_normal.tga" % RangeSlider.BASE_PATH) rangeSlider.SetOverVisual("%s/btn_02_hover.tga" % RangeSlider.BASE_PATH) rangeSlider.SetDownVisual("%s/btn_01_normal.tga" % RangeSlider.BASE_PATH) rangeSlider.Show() self.__curValues.append(0) self.__rangeSliderWidth = rangeSlider.GetWidth() self.__liRangeSlider[0].AddEventListener( SimpleDragButton.Events.ON_MOVE, lambda: self.__OnMove(self.__liRangeSlider[0], 0)) self.__liRangeSlider[1].AddEventListener( SimpleDragButton.Events.ON_MOVE, lambda: self.__OnMove(self.__liRangeSlider[1], 1)) self.__dictImages['LEFT'].SetPosition(0, 6) self.__dictImages['CENTER'].SetPosition(3, 6)
def __CreateUI(self): self.__dictImages = { 'LEFT' : { ExpanderState.EXPANDED : ImageBox(), ExpanderState.COLLAPSED : ImageBox() }, 'CENTER' : { ExpanderState.EXPANDED : ExpandedImageBox(), ExpanderState.COLLAPSED : ExpandedImageBox() }, 'RIGHT' : { ExpanderState.EXPANDED : ImageBox(), ExpanderState.COLLAPSED : ImageBox() } } self.__txtText = None for position, imageDictByState in self.__dictImages.iteritems(): for state, image in imageDictByState.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/%s" % (Expander.BASE_PATH, Expander.IMAGES[position][state])) image.Hide() self.__imgArrowBackground = ImageBox() self.__imgArrowBackground.SetParent(self) self.__imgArrowBackground.AddFlag("not_pick") self.__imgArrowBackground.SetPosition(0, 0) self.__imgArrowBackground.LoadImage("%s/arrow_bg.tga" % Expander.BASE_PATH) self.__imgArrowBackground.Show() self.__imgArrow = ExpandedImageBox() self.__imgArrow.SetParent(self.__imgArrowBackground) self.__imgArrow.AddFlag("not_pick") self.__imgArrow.SetPosition(0, 0) self.__imgArrow.LoadImage("%s/arrow.tga" % Expander.BASE_PATH) self.__imgArrow.SetHorizontalAlign(wndMgr.HORIZONTAL_ALIGN_CENTER) self.__imgArrow.SetVerticalAlign(wndMgr.VERTICAL_ALIGN_CENTER) self.__imgArrow.Show()
def __CreateUI(self): self.__dictImages = { 'LEFT' : ImageBox(), 'CENTER' : ExpandedImageBox(), 'RIGHT' : ImageBox() } for position, image in self.__dictImages.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/%s_%s.tga" % (self.BASE_PATH, self.FILE_NAME_PREFIX, position.lower())) image.Show() self.__dictImages['CENTER'].SetPosition(self.__dictImages['LEFT'].GetWidth(), 0) self.__txtInput = None self.__textAlign = _BaseInput.TextAlign.LEFT
def __CreateUI(self): self.__dictImages = { 'LEFT': ImageBox(), 'CENTER': ExpandedImageBox(), 'RIGHT': ImageBox() } self.__imgCloseButtonDecoration = None self.__btnClose = None self.__txtTitle = None for image in self.__dictImages.itervalues(): image.SetParent(self) image.AddFlag("not_pick") image.Show() self.__dictImages['LEFT'].LoadImage("%s/left.tga" % TitleBar.BASE_PATH) self.__dictImages['CENTER'].LoadImage("%s/center.tga" % TitleBar.BASE_PATH) self.__dictImages['RIGHT'].LoadImage("%s/right.tga" % TitleBar.BASE_PATH)
def __CreateUI(self): self.__dictImages = { 'LEFT': ImageBox(), 'CENTER': ExpandedImageBox(), 'RIGHT': ImageBox() } for image in self.__dictImages.itervalues(): image.SetParent(self) image.Show() self.__dictImages['LEFT'].LoadImage("%s/horizontal_left.tga" % HorizontalSeparator.BASE_PATH) self.__dictImages['CENTER'].LoadImage("%s/horizontal_center.tga" % HorizontalSeparator.BASE_PATH) self.__dictImages['RIGHT'].LoadImage("%s/horizontal_right.tga" % HorizontalSeparator.BASE_PATH) self.__dictImages['LEFT'].SetPosition(0, 0) self.__dictImages['CENTER'].SetPosition( HorizontalSeparator.WIDTHS['LEFT'], 0)
def __CreateUI(self): self.__dictImages = { 'TOP': ImageBox(), 'CENTER': ExpandedImageBox(), 'BOTTOM': ImageBox() } for image in self.__dictImages.itervalues(): image.SetParent(self) image.Show() self.__dictImages['TOP'].LoadImage("%s/vertical_top.tga" % VerticalSeparator.BASE_PATH) self.__dictImages['CENTER'].LoadImage("%s/vertical_center.tga" % VerticalSeparator.BASE_PATH) self.__dictImages['BOTTOM'].LoadImage("%s/vertical_bottom.tga" % VerticalSeparator.BASE_PATH) self.__dictImages['TOP'].SetPosition(0, 0) self.__dictImages['CENTER'].SetPosition( 0, VerticalSeparator.HEIGHTS['TOP'])
class RangeSlider(Window): BASE_PATH = "%s/controls/common/range/" % illumina.BASE_PATH HEIGHT = 17 MIN_WIDTH = 17 def __init__(self, layer="UI"): Window.__init__(self, layer) self.__maxValue = 1 self.__curValues = [] self.__rangeSliderWidth = 0 self.__doMove = False self.__CreateUI() def __del__(self): Window.__del__(self) def __CreateUI(self): self.__dictImages = { 'LEFT': ImageBox(), 'CENTER': ExpandedImageBox(), 'RIGHT': ImageBox() } for position, image in self.__dictImages.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/bg_%s.tga" % (self.BASE_PATH, position.lower())) image.Show() self.__imgRange = ExpandedImageBox() self.__imgRange.SetParent(self) self.__imgRange.AddFlag("not_pick") self.__imgRange.LoadImage("%s/bg_range.tga" % self.BASE_PATH) self.__imgRange.Show() self.__liRangeSlider = [SimpleDragButton() for obj in xrange(2)] for rangeSlider in self.__liRangeSlider: rangeSlider.SetParent(self) rangeSlider.AddFlag("movable") rangeSlider.AddFlag("restrict_y") rangeSlider.SetPosition(0, 0) rangeSlider.SetUpVisual("%s/btn_01_normal.tga" % RangeSlider.BASE_PATH) rangeSlider.SetOverVisual("%s/btn_02_hover.tga" % RangeSlider.BASE_PATH) rangeSlider.SetDownVisual("%s/btn_01_normal.tga" % RangeSlider.BASE_PATH) rangeSlider.Show() self.__curValues.append(0) self.__rangeSliderWidth = rangeSlider.GetWidth() self.__liRangeSlider[0].AddEventListener( SimpleDragButton.Events.ON_MOVE, lambda: self.__OnMove(self.__liRangeSlider[0], 0)) self.__liRangeSlider[1].AddEventListener( SimpleDragButton.Events.ON_MOVE, lambda: self.__OnMove(self.__liRangeSlider[1], 1)) self.__dictImages['LEFT'].SetPosition(0, 6) self.__dictImages['CENTER'].SetPosition(3, 6) def __GetStep(self): return float(self.GetWidth() - self.__rangeSliderWidth) / float( self.__maxValue) def __OnMove(self, rangeSlider, rangeSliderIndex): self.__doMove = not self.__doMove if not self.__doMove: return step = self.__GetStep() curValue = int(round(rangeSlider.GetLocalX() / step)) rangeSlider.SetPosition(curValue * step, 0) self.__curValues[rangeSliderIndex] = curValue self.UpdateRange() import dbg dbg.TraceError("%d (%d, %d)" % (self.GetValue(), self.GetValue(0), self.GetValue(1))) def GetValue(self, index=-1): if index < 0 or index >= len(self.__curValues): return max(self.__curValues) - min(self.__curValues) else: return self.__curValues[index] def SetValue(self, index, value): if index < 0 or index >= len(self.__curValues) or index >= len( self.__liRangeSlider): return self.__curValues[index] = value self.__liRangeSlider[index].SetPosition(self.__GetStep() * value, 0) self.UpdateRange() def UpdateRange(self): startX = min(self.__liRangeSlider[0].GetLocalX(), self.__liRangeSlider[1].GetLocalX()) endX = max(self.__liRangeSlider[0].GetLocalX(), self.__liRangeSlider[1].GetLocalX()) self.__imgRange.SetPosition( startX + self.__liRangeSlider[0].GetWidth() / 2, self.GetHeight() / 2 - 1) self.__imgRange.SetScale(float(endX - startX), 1.0) self.__imgRange.SetTop() def SetWidth(self, width): width = max(RangeSlider.MIN_WIDTH, width) Window.SetSize(self, width, RangeSlider.HEIGHT) self.__dictImages['CENTER'].SetScale( float(width - (self.__dictImages['LEFT'].GetWidth() + self.__dictImages['RIGHT'].GetWidth())), 1.0) self.__dictImages['RIGHT'].SetPosition( width - self.__dictImages['RIGHT'].GetWidth(), 6) self.__liRangeSlider[0].SetPosition(0, 0) self.__liRangeSlider[1].SetPosition( width - self.__liRangeSlider[1].GetWidth(), 0) for rangeSlider in self.__liRangeSlider: rangeSlider.SetRestrictMovementArea(0, 0, self.GetWidth(), 0) self.UpdateRange() def SetMaxValue(self, maxValue): self.__maxValue = maxValue #min(max(1, maxValue), self.GetWidth() - self.__btnSlider.GetWidth()) #self.__OnMove() ################################################## ## EVENTS class Events(Window.Events): pass
class Expander(Window): BASE_PATH = "%s/controls/common/expander/" % illumina.BASE_PATH IMAGES = { 'LEFT' : { ExpanderState.COLLAPSED : "left_01_normal.tga", ExpanderState.EXPANDED : "left_02_hover.tga" }, 'CENTER' : { ExpanderState.COLLAPSED : "center_01_normal.tga", ExpanderState.EXPANDED : "center_02_hover.tga" }, 'RIGHT' : { ExpanderState.COLLAPSED : "right_01_normal.tga", ExpanderState.EXPANDED : "right_02_hover.tga" } } MIN_WIDTH = 30 HEIGHT = 30 def __init__(self, layer = "UI"): Window.__init__(self, layer) self.__state = ExpanderState.COLLAPSED self.__arrowRotation = 0.0 self.__CreateUI() self.__SetEventListeners() self.SetWidth(0) self.SetState(ExpanderState.COLLAPSED) def __del__(self): Window.__del__(self) def __CreateUI(self): self.__dictImages = { 'LEFT' : { ExpanderState.EXPANDED : ImageBox(), ExpanderState.COLLAPSED : ImageBox() }, 'CENTER' : { ExpanderState.EXPANDED : ExpandedImageBox(), ExpanderState.COLLAPSED : ExpandedImageBox() }, 'RIGHT' : { ExpanderState.EXPANDED : ImageBox(), ExpanderState.COLLAPSED : ImageBox() } } self.__txtText = None for position, imageDictByState in self.__dictImages.iteritems(): for state, image in imageDictByState.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/%s" % (Expander.BASE_PATH, Expander.IMAGES[position][state])) image.Hide() self.__imgArrowBackground = ImageBox() self.__imgArrowBackground.SetParent(self) self.__imgArrowBackground.AddFlag("not_pick") self.__imgArrowBackground.SetPosition(0, 0) self.__imgArrowBackground.LoadImage("%s/arrow_bg.tga" % Expander.BASE_PATH) self.__imgArrowBackground.Show() self.__imgArrow = ExpandedImageBox() self.__imgArrow.SetParent(self.__imgArrowBackground) self.__imgArrow.AddFlag("not_pick") self.__imgArrow.SetPosition(0, 0) self.__imgArrow.LoadImage("%s/arrow.tga" % Expander.BASE_PATH) self.__imgArrow.SetHorizontalAlign(wndMgr.HORIZONTAL_ALIGN_CENTER) self.__imgArrow.SetVerticalAlign(wndMgr.VERTICAL_ALIGN_CENTER) self.__imgArrow.Show() def __SetEventListeners(self): self.AddEventListener(Expander.Events.ON_MOUSE_OVER_IN, lambda : self.__RefreshButton(ExpanderState.EXPANDED)) self.AddEventListener(Expander.Events.ON_MOUSE_OVER_OUT, lambda : self.__RefreshButton(ExpanderState.COLLAPSED)) self.AddEventListener(Expander.Events.ON_MOUSE_LEFT_BUTTON_UP, lambda : self.SetState(ExpanderState.EXPANDED if self.GetState() == ExpanderState.COLLAPSED else ExpanderState.COLLAPSED)) def __RefreshButton(self, expandingState): for position, imageDictByState in self.__dictImages.iteritems(): for state, image in imageDictByState.iteritems(): if state != expandingState: image.Hide() else: image.Show() if self.GetState() == ExpanderState.COLLAPSED: self.__imgArrow.SetRotation(self.__arrowRotation) else: self.__imgArrow.SetRotation(180.0 + self.__arrowRotation) def GetState(self): return self.__state def SetState(self, state): self.__state = state self.__RefreshButton(self.__state) def SetWidth(self, width): width = max(Expander.MIN_WIDTH, width) self.SetSize(width, Expander.HEIGHT) for image in self.__dictImages['CENTER'].itervalues(): image.SetPosition(5, 0) image.SetScale(float(width - 10), 1.0) for image in self.__dictImages['RIGHT'].itervalues(): image.SetPosition(width - 5, 0) self.UpdateText() def SetArrowRotation(self, rotation): self.__arrowRotation = rotation self.__imgArrow.SetRotation(rotation) ## Text def SetText(self, text): if not self.__txtText: self.__txtText = TextLine() self.__txtText.SetParent(self) self.__txtText.AddFlag("not_pick") self.__txtText.SetVerticalAlignCenter() self.__txtText.SetPackedFontColor(0xFFE6D0A2) self.__txtText.Show() self.UpdateText() self.__txtText.SetText(text) def GetText(self): if not self.__txtText: return "" return self.__txtText.GetText() def UpdateText(self): if not self.__txtText: return self.__txtText.SetPosition(35, self.GetHeight() / 2 - 2) ################################################## ## EVENTS class Events(Window.Events): ON_EXPAND = EventEnum() ON_COLLAPSE = EventEnum()
class Slider(Window): BASE_PATH = "%s/controls/common/slider/" % illumina.BASE_PATH HEIGHT = 17 MIN_WIDTH = 17 def __init__(self, layer = "UI"): Window.__init__(self, layer) self.__maxValue = 1 self.__curValue = 0 self.__doMove = False self.__CreateUI() def __del__(self): Window.__del__(self) def __CreateUI(self): self.__dictImages = { 'LEFT' : ImageBox(), 'CENTER' : ExpandedImageBox(), 'RIGHT' : ImageBox() } for position, image in self.__dictImages.iteritems(): image.SetParent(self) image.AddFlag("not_pick") image.LoadImage("%s/bg_%s.tga" % (self.BASE_PATH, position.lower())) image.Show() self.__imgRange = ExpandedImageBox() self.__imgRange.SetParent(self) self.__imgRange.SetPosition(4, self.GetHeight() / 2 - 1) self.__imgRange.LoadImage("%s/bg_range.tga" % Slider.BASE_PATH) self.__imgRange.Hide() self.__btnSlider = SimpleDragButton() self.__btnSlider.SetParent(self) self.__btnSlider.AddFlag("movable") self.__btnSlider.AddFlag("restrict_y") self.__btnSlider.SetPosition(0, 0) self.__btnSlider.SetUpVisual("%s/btn_01_normal.tga" % Slider.BASE_PATH) self.__btnSlider.SetOverVisual("%s/btn_02_hover.tga" % Slider.BASE_PATH) self.__btnSlider.SetDownVisual("%s/btn_01_normal.tga" % Slider.BASE_PATH) self.__btnSlider.Show() self.__dictImages['LEFT'].SetPosition(0, 6) self.__dictImages['CENTER'].SetPosition(3, 6) self.__btnSlider.AddEventListener(SimpleDragButton.Events.ON_MOVE, self.__OnMove) def __OnMove(self): self.__doMove = not self.__doMove if not self.__doMove: return oldValue = self.__curValue slideWidth = self.GetWidth() - self.__btnSlider.GetWidth() step = float(slideWidth) / float(self.__maxValue) self.__curValue = int(round(self.__btnSlider.GetLocalX() / step)) self.__btnSlider.SetPosition(self.__curValue * step, 0) self.UpdateRangeEffect() if oldValue != self.__curValue: self.CallEventListener(Slider.Events.ON_SLIDE, self.__curValue) def SetWidth(self, width): width = max(Slider.MIN_WIDTH, width) Window.SetSize(self, width, Slider.HEIGHT) self.__dictImages['CENTER'].SetScale(float(width - (self.__dictImages['LEFT'].GetWidth() + self.__dictImages['RIGHT'].GetWidth())), 1.0) self.__dictImages['RIGHT'].SetPosition(width - self.__dictImages['RIGHT'].GetWidth(), 6) self.__btnSlider.SetRestrictMovementArea(0, 0, self.GetWidth(), 0) self.__imgRange.SetPosition(2, self.GetHeight() / 2 - 1) def SetMaxValue(self, maxValue): self.__maxValue = min(max(1, maxValue), self.GetWidth() - self.__btnSlider.GetWidth()) self.__OnMove() ## Range Effect def GetRangeEffect(self): return self.__imgRange def UpdateRangeEffect(self): self.__imgRange.SetScale(float(self.__btnSlider.GetLocalX() + self.__btnSlider.GetWidth() / 2 - self.__imgRange.GetLocalX()), 1.0) ################################################## ## EVENTS class Events(Window.Events): ON_SLIDE = EventEnum() def __OnSlide(self, value): self.CallEventListener(Slider.Events.ON_SLIDE, value)
def __del__(self): ExpandedImageBox.__del__(self)