Commit 482d68d01c77bf2e8efdee680e6ea73b7f8dda34

Authored by Thiago Franco de Moraes
1 parent 50143a2b
Exists in master

Improvements to preferences dialog

invesalius/gui/frame.py
@@ -605,7 +605,7 @@ class Frame(wx.Frame): @@ -605,7 +605,7 @@ class Frame(wx.Frame):
605 self.mw.SetPosition(pos) 605 self.mw.SetPosition(pos)
606 606
607 def ShowPreferences(self): 607 def ShowPreferences(self):
608 - preferences_dialog = preferences.Preferences(None) 608 + preferences_dialog = preferences.Preferences(self)
609 preferences_dialog.LoadPreferences() 609 preferences_dialog.LoadPreferences()
610 preferences_dialog.Center() 610 preferences_dialog.Center()
611 611
invesalius/gui/preferences.py
@@ -20,47 +20,47 @@ class Preferences(wx.Dialog): @@ -20,47 +20,47 @@ class Preferences(wx.Dialog):
20 parent, 20 parent,
21 id_=-1, 21 id_=-1,
22 title=_("Preferences"), 22 title=_("Preferences"),
23 - size=wx.DefaultSize,  
24 - pos=wx.DefaultPosition,  
25 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, 23 style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER,
26 ): 24 ):
27 25
28 - wx.Dialog.__init__(self, parent, id_, title, pos, size, style)  
29 -  
30 - sizer = wx.BoxSizer(wx.VERTICAL) 26 + super().__init__(parent, id_, title, style=style)
31 27
32 bookStyle = fnb.FNB_NODRAG | fnb.FNB_NO_X_BUTTON 28 bookStyle = fnb.FNB_NODRAG | fnb.FNB_NO_X_BUTTON
33 29
34 - if AGW:  
35 - self.book = fnb.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)  
36 - else:  
37 - self.book = fnb.FlatNotebook(self, wx.ID_ANY, agwStyle=bookStyle)  
38 -  
39 - sizer.Add(self.book, 1, wx.EXPAND | wx.ALL) 30 + self.book = wx.Notebook(self, -1)
40 31
41 - self.pnl_viewer2d = Viewer2D(self)  
42 - self.pnl_viewer3d = Viewer3D(self) 32 + self.pnl_viewer2d = Viewer2D(self.book)
  33 + self.pnl_viewer3d = Viewer3D(self.book)
43 # self.pnl_surface = SurfaceCreation(self) 34 # self.pnl_surface = SurfaceCreation(self)
44 - self.pnl_language = Language(self) 35 + self.pnl_language = Language(self.book)
  36 +
45 37
46 self.book.AddPage(self.pnl_viewer2d, _("2D Visualization")) 38 self.book.AddPage(self.pnl_viewer2d, _("2D Visualization"))
47 self.book.AddPage(self.pnl_viewer3d, _("3D Visualization")) 39 self.book.AddPage(self.pnl_viewer3d, _("3D Visualization"))
48 # self.book.AddPage(self.pnl_surface, _("Surface creation")) 40 # self.book.AddPage(self.pnl_surface, _("Surface creation"))
49 self.book.AddPage(self.pnl_language, _("Language")) 41 self.book.AddPage(self.pnl_language, _("Language"))
50 42
51 - line = wx.StaticLine(self, -1, size=(20, -1), style=wx.LI_HORIZONTAL)  
52 - sizer.Add(line, 0, wx.GROW | wx.RIGHT | wx.TOP, 5)  
53 -  
54 btnsizer = self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL) 43 btnsizer = self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL)
55 - sizer.Add(  
56 - btnsizer,  
57 - 0,  
58 - wx.GROW | wx.RIGHT | wx.TOP | wx.BOTTOM,  
59 - 5,  
60 - )  
61 44
62 - self.SetSizer(sizer)  
63 - sizer.Fit(self) 45 + min_width = max([i.GetMinWidth() for i in (self.book.GetChildren())])
  46 + min_height = max([i.GetMinHeight() for i in (self.book.GetChildren())])
  47 + self.book.SetMinClientSize((min_width * 2, min_height * 2))
  48 +
  49 + print("Min size", self.pnl_viewer2d.GetSize())
  50 + print("Min size", self.pnl_viewer3d.GetSize())
  51 + print("Min size", self.pnl_language.GetSize())
  52 + print("Min size", self.book.GetSize())
  53 + print("Min size", self.book.GetPage(0))
  54 + print("Size by text", self.book.GetSizeFromText("Language"))
  55 + print("min size", min_width, min_height)
  56 +
  57 + sizer = wx.BoxSizer(wx.VERTICAL)
  58 + sizer.Add(self.book, 1, wx.EXPAND | wx.ALL)
  59 + sizer.Add(btnsizer, 0, wx.GROW | wx.RIGHT | wx.TOP | wx.BOTTOM, 5)
  60 + self.SetSizerAndFit(sizer)
  61 + self.Layout()
  62 +
  63 +
