示例#1
0
    def __init__(self,
                 message: str,
                 label: str = None,
                 url: str = None,
                 **kwargs) -> None:
        super(HyperlinkDialog, self).__init__(parent=None, **kwargs)
        pane = self.GetContentsPane()

        text_ctrl = StaticText(pane, label=message)
        text_ctrl.SetFocus()
        text_ctrl.SetSizerProps(align="center")

        if url is not None:
            if label is None:
                label = url
            hyperlink = HyperlinkCtrl(pane, label=label, url=url)
            hyperlink.Bind(EVT_HYPERLINK, self.on_hyperlink)

        button_ok = Button(pane, label="OK")
        button_ok.Bind(EVT_BUTTON, self.on_ok)
        button_ok.SetSizerProps(align="center", border=(["top"], 10))

        self.SetIcon(
            Icon(ArtProvider.GetBitmap(ART_INFORMATION, ART_MESSAGE_BOX)))
        self.Fit()
        self.Centre()
示例#2
0
class EditHyperlinkCtrl(ManagedBase, EditStylesMixin):
    "Class to handle wxHyperlinkCtrl objects"
    WX_CLASS = "wxHyperlinkCtrl"
    _PROPERTIES = ["Widget", "label", "style", "url", "attribute"]
    PROPERTIES = ManagedBase.PROPERTIES + _PROPERTIES + ManagedBase.EXTRA_PROPERTIES
    ManagedBase.MOVE_PROPERTY(PROPERTIES, "attribute", "name")
    _PROPERTY_HELP = {
        'label':
        "Label of the hyperlink",
        'url':
        "URL associated with the given label",
        "attribute":
        'Store instance as attribute of window class; e.g. self.bitmap_1 = wx.wxStaticBitmap'
        '(...)\nWithout this, you can not access the bitmap from your program.'
    }

    def __init__(self, name, parent, label, pos):
        # Initialise parent classes
        ManagedBase.__init__(self, name, 'wxHyperlinkCtrl', parent, pos)
        EditStylesMixin.__init__(self)

        # initialise instance properties
        self.label = np.TextProperty(label, multiline=True)
        self.url = np.TextProperty("")
        self.attribute = np.CheckBoxProperty(False, default_value=False)

    def create_widget(self):
        self.widget = HyperlinkCtrl(self.parent_window.widget, self.id,
                                    self.label, self.url)

    def properties_changed(self, modified):
        if not modified or "label" in modified:
            if self.widget:
                self.widget.SetLabel(self.label)
                self._set_widget_best_size()
            if common.app_tree:
                common.app_tree.refresh(self,
                                        refresh_label=True,
                                        refresh_image=False)

        if not modified or "url" in modified:
            if self.widget:
                self.widget.SetURL(self.url)

        EditStylesMixin.properties_changed(self, modified)
        ManagedBase.properties_changed(self, modified)

    # handle compatibility:
    @decorators.memoize
    def wxname2attr(self, name):
        cn = self.codegen.get_class(self.codegen.cn(name))
        module = wx if compat.IS_CLASSIC else wx.adv
        return getattr(module, cn)
示例#3
0
 def create_syntax_colorization_help(self):
     if self._syntax_colorization_help_exists:
         return
     label = Label(
         self,
         label="Syntax colorization disabled due to missing requirements.")
     link = HyperlinkCtrl(self, -1, label="Get help", url="")
     link.Bind(EVT_HYPERLINK, self.show_help_dialog)
     flags = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT
     syntax_colorization_help_sizer = wx.BoxSizer(wx.VERTICAL)
     syntax_colorization_help_sizer.AddMany([(label, 0, flags),
                                             (link, 0, flags)])
     self.editor_toolbar.add_expanding(syntax_colorization_help_sizer)
     self.Layout()
     self._syntax_colorization_help_exists = True
