dialogs/UriEditor.py
changeset 2332 03a94f862465
parent 2331 91ae5a11a462
child 2334 d1470c052662
equal deleted inserted replaced
2331:91ae5a11a462 2332:03a94f862465
     1 from __future__ import absolute_import
     1 from __future__ import absolute_import
     2 
     2 
     3 import wx
     3 import wx
     4 from connectors import ConnectorSchemes, EditorClassFromScheme
     4 from connectors import ConnectorSchemes, EditorClassFromScheme
       
     5 from controls.DiscoveryPanel import DiscoveryPanel
     5 
     6 
     6 class UriEditor(wx.Dialog):
     7 class UriEditor(wx.Dialog):
     7     def _init_ctrls(self, parent):
     8     def _init_ctrls(self, parent):
     8         self.UriTypeChoice = wx.Choice(parent=self, choices=self.URITYPES)
     9         self.UriTypeChoice = wx.Choice(parent=self, choices=self.choices)
     9         self.UriTypeChoice.SetSelection(0)
    10         self.UriTypeChoice.SetSelection(0)
    10         self.Bind(wx.EVT_CHOICE, self.OnTypeChoice, self.UriTypeChoice)
    11         self.Bind(wx.EVT_CHOICE, self.OnTypeChoice, self.UriTypeChoice)
    11         self.editor_sizer = wx.BoxSizer(wx.HORIZONTAL)
    12         self.editor_sizer = wx.BoxSizer(wx.HORIZONTAL)
    12         self.ButtonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL)
    13         self.ButtonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL)
    13 
    14 
    24                            flag=wx.BOTTOM | wx.ALIGN_CENTER_HORIZONTAL)
    25                            flag=wx.BOTTOM | wx.ALIGN_CENTER_HORIZONTAL)
    25         self.SetSizer(self.mainSizer)
    26         self.SetSizer(self.mainSizer)
    26         self.Layout()
    27         self.Layout()
    27         self.Fit()
    28         self.Fit()
    28 
    29 
    29     def __init__(self, parent, uri):
    30     def __init__(self, parent, uri=''):
    30         wx.Dialog.__init__(self,
    31         wx.Dialog.__init__(self,
    31                            name='UriEditor', parent=parent,
    32                            name='UriEditor', parent=parent,
    32                            title=_('URI Editor'))
    33                            title=_('URI Editor'))
    33         self.URITYPES = [_("- Select URI Scheme -")] + ConnectorSchemes()
    34         self.choices = [_("- Search local network -")] + ConnectorSchemes()
    34         self._init_ctrls(parent)
    35         self._init_ctrls(parent)
    35         self._init_sizers()
    36         self._init_sizers()
    36         self.scheme = None
    37         self.scheme = None
    37         self.scheme_editor = None
    38         self.scheme_editor = None
    38         self.SetURI(uri)
    39         self.SetURI(uri)
    43         self._replaceSchemeEditor(event.GetString() if index > 0 else None)
    44         self._replaceSchemeEditor(event.GetString() if index > 0 else None)
    44 
    45 
    45     def SetURI(self, uri):
    46     def SetURI(self, uri):
    46         try:
    47         try:
    47             scheme, loc = uri.strip().split("://",1)
    48             scheme, loc = uri.strip().split("://",1)
       
    49             scheme = scheme.upper()
    48         except:
    50         except:
    49             return None
    51             scheme = None
    50         scheme = scheme.upper()
    52 
    51         if scheme in ConnectorSchemes():
    53         if scheme in ConnectorSchemes():
    52             self.UriTypeChoice.SetStringSelection(scheme)
    54             self.UriTypeChoice.SetStringSelection(scheme)
    53             self._replaceSchemeEditor(scheme)
    55         else:
       
    56             self.UriTypeChoice.SetSelection(0)
       
    57 
       
    58         self._replaceSchemeEditor(scheme)
       
    59 
       
    60         if scheme is not None:
    54             self.scheme_editor.SetLoc(loc)
    61             self.scheme_editor.SetLoc(loc)
    55 
    62 
       
    63 
    56     def GetURI(self):
    64     def GetURI(self):
    57         if self.scheme_editor is None:
    65         if self.scheme is None:
    58             return None
    66             return self.scheme_editor.GetURI()
    59         else:
    67         else:
    60             return self.scheme+"://"+self.scheme_editor.GetLoc()
    68             return self.scheme+"://"+self.scheme_editor.GetLoc()
    61 
    69 
    62     def _replaceSchemeEditor(self, scheme):
    70     def _replaceSchemeEditor(self, scheme):
    63         self.scheme = scheme
    71         self.scheme = scheme
    65         if self.scheme_editor is not None:
    73         if self.scheme_editor is not None:
    66             self.editor_sizer.Detach(self.scheme_editor)
    74             self.editor_sizer.Detach(self.scheme_editor)
    67             self.scheme_editor.Destroy()
    75             self.scheme_editor.Destroy()
    68             self.scheme_editor = None
    76             self.scheme_editor = None
    69 
    77 
    70         EditorClass = EditorClassFromScheme(scheme)
    78         if scheme is not None :
    71         if EditorClass is not None:
    79             EditorClass = EditorClassFromScheme(scheme)
    72             self.scheme_editor = EditorClass(scheme,self)
    80             self.scheme_editor = EditorClass(scheme,self)
    73             self.editor_sizer.Add(self.scheme_editor)
    81         else :
    74             self.scheme_editor.Refresh()
    82             # None is for searching local network
       
    83             self.scheme_editor = DiscoveryPanel(self) 
       
    84 
       
    85         self.editor_sizer.Add(self.scheme_editor)
       
    86         self.scheme_editor.Refresh()
       
    87             
    75         self.editor_sizer.Layout()
    88         self.editor_sizer.Layout()
    76         self.mainSizer.Layout()
    89         self.mainSizer.Layout()
    77         self.Fit()
    90         self.Fit()
    78 
    91