def createControls(self): """Create controls that will used by panel """ self.back = render_engine.Gui.createWidgetT( "Window", "WindowPanel_Back", mygui.IntCoord(0, render_engine.Window.height - self.height, render_engine.Window.width, self.height), mygui.Align(), "Popup") self.buttonRight = render_engine.Gui.createWidgetT( "Button", "ScrollButton_Right", mygui.IntCoord(render_engine.Window.width - 49, render_engine.Window.height - 49, 44, 44), mygui.Align(), "Popup") self.buttonLeft = render_engine.Gui.createWidgetT( "Button", "ScrollButton_Left", mygui.IntCoord(5, render_engine.Window.height - 49, 44, 44), mygui.Align(), "Popup") self.buttonRight.setEnabled(False) self.buttonLeft.setEnabled(False) self.buttonLeft.subscribeEventMouseButtonClick(self, "_onScrollLeft") self.buttonRight.subscribeEventMouseButtonClick(self, "_onScrollRight") self.buttonContainer = render_engine.Gui.createWidgetT( "Window", "WindowPanel_Container", mygui.IntCoord(55, render_engine.Window.height - self.buttonSize[1], render_engine.Window.width - 110, self.buttonSize[1]), mygui.Align(), "Popup")
def addPropertyWidget(self, type, skin, name): p_text = self.widget.createWidgetT("StaticText", "StaticText", mygui.IntCoord(0, 0, 0, 0), mygui.Align()) p_text.setCaption(name) p_text.setCoord( self.widget.getSize().width - self.pWidget_width - textOffset2 - textOffset1 - p_text.getTextSize().width, self.pWidget_Y, p_text.getTextSize().width, p_text.getTextSize().height) p_text.setVisible(True) self.texts.append(p_text) p_widget = self.widget.createWidgetT( type, skin, mygui.IntCoord( self.widget.getSize().width - self.pWidget_width - textOffset2, self.pWidget_Y, self.pWidget_width, self.pWidget_height), mygui.Align()) p_widget.setVisible(True) self.widgets.append(p_widget) self.pWidget_Y += self.pWidget_height + textOffset1 global need_scroll_view_canvas_sz_update need_scroll_view_canvas_sz_update = True self.needSizeUpdate = True self.updateSize()
def show(self): """show button """ if not self.__showed: self.button = render_engine.Gui.createWidgetT("Button", self._skin, mygui.IntCoord(self.position[0], self.position[1], self.scale[0], self.scale[1]), mygui.Align(), "Popup", "") self.icon = self.button.createWidgetT("StaticImage", "StaticImage", mygui.IntCoord(5, 5, 10, 10), mygui.Align()) self.icon.setNeedKeyFocus(False) self.icon.setNeedMouseFocus(False) if self._icon_name is not None: self.icon.setImageTexture(self._icon_name) if self.getText() is not None: self.button.setCaption(self.getText()) self._widget = self.button self.calculateAutoSize() self.__setActions() self.__showed = True self.setEnabled(True) self.setVisible(True)
def __init__(self): IconButton.__init__(self) self._widget = render_engine.Gui.createWidgetT("Button", "MainPanel_OutputWindowButton", mygui.IntCoord(0, 0, 0, 0), mygui.Align(), "Popup") self.autoSize = False self.iconWidget = self._widget.createWidgetT("StaticImage", "StaticImage", mygui.IntCoord(0, 0, 10, 10), mygui.Align()) self.iconWidget.setNeedKeyFocus(False) self.iconWidget.setNeedMouseFocus(False) self.deleteControl = render_engine.Gui.createWidgetT("Button", "MainPanel_OutputWindowDelButton", mygui.IntCoord(0, 0, 20, 20), mygui.Align(), "Popup") self.deleteControl.setVisible(False) self.deleteControl.subscribeEventMouseButtonClick(self, '_onDeleteButtonClicked') # handler for window deletion from output set self.deleteHandler = None self.setScale((70, 80))
def createControls(self): """Create widgets that need to control ui """ pos = (render_engine.Window.width - self.corner_size[0], render_engine.Window.height - self.corner_size[1]) self._widget = render_engine.Gui.createWidgetT("Window", "MainPanel_Corner", mygui.IntCoord(pos[0], pos[1], self.corner_size[0], self.corner_size[1]), mygui.Align(), "Popup") self.setPosition(pos) self.setScale(self.corner_size) self.setVisible(False) self.setEnabled(True) self.toolsLine = render_engine.Gui.createWidgetT("Window", "MainPanel_ToolsLine", mygui.IntCoord(0, 0, 0, 0), mygui.Align(), "Popup") self.setVisible(False) self.setEnabled(False) # create buttons buttonWindows = MainPanelButton() buttonWindows._setScAddr(keynodes.ui.set_output_windows) buttonWindows.setVisible(True) buttonWindows.setEnabled(True) self.appendButton(buttonWindows)
def _eventToolTip(self, _widget, _info): """Event on tooltip state change """ if _info.type == mygui.ToolTipInfo.Show: if self.tooltip is not None: return self.tooltip = render_engine.Gui.createWidgetT( "Window", "MenuTop_ToolTip", mygui.IntCoord(0, 0, 10, 10), mygui.Align(), "ToolTip") text = self.tooltip.createWidgetT("StaticText", "MenuTop_ToolTipText", mygui.IntCoord(3, 3, 0, 0), mygui.Align()) text.setCaption(unicode(self.tooltip_value)) tsize = text.getTextSize() self.tooltip.setSize(tsize.width + 6, tsize.height + 6) text.setSize(tsize) self.tooltip.setPosition(_info.point) self.tooltip.setVisible(True) self.tooltip.setAlpha(0.8) elif _info.type == mygui.ToolTipInfo.Hide: render_engine.Gui.destroyWidget(self.tooltip) self.tooltip = None
def addButton(self, _format): """Adds button to panel @param _format: sc-node that designate format associated with button @type _format: sc_addr """ button = self.buttonContainer.createWidgetT( "Button", "WindowPanel_Button", mygui.IntCoord( self.scrollOffset + self.buttonSize[0] * len(self.buttons), 2, self.buttonSize[0], self.buttonSize[1]), mygui.Align()) icon = button.createWidgetT( "StaticImage", "StaticImage", mygui.IntCoord(10, 8, button.getWidth() - 20, button.getHeight() - 20), mygui.Align()) icon.setNeedKeyFocus(False) icon.setNeedMouseFocus(False) icon_name = self.getFormatIcon(_format) if icon_name is not None: icon.setImageTexture(icon_name) self.buttons.append(button) button.setUserString("id", str(button)) # subscribing click event button.subscribeEventMouseButtonClick(self, '_onButtonClick') self.addr2widget[str(_format)] = button self.widget2addr[str(button)] = _format self.updateButtonsPosition() self.updateScrollButtons()
def create_panel(): """Creates panel and preparing it for using """ global panel_window global lock_button assert not panel_window panel_window = suit.core.render.engine.Gui.createWidgetT("Window", "Panel", mygui.IntCoord(panel_side_width - panel_width, suit.core.render.engine.Window.height - 530, panel_width, panel_height), mygui.Align()) panel_window.setVisible(False) # don't show panel at startup panel_window.setAlpha(0.9) # make it with small alpha panel_window.subscribeEventRootMouseChangeFocus(eventRootMouseChangeFocus, '') panel_window.subscribeEventMouseMove(eventPanelMouseMoved, '') global scroll_view scroll_view = panel_window.createWidgetT("ScrollView", "ScrollView", mygui.IntCoord(0, 25, panel_width - panel_side_width - 3, panel_height - 35), mygui.Align()) scroll_view.setVisible(True) lock_button = panel_window.createWidgetT("Button", "Button", mygui.IntCoord(panel_width + lock_button_offset[0], lock_button_offset[1], 35, 35), mygui.Align()) lock_button.setVisible(True) lock_button.setStateCheck(panel_locked) lock_button.subscribeEventMouseButtonClick(eventLockButtonMouseClick, '')
def createEls(self): self.window = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(self.window_x, self.window_y, self.window_w, self.window_h), mygui.Align(), "Info") self.buttonOk = self.window.createWidgetT( "Button", "Button", mygui.IntCoord(self.window_w - self.button_w - 30, (self.window_h - self.button_h) / 2, self.button_w, self.button_h), mygui.Align()) # self.buttonHideShow = self.window.createWidgetT( # "Button", "Button", # mygui.IntCoord(self.window_w - 20 - 5, # 5, # 20, # self.button_h), # mygui.Align()) # # self.edit = self.window.createWidgetT( # "Edit", "Edit", # mygui.IntCoord(5, # 5, # self.window_w - self.button_w - 20 - 20, # self.button_h), # mygui.Align()) self.buttonHideShow = self.window.createWidgetT( "Button", "Button", mygui.IntCoord(self.window_w - 20 - 5, (self.window_h - self.button_h) / 2, 20, self.button_h), mygui.Align()) self.edit = self.window.createWidgetT( "Edit", "Edit", mygui.IntCoord(5, (self.window_h - self.button_h) / 2, self.window_w - self.button_w - 20 - 20, self.button_h), mygui.Align()) self.window.setVisible(True) self.buttonOk.setVisible(True) self.buttonOk.setCaption("Ok") self.buttonHideShow.setVisible(True) self.buttonHideShow.setCaption("<>") self.edit.setVisible(True) self.edit.setCaption( "вывести полную семантическую окрестность понятия треугольника") #self.edit.setCaption("как выглядит тупоугольный треугольник") self.buttonOk.subscribeEventMouseButtonClick(self, "_buttonWndOutClick") self.buttonHideShow.subscribeEventMouseButtonClick( self, "_buttonShowHideClick") self._buttonShowHideClick("_buttonShowHideClick")
def initialize(): """Initialize mode show widget """ global _show_mode_window global _show_mode_text _show_mode_window = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(0, 0, 0, 0), mygui.Align(), "Popup", "") _show_mode_text = _show_mode_window.createWidgetT( "StaticText", "StaticText", mygui.IntCoord(7, 7, 0, 0), mygui.Align())
def createControls(self): """Create controls that will used by panel """ self._widget = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(0, 0, 0, 0), mygui.Align(), "Popup") self.itemContainer = self._widget.createWidgetT( "Window", "WindowPanel_Container", mygui.IntCoord(5, 25, self.width - 10, self.height - 50), mygui.Align())
def __init__(self): IconButton.__init__(self) self._widget = render_engine.Gui.createWidgetT("Button", "MainPanel_Button", mygui.IntCoord(0, 0, 0, 0), mygui.Align(), "Popup") self.autoSize = False self.iconWidget = self._widget.createWidgetT("StaticImage", "StaticImage", mygui.IntCoord(0, 0, 10, 10), mygui.Align()) self.iconWidget.setNeedKeyFocus(False) self.iconWidget.setNeedMouseFocus(False)
def createControls(self): """Create controls """ self.back = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(0, 0, 10, 10), mygui.Align(), "Popup") self.buttonContainer = self.back.createWidgetT( "ScrollView", "ScrollView", mygui.IntCoord(0, 0, 0, 0), mygui.Align()) self.head_text = self.back.createWidgetT("StaticText", "StaticTextHead", mygui.IntCoord(0, 0, 0, 0), mygui.Align()) self.back.setVisible(False)
def updateList(self): """Updates list of windows """ # remove old buttons self.clearList() # get output arcs from format import sc_core.constants, sc_core.pm import suit.core.sc_utils as sc_utils session = core.Kernel.session() it = session.create_iterator( session.sc_constraint_new(sc_core.constants.CONSTR_3_f_a_a, self.format, sc_core.pm.SC_A_CONST, sc_core.pm.SC_N_CONST), True) while not it.is_over(): # check if founded node designate sc-window if sc_utils.checkIncToSets(session, it.value(2), [keynodes.ui.sc_window], sc_core.pm.SC_A_CONST): button = self.buttonContainer.createWidgetT( "Button", "Button", mygui.IntCoord(0, 0, 0, 0), mygui.Align()) button.setCaption(unicode(session.get_idtf(it.value(2)))) button.subscribeEventMouseButtonClick(self, '_onButtonClick') id = str(button) button.setUserString("id", id) self.widget2addr[id] = it.value(2) button.setStateCheck( core.Kernel.getSingleton().haveOutputWindow(it.value(2))) self.buttons.append(button) it.next()
def _createWidget(self): """Creates panel widget """ self.panel = self.parent.createWidgetT("Window", "StaticImage", mygui.IntCoord(5, 5, 10, 10), mygui.Align()) self._create_value_widgets()
def _createArea(self): # print dir(mygui) self.statictext = render_engine.Gui.createWidgetT( "StaticText", "StaticText", mygui.IntCoord(0, 0, 91, 91), mygui.Align(mygui.ALIGN_VSTRETCH), "Main") self.statictext.setTextColour(mygui.Colour(0.0, 0.0, 0.0, 1.0)) #self.statictext.setCaption(self.getContent()) self.statictext.setNeedMouseFocus(False)
def _createStaticText(self): self.widget = render_engine.Gui.createWidgetT( "StaticText", "StaticTextBack", mygui.IntCoord(0, 0, 91, 91), mygui.Align(mygui.ALIGN_VSTRETCH), "Main") self.widget.setVisible(False) self.widget.setTextColour(mygui.Colour(0.0, 0.0, 0.0, 1.0)) #self.widget.setCaption(self.getContent()) self.widget.setNeedMouseFocus(False)
def _createEditText(self): """Create widget to edit text value """ self.__viewer.widget = render_engine.Gui.createWidgetT( "Edit", "Edit", mygui.IntCoord(0, 0, 91, 91), mygui.Align(mygui.ALIGN_VSTRETCH), "Main") self.__viewer.widget.setVisible(False) self.__viewer.widget.setTextColour(mygui.Colour(0.0, 0.0, 0.0, 1.0)) self.__viewer.widget.setEditMultiLine(True)
def _createHelpWindow(): """Creates help window """ global _help_window global _help_window_static_text _help_window = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(5, render_engine.Window.height - 5 - _help_window_height, _help_window_width, _help_window_height), mygui.Align(), "Popup", "") _help_window_static_text = _help_window.createWidgetT( "StaticText", "StaticText", mygui.IntCoord(7, 7, _help_window_width - 14, _help_window_height - 14), mygui.Align()) # _help_window_static_text.setCaption(_help_window_text) _help_window.setVisible(False) _help_window.setAlpha(0.8)
def __init__(self, _container, kernel): objects.ObjectOverlay.__init__(self) self.kernel = kernel self._widget = _container.createWidgetT("Button", "Button", mygui.IntCoord(0, 0, 0, 0), mygui.Align()) self._widget.setVisible(False) self._widget.setNeedMouseFocus(False) self.autoSize = False
def controlPanel(self): self.butWidth = 80 self.butHeight = 20 self.butAmount = 5 begin = (self.x - self.butWidth * self.butAmount) begin = begin / 2 self.wpanel = self.gui.createWidgetT( "Widget", "Panel", mygui.IntCoord(1, self.y - 40, self.x, 40), mygui.Align(), "Popup", '') self.wpanel.setAlpha(0.5) self.slider = self.wpanel.createWidgetT("HScroll", "HSlider", mygui.IntCoord(50, 5, 700, 5), mygui.Align()) self.slider.setScrollRange(100) self.stopbut = self.wpanel.createWidgetT( "Button", "Button", mygui.IntCoord(begin, 15, self.butWidth, self.butHeight), mygui.Align()) self.stopbut.setCaption("Stop") self.stopbut.subscribeEventMouseButtonClick(self, '_stop') begin = begin + self.butWidth self.backbut = self.wpanel.createWidgetT( "Button", "Button", mygui.IntCoord(begin, 15, self.butWidth, self.butHeight), mygui.Align()) self.backbut.setCaption("Back") begin = begin + self.butWidth self.plbut = self.wpanel.createWidgetT( "Button", "Button", mygui.IntCoord(begin, 15, self.butWidth, self.butHeight), mygui.Align()) if self.audioPlayer.isPlaying(): self.plbut.setCaption("Pause") else: self.plbut.setCaption("Play") self.plbut.subscribeEventMouseButtonClick(self, '_play_pause') begin = begin + self.butWidth self.forwbut = self.wpanel.createWidgetT( "Button", "Button", mygui.IntCoord(begin, 15, self.butWidth, self.butHeight), mygui.Align()) self.forwbut.setCaption("Forward") begin = begin + self.butWidth self.volslider = self.wpanel.createWidgetT( "HScroll", "HSlider", mygui.IntCoord(begin, 23, self.butWidth, 5), mygui.Align()) self.volslider.setScrollRange(100) # print dir(self.slider) # print self.volslider.setState.__doc__ #self.controller = mygui.ControllerFadeAlpha(0, 1, True) #mygui.ControllerManager.getInstance().addItem(self.wpanel, self.controller) self.panel = True
def createPanel(self): """Creates main panel """ assert self.panel is None self.panel = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(0, 0, 10, 10), mygui.Align(), "Info", "") self.button_ok = self.panel.createWidgetT( "Button", "Button", mygui.IntCoord(10, 0, 50, 20), mygui.Align()) self.button_cancel = self.panel.createWidgetT( "Button", "Button", mygui.IntCoord(10, 0, 50, 20), mygui.Align()) self.button_ok.setCaption("Ok") self.button_cancel.setCaption("Cancel") self.button_ok.subscribeEventMouseButtonClick(self, '_onButtonOkClick') self.button_cancel.subscribeEventMouseButtonClick( self, '_onButtonCancelClick') self.panel.setVisible(False)
def createWidget(self): """Creates widget that allows to control item """ assert scroll_view posY = 1 # initial y position if self.prev_item: posY = self.prev_item.widget.getPosition().top + self.prev_item.widget.getSize().height + 1 self.widget = scroll_view.createWidgetT("Button", "Button", mygui.IntCoord(0, posY, scroll_view.getSize().width - scroll_bar_width, 20), mygui.Align()) self.widget.setVisible(True) self.widget.subscribeEventMouseButtonClick(self, "_eventPlanetButtonClick")
def __init__(self): ObjectOverlay.__init__(self) self.width = 250 self.height = 450 self._widget = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(-10, (render_engine.Window.height - self.height) / 2, self.width, self.height), mygui.Align()) self.infoText = self._widget.createWidgetT( "StaticText", "StaticText", mygui.IntCoord(15, 15, self.width - 30, self.height - 30), mygui.Align()) self.setVisible(False) self.setEnabled(True) self.object = None # flag to update information self.needInfoUpdate = False
def createPanel(self, string="Panel"): assert scroll_view posY = 0 offsetY = 0 if self.prev_panel: offsetY = self.prev_panel.widget.getSize().height + 1 posY = self.prev_panel.widget.getPosition().top else: offsetY = 0 self.widget = scroll_view.createWidgetT( "Window", "Panel", mygui.IntCoord(0, posY + offsetY, scroll_view.getCanvasSize().width, 200), mygui.Align()) self.widget.setVisible(True) self.caption = self.widget.createWidgetT("StaticText", "StaticText", mygui.IntCoord(0, 0, 0, 0), mygui.Align()) self.caption.setCaption(string) self.caption.setCoord( (self.widget.getSize().width - self.caption.getTextSize().width) / 2, textOffset1, self.caption.getTextSize().width, self.caption.getTextSize().height) self.caption.setVisible(True) self.roll_button = self.widget.createWidgetT( "Button", "ButtonMinusPlus", mygui.IntCoord(0, 0, 20, 20), mygui.Align()) self.roll_button.setPosition( self.widget.getSize().width - self.roll_button.getSize().width - textOffset2, textOffset1) self.roll_button.setVisible(True) self.roll_button.subscribeEventMouseButtonClick( self, "_eventRollButtonClick") self.pWidget_Y = self.caption.getSize( ).height + textOffset2 + textOffset1 self.caption_height = self.pWidget_Y
def drawUI(self): """ This function draw user panel @return: None """ panelWidth = 0 textWidth = 0 if self._curentUser._name is not None: textWidth = len(self._curentUser._name) * self._fontSize * 7 / 10 panelWidth = textWidth + self._border * 4 + self._buttonSize else: textWidth = self._size[0] self._back = render_engine.Gui.createWidgetT( "Window", "Button", mygui.IntCoord(self._pos[0], self._pos[1], panelWidth, self._size[1]), mygui.Align(), "Popup", "") self._button = self._back.createWidgetT( "Button", "Button", mygui.IntCoord(self._border, self._border, self._buttonSize, self._buttonSize), mygui.Align()) self._icon = self._button.createWidgetT( "StaticImage", "StaticImage", mygui.IntCoord(self._iconBorder, self._iconBorder, self._iconSize, self._iconSize), mygui.Align()) self._text = self._back.createWidgetT( "StaticText", "StaticTextBack", mygui.IntCoord(self._border * 2 + self._buttonSize, self._size[1] / 2 - self._fontSize / 2, textWidth, self._fontSize), mygui.Align(), "Main") self._text.setCaption(self._curentUser._name) self._icon.setNeedKeyFocus(False) self._icon.setNeedMouseFocus(False) if self._curentUser._icon is not None: self._icon.setImageTexture(self._curentUser._icon)
def createEls(self): self.window = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(10, render_engine.Window.height - self.window_h - 60, self.window_w, self.window_h), mygui.Align()) self.buttonOk = self.window.createWidgetT( "Button", "Button", mygui.IntCoord(self.window_w - self.button_w - 20 - 10, 5, self.button_w, self.button_h), mygui.Align()) self.buttonHideShow = self.window.createWidgetT( "Button", "Button", mygui.IntCoord(self.window_w - 20 - 5, 5, 20, self.button_h), mygui.Align()) self.edit = self.window.createWidgetT( "Edit", "Edit", mygui.IntCoord(5, 5, self.window_w - self.button_w - 20 - 20, self.button_h), mygui.Align()) self.window.setVisible(True) self.buttonOk.setVisible(True) self.buttonOk.setCaption("Ok") self.buttonHideShow.setVisible(True) self.buttonHideShow.setCaption("+") self.edit.setVisible(True) self.edit.setCaption( "вывести полную семантическую окрестность понятия плоскость") #self.edit.setCaption("как выглядит тупоугольный треугольник") self.buttonOk.subscribeEventMouseButtonClick(self, "_buttonWndOutClick") self.buttonHideShow.subscribeEventMouseButtonClick( self, "_buttonShowHideClick")
def createPanel(self): """Create controls panel """ assert self.panel is None self.panel = render_engine.Gui.createWidgetT( "Window", "Panel", mygui.IntCoord(0, 0, self.width, self.height), mygui.Align(), "Info", "") self.types_list = self.panel.createWidgetT( "List", "List", mygui.IntCoord(10, 10, self.width - 20, 165), mygui.Align()) self.types_list.subscribeEventChangePosition(self, 'item_selected') self.button_ok = self.panel.createWidgetT( "Button", "Button", mygui.IntCoord(10, self.height - 35, 50, 25), mygui.Align()) self.button_cancel = self.panel.createWidgetT( "Button", "Button", mygui.IntCoord(60, self.height - 35, 60, 25), mygui.Align()) self.button_ok.setCaption("Ok") self.button_cancel.setCaption("Cancel") self.button_ok.setEnabled(False) self.button_ok.subscribeEventMouseButtonClick(self, '_onButtonOkClick') self.button_cancel.subscribeEventMouseButtonClick( self, '_onButtonCancelClick') self.checkbox_edit = self.panel.createWidgetT( "Button", "CheckBox", mygui.IntCoord(10, 185, self.width - 20, 22), mygui.Align()) self.checkbox_edit.setCaption("Create editor") self.checkbox_edit.setStateCheck(False) self.checkbox_edit.setEnabled(False) self.checkbox_edit.subscribeEventMouseButtonClick(self, "_onCheckBox") self.panel.setVisible(False)
def create_window(): """Creates window and preparing it for using """ global panel_window assert not panel_window panel_window = suit.core.render.engine.Gui.createWidgetT( "Window", "Window", mygui.IntCoord(suit.core.render.engine.Window.width - panel_width - 5, 35, panel_width, panel_height), mygui.Align()) panel_window.setVisible(False) # don't show panel at startup panel_window.setAlpha(0.9) # make it with small alpha panel_window.setCaption("Object Properties") global scroll_view scroll_view = panel_window.createWidgetT( "ScrollView", "ScrollView", mygui.IntCoord(0, 0, panel_width - 10, panel_height - panel_caption_height), mygui.Align()) scroll_view.setCanvasSize(scroll_view.getSize().width - scroll_bar_width, scroll_view.getSize().height) global main_proppanel main_proppanel = PropertyPanel() main_proppanel.createPanel("Main Properties") main_proppanel.addPropertyWidget("Edit", "Edit", "Object Name") main_proppanel.addPropertyWidget("Edit", "Edit", "Year") main_proppanel.addPropertyWidget("Edit", "Edit", "Day") main_proppanel.addPropertyWidget("Edit", "Edit", "Radius") main_proppanel.addPropertyWidget("Edit", "Edit", "Orbital radius") prop_panels.append(main_proppanel) global second_proppanel second_proppanel = PropertyPanel(main_proppanel) second_proppanel.createPanel("Other Properties") prop_panels.append(second_proppanel)
def update(dt): global need_scroll_view_canvas_sz_update global scroll_view global need_panel_position_update for panel in prop_panels: if panel.needSizeUpdate: maxSize_y = (textOffset1 + panel.pWidget_height) * len( panel.widgets) + panel.caption_height + textOffset1 minSize_y = panel.caption_height offset_y = panel.moveSpeed * move_time if panel.moveSpeed > 0: newSize_y = min( [maxSize_y, panel.widget.getSize().height + offset_y]) panel.widget.setSize(panel.widget.getSize().width, newSize_y) if newSize_y == maxSize_y: panel.needSizeUpdate = False elif panel.moveSpeed < 0: newSize_y = max( [minSize_y, panel.widget.getSize().height + offset_y]) panel.widget.setSize(panel.widget.getSize().width, newSize_y) if newSize_y == minSize_y: panel.needSizeUpdate = False need_scroll_view_canvas_sz_update = True need_panel_position_update = True if need_panel_position_update: for panel in prop_panels: if panel.prev_panel: panel.widget.setPosition( panel.widget.getPosition().left, panel.prev_panel.widget.getSize().height + textOffset1) need_panel_position_update = False if need_scroll_view_canvas_sz_update: canvasSize = 0 for panel in prop_panels: canvasSize += panel.widget.getSize().height scroll_view.setCanvasSize(scroll_view.getCanvasSize().width, canvasSize) scroll_view.setCanvasAlign(mygui.Align(mygui.Align.Enum.Top)) need_scroll_view_canvas_sz_update = False