示例#4
0
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent=parent, title="About")

        bitmapIcon = wx.StaticBitmap(self, bitmap=load_bitmap('icon'))
        textAbout = wx.StaticText(self, label="A simple spectrum analyser for "
                                  "scanning\n with a RTL-SDR compatible USB "
                                  "device", style=wx.ALIGN_CENTRE)
        textLink = HyperlinkCtrl(self, wx.ID_ANY,
                                 label="http://eartoearoak.com/software/rtlsdr-scanner",
                                 url="http://eartoearoak.com/software/rtlsdr-scanner")
        textVersion = wx.StaticText(self,
                                    label='v' + '.'.join([str(x) for x in VERSION]))
        buttonOk = wx.Button(self, wx.ID_OK)

        grid = wx.GridBagSizer(10, 10)
        grid.Add(bitmapIcon, pos=(0, 0), span=(3, 1),
                 flag=wx.ALIGN_LEFT | wx.ALL, border=10)
        grid.Add(textAbout, pos=(0, 1), span=(1, 2),
                 flag=wx.ALIGN_CENTRE | wx.ALL, border=10)
        grid.Add(textLink, pos=(1, 1), span=(1, 2),
                 flag=wx.ALIGN_CENTRE | wx.ALL, border=10)
        grid.Add(textVersion, pos=(2, 1), span=(1, 2),
                 flag=wx.ALIGN_CENTRE | wx.ALL, border=10)
        grid.Add(buttonOk, pos=(3, 2),
                 flag=wx.ALIGN_RIGHT | wx.ALL, border=10)

        self.SetSizerAndFit(grid)
        self.Centre()
    def __init__(self, thisPanel, log, api):
        self.logger = log
        self.api = api
        self.thisPanel = thisPanel
        self.rawPanel = RawPanel(thisPanel, wx.ID_ANY)
        self.dataPanel = None
        ## Box for simple queries
        self.ModelViewsBox = wx.StaticBox(self.thisPanel, wx.ID_ANY,
                                          "Model Views")
        self.ModelViewsList = SimpleQueryListCtrlPanel(self.ModelViewsBox,
                                                       self.logger, self.api,
                                                       self)
        self.filter = wx.SearchCtrl(self.ModelViewsBox,
                                    style=wx.TE_PROCESS_ENTER)
        self.filter.ShowCancelButton(True)
        self.filter.Bind(wx.EVT_TEXT, self.OnSearch)
        self.filter.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN,
                         lambda e: self.filter.SetValue(''))
        self.filter.Bind(wx.EVT_TEXT_ENTER, self.OnSearch)
        self.icons8 = HyperlinkCtrl(self.ModelViewsBox,
                                    wx.ID_ANY,
                                    label="Icons provided by Icons8",
                                    url="https://icons8.com")

        self.dataPanel = AppTreeView(self.rawPanel, self.logger, self.api)
        viewBox1 = wx.BoxSizer()
        viewBox1.Add(self.dataPanel, 1, wx.EXPAND | wx.ALL, 5)
        self.rawPanel.SetSizer(viewBox1)
        self.rawPanel.Show()
        self.rawPanel.SendSizeEvent()

        self.resetMainPanel()
        wx.EndBusyCursor()
示例#6
0
 def _get_metadata(self, name, value):
     sizer = wx.BoxSizer(wx.HORIZONTAL)
     sizer.Add(Label(self, label='%s: ' % name))
     if value.split('://')[0] in ['http', 'https']:
         sizer.Add(HyperlinkCtrl(self, -1, label=value, url=value))
     else:
         sizer.Add(Label(self, label=value))
     return sizer
