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 |