def noGitWarning(parent): """Raise a simpler warning dialog that the user needs to install git first""" dlg = wx.Dialog(parent=parent, style=wx.ICON_ERROR | wx.OK | wx.STAY_ON_TOP) errorBitmap = wx.ArtProvider.GetBitmap( wx.ART_ERROR, wx.ART_MESSAGE_BOX ) errorBitmapCtrl = wx.StaticBitmap(dlg, -1) errorBitmapCtrl.SetBitmap(errorBitmap) msg = wx.StaticText(dlg, label=_translate("You need to install git to use Pavlovia projects")) link = wxhl.HyperlinkCtrl(dlg, url="https://git-scm.com/", style=wxhl.HL_CONTEXTMENU) OK = wx.Button(dlg, wx.ID_OK, label="OK") msgsSizer = wx.BoxSizer(wx.VERTICAL) msgsSizer.Add(msg, 1, flag=wx.ALIGN_RIGHT | wx.ALL | wx.EXPAND, border=5) msgsSizer.Add(link, 1, flag=wx.ALIGN_RIGHT | wx.ALL | wx.EXPAND, border=5) msgsAndIcon = wx.BoxSizer(wx.HORIZONTAL) msgsAndIcon.Add(errorBitmapCtrl, 0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5) msgsAndIcon.Add(msgsSizer, 1, flag=wx.ALIGN_RIGHT | wx.ALL | wx.EXPAND, border=5) mainSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(msgsAndIcon, 0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5) mainSizer.Add(OK, 0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5) dlg.SetSizerAndFit(mainSizer) dlg.Layout() dlg.ShowModal()
def __init__(self, parent, title, msg, urlMsg=None, url=None): """Create a ``UrlDialog``. :arg parent: ``wx`` parent object :arg title: Dialog title :arg msg: Message to display :arg urlMsg: Message to display next to the URL. Not shown if a URL is not provided. :arg url: URL to display. """ wx.Dialog.__init__(self, parent, title=title, style=wx.DEFAULT_DIALOG_STYLE) ok = wx.Button(self, label='Ok', id=wx.ID_OK) msg = wx.StaticText(self, label=msg) self.__ok = ok if urlMsg is not None: urlMsg = wx.StaticText(self, label=urlMsg) if url is not None: url = wxadv.HyperlinkCtrl(self, url=url) sizer = wx.BoxSizer(wx.VERTICAL) btnSizer = wx.BoxSizer(wx.HORIZONTAL) sizer.Add((1, 20), flag=wx.EXPAND, proportion=1) sizer.Add(msg, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=20) sizer.Add((1, 20), flag=wx.EXPAND, proportion=1) if urlMsg is not None and url is not None: sizer.Add(urlMsg, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=20) sizer.Add((1, 5), flag=wx.EXPAND, proportion=1) if url is not None: sizer.Add(url, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=20) sizer.Add((1, 20), flag=wx.EXPAND, proportion=1) btnSizer.Add((20, 1), flag=wx.EXPAND, proportion=1) btnSizer.Add(ok, flag=wx.EXPAND) btnSizer.Add((20, 1), flag=wx.EXPAND) sizer.Add(btnSizer, flag=wx.EXPAND) sizer.Add((1, 20), flag=wx.EXPAND, proportion=1) ok.SetDefault() self.SetSizer(sizer) self.Layout() self.Fit()
def __init__(self, parent, noTitle=False, style=wx.VSCROLL | wx.NO_BORDER): scrlpanel.ScrolledPanel.__init__(self, parent, -1, style=style) self.parent = parent self.app = self.parent.app self.currentProj = None self.noTitle = noTitle if not noTitle: self.title = wx.StaticText(parent=self, id=-1, label="", style=wx.ALIGN_CENTER) font = wx.Font(18, wx.DECORATIVE, wx.NORMAL, wx.BOLD) self.title.SetFont(font) self.url = wxhl.HyperlinkCtrl( parent=self, id=-1, label="https://osf.io", url="https://osf.io", style=wxhl.HL_ALIGN_LEFT, ) self.description = wx.StaticText( parent=self, id=-1, label=_translate("Select a project for details")) self.tags = wx.StaticText(parent=self, id=-1, label="") self.visibility = wx.StaticText(parent=self, id=-1, label="") # layout self.sizer = wx.BoxSizer(wx.VERTICAL) if not noTitle: self.sizer.Add(self.title, border=5, flag=wx.ALL | wx.EXPAND | wx.ALIGN_CENTER) self.sizer.Add(self.url, border=5, flag=wx.ALL | wx.EXPAND) self.sizer.Add(self.tags, border=5, flag=wx.ALL | wx.EXPAND) self.sizer.Add(self.visibility, border=5, flag=wx.ALL | wx.EXPAND) self.sizer.Add(wx.StaticLine(self, -1, style=wx.LI_HORIZONTAL), flag=wx.ALL | wx.EXPAND) self.sizer.Add(self.description, border=5, flag=wx.ALL | wx.EXPAND) self.SetSizer(self.sizer) self.SetupScrolling() self.Bind(wx.EVT_SIZE, self.onResize)
def __init__(self, parent, task): wx.Panel.__init__(self, parent) # Variables self.task = task """ task keys: id source : page URL setting : search settings folder : Saving folder complete title : video title filename : File path in local """ self.lastupdate = None self.lastsize = 0 self.StopEvt = threading.Event() self.DelEvt = threading.Event() # UI self.Item = wx.BoxSizer(wx.VERTICAL) bSizer34 = wx.BoxSizer(wx.HORIZONTAL) self.m_panel6 = wx.Panel(self, wx.ID_ANY, wx.DefaultPosition, wx.Size(5, -1), wx.TAB_TRAVERSAL) self.m_panel6.SetBackgroundColour(wx.Colour(130, 192, 255)) bSizer34.Add(self.m_panel6, 0, wx.EXPAND | wx.ALL, 0) self.SelectedChecker = wx.CheckBox(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) bSizer34.Add(self.SelectedChecker, 0, wx.ALL, 5) bSizer7 = wx.BoxSizer(wx.VERTICAL) bSizer19 = wx.BoxSizer(wx.HORIZONTAL) self.FileName = adv.HyperlinkCtrl(self, wx.ID_ANY, wx.EmptyString, '', wx.DefaultPosition, wx.DefaultSize, 0 | wx.NO_BORDER) self.FileName.SetNormalColour(wx.Colour(48, 48, 48)) self.FileName.SetFont(wx.Font(10, 70, 90, 92, False, wx.EmptyString)) bSizer19.Add(self.FileName, 1, wx.ALL | wx.EXPAND, 5) self.m_button4 = wx.Button(self, wx.ID_ANY, u"Source", wx.DefaultPosition, wx.Size(-1, 24)) bSizer19.Add(self.m_button4, 0, wx.ALIGN_CENTER | wx.ALL, 2) self.m_button41 = wx.Button(self, wx.ID_ANY, u"Resolve", wx.DefaultPosition, wx.Size(-1, 24)) bSizer19.Add(self.m_button41, 0, wx.ALIGN_CENTER | wx.ALL, 2) self.m_button42 = wx.Button(self, wx.ID_ANY, u"Delete", wx.DefaultPosition, wx.Size(-1, 24)) bSizer19.Add(self.m_button42, 0, wx.ALIGN_CENTER | wx.ALL, 2) bSizer7.Add(bSizer19, 1, wx.EXPAND, 5) self.ProgressBar = wx.Gauge(self, wx.ID_ANY, 100, wx.DefaultPosition, wx.Size(-1, 5), wx.GA_HORIZONTAL) bSizer7.Add(self.ProgressBar, 0, wx.ALIGN_CENTER | wx.ALL | wx.EXPAND, 5) bSizer6 = wx.BoxSizer(wx.HORIZONTAL) self.VideoSize = wx.StaticText(self, wx.ID_ANY, u"0B", wx.DefaultPosition, wx.DefaultSize, 0) self.VideoSize.Wrap(-1) bSizer6.Add(self.VideoSize, 1, wx.ALIGN_CENTER | wx.ALL, 5) self.TimeRemain = wx.StaticText(self, wx.ID_ANY, u"00:00:00", wx.DefaultPosition, wx.DefaultSize, 0) self.TimeRemain.Wrap(-1) bSizer6.Add(self.TimeRemain, 1, wx.ALL, 5) self.Spead = wx.StaticText(self, wx.ID_ANY, u"0B/s", wx.DefaultPosition, wx.Size(75, -1), wx.ALIGN_RIGHT) self.Spead.Wrap(-1) bSizer6.Add(self.Spead, 0, wx.ALL, 5) bSizer7.Add(bSizer6, 0, wx.EXPAND, 5) bSizer34.Add(bSizer7, 1, 0, 5) self.Item.Add(bSizer34, 1, wx.EXPAND, 5) self.m_staticline4 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) self.Item.Add(self.m_staticline4, 0, wx.EXPAND | wx.ALL, 0) self.Item.AddSpacer(5) self.SetSizer(self.Item) # Connect Events self.FileName.Bind(adv.EVT_HYPERLINK, self.checkExistance) self.m_button4.Bind(wx.EVT_BUTTON, self.OpenSource) self.m_button41.Bind(wx.EVT_BUTTON, self.Resolve) self.m_button42.Bind(wx.EVT_BUTTON, self.Delete)
def __init__(self, *args, **kw): # ensure the parent's __init__ is called super(CCCMemberCardFrame, self).__init__(*args, **kw) # create a panel in the frame #pnl = wx.Panel(self) # and put some text with a larger bold font on it #st = wx.StaticText(pnl, label="Hello World!", pos=(25,25)) #font = st.GetFont() #font.PointSize += 10 #font = font.Bold() #st.SetFont(font) # create a button self.button_load_member_list = wx.Button(self, label='1. Load Member List', style=wx.BU_EXACTFIT) self.button_load_member_list.Bind(wx.EVT_BUTTON, self.OnButton_load_member_list) self.text_total_member = wx.StaticText( self, label="Number of member data records: TBD", pos=(0, 60)) self.text_new_member = wx.StaticText( self, label="Number of members requiring new cards: TBD", pos=(0, 80)) self.url_member_csv = adv.HyperlinkCtrl( self, label= "csv (table) file of info of members requiring new card: Not Generated", url='', pos=(0, 100)) self.button_create_letter_and_card_file = wx.Button( self, label='2. Create Card and Letter File', pos=(0, 140), style=wx.BU_EXACTFIT) self.button_create_letter_and_card_file.Bind( wx.EVT_BUTTON, self.OnButton_create_letter_and_card_file) self.url_card_pdf = adv.HyperlinkCtrl( self, label="pdf file for card: Not Generated", url='', pos=(0, 200)) self.url_letter_pdf = adv.HyperlinkCtrl( self, label="pdf file for letter: Not Generated", url='', pos=(0, 220)) #file:///D:/proj/cccmembercard/output/2018-09-02_13_43_30/letter_to_print.pdf', self.button_update = wx.Button( self, label='3. Update Membership Card Last Sent Date To Website', pos=(0, 260), style=wx.BU_EXACTFIT) self.button_update.Bind(wx.EVT_BUTTON, self.OnButton_update_website) self.gauge_load_status = GaugeExt(self, pos=(200, 5), range=4) self.gauge_file_status = GaugeExt(self, pos=(200, 145), range=50) # add configuration information self.cfg_credential_file_link = adv.HyperlinkCtrl( self, label="credential file location: " + os.path.abspath('credential.json'), url='file://' + os.path.abspath('credential.json'), pos=(0, 40)) # and a status bar self.CreateStatusBar() self.SetStatusText("Follow steps to print card. Click Step 1") self.cccmember = memberdata.CCCMemberData() self.output_dir_link = wx.StaticText( self, label="Output directory: " + os.path.abspath(self.cccmember.output_dir), pos=(0, 180)) self.log_file_path = adv.HyperlinkCtrl( self, label="log file: " + os.path.abspath(self.cccmember.logging_path), url="file://" + os.path.abspath(self.cccmember.logging_path), pos=(0, 310))
def __init__(self, parent): wx.Dialog.__init__(self, parent, -1, _("Plugin Manager"), size=(600, 440)) self._parent = parent self._manager = parent._app.plugins self.olditems = {} self.restart = [] self.tempdir = wx.StandardPaths.Get().GetTempDir() self.listbox = HtmlListBox(self) self.listbox.SetDropTarget(PluginDropTarget(self)) for i in range(len(self._manager.names)): if self._manager.states[i] < 3 or self._manager.states[i] == 6: root = ElementTree.parse( os.path.join(parent._app.userdatadir, "plugins", self._manager.names[i], "plugin.xml")).getroot() else: root = ElementTree.parse( os.path.join( self.tempdir, self._manager.tempdirs[self._manager.names[i]], "plugin.xml")).getroot() text = "<font><b>%s</b> %s<br>%s</font><div align=right>" % ( root[0].text, root[1].text, root[2].text) if self._manager.states[i] < 6: if self._manager.enabled[i]: if hasattr(self._manager.plugins[i], "OnOptions"): text += _("<a href='%s;0'>Options</a> " ) % self._manager.names[i] text += _( "<a href='%s;1'>Disable</a> ") % self._manager.names[i] else: text = text.replace("<font>", "<font color=gray>").replace( "<br>", _(" (disabled)<br>")) text += _( "<a href='%s;2'>Enable</a> ") % self._manager.names[i] text += _("<a href='%s;3'>Remove</a>" ) % self._manager.names[i] + " </div>" if 1 <= self._manager.states[i] <= 5: self.olditems[self._manager.names[i]] = text if self._manager.states[i] == 1: text2 = _( "<font color=gray>This plugin will be disabled when you restart Write++. <a href=';4'>Restart Now</a> <a href='%s;5'>Undo</a></font><br>" ) % self._manager.names[i] text = text2 + text[:text.index("<div align=right>")] elif self._manager.states[i] == 2: text2 = _( "<font color=green>This plugin will be enabled when you restart Write++. <a href=';4'>Restart Now</a> <a href='%s;5'>Undo</a></font><br>" ) % self._manager.names[i] text = text2 + text[:text.index("<div align=right>")] elif self._manager.states[i] == 3: text = _( "<font color=gray><b>%s</b> has been removed. <a href=';4'>Restart Now</a> <a href='%s;5'>Undo</a></font>" ) % (root[0].text, self._manager.names[i]) else: text = _( "<font color=gray><b>%s</b> has been removed. <a href='%s;5'>Undo</a></font>" ) % (root[0].text, self._manager.names[i]) elif self._manager.states[i] == 6: text2 = _( "<font color=green>This plugin will be installed when you restart Write++. <a href=';4'>Restart Now</a> <a href='%s;5'>Undo</a></font><br>" ) % self._manager.names[i] text = text2 + text[:text.index("<div align=right>")] self.listbox.items.append(text) self.restart.append(root[3].text == "True") self.listbox.SetItemCount(len(self.listbox.items)) self.install = adv.HyperlinkCtrl(self, -1, _("Install plugin from file..."), "", style=wx.NO_BORDER | adv.HL_ALIGN_LEFT) self.close = wx.Button(self, wx.ID_CLOSE) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.listbox, 1, wx.ALL | wx.EXPAND, 2) sizer2 = wx.BoxSizer(wx.HORIZONTAL) sizer2.Add(self.install, 1, wx.ALIGN_CENTER_VERTICAL) sizer2.Add(self.close, 0, wx.EXPAND) sizer.Add(sizer2, 0, wx.ALL | wx.EXPAND, 5) self.SetSizer(sizer) self.listbox.Bind(html.EVT_HTML_LINK_CLICKED, self.OnLinkClicked) self.install.Bind(adv.EVT_HYPERLINK, self.OnHyperlink) self.close.Bind(wx.EVT_BUTTON, self.OnClose) self.Bind(wx.EVT_CLOSE, self.OnClose)