示例#7
0
    def __init__(self, thisPanel, log, api):
        self.logger = log
        self.api = api
        self.thisPanel = thisPanel
        self.rawPanel = RawPanel(thisPanel, wx.ID_ANY)
        self.dataPanel = None
        ## Placeholder for when we known how to create an InputListCtrlPanel
        self.inputQueryList = None

        self.inputDrivenQueryBox = wx.StaticBox(self.thisPanel, wx.ID_ANY,
                                                "Input Driven Queries")
        self.inputDrivenQueryList = InputDrivenQueryListCtrlPanel(
            self.inputDrivenQueryBox, self.logger, self.api, self)
        self.inputListRawPanel = RawPanel(self.inputDrivenQueryBox, wx.ID_ANY)

        self.filter = wx.SearchCtrl(self.inputDrivenQueryBox,
                                    style=wx.TE_PROCESS_ENTER)
        self.filter.ShowCancelButton(True)
        self.filter.Bind(wx.EVT_TEXT, self.OnSearch)
        self.filter.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN,
                         lambda e: self.filter.SetValue(''))
        self.filter.Bind(wx.EVT_TEXT_ENTER, self.OnSearch)

        self.filterInputList = wx.SearchCtrl(self.inputDrivenQueryBox,
                                             style=wx.TE_PROCESS_ENTER)
        self.filterInputList.ShowCancelButton(True)
        self.filterInputList.Bind(wx.EVT_TEXT, self.OnInputListSearch)
        self.filterInputList.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN,
                                  lambda e: self.filterInputList.SetValue(''))
        self.filterInputList.Bind(wx.EVT_TEXT_ENTER, self.OnInputListSearch)
        self.icons8 = HyperlinkCtrl(self.inputDrivenQueryBox,
                                    wx.ID_ANY,
                                    label="Icons provided by Icons8",
                                    url="https://icons8.com")

        self.className = wx.TextCtrl(self.inputDrivenQueryBox,
                                     wx.ID_ANY,
                                     '',
                                     size=(110, -1),
                                     style=wx.TE_READONLY | wx.EXPAND
                                     | wx.BORDER_NONE)
        self.attrName = wx.TextCtrl(self.inputDrivenQueryBox,
                                    wx.ID_ANY,
                                    '',
                                    size=(110, -1),
                                    style=wx.TE_READONLY | wx.EXPAND
                                    | wx.BORDER_NONE)

        self.dataPanel = InputDrivenQueryListView(self.rawPanel, self.logger,
                                                  self.api)
        viewBox1 = wx.BoxSizer()
        viewBox1.Add(self.dataPanel, 1, wx.EXPAND | wx.ALL, 5)
        self.rawPanel.SetSizer(viewBox1)
        self.rawPanel.Show()
        self.rawPanel.SendSizeEvent()

        self.resetMainPanel()
        wx.EndBusyCursor()
示例#8
0
    def RunComplexDemo(self, tb):

        # This Is The New Call Style: The Call To GetToasterBoxWindow()
        # Is Mandatory, In Order To Create A Custom Parent On ToasterBox.

        tbpanel = tb.GetToasterBoxWindow()
        panel = wx.Panel(tbpanel, -1)

        sizer = wx.BoxSizer(wx.VERTICAL)
        horsizer1 = wx.BoxSizer(wx.HORIZONTAL)

        myimage = wx.Bitmap(os.path.join(bitmapDir, "sttfont.png"),
                            wx.BITMAP_TYPE_PNG)
        stbmp = wx.StaticBitmap(panel, -1, myimage)
        horsizer1.Add(stbmp, 0)

        strs = "This Is Another Example Of ToasterBox, A Complex One. This Kind Of"
        strs = strs + " ToasterBox Can Be Created Using The Style TB_COMPLEX."
        sttext = wx.StaticText(panel, -1, strs)
        horsizer1.Add(sttext, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5)

        hl = hyperlink.HyperLinkCtrl(panel,
                                     -1,
                                     "My Home Page",
                                     URL="http://xoomer.alice.it/infinity77/")

        sizer.Add((0, 5))
        sizer.Add(horsizer1, 0, wx.EXPAND)

        horsizer2 = wx.BoxSizer(wx.HORIZONTAL)
        horsizer2.Add((5, 0))
        horsizer2.Add(hl, 0, wx.EXPAND | wx.TOP, 10)
        sizer.Add(horsizer2, 0, wx.EXPAND)

        tk = Ticker(panel)
        tk.SetText("Hello From wxPython!")

        horsizer3 = wx.BoxSizer(wx.HORIZONTAL)
        horsizer3.Add((5, 0))
        horsizer3.Add(tk, 1, wx.EXPAND | wx.TOP, 10)
        horsizer3.Add((5, 0))
        sizer.Add(horsizer3, 0, wx.EXPAND)

        panel.SetSizer(sizer)
        panel.Layout()

        tb.AddPanel(panel)
示例#9
0
 def create_widget(self):
     self.widget = HyperlinkCtrl(self.parent.widget, self.id, self.label,
                                 self.url)
示例#10
0
 def _add_help_dialog(self, sizer):
     # DEBUG wxPhoenix
     sizer.Add(HyperlinkCtrl(self, wx.ID_ANY, '', 'Need help?'))
     self.Bind(EVT_HYPERLINK, self.OnHelp)
示例#11
0
 def __init__(self, parent, text, url=''):
     url = text if not url else url
     HyperlinkCtrl.__init__(self, parent, wx.ID_ANY, utils.tr(text), url)
