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 from controls.DiscoveryPanel import DiscoveryPanel |
|
6 |
6 |
7 |
7 class UriEditor(wx.Dialog): |
8 class UriEditor(wx.Dialog): |
8 def _init_ctrls(self, parent): |
9 def _init_ctrls(self, parent): |
9 self.UriTypeChoice = wx.Choice(parent=self, choices=self.choices) |
10 self.UriTypeChoice = wx.Choice(parent=self, choices=self.choices) |
10 self.UriTypeChoice.SetSelection(0) |
11 self.UriTypeChoice.SetSelection(0) |
14 |
15 |
15 def _init_sizers(self): |
16 def _init_sizers(self): |
16 self.mainSizer = wx.BoxSizer(wx.VERTICAL) |
17 self.mainSizer = wx.BoxSizer(wx.VERTICAL) |
17 typeSizer = wx.BoxSizer(wx.HORIZONTAL) |
18 typeSizer = wx.BoxSizer(wx.HORIZONTAL) |
18 typeSizer.Add(wx.StaticText(self, wx.ID_ANY, _("Scheme :")), border=5, |
19 typeSizer.Add(wx.StaticText(self, wx.ID_ANY, _("Scheme :")), border=5, |
19 flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL) |
20 flag=wx.ALIGN_CENTER_VERTICAL | wx.ALL) |
20 typeSizer.Add(self.UriTypeChoice, border=5, flag=wx.ALL) |
21 typeSizer.Add(self.UriTypeChoice, border=5, flag=wx.ALL) |
21 self.mainSizer.Add(typeSizer) |
22 self.mainSizer.Add(typeSizer) |
22 |
23 |
23 self.mainSizer.Add(self.editor_sizer, border=5, flag=wx.ALL) |
24 self.mainSizer.Add(self.editor_sizer, border=5, flag=wx.ALL) |
24 self.mainSizer.Add(self.ButtonSizer, border=5, |
25 self.mainSizer.Add(self.ButtonSizer, border=5, |
44 index = event.GetSelection() |
45 index = event.GetSelection() |
45 self._replaceSchemeEditor(event.GetString() if index > 0 else None) |
46 self._replaceSchemeEditor(event.GetString() if index > 0 else None) |
46 |
47 |
47 def SetURI(self, uri): |
48 def SetURI(self, uri): |
48 try: |
49 try: |
49 scheme, loc = uri.strip().split("://",1) |
50 scheme, loc = uri.strip().split("://", 1) |
50 scheme = scheme.upper() |
51 scheme = scheme.upper() |
51 except: |
52 except Exception: |
52 scheme = None |
53 scheme = None |
53 |
54 |
54 if scheme in ConnectorSchemes(): |
55 if scheme in ConnectorSchemes(): |
55 self.UriTypeChoice.SetStringSelection(scheme) |
56 self.UriTypeChoice.SetStringSelection(scheme) |
56 else: |
57 else: |
60 self._replaceSchemeEditor(scheme) |
61 self._replaceSchemeEditor(scheme) |
61 |
62 |
62 if scheme is not None: |
63 if scheme is not None: |
63 self.scheme_editor.SetLoc(loc) |
64 self.scheme_editor.SetLoc(loc) |
64 |
65 |
65 |
|
66 def GetURI(self): |
66 def GetURI(self): |
67 if self.scheme is None: |
67 if self.scheme is None: |
68 return self.scheme_editor.GetURI() |
68 return self.scheme_editor.GetURI() |
69 else: |
69 else: |
70 return self.scheme+"://"+self.scheme_editor.GetLoc() |
70 return self.scheme+"://"+self.scheme_editor.GetLoc() |
71 |
71 |
72 def _replaceSchemeEditor(self, scheme): |
72 def _replaceSchemeEditor(self, scheme): |
73 self.scheme = scheme |
73 self.scheme = scheme |
74 |
74 |
75 if self.scheme_editor is not None: |
75 if self.scheme_editor is not None: |
76 self.editor_sizer.Detach(self.scheme_editor) |
76 self.editor_sizer.Detach(self.scheme_editor) |
77 self.scheme_editor.Destroy() |
77 self.scheme_editor.Destroy() |
78 self.scheme_editor = None |
78 self.scheme_editor = None |
79 |
79 |
80 if scheme is not None : |
80 if scheme is not None: |
81 EditorClass = EditorClassFromScheme(scheme) |
81 EditorClass = EditorClassFromScheme(scheme) |
82 self.scheme_editor = EditorClass(scheme,self) |
82 self.scheme_editor = EditorClass(scheme, self) |
83 else : |
83 else: |
84 # None is for searching local network |
84 # None is for searching local network |
85 self.scheme_editor = DiscoveryPanel(self) |
85 self.scheme_editor = DiscoveryPanel(self) |
86 |
86 |
87 self.editor_sizer.Add(self.scheme_editor) |
87 self.editor_sizer.Add(self.scheme_editor) |
88 self.scheme_editor.Refresh() |
88 self.scheme_editor.Refresh() |
89 |
89 |
90 self.editor_sizer.Layout() |
90 self.editor_sizer.Layout() |
91 self.mainSizer.Layout() |
91 self.mainSizer.Layout() |
92 self.Fit() |
92 self.Fit() |
93 |
|