def __initCtrl(self): """ Initialize the controls. """ # IDs [self.__editorID] = PyutUtils.assignID(1) sizer = BoxSizer(VERTICAL) self.__lblEditor = StaticText(self, -1, _("Editor")) self.__txtEditor = TextCtrl(self, -1, size=(100, 20)) sizer.Add(self.__lblEditor, 0, ALL, DlgFastEditOptions.GAP) sizer.Add(self.__txtEditor, 0, ALL, DlgFastEditOptions.GAP) hs = BoxSizer(HORIZONTAL) btnOk = Button(self, ID_OK, _("&OK")) hs.Add(btnOk, 0, ALL, DlgFastEditOptions.GAP) sizer.Add(hs, 0, CENTER) self.SetAutoLayout(True) self.SetSizer(sizer) sizer.Fit(self) sizer.SetSizeHints(self) btnOk.SetDefault() self.Bind(EVT_TEXT, self.__OnText, id=self.__editorID) self.__setValues() self.Center() self.__changed: bool = False
def __init__(self, parent, ID, pyutUseCase): """ Constructor. @since 1.0 @author Philippe Waelti <*****@*****.**> """ super().__init__(parent, ID, _("Use Case Edit"), style=RESIZE_BORDER | CAPTION) # Associated PyutUseCase self._pyutUseCase = pyutUseCase self.SetAutoLayout(True) self._text = self._pyutUseCase.getName() self._returnAction = -1 # describe how the user exited the dialog box label = StaticText(self, -1, _("Use case text")) self._txtCtrl = TextCtrl(self, TXT_USECASE, self._text, size=(400, 180), style=TE_MULTILINE) self._txtCtrl.SetFocus() # text events self.Bind(EVT_TEXT, self._onTxtChange, id=TXT_USECASE) btnOk = Button(self, OK, _("&Ok")) btnOk.SetDefault() btnCancel = Button(self, CANCEL, _("&Cancel")) self.Bind(EVT_BUTTON, self._onCmdOk, id=OK) self.Bind(EVT_BUTTON, self._onCmdCancel, id=CANCEL) szrButtons = BoxSizer(HORIZONTAL) szrButtons.Add(btnOk, 0, RIGHT, 10) szrButtons.Add(btnCancel, 0, ALL) szrMain = BoxSizer(VERTICAL) szrMain.Add(label, 0, BOTTOM, 5) szrMain.Add(self._txtCtrl, 1, EXPAND | BOTTOM, 10) szrMain.Add(szrButtons, 0, ALIGN_CENTER_HORIZONTAL) # Border szrBorder = BoxSizer(VERTICAL) szrBorder.Add(szrMain, 1, EXPAND | ALL, 10) self.SetSizer(szrBorder) szrBorder.Fit(self) self.Centre() self.ShowModal()
def __init__(self, lstClasses): super().__init__(None, ID_ANY, "Classes choice", style=CAPTION | RESIZE_BORDER, size=(400, 500)) # Create not chosen classes listBox self._listBox1 = ListBox(self, ID_ANY, style=LB_EXTENDED | LB_ALWAYS_SB | LB_SORT, size=(320, 400)) for klass in lstClasses: self._listBox1.Append(klass.__name__, klass) # Create chosen classes listBox self._listBox2 = ListBox(self, ID_ANY, style=LB_EXTENDED | LB_ALWAYS_SB | LB_SORT, size=(320, 400)) # Create buttons btnOk = Button(self, ID_OK, "Ok") btnToTheRight = Button(self, ID_BTN_TO_THE_RIGHT, "=>") btnToTheLeft = Button(self, ID_BTN_TO_THE_LEFT, "<=") # Callbacks self.Bind(EVT_BUTTON, self._onBtnToTheRight, id=ID_BTN_TO_THE_RIGHT) self.Bind(EVT_BUTTON, self._onBtnToTheLeft, id=ID_BTN_TO_THE_LEFT) # Create info label lblChoice = StaticText(self, ID_ANY, _("Choose classes to reverse: ")) # Create buttons sizer szrBtn = BoxSizer(VERTICAL) szrBtn.Add(btnToTheRight, 0, EXPAND) szrBtn.Add(btnToTheLeft, 0, EXPAND) # Create lists and buttons sizer szrLB = BoxSizer(HORIZONTAL) szrLB.Add(self._listBox1, 0, EXPAND) szrLB.Add(szrBtn, 0, EXPAND) szrLB.Add(self._listBox2, 0, EXPAND) # Create sizer box = BoxSizer(VERTICAL) box.Add(lblChoice, 0, EXPAND) box.Add(szrLB, 0, EXPAND) box.Add(btnOk, 0, EXPAND) box.Fit(self) self.SetAutoLayout(True) self.SetSizer(box) # Show dialog self.ShowModal() if self.GetReturnCode() == ID_CANCEL: # abort -> empty right column while self._listBox2.GetCount() > 0: data = self._listBox2.GetClientData(0) name = self._listBox2.GetString(0) self._listBox1.Append(name, data) self._listBox2.Delete(0)
def __init__(self, parent, ID, title): """ Constructor. @since 1.0 @author C.Dutoit """ # dialog box super().__init__(parent, ID, title, DefaultPosition, Size(720, 520)) self.Center(BOTH) self.html = HtmlWindow(self, -1, DefaultPosition, Size(720, 520)) htmlFileName = resource_filename(DlgHelp.HELP_PKG_NAME, 'index.html') self.html.LoadPage(htmlFileName) self.printer = HtmlEasyPrinting() self.box = BoxSizer(VERTICAL) self.box.Add(self.html, 1, GROW) subbox = BoxSizer(HORIZONTAL) btn = Button(self, ID_BACK, _("Back")) self.Bind(EVT_BUTTON, self.__OnBack, id=ID_BACK) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_FORWARD, _("Forward")) self.Bind(EVT_BUTTON, self.__OnForward, id=ID_FORWARD) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_PRINT, _("Print")) self.Bind(EVT_BUTTON, self.__OnPrint, id=ID_PRINT) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_VIEW_SOURCE, _("View Source")) self.Bind(EVT_BUTTON, self.__OnViewSource, id=ID_VIEW_SOURCE) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_OK, _("Exit")) subbox.Add(btn, 1, GROW | ALL, 2) self.box.Add(subbox, 0, GROW | BOTTOM) self.SetSizer(self.box) self.SetAutoLayout(True) subbox.Fit(self) self.box.Fit(self) self.OnShowDefault(None) self.Show(True)
def __init__(self, parent: Window, wxID: int, title: str): """ Args: parent: parent window wxID: wx ID of this frame title: Title to display """ super().__init__(parent, wxID, title, DefaultPosition, Size(FrameWidth, FrameHeight)) self.logger: Logger = getLogger(__name__) # iconFileName: str = resource_filename(IMAGE_RESOURCES_PACKAGE, 'pyut.ico') # icon: Icon = Icon(iconFileName, BITMAP_TYPE_ICO) # # self.SetIcon(icon) if sysPlatform != PyutConstants.THE_GREAT_MAC_PLATFORM: fileName: str = PyutUtils.getResourcePath( packageName=IMAGE_RESOURCES_PACKAGE, fileName='pyut.ico') icon: Icon = Icon(fileName, BITMAP_TYPE_ICO) self.SetIcon(icon) self.Center(BOTH) longTextStr: str = PyutUtils.retrieveResourceText( ResourceTextType.KUDOS_TEXT_TYPE) self._textToShow: List[str] = longTextStr.split('\n') # Animation panel self._panel: Panel = Panel(self, ID_ANY, size=(FrameWidth, FrameHeight)) # Picture and text # bmp = Bitmap("img" + os.sep + "pyut.bmp", BITMAP_TYPE_BMP) # fileName = resource_filename(IMAGE_RESOURCES_PACKAGE, 'pyut.bmp') fileName: str = PyutUtils.getResourcePath(IMAGE_RESOURCES_PACKAGE, 'pyut.png') # bmp = Bitmap(fileName, BITMAP_TYPE_PNG) self._picture: StaticBitmap = StaticBitmap( self, ID_ANY, ImgPyut.embeddedImage.GetBitmap()) summaryText: str = "2020 The PyUt team and Humberto Sanchez II.\nPublished under the GNU General Public License" self._label: StaticText = StaticText(self, ID_ANY, summaryText, style=CAPTION) # Main sizer self.SetAutoLayout(True) sizer = BoxSizer(VERTICAL) sizer.Add(self._picture, 0, ALL | ALIGN_CENTER, 5) sizer.Add(self._panel, 1, ALL | ALIGN_CENTER, 5) sizer.Add(self._label, 0, ALL | ALIGN_CENTER, 5) btnOk: Button = Button(self, ID_OK, "&Ok") sizer.Add(btnOk, 0, ALL | ALIGN_CENTER, 5) self.SetSizer(sizer) sizer.Fit(self) self._textPosition = 0.0 # Current position self._timer: Timer = Timer(self) self.Bind(EVT_TIMER, self._onTimer, self._timer) self.Bind(EVT_BUTTON, self._onOk, btnOk) self._panel.Bind(EVT_PAINT, self.OnRefreshPanel) self.Bind(EVT_CLOSE, self._onOk)
def __init__(self, theParent, theWindowId, fieldToEdit: PyutField, theMediator=None): super().__init__(theParent, theWindowId, _("Field Edit"), theStyle=RESIZE_BORDER | CAPTION | STAY_ON_TOP, theMediator=theMediator) self._fieldToEdit: PyutField = fieldToEdit # ---------------- # Design of dialog # ---------------- self.SetAutoLayout(True) # RadioBox Visibility self._rdbFieldVisibility: RadioBox = RadioBox(self, ID_ANY, "", Point(35, 30), DefaultSize, ["+", "-", "#"], style=RA_SPECIFY_ROWS) # Txt Ctrl Name lblFieldName = StaticText (self, ID_ANY, _("Name")) self._txtFieldName = TextCtrl(self, ID_TXT_FIELD_NAME, "", size=(125, -1)) self.Bind(EVT_TEXT, self._evtFieldText, id=ID_TXT_FIELD_NAME) # Txt Ctrl Type lblFieldType: StaticText = StaticText (self, ID_ANY, _("Type")) self._txtFieldType: TextCtrl = TextCtrl(self, ID_ANY, "", size=(125, -1)) # Txt Ctrl Default lblFieldDefault: StaticText = StaticText (self, ID_ANY, _("Default Value")) self._txtFieldDefault: TextCtrl = TextCtrl(self, ID_ANY, "", size=(125, -1)) # --------------------- # Buttons OK and Cancel # --------------------- self._btnFieldOk: Button = Button(self, ID_BTN_FIELD_OK, _("&Ok")) self.Bind(EVT_BUTTON, self._onFieldOk, id=ID_BTN_FIELD_OK) self._btnFieldOk.SetDefault() self._btnFieldCancel = Button(self, ID_BTN_FIELD_CANCEL, _("&Cancel")) self.Bind(EVT_BUTTON, self._onFieldCancel, id=ID_BTN_FIELD_CANCEL) szrButtons = BoxSizer (HORIZONTAL) szrButtons.Add(self._btnFieldOk, 0, ALL, 5) szrButtons.Add(self._btnFieldCancel, 0, ALL, 5) szrField1: FlexGridSizer = FlexGridSizer(cols=3, hgap=6, vgap=6) szrField1.AddMany([lblFieldName, lblFieldType, lblFieldDefault, self._txtFieldName, self._txtFieldType, self._txtFieldDefault]) szrField2 = BoxSizer(HORIZONTAL) szrField2.Add(self._rdbFieldVisibility, 0, ALL, 5) szrField2.Add(szrField1, 0, ALIGN_CENTER_VERTICAL | ALL, 5) szrField3 = BoxSizer(VERTICAL) szrField3.Add(szrField2, 0, ALL, 5) szrField3.Add(szrButtons, 0, ALL | ALIGN_RIGHT, 5) self.SetSizer(szrField3) self.SetAutoLayout(True) szrField3.Fit(self) # Fill the text controls with PyutField data self._txtFieldName.SetValue(self._fieldToEdit.getName()) self._txtFieldType.SetValue(str(self._fieldToEdit.getType())) self._txtFieldDefault.SetValue(self._convertNone(self._fieldToEdit.getDefaultValue())) self._rdbFieldVisibility.SetStringSelection(str(self._fieldToEdit.visibility)) # Fix state of buttons (enabled or not) self._fixBtnDlgFields() # Set the focus self._txtFieldName.SetFocus() self.Centre()
class DlgHelp(Dialog): HELP_PKG_NAME: str = 'help' """ Pyut help dialog frame. Used to show help and navigate through it. To use it from a wxFrame : dlg = DlgHelp(self, -1, "Pyut Help") dlg.Show() dlg.destroy() :version: $Revision: 1.7 $ :author: C.Dutoit :contact: [email protected] """ def __init__(self, parent, ID, title): """ Constructor. @since 1.0 @author C.Dutoit """ # dialog box super().__init__(parent, ID, title, DefaultPosition, Size(720, 520)) self.Center(BOTH) self.html = HtmlWindow(self, -1, DefaultPosition, Size(720, 520)) htmlFileName = resource_filename(DlgHelp.HELP_PKG_NAME, 'index.html') self.html.LoadPage(htmlFileName) self.printer = HtmlEasyPrinting() self.box = BoxSizer(VERTICAL) self.box.Add(self.html, 1, GROW) subbox = BoxSizer(HORIZONTAL) btn = Button(self, ID_BACK, _("Back")) self.Bind(EVT_BUTTON, self.__OnBack, id=ID_BACK) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_FORWARD, _("Forward")) self.Bind(EVT_BUTTON, self.__OnForward, id=ID_FORWARD) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_PRINT, _("Print")) self.Bind(EVT_BUTTON, self.__OnPrint, id=ID_PRINT) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_VIEW_SOURCE, _("View Source")) self.Bind(EVT_BUTTON, self.__OnViewSource, id=ID_VIEW_SOURCE) subbox.Add(btn, 1, GROW | ALL, 2) btn = Button(self, ID_OK, _("Exit")) subbox.Add(btn, 1, GROW | ALL, 2) self.box.Add(subbox, 0, GROW | BOTTOM) self.SetSizer(self.box) self.SetAutoLayout(True) subbox.Fit(self) self.box.Fit(self) self.OnShowDefault(None) self.Show(True) # noinspection PyUnusedLocal def OnShowDefault(self, event): """ Show default page @since 1.1 @author C.Dutoit """ # # TODO: use resource loader to find help index.html # name = osPath.join(getcwd(), 'help/index.html') self.html.LoadPage(name) # noinspection PyUnusedLocal def __OnBack(self, event): """ go one level back; load last page @since 1.1 @author C.Dutoit """ if not self.html.HistoryBack(): MessageBox(_("No more items in history !")) # noinspection PyUnusedLocal def __OnForward(self, event): """ go one level forward; load next page @since 1.1 @author C.Dutoit """ if not self.html.HistoryForward(): MessageBox(_("No more items in history !")) # noinspection PyUnusedLocal def __OnViewSource(self, event): """ View document source @since 1.1 @author C.Dutoit """ source = self.html.GetParser().GetSource() dlg = ScrolledMessageDialog(self, source, _('HTML Source')) dlg.ShowModal() dlg.Destroy() # noinspection PyUnusedLocal def __OnPrint(self, event): """ print the current page @since 1.1 @author C.Dutoit """ self.printer.PrintFile(self.html.GetOpenedPage())
def __init__(self, parent, ID, pyutLink: PyutLink): """ """ super().__init__(parent, ID, _("Link Edit"), style=RESIZE_BORDER | CAPTION) self.logger: Logger = getLogger(__name__) # Associated PyutLink self._pyutLink: PyutLink = pyutLink self._relationship = self._pyutLink.getName() self._aRoleInB = "" self._bRoleInA = "" # self._cardinalityA = self._pyutLink.getSourceCardinality() # self._cardinalityB = self._pyutLink.getDestinationCardinality() self._cardinalityA = self._pyutLink.sourceCardinality self._cardinalityB = self._pyutLink.destinationCardinality self._returnAction = CANCEL # #describe how user exited dialog box # labels lblCardA = StaticText(self, -1, _("Cardinality"), style=ALIGN_LEFT) lblRela = StaticText(self, -1, _("Relationship"), style=ALIGN_CENTRE) lblCardB = StaticText(self, -1, _("Cardinality"), style=ALIGN_RIGHT) lblA = StaticText(self, -1, "A", style=ALIGN_LEFT) self._lblArrow = StaticText(self, -1, "", style=ALIGN_CENTRE) self.updateLblArrow() lblB = StaticText(self, -1, "B", style=ALIGN_RIGHT) lblAinB = StaticText(self, -1, _("A's role in B"), style=ALIGN_LEFT) lblBinA = StaticText(self, -1, _("B's role in A"), style=ALIGN_RIGHT) # text self._txtCardinalityA = TextCtrl(self, TXT_CARDINALITY_A, "", size=Size(50, 20)) self._txtRelationship = TextCtrl(self, TXT_RELATIONSHIP, "", size=Size(100, 20)) self._txtCardinalityB = TextCtrl(self, TXT_CARDINALITY_B, "", size=Size(50, 20)) self._txtARoleB = TextCtrl(self, A_ROLE_IN_B, "") self._txtBRoleA = TextCtrl(self, B_ROLE_IN_A, "") self.setValues(self._relationship, self._aRoleInB, self._bRoleInA, self._cardinalityA, self._cardinalityB) self._txtARoleB.Enable(False) self._txtBRoleA.Enable(False) # text events self.Bind(EVT_TEXT, self._onTxtCardinalityAChange, id=TXT_CARDINALITY_A) self.Bind(EVT_TEXT, self._onTxtCardinalityBChange, id=TXT_CARDINALITY_B) self.Bind(EVT_TEXT, self._onTxtRelationshipChange, id=TXT_RELATIONSHIP) self.Bind(EVT_TEXT, self._onTxtARoleBChange, id=A_ROLE_IN_B) self.Bind(EVT_TEXT, self._onTxtBRoleAChange, id=B_ROLE_IN_A) # Ok/Cancel btnOk = Button(self, OK, _("&Ok")) btnCancel = Button(self, CANCEL, _("&Cancel")) btnRemove = Button(self, BTN_REMOVE, _("&Remove")) btnOk.SetDefault() # button events self.Bind(EVT_BUTTON, self._onCmdOk, id=OK) self.Bind(EVT_BUTTON, self._onCmdCancel, id=CANCEL) self.Bind(EVT_BUTTON, self._onRemove, id=BTN_REMOVE) szr1 = FlexGridSizer(cols=3, hgap=30, vgap=5) szr1.AddMany([(lblCardA, 0, ALIGN_LEFT), (lblRela, 0, ALIGN_CENTER_HORIZONTAL), (lblCardB, 0, ALIGN_RIGHT), (self._txtCardinalityA, 0, ALIGN_LEFT), (self._txtRelationship, 0, ALIGN_CENTER_HORIZONTAL), (self._txtCardinalityB, 0, ALIGN_RIGHT)]) szr1.AddGrowableCol(0) szr1.AddGrowableCol(1) szr1.AddGrowableCol(2) szr2 = BoxSizer(HORIZONTAL) szr2.Add(lblA, 1, GROW | RIGHT, 10) szr2.Add(self._lblArrow, 1, GROW, 10) szr2.Add(lblB, 1, GROW) # szr3 : # lblAinB, lblBinA # self._txtARoleB, self._txtBRoleA szr3 = FlexGridSizer(cols=2, hgap=30, vgap=5) szr3.AddMany([(lblAinB, 0), (lblBinA, 0, ALIGN_RIGHT), (self._txtARoleB, 0), (self._txtBRoleA, 0, ALIGN_RIGHT | BOTTOM, 20)]) szr3.AddGrowableCol(0) szr3.AddGrowableCol(1) # szr4 : # btnRemove, btnOk, btnCancel szr4 = BoxSizer(HORIZONTAL) szr4.Add(btnRemove, 0, RIGHT, 10) szr4.Add(btnOk, 0, RIGHT, 10) szr4.Add(btnCancel, 0) # szr5 : # szr1 # szr2 # szr3 # szr4 szr5 = BoxSizer(VERTICAL) szr5.Add(szr1, 0, GROW | ALL, 10) szr5.Add(szr2, 0, GROW | ALL, 10) szr5.Add(szr3, 0, GROW | ALL, 10) szr5.Add(szr4, 0, ALIGN_RIGHT | ALL, 10) self.SetSizer(szr5) self.SetAutoLayout(True) szr5.Fit(self)
def __init__(self, parent): """ """ # Check import sys if sys.platform == "win32": return # Initialize the dialog box super().__init__( parent, -1, _("Tips"), DefaultPosition, Size(DEFAULT_WIDTH, DEFAULT_HEIGHT), RESIZE_BORDER | SYSTEM_MENU | CAPTION | FRAME_FLOAT_ON_PARENT | STAY_ON_TOP) # Normalize tips from org.pyut.general.LineSplitter import LineSplitter ls = LineSplitter() dc = ClientDC(self) for i in range(len(Tips)): tip = ls.split(Tips[i], dc, int(DEFAULT_WIDTH * 0.8)) Tips[i] = "" for line in tip: Tips[i] += line + "\n" # tip = "" # for line in Tips[i].split("\n"): # newLine = "" # for word in line.split(" "): # if len(newLine) + len(word) > 59: # tip += newLine + "\n" # newLine = "" # newLine += word + " " # tip += newLine # Tips[i] = tip # Set current tips self._prefs = PyutPreferences() self._currentTip = self._prefs[PyutPreferences.CURRENT_TIP] if self._currentTip is None: self._currentTip = 0 else: self._currentTip = int(self._currentTip) # Add icon # fileName = resource_filename(IMG_PKG, 'TipsLogo.bmp') # icon = Icon(fileName, BITMAP_TYPE_BMP) # self.SetIcon(icon) # self.Center(BOTH) # Center on the screen self.Center(dir=VERTICAL) self.AcceptsFocus() # Create controls # bmp: Bitmap = org.pyut.resources.img.ImgTipsFrameTipsLogo.embeddedImage.GetBitmap() bmp: Bitmap = TipsLogo.GetBitmap() self._picture = StaticBitmap(self, -1, bmp) tip = Tips[self._currentTip] self._label = StaticText(self, -1, tip, size=Size(DEFAULT_WIDTH * 0.8, DEFAULT_HEIGHT * 0.8), style=ST_NO_AUTORESIZE) nextTipButton = Button(self, ID_SET_NEXT_TIP, _("&Next tip")) previousTipButton = Button(self, ID_SET_PREVIOUS_TIP, _("&Previous tip")) self._chkShowTips = CheckBox(self, ID_CHK_SHOW_TIPS, _("&Show tips at startup")) showTips: bool = self._prefs.showTipsOnStartup() self._chkShowTips.SetValue(showTips) # Upper sizer upSizer = BoxSizer(HORIZONTAL) upSizer.Add(self._picture, 0, ALL | ALIGN_CENTER, 5) upSizer.Add(self._label, 1, ALL | ALIGN_CENTER, 5) # Lower sizer loSizer = BoxSizer(HORIZONTAL) loSizer.Add(previousTipButton, 0, ALL | ALIGN_CENTER, 5) loSizer.Add(nextTipButton, 0, ALL | ALIGN_CENTER, 5) loSizer.Add(Button(self, ID_OK, "&Ok"), 0, ALL | ALIGN_CENTER, 5) # Main sizer self.SetAutoLayout(True) mainSizer = BoxSizer(VERTICAL) mainSizer.Add(upSizer, 0, ALL | ALIGN_CENTER, 5) mainSizer.Add(self._chkShowTips, 0, ALL | ALIGN_CENTER, 5) mainSizer.Add(loSizer, 0, ALL | ALIGN_CENTER, 5) self.SetSizer(mainSizer) mainSizer.Fit(self) # Events self.Bind(EVT_BUTTON, self._onOk, id=ID_OK) self.Bind(EVT_CLOSE, self._onClose) self.Bind(EVT_BUTTON, self._onNextTip, id=ID_SET_NEXT_TIP) self.Bind(EVT_BUTTON, self._onPreviousTip, id=ID_SET_PREVIOUS_TIP)