示例#12
0
 def SetToolTip(self, tip):
     if wxPythonPhoenix:
         HyperlinkCtrl_.SetToolTip(self, tipString=tip)
     else:
         HyperlinkCtrl_.SetToolTipString(self, tip)
示例#13
0
 def __init__(self, *args, **kwargs):
     HyperlinkCtrl_.__init__(self, *args, **kwargs)
示例#14
0
 def create_widget(self):
     self.widget = HyperlinkCtrl(self.parent_window.widget, wx.ID_ANY, self.label, self.url, style=self.style)
示例#15
0
    def __init__(self, parent, settings):
        self.settings = settings
        self.index = 0

        wx.Dialog.__init__(self, parent=parent, title="Preferences")

        self.colours = get_colours()
        self.winFunc = settings.winFunc
        self.background = settings.background

        self.checkSaved = wx.CheckBox(self, wx.ID_ANY, "Save warning")
        self.checkSaved.SetValue(settings.saveWarn)
        self.checkBackup = wx.CheckBox(self, wx.ID_ANY, "Backup")
        self.checkBackup.SetValue(settings.backup)
        self.checkBackup.SetToolTip('Backup data after crash')
        self.checkAlert = wx.CheckBox(self, wx.ID_ANY, "Level alert (dB)")
        self.checkAlert.SetValue(settings.alert)
        self.checkAlert.SetToolTip('Play alert when level exceeded')
        self.Bind(wx.EVT_CHECKBOX, self.__on_alert, self.checkAlert)
        self.spinLevel = wx.SpinCtrl(self, wx.ID_ANY, min=-100, max=20)
        self.spinLevel.SetValue(settings.alertLevel)
        self.spinLevel.Enable(settings.alert)
        self.spinLevel.SetToolTip('Alert threshold')
        textBackground = wx.StaticText(self, label='Background colour')
        self.buttonBackground = wx.Button(self, wx.ID_ANY)
        self.buttonBackground.SetBackgroundColour(self.background)
        self.Bind(wx.EVT_BUTTON, self.__on_background, self.buttonBackground)
        textColour = wx.StaticText(self, label="Colour map")
        self.choiceColour = wx.Choice(self, choices=self.colours)
        self.choiceColour.SetSelection(self.colours.index(settings.colourMap))
        self.Bind(wx.EVT_CHOICE, self.__on_choice, self.choiceColour)
        self.colourBar = PanelColourBar(self, settings.colourMap)
        self.checkPoints = wx.CheckBox(self, wx.ID_ANY, "Limit points")
        self.checkPoints.SetValue(settings.pointsLimit)
        self.checkPoints.SetToolTip('Limit the resolution of plots')
        self.Bind(wx.EVT_CHECKBOX, self.__on_points, self.checkPoints)
        self.spinPoints = wx.SpinCtrl(self, wx.ID_ANY, min=1000, max=100000)
        self.spinPoints.Enable(settings.pointsLimit)
        self.spinPoints.SetValue(settings.pointsMax)
        self.spinPoints.SetToolTip('Maximum number of points to plot_line')
        textDpi = wx.StaticText(self, label='Export DPI')
        self.spinDpi = wx.SpinCtrl(self, wx.ID_ANY, min=72, max=6000)
        self.spinDpi.SetValue(settings.exportDpi)
        self.spinDpi.SetToolTip('DPI of exported images')
        self.checkTune = wx.CheckBox(self, wx.ID_ANY, "Tune SDR#")
        self.checkTune.SetValue(settings.clickTune)
        self.checkTune.SetToolTip('Double click plot_line to tune SDR#')
        textPlugin = HyperlinkCtrl(
            self,
            wx.ID_ANY,
            label="(Requires plugin)",
            url="http://eartoearoak.com/software/sdrsharp-net-remote")

        self.radioAvg = wx.RadioButton(self,
                                       wx.ID_ANY,
                                       'Average Scans',
                                       style=wx.RB_GROUP)
        self.radioAvg.SetToolTip('Average level with each scan')
        self.Bind(wx.EVT_RADIOBUTTON, self.__on_radio, self.radioAvg)
        self.radioRetain = wx.RadioButton(self, wx.ID_ANY,
                                          'Retain previous scans')
        self.radioRetain.SetToolTip('Can be slow')
        self.Bind(wx.EVT_RADIOBUTTON, self.__on_radio, self.radioRetain)
        self.radioRetain.SetValue(settings.retainScans)

        textMaxScans = wx.StaticText(self, label="Max scans")
        self.spinCtrlMaxScans = wx.SpinCtrl(self)
        self.spinCtrlMaxScans.SetRange(1, 5000)
        self.spinCtrlMaxScans.SetValue(settings.retainMax)
        self.spinCtrlMaxScans.SetToolTip('Maximum previous scans'
                                         ' to display')

        textWidth = wx.StaticText(self, label="Line width")
        self.ctrlWidth = NumCtrl(self, integerWidth=2, fractionWidth=1)
        self.ctrlWidth.SetValue(settings.lineWidth)

        self.__on_radio(None)

        sizerButtons = wx.StdDialogButtonSizer()
        buttonOk = wx.Button(self, wx.ID_OK)
        buttonCancel = wx.Button(self, wx.ID_CANCEL)
        sizerButtons.AddButton(buttonOk)
        sizerButtons.AddButton(buttonCancel)
        sizerButtons.Realize()
        self.Bind(wx.EVT_BUTTON, self.__on_ok, buttonOk)

        gengrid = wx.GridBagSizer(10, 10)
        gengrid.Add(self.checkSaved, pos=(0, 0))
        gengrid.Add(self.checkBackup, pos=(1, 0))
        gengrid.Add(self.checkAlert, pos=(2, 0), flag=wx.ALIGN_CENTRE)
        gengrid.Add(self.spinLevel, pos=(2, 1))
        gengrid.Add(textBackground, pos=(3, 0), flag=wx.ALIGN_CENTRE)
        gengrid.Add(self.buttonBackground, pos=(3, 1))
        gengrid.Add(textColour, pos=(4, 0))
        gengrid.Add(self.choiceColour, pos=(4, 1))
        gengrid.Add(self.colourBar, pos=(4, 2))
        gengrid.Add(self.checkPoints, pos=(5, 0))
        gengrid.Add(self.spinPoints, pos=(5, 1))
        gengrid.Add(textDpi, pos=(6, 0))
        gengrid.Add(self.spinDpi, pos=(6, 1))
        gengrid.Add(self.checkTune, pos=(7, 0))
        gengrid.Add(textPlugin, pos=(7, 1))
        genbox = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, "General"))
        genbox.Add(gengrid, 0, wx.ALL | wx.ALIGN_CENTRE_VERTICAL, 10)

        congrid = wx.GridBagSizer(10, 10)
        congrid.Add(self.radioAvg, pos=(0, 0))
        congrid.Add(self.radioRetain, pos=(1, 0))
        congrid.Add(textMaxScans, pos=(2, 0), flag=wx.ALIGN_CENTRE_VERTICAL)
        congrid.Add(self.spinCtrlMaxScans, pos=(2, 1))
        conbox = wx.StaticBoxSizer(
            wx.StaticBox(self, wx.ID_ANY, "Continuous Scans"), wx.VERTICAL)
        conbox.Add(congrid, 0, wx.ALL | wx.EXPAND, 10)

        plotgrid = wx.GridBagSizer(10, 10)
        plotgrid.Add(textWidth, pos=(0, 0))
        plotgrid.Add(self.ctrlWidth, pos=(0, 1))
        plotbox = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, "Plot View"),
                                    wx.HORIZONTAL)
        plotbox.Add(plotgrid, 0, wx.ALL | wx.EXPAND, 10)

        grid = wx.GridBagSizer(10, 10)
        grid.Add(genbox, pos=(0, 0), span=(1, 2), flag=wx.EXPAND)
        grid.Add(conbox, pos=(1, 0), span=(1, 2), flag=wx.EXPAND)
        grid.Add(plotbox, pos=(2, 0), span=(1, 2), flag=wx.EXPAND)
        grid.Add(sizerButtons, pos=(3, 1), flag=wx.EXPAND)

        box = wx.BoxSizer()
        box.Add(grid, flag=wx.ALL | wx.ALIGN_CENTRE, border=10)

        self.SetSizerAndFit(box)
示例#16
0
 def _add_help_dialog(self, sizer):
     need_help = HyperlinkCtrl(self, wx.ID_ANY, '', 'Need help?')
     need_help.SetBackgroundColour(Colour(self.color_secondary_background))
     need_help.SetForegroundColour(Colour(self.color_secondary_foreground))
     sizer.Add(need_help)
     self.Bind(EVT_HYPERLINK, self.OnHelp)