Commit 4894afd6f4abdd63c68e39fe9382f41d7c88f51a

Authored by Thiago Franco de Moraes
1 parent a488df41
Exists in wx2.9_mac

It was not possible to use preference because of a error with language combobox

It was necessary to a bind to the combobox
Showing 1 changed file with 179 additions and 170 deletions   Show diff stats
invesalius/gui/preferences.py
1 -import wx  
2 -import constants as const  
3 -from wx.lib.pubsub import pub as Publisher  
4 -import session as ses  
5 -from language_dialog import ComboBoxLanguage  
6 -  
7 -ID = wx.NewId()  
8 -  
9 -try:  
10 - from agw import flatnotebook as fnb  
11 - AGW = 1  
12 -except ImportError: # if it's not there locally, try the wxPython lib.  
13 - import wx.lib.agw.flatnotebook as fnb  
14 - AGW = 0  
15 -  
16 -class Preferences(wx.Dialog):  
17 -  
18 - def __init__( self, parent, id = ID, title = _("Preferences"), size=wx.DefaultSize,\  
19 - pos=wx.DefaultPosition, style=wx.DEFAULT_DIALOG_STYLE):  
20 -  
21 - pre = wx.PreDialog()  
22 - pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)  
23 - pre.Create(parent, ID, title, pos, size, style)  
24 -  
25 - self.PostCreate(pre)  
26 -  
27 - sizer = wx.BoxSizer(wx.VERTICAL)  
28 -  
29 - bookStyle = fnb.FNB_NODRAG | fnb.FNB_NO_NAV_BUTTONS | fnb.FNB_NO_X_BUTTON  
30 -  
31 - if AGW:  
32 - self.book = fnb.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)  
33 - else:  
34 - self.book = fnb.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)  
35 -  
36 - sizer.Add(self.book, 80, wx.EXPAND|wx.ALL)  
37 -  
38 - self.pnl_viewer3d = Viewer3D(self)  
39 - self.pnl_language = Language(self)  
40 -  
41 - self.book.AddPage(self.pnl_viewer3d, _("Visualization"))  
42 - self.book.AddPage(self.pnl_language, _("Language"))  
43 -  
44 - line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)  
45 - sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, 5)  
46 -  
47 - btnsizer = wx.StdDialogButtonSizer()  
48 -  
49 - btn = wx.Button(self, wx.ID_OK)  
50 - btnsizer.AddButton(btn)  
51 -  
52 - btn = wx.Button(self, wx.ID_CANCEL)  
53 - btnsizer.AddButton(btn)  
54 -  
55 - btnsizer.Realize()  
56 -  
57 - sizer.AddSizer(btnsizer, 10, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP|wx.BOTTOM, 5)  
58 -  
59 - self.SetSizer(sizer)  
60 - sizer.Fit(self)  
61 -  
62 - self.__bind_events()  
63 -  
64 - def __bind_events(self):  
65 - Publisher.subscribe(self.LoadPreferences, 'Load Preferences')  
66 -  
67 -  
68 - def GetPreferences(self):  
69 - values = {}  
70 - lang = self.pnl_language.GetSelection()  
71 - viewer = self.pnl_viewer3d.GetSelection()  
72 - values.update(lang)  
73 - values.update(viewer)  
74 - return values  
75 -  
76 - def LoadPreferences(self, pub_evt):  
77 - se = ses.Session()  
78 - values = {const.RENDERING:se.rendering,  
79 - const.SURFACE_INTERPOLATION:se.surface_interpolation,  
80 - const.LANGUAGE:se.language  
81 - }  
82 -  
83 - self.pnl_viewer3d.LoadSelection(values)  
84 - self.pnl_language.LoadSelection(values)  
85 -  
86 -  
87 -  
88 -class Viewer3D(wx.Panel):  
89 -  
90 - def __init__(self, parent):  
91 -  
92 - wx.Panel.__init__(self, parent)  
93 -  
94 -  
95 - box_visualization = wx.StaticBox(self, -1, _("Surface"))  
96 - bsizer = wx.StaticBoxSizer(box_visualization, wx.VERTICAL)  
97 -  
98 - lbl_inter = wx.StaticText(self, -1, _("Interpolation "))  
99 - bsizer.Add(lbl_inter, 0, wx.TOP|wx.LEFT, 10)  
100 -  
101 - rb_inter = self.rb_inter = wx.RadioBox(self, -1, "", wx.DefaultPosition, wx.DefaultSize,  
102 - ['Flat','Gouraud','Phong'], 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER)  
103 -  
104 - bsizer.Add(rb_inter, 0, wx.TOP|wx.LEFT, 0)  
105 -  
106 - box_rendering = wx.StaticBox(self, -1, _("Volume rendering"))  
107 - bsizer_ren = wx.StaticBoxSizer(box_rendering, wx.VERTICAL)  
108 -  
109 - lbl_rendering = wx.StaticText(self, -1, _("Rendering"))  
110 - bsizer_ren.Add(lbl_rendering, 0, wx.TOP | wx.LEFT, 10)  
111 -  
112 - rb_rendering = self.rb_rendering = wx.RadioBox(self, -1, "", wx.DefaultPosition, wx.DefaultSize,  
113 - ['CPU', _(u'GPU (NVidia video cards only)')], 2, wx.RA_SPECIFY_COLS | wx.NO_BORDER)  
114 -  
115 - bsizer_ren.Add(rb_rendering, 0, wx.TOP | wx.LEFT, 0)  
116 - border = wx.BoxSizer(wx.VERTICAL)  
117 - border.Add(bsizer, 50, wx.EXPAND|wx.ALL, 10)  
118 - border.Add(bsizer_ren, 50, wx.EXPAND|wx.ALL, 10)  
119 - self.SetSizer(border)  
120 -  
121 - border.Fit(self)  
122 -  
123 -  
124 - def GetSelection(self):  
125 -  
126 - options = {const.RENDERING:self.rb_rendering.GetSelection(),  
127 - const.SURFACE_INTERPOLATION:self.rb_inter.GetSelection()}  
128 -  
129 - return options  
130 -  
131 - def LoadSelection(self, values):  
132 - rendering = values[const.RENDERING]  
133 - surface_interpolation = values[const.SURFACE_INTERPOLATION]  
134 -  
135 - self.rb_rendering.SetSelection(int(rendering))  
136 - self.rb_inter.SetSelection(int(surface_interpolation))  
137 -  
138 -class Language(wx.Panel):  
139 -  
140 - def __init__(self, parent):  
141 -  
142 - wx.Panel.__init__(self, parent)  
143 -  
144 - self.lg = lg = ComboBoxLanguage(self)  
145 - self.cmb_lang = cmb_lang = lg.GetComboBox()  
146 -  
147 - box = wx.StaticBox(self, -1, _("Language"))  
148 - bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)  
149 -  
150 - text = wx.StaticText(self, -1, _("Language settings will be applied \n the next time InVesalius starts."))  
151 - bsizer.Add(cmb_lang, 0, wx.TOP|wx.CENTER, 20)  
152 - bsizer.Add(text, 0, wx.TOP|wx.CENTER, 10)  
153 -  
154 - border = wx.BoxSizer()  
155 - border.Add(bsizer, 1, wx.EXPAND|wx.ALL, 20)  
156 - self.SetSizer(border)  
157 -  
158 - border.Fit(self)  
159 -  
160 - def GetSelection(self):  
161 - selection = self.cmb_lang.GetSelection()  
162 - locales = self.lg.GetLocalesKey()  
163 - options = {const.LANGUAGE:locales[selection]}  
164 - return options  
165 -  
166 - def LoadSelection(self, values):  
167 - language = values[const.LANGUAGE]  
168 - locales = self.lg.GetLocalesKey()  
169 - selection = locales.index(language)  
170 - self.cmb_lang.SetSelection(int(selection)) 1 +import wx
  2 +import constants as const
  3 +from wx.lib.pubsub import pub as Publisher
  4 +import session as ses
  5 +from language_dialog import ComboBoxLanguage
  6 +
  7 +ID = wx.NewId()
  8 +
  9 +try:
  10 + from agw import flatnotebook as fnb
  11 + AGW = 1
  12 +except ImportError: # if it's not there locally, try the wxPython lib.
  13 + import wx.lib.agw.flatnotebook as fnb
  14 + AGW = 0
  15 +
  16 +class Preferences(wx.Dialog):
  17 +
  18 + def __init__( self, parent, id = ID, title = _("Preferences"), size=wx.DefaultSize,\
  19 + pos=wx.DefaultPosition, style=wx.DEFAULT_DIALOG_STYLE):
  20 +
  21 + pre = wx.PreDialog()
  22 + pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
  23 + pre.Create(parent, ID, title, pos, size, style)
  24 +
  25 + self.PostCreate(pre)
  26 +
  27 + sizer = wx.BoxSizer(wx.VERTICAL)
  28 +
  29 + bookStyle = fnb.FNB_NODRAG | fnb.FNB_NO_NAV_BUTTONS | fnb.FNB_NO_X_BUTTON
  30 +
  31 + if AGW:
  32 + self.book = fnb.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)
  33 + else:
  34 + self.book = fnb.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)
  35 +
  36 + sizer.Add(self.book, 80, wx.EXPAND|wx.ALL)
  37 +
  38 + self.pnl_viewer3d = Viewer3D(self)
  39 + self.pnl_language = Language(self)
  40 +
  41 + self.book.AddPage(self.pnl_viewer3d, _("Visualization"))
  42 + self.book.AddPage(self.pnl_language, _("Language"))
  43 +
  44 + line = wx.StaticLine(self, -1, size=(20,-1), style=wx.LI_HORIZONTAL)
  45 + sizer.Add(line, 0, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP, 5)
  46 +
  47 + btnsizer = wx.StdDialogButtonSizer()
  48 +
  49 + btn = wx.Button(self, wx.ID_OK)
  50 + btnsizer.AddButton(btn)
  51 +
  52 + btn = wx.Button(self, wx.ID_CANCEL)
  53 + btnsizer.AddButton(btn)
  54 +
  55 + btnsizer.Realize()
  56 +
  57 + sizer.AddSizer(btnsizer, 10, wx.GROW|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.TOP|wx.BOTTOM, 5)
  58 +
  59 + self.SetSizer(sizer)
  60 + sizer.Fit(self)
  61 +
  62 + self.__bind_events()
  63 +
  64 + def __bind_events(self):
  65 + Publisher.subscribe(self.LoadPreferences, 'Load Preferences')
  66 +
  67 +
  68 + def GetPreferences(self):
  69 + values = {}
  70 + lang = self.pnl_language.GetSelection()
  71 + viewer = self.pnl_viewer3d.GetSelection()
  72 + values.update(lang)
  73 + values.update(viewer)
  74 + return values
  75 +
  76 + def LoadPreferences(self, pub_evt):
  77 + se = ses.Session()
  78 + values = {const.RENDERING:se.rendering,
  79 + const.SURFACE_INTERPOLATION:se.surface_interpolation,
  80 + const.LANGUAGE:se.language
  81 + }
  82 +
  83 + self.pnl_viewer3d.LoadSelection(values)
  84 + self.pnl_language.LoadSelection(values)
  85 +
  86 +
  87 +
  88 +class Viewer3D(wx.Panel):
  89 +
  90 + def __init__(self, parent):
  91 +
  92 + wx.Panel.__init__(self, parent)
  93 +
  94 +
  95 + box_visualization = wx.StaticBox(self, -1, _("Surface"))
  96 + bsizer = wx.StaticBoxSizer(box_visualization, wx.VERTICAL)
  97 +
  98 + lbl_inter = wx.StaticText(self, -1, _("Interpolation "))
  99 + bsizer.Add(lbl_inter, 0, wx.TOP|wx.LEFT, 10)
  100 +
  101 + rb_inter = self.rb_inter = wx.RadioBox(self, -1, "", wx.DefaultPosition, wx.DefaultSize,
  102 + ['Flat','Gouraud','Phong'], 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER)
  103 +
  104 + bsizer.Add(rb_inter, 0, wx.TOP|wx.LEFT, 0)
  105 +
  106 + box_rendering = wx.StaticBox(self, -1, _("Volume rendering"))
  107 + bsizer_ren = wx.StaticBoxSizer(box_rendering, wx.VERTICAL)
  108 +
  109 + lbl_rendering = wx.StaticText(self, -1, _("Rendering"))
  110 + bsizer_ren.Add(lbl_rendering, 0, wx.TOP | wx.LEFT, 10)
  111 +
  112 + rb_rendering = self.rb_rendering = wx.RadioBox(self, -1, "", wx.DefaultPosition, wx.DefaultSize,
  113 + ['CPU', _(u'GPU (NVidia video cards only)')], 2, wx.RA_SPECIFY_COLS | wx.NO_BORDER)
  114 +
  115 + bsizer_ren.Add(rb_rendering, 0, wx.TOP | wx.LEFT, 0)
  116 + border = wx.BoxSizer(wx.VERTICAL)
  117 + border.Add(bsizer, 50, wx.EXPAND|wx.ALL, 10)
  118 + border.Add(bsizer_ren, 50, wx.EXPAND|wx.ALL, 10)
  119 + self.SetSizer(border)
  120 +
  121 + border.Fit(self)
  122 +
  123 +
  124 + def GetSelection(self):
  125 +
  126 + options = {const.RENDERING:self.rb_rendering.GetSelection(),
  127 + const.SURFACE_INTERPOLATION:self.rb_inter.GetSelection()}
  128 +
  129 + return options
  130 +
  131 + def LoadSelection(self, values):
  132 + rendering = values[const.RENDERING]
  133 + surface_interpolation = values[const.SURFACE_INTERPOLATION]
  134 +
  135 + self.rb_rendering.SetSelection(int(rendering))
  136 + self.rb_inter.SetSelection(int(surface_interpolation))
  137 +
  138 +class Language(wx.Panel):
  139 +
  140 + def __init__(self, parent):
  141 +
  142 + wx.Panel.__init__(self, parent)
  143 +
  144 + self.lg = lg = ComboBoxLanguage(self)
  145 + self.cmb_lang = cmb_lang = lg.GetComboBox()
  146 + self.cmb_lang.Bind(wx.EVT_COMBOBOX, self.OnCombo)
  147 +
  148 + box = wx.StaticBox(self, -1, _("Language"))
  149 + bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
  150 +
  151 + text = wx.StaticText(self, -1, _("Language settings will be applied \n the next time InVesalius starts."))
  152 + bsizer.Add(cmb_lang, 0, wx.TOP|wx.CENTER, 20)
  153 + bsizer.Add(text, 0, wx.TOP|wx.CENTER, 10)
  154 +
  155 + border = wx.BoxSizer()
  156 + border.Add(bsizer, 1, wx.EXPAND|wx.ALL, 20)
  157 + self.SetSizer(border)
  158 +
  159 + border.Fit(self)
  160 +
  161 + def GetSelection(self):
  162 + locales = self.lg.GetLocalesKey()
  163 + options = {const.LANGUAGE:locales[self.idx]}
  164 + return options
  165 +
  166 + def LoadSelection(self, values):
  167 + language = values[const.LANGUAGE]
  168 + locales = self.lg.GetLocalesKey()
  169 + selection = locales.index(language)
  170 +
  171 + if wx.VERSION > (2, 9):
  172 + self.cmb_lang.Select(int(selection))
  173 + else:
  174 + self.cmb_lang.SetSelection(int(selection))
  175 +
  176 + self.idx = selection
  177 +
  178 + def OnCombo(self, evt):
  179 + self.idx = evt.GetInt()