64 64
65 self.__bind_events() 65 self.__bind_events()
66 66
@@ -98,49 +98,39 @@ class Viewer3D(wx.Panel): @@ -98,49 +98,39 @@ class Viewer3D(wx.Panel):
98 98
99 wx.Panel.__init__(self, parent) 99 wx.Panel.__init__(self, parent)
100 100
101 - box_visualization = wx.StaticBox(self, -1, _("Surface"))  
102 - bsizer = wx.StaticBoxSizer(box_visualization, wx.VERTICAL)  
103 -  
104 - lbl_inter = wx.StaticText(self, -1, _("Interpolation "))  
105 - bsizer.Add(lbl_inter, 0, wx.TOP | wx.LEFT, 10)  
106 - 101 + bsizer = wx.StaticBoxSizer(wx.VERTICAL, self, _("Surface"))
  102 + lbl_inter = wx.StaticText(bsizer.GetStaticBox(), -1, _("Interpolation "))
107 rb_inter = self.rb_inter = wx.RadioBox( 103 rb_inter = self.rb_inter = wx.RadioBox(
108 - self, 104 + bsizer.GetStaticBox(),
109 -1, 105 -1,
110 "", 106 "",
111 - wx.DefaultPosition,  
112 - wx.DefaultSize,  
113 - ["Flat", "Gouraud", "Phong"],  
114 - 3,  
115 - wx.RA_SPECIFY_COLS | wx.NO_BORDER, 107 + choices = ["Flat", "Gouraud", "Phong"],
  108 + majorDimension=3,
  109 + style=wx.RA_SPECIFY_COLS | wx.NO_BORDER,
116 ) 110 )
117 111
  112 + bsizer.Add(lbl_inter, 0, wx.TOP | wx.LEFT, 10)
118 bsizer.Add(rb_inter, 0, wx.TOP | wx.LEFT, 0) 113 bsizer.Add(rb_inter, 0, wx.TOP | wx.LEFT, 0)
119 114
120 - box_rendering = wx.StaticBox(self, -1, _("Volume rendering"))  
121 - bsizer_ren = wx.StaticBoxSizer(box_rendering, wx.VERTICAL)  
122 -  
123 - lbl_rendering = wx.StaticText(self, -1, _("Rendering"))  
124 - bsizer_ren.Add(lbl_rendering, 0, wx.TOP | wx.LEFT, 10)  
125 - 115 + # box_rendering = wx.StaticBox(self, -1, _("Volume rendering"))
  116 + bsizer_ren = wx.StaticBoxSizer(wx.VERTICAL, self, _("Volume rendering"))
  117 + lbl_rendering = wx.StaticText(bsizer_ren.GetStaticBox(), -1, _("Rendering"))
126 rb_rendering = self.rb_rendering = wx.RadioBox( 118 rb_rendering = self.rb_rendering = wx.RadioBox(
127 - self, 119 + bsizer_ren.GetStaticBox(),
128 -1, 120 -1,
129 - "",  
130 - wx.DefaultPosition,  
131 - wx.DefaultSize,  
132 - ["CPU", _(u"GPU (NVidia video cards only)")],  
133 - 2,  
134 - wx.RA_SPECIFY_COLS | wx.NO_BORDER, 121 + choices=["CPU", _(u"GPU (NVidia video cards only)")],
  122 + majorDimension=2,
  123 + style=wx.RA_SPECIFY_COLS | wx.NO_BORDER,
135 ) 124 )
136 125
  126 + bsizer_ren.Add(lbl_rendering, 0, wx.TOP | wx.LEFT, 10)
137 bsizer_ren.Add(rb_rendering, 0, wx.TOP | wx.LEFT, 0) 127 bsizer_ren.Add(rb_rendering, 0, wx.TOP | wx.LEFT, 0)
138 - border = wx.BoxSizer(wx.VERTICAL)  
139 - border.Add(bsizer, 50, wx.EXPAND | wx.ALL, 10)  
140 - border.Add(bsizer_ren, 50, wx.EXPAND | wx.ALL, 10)  
141 - self.SetSizer(border)  
142 128
143 - border.Fit(self) 129 + border = wx.BoxSizer(wx.VERTICAL)
  130 + border.Add(bsizer, 1, wx.EXPAND | wx.ALL, 10)
  131 + border.Add(bsizer_ren, 1, wx.EXPAND | wx.ALL, 10)
  132 + self.SetSizerAndFit(border)
  133 + self.Layout()
