def __init__(self, parent=None, width=100.0, filled=False, min_value=0, max_value=1.0, precision=2, value=None): LUIObject.__init__(self, x=0, y=0, w=width, h=0) LUICallback.__init__(self) max_numbers_before = max(len(str(int(max_value))), len(str(int(min_value)))) number_space_required = max_numbers_before if precision > 0: number_space_required += 1 + precision pixels_per_number = 7 self.precision = precision self.slider = LUISlider( self, width=width - pixels_per_number * number_space_required - 5, filled=filled, min_value=min_value, max_value=max_value, value=value, ) self.label = LUILabel(parent=self, shadow=True, text=u"1.23") self.label.right = 0 self.label.top = self.label.height - self.slider.height self.label.color = (1, 1, 1, 0.5) self.slider.add_change_callback(self._on_slider_changed) self.slider.add_change_callback(self._trigger_callback) self._on_slider_changed(self.slider, self.slider.get_value()) if parent is not None: self.parent = parent self.fit_to_children()
def __init__(self, parent=None, width=100.0, filled=False, min_value=0, max_value=1.0, precision=2, value=None): LUIObject.__init__(self, x=0, y=0, w=width, h=0) LUICallback.__init__(self) max_numbers_before = max(len(str(int(max_value))), len(str(int(min_value)))) number_space_required = max_numbers_before if precision > 0: number_space_required += 1 + precision pixels_per_number = 7 self.precision = precision self.slider = LUISlider(self, width=width - pixels_per_number * number_space_required - 5, filled=filled, min_value=min_value, max_value=max_value, value=value) self.label = LUILabel(parent=self, shadow=True, text=u"1.23") self.label.right = 0 self.label.top = self.label.height - self.slider.height self.label.color = (1,1,1,0.5) self.slider.add_change_callback(self._on_slider_changed) self.slider.add_change_callback(self._trigger_callback) self._on_slider_changed(self.slider, self.slider.get_value()) if parent is not None: self.parent = parent self.fit_to_children()
def __init__(self, parent=None, filled=False, min_value=0.0, max_value=1.0, width=100.0, value=None): LUIObject.__init__(self, x=0, y=0, w=width, h=0) LUICallback.__init__(self) self.knob = LUISprite(self, "SliderKnob", "skin") self.knob.z_offset = 2 self.sliderBg = LUIObject(self, 0, 0, width, 0) self.bgLeft = LUISprite(self.sliderBg, "SliderBg_Left", "skin") self.bgRight = LUISprite(self.sliderBg, "SliderBg_Right", "skin") self.bgMid = LUISprite(self.sliderBg, "SliderBg", "skin") self.bgMid.width = self.width - self.bgLeft.width - self.bgRight.width self.bgMid.left = self.bgLeft.width self.bgRight.left = self.bgMid.width + self.bgMid.left self.filled = filled self.min_value = min_value self.max_value = max_value self.sliderBg.fit_to_children() self.sliderBg.top = (self.knob.height - self.sliderBg.height) / 2 - 1 self.sideMargin = self.knob.width / 4 self.effectiveWidth = self.width - 2 * self.sideMargin if self.filled: self.sliderFill = LUIObject(self, 0, 0, width, 0) self.fillLeft = LUISprite(self.sliderFill, "SliderBgFill_Left", "skin") self.fillMid = LUISprite(self.sliderFill, "SliderBgFill", "skin") self.fillMid.left = self.fillLeft.width self.sliderFill.z_offset = 1 self.sliderFill.top = self.sliderBg.top self.sliderFill.fit_to_children() if parent is not None: self.parent = parent self.knob.bind("mousedown", self._start_drag) self.knob.bind("mousemove", self._update_drag) self.knob.bind("mouseup", self._stop_drag) self.knob.bind("keydown", self._on_keydown) self.knob.bind("blur", self._stop_drag) self.knob.bind("keyrepeat", self._on_keydown) self.dragStartPos = None self.dragging = False self.dragStartVal = 0 self.currentVal = 10 if value is None: self.set_value((self.min_value + self.max_value) / 2.0) else: self.set_value(value) self.fit_to_children() self._update_knob()
def __init__(self, parent=None, group=None, value=5): LUIObject.__init__(self) LUICallback.__init__(self) self.sprite = LUISprite(self, "Radiobox_Default", "skin") self.fit_to_children() self.group = group self.group.register_box(self) self.active = False self.value = value if parent is not None: self.parent = parent
def __init__(self, parent=None, group=None, value=None, text=u"Radiobox"): LUIObject.__init__(self) LUICallback.__init__(self) self.radiobox = LUIRadiobox(parent=self, group=group, value=value) self.label = LUILabel(parent=self, text=text, shadow=True) self.label.bind("click", self.radiobox.on_click) self.label.bind("mousedown", self.radiobox.on_mousedown) self.label.bind("mouseup", self.radiobox.on_mouseup) self.radiobox.add_change_callback(self._trigger_callback) if parent is not None: self.parent = parent self.label.left = self.radiobox.width + 6 self.label.top = self.label.height - self.radiobox.height self.fit_to_children()
def __init__(self, parent=None, width=200, placeholder=u"Enter some text ..", value=u""): LUIObject.__init__(self, x=0, y=0, w=width, h=0) LUICallback.__init__(self) self.bgLeft = LUISprite(self, "InputField_Left", "skin") self.bgMid = LUISprite(self, "InputField", "skin") self.bgRight = LUISprite(self, "InputField_Right", "skin") self.textContent = LUIObject(self) self.textContent.margin = (5, 8, 5, 8) self.textContent.clip_bounds = (0, 0, 0, 0) self.textContent.height = self.bgMid.height - 10 self.textContent.width = self.width - 16 self.textScroller = LUIObject(parent=self.textContent, x=0, y=0) self.text = LUILabel(parent=self.textScroller, text=u"", shadow=True) self.cursor = LUISprite(self.textScroller, "blank", "skin", x=0, y=0, w=2, h=15.0) self.cursor.color = (0.5, 0.5, 0.5) self.cursor.margin_top = 3 self.cursor.z_offset = 20 self.cursor_index = 0 self.cursor.hide() self.value = value self.placeholder = LUILabel(parent=self.textContent, text=placeholder, shadow=False) self.placeholder.color = (1, 1, 1, 0.5) self.bgMid.width = self.width - self.bgLeft.width - self.bgRight.width self.bgMid.left = self.bgLeft.width self.bgRight.left = self.bgMid.width + self.bgMid.left if len(self.value) > 0: self.placeholder.hide() self.tickrate = 1.0 self.tickstart = 0.0 self.fit_to_children() self._render_text() if parent is not None: self.parent = parent
def __init__(self, width=200, options=None, selectedOption=None, **kwargs): LUIObject.__init__(self, x=0, y=0, w=width+4, h=0, solid=True) LUIInitialState.init(self, kwargs) LUICallback.__init__(self) # The selectbox has a small border, to correct this we move it self.margin_left = -2 self.bgLeft = LUISprite(self, "Selectbox_Left", "skin") self.bgMid = LUISprite(self, "Selectbox", "skin") self.bgRight = LUISprite(self, "Selectbox_Right", "skin") self.bgMid.width = self.width - self.bgLeft.width - self.bgRight.width self.bgMid.left = self.bgLeft.width self.bgRight.left = self.bgMid.width + self.bgMid.left self.bgRight.z_offset = 1 self.labelContainer = LUIObject(self, x=10, y=6, w=width - 20 - self.bgRight.width, h=self.bgMid.height - 6) self.labelContainer.clip_bounds = (0,0,0,0) self.label = LUILabel(parent=self.labelContainer, text=u"Select an option ..", shadow=True) self.bgRight.bind("mouseover", self._knob_mouseover) self.bgRight.bind("mouseout", self._knob_mouseout) self.bgRight.bind("click", self.on_click) self.bgRight.bind("click", self.on_click) self.fit_to_children() self.dropMenu = UISelectdrop(parent=self, width=width) self.dropMenu.top = self.bgMid.height - 7 self.dropMenu.topmost = True self.dropOpen = False self.dropMenu.hide() self.options = [] self.currentOptionId = None if options is not None: self.options = options self._select_option(selectedOption)
def __init__(self, parent=None): LUIPopup.__init__(self, parent=parent, width=240, height=146) LUICallback.__init__(self) self.field = LUIObject(self.content, x=0, y=0, w=128, h=128) self.fieldBG = LUISprite(self.field, "blank", "skin") self.fieldBG.size = (128, 128) self.fieldBG.color = (0.2, 0.6, 1.0) self.fieldFG = LUISprite(self.field, "ColorpickerFieldOverlay", "skin") self.fieldFG.pos = (-2, 0) self.fieldBG.bind("mousedown", self._start_field_dragging) self.fieldBG.bind("mouseup", self._stop_field_dragging) self.fieldHandle = LUISprite(self.field, "ColorpickerFieldHandle", "skin") self.fieldHandle.bind("mousedown", self._start_field_dragging) self.fieldHandle.bind("mouseup", self._stop_field_dragging) self.fieldDragging = False self.hueSlider = LUIObject(self.content, x=140, y=0, w=40, h=128) self.hueSliderFG = LUISprite(self.hueSlider, "ColorpickerHueSlider", "skin") self.hueHandle = LUISprite(self.hueSlider, "ColorpickerHueHandle", "skin") self.hueHandle.left = (self.hueSliderFG.width - self.hueHandle.width) / 2.0 self.hueHandle.top = 50 self.hueDragging = False self.hueSlider.bind("mousedown", self._start_hue_dragging) self.hueSlider.bind("mouseup", self._stop_hue_dragging) self.labels = LUIVerticalLayout(self.content, width=40) self.labels.pos = (177, 42) colors = [u"R", u"G", u"B"] self.colorLabels = [] for color in colors: label = LUILabel(text=color, shadow=True) label.color = (1, 1, 1, 0.3) valueLabel = LUILabel(text=u"255", shadow=True) valueLabel.right = 0 self.labels.add_row(label, valueLabel) self.colorLabels.append(valueLabel) self.activeColor = LUIObject(self.content, x=177, y=0) self.activeColorBG = LUISprite(self.activeColor, "blank", "skin") self.activeColorFG = LUISprite(self.activeColor, "ColorpickerActiveColorOverlay", "skin") self.activeColorBG.size = (40, 40) self.activeColorBG.pos = (2, 0) self.activeColorBG.color = (0.2, 0.6, 1.0, 1.0) self.closeButton = LUIButton(parent=self.content, text=u"Done", width=45, template="ButtonMagic") self.closeButton.left = 177 self.closeButton.top = 98 self.closeButton.bind("click", self._close_popup) self._set_hue(0.5) self._set_sat_val(0.5, 0.5) self.widget = parent
def __init__(self, parent=None): LUIPopup.__init__(self, parent=parent, width=240, height=146) LUICallback.__init__(self) self.field = LUIObject(self.content, x=0, y=0, w=128, h=128) self.fieldBG = LUISprite(self.field, "blank", "skin") self.fieldBG.size = (128, 128) self.fieldBG.color = (0.2, 0.6, 1.0) self.fieldFG = LUISprite(self.field, "ColorpickerFieldOverlay", "skin") self.fieldFG.pos = (-2, 0) self.fieldBG.bind("mousedown", self._start_field_dragging) self.fieldBG.bind("mouseup", self._stop_field_dragging) self.fieldHandle = LUISprite(self.field, "ColorpickerFieldHandle", "skin") self.fieldHandle.bind("mousedown", self._start_field_dragging) self.fieldHandle.bind("mouseup", self._stop_field_dragging) self.fieldDragging = False self.hueSlider = LUIObject(self.content, x=140, y=0, w=40, h=128) self.hueSliderFG = LUISprite(self.hueSlider, "ColorpickerHueSlider", "skin") self.hueHandle = LUISprite(self.hueSlider, "ColorpickerHueHandle", "skin") self.hueHandle.left = (self.hueSliderFG.width - self.hueHandle.width) / 2.0 self.hueHandle.top = 50 self.hueDragging = False self.hueSlider.bind("mousedown", self._start_hue_dragging) self.hueSlider.bind("mouseup", self._stop_hue_dragging) self.labels = LUIVerticalLayout(self.content, width=40) self.labels.pos = (177, 42) colors = [u"R", u"G", u"B"] self.colorLabels = [] for color in colors: label = LUILabel(text=color, shadow=True) label.color = (1, 1, 1, 0.3) valueLabel = LUILabel(text=u"255", shadow=True) valueLabel.right = 0 self.labels.add(label, valueLabel) self.colorLabels.append(valueLabel) self.activeColor = LUIObject(self.content, x=177, y=0) self.activeColorBG = LUISprite(self.activeColor, "blank", "skin") self.activeColorFG = LUISprite(self.activeColor, "ColorpickerActiveColorOverlay", "skin") self.activeColorBG.size = (40, 40) self.activeColorBG.pos = (2, 0) self.activeColorBG.color = (0.2, 0.6, 1.0, 1.0) self.closeButton = LUIButton(parent=self.content, text=u"Done", width=45, template="ButtonGreen") self.closeButton.left = 177 self.closeButton.top = 98 self.closeButton.bind("click", self._close_popup) self._set_hue(0.5) self._set_sat_val(0.5, 0.5) self.widget = parent