144 134
145 def GetSelection(self): 135 def GetSelection(self):
146 136
@@ -164,30 +154,23 @@ class Viewer2D(wx.Panel): @@ -164,30 +154,23 @@ class Viewer2D(wx.Panel):
164 154
165 wx.Panel.__init__(self, parent) 155 wx.Panel.__init__(self, parent)
166 156
167 - box_visualization = wx.StaticBox(self, -1, _("Slices"))  
168 - bsizer = wx.StaticBoxSizer(box_visualization, wx.VERTICAL)  
169 -  
170 - lbl_inter = wx.StaticText(self, -1, _("Interpolated "))  
171 - bsizer.Add(lbl_inter, 0, wx.TOP | wx.LEFT, 10)  
172 - 157 + bsizer = wx.StaticBoxSizer(wx.VERTICAL, self, _("Slices"))
  158 + lbl_inter = wx.StaticText(bsizer.GetStaticBox(), -1, _("Interpolated "))
173 rb_inter = self.rb_inter = wx.RadioBox( 159 rb_inter = self.rb_inter = wx.RadioBox(
174 - self, 160 + bsizer.GetStaticBox(),
175 -1, 161 -1,
176 - "",  
177 - wx.DefaultPosition,  
178 - wx.DefaultSize,  
179 - [_("Yes"), _("No")],  
180 - 3,  
181 - wx.RA_SPECIFY_COLS | wx.NO_BORDER, 162 + choices=[_("Yes"), _("No")],
  163 + majorDimension=3,
  164 + style=wx.RA_SPECIFY_COLS | wx.NO_BORDER,
182 ) 165 )
183 166
  167 + bsizer.Add(lbl_inter, 0, wx.TOP | wx.LEFT, 10)
184 bsizer.Add(rb_inter, 0, wx.TOP | wx.LEFT, 0) 168 bsizer.Add(rb_inter, 0, wx.TOP | wx.LEFT, 0)
185 169
186 border = wx.BoxSizer(wx.VERTICAL) 170 border = wx.BoxSizer(wx.VERTICAL)
187 - border.Add(bsizer, 50, wx.EXPAND | wx.ALL, 10)  
188 - self.SetSizer(border)  
189 -  
190 - border.Fit(self) 171 + border.Add(bsizer, 1, wx.EXPAND | wx.ALL, 10)
  172 + self.SetSizerAndFit(border)
  173 + self.Layout()
191 174
192 def GetSelection(self): 175 def GetSelection(self):
193 176
@@ -202,27 +185,24 @@ class Viewer2D(wx.Panel): @@ -202,27 +185,24 @@ class Viewer2D(wx.Panel):
202 185
203 class Language(wx.Panel): 186 class Language(wx.Panel):
204 def __init__(self, parent): 187 def __init__(self, parent):
205 -  
206 wx.Panel.__init__(self, parent) 188 wx.Panel.__init__(self, parent)
207 189
208 - self.lg = lg = ComboBoxLanguage(self) 190 + bsizer = wx.StaticBoxSizer(wx.VERTICAL, self, _("Language"))
  191 + self.lg = lg = ComboBoxLanguage(bsizer.GetStaticBox())
209 self.cmb_lang = cmb_lang = lg.GetComboBox() 192 self.cmb_lang = cmb_lang = lg.GetComboBox()
210 -  
211 - box = wx.StaticBox(self, -1, _("Language"))  
212 - bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)  
213 -  
214 text = wx.StaticText( 193 text = wx.StaticText(
215 - self, 194 + bsizer.GetStaticBox(),
216 -1, 195 -1,
217 _("Language settings will be applied \n the next time InVesalius starts."), 196 _("Language settings will be applied \n the next time InVesalius starts."),
218 ) 197 )
219 - bsizer.Add(cmb_lang, 0, wx.EXPAND) 198 + bsizer.Add(cmb_lang, 0, wx.EXPAND | wx.ALL, 10)
220 bsizer.AddSpacer(5) 199 bsizer.AddSpacer(5)
221 - bsizer.Add(text, 0, wx.EXPAND) 200 + bsizer.Add(text, 0, wx.EXPAND | wx.ALL, 10)
222 201
223 border = wx.BoxSizer() 202 border = wx.BoxSizer()
224 - border.Add(bsizer, 1, wx.EXPAND | wx.ALL, 20) 203 + border.Add(bsizer, 1, wx.EXPAND | wx.ALL, 10)
225 self.SetSizerAndFit(border) 204 self.SetSizerAndFit(border)
  205 + self.Layout()
226 206
227 def GetSelection(self): 207 def GetSelection(self):
228 selection = self.cmb_lang.GetSelection() 208 selection = self.cmb_lang.GetSelection()