Commit 430896dc4a78f879fc48604c34dce3862e961c8c
1 parent
dedc2a7c
Exists in
master
and in
68 other branches
ENH: Translation (source code changes and mo)
Showing
12 changed files
with
18 additions
and
389 deletions
Show diff stats
.gitattributes
@@ -129,7 +129,6 @@ invesalius/gui/default_viewers.py -text | @@ -129,7 +129,6 @@ invesalius/gui/default_viewers.py -text | ||
129 | invesalius/gui/dialogs.py -text | 129 | invesalius/gui/dialogs.py -text |
130 | invesalius/gui/dicom_preview_panel.py -text | 130 | invesalius/gui/dicom_preview_panel.py -text |
131 | invesalius/gui/frame.py -text | 131 | invesalius/gui/frame.py -text |
132 | -invesalius/gui/import_data_wizard.py -text | ||
133 | invesalius/gui/import_panel.py -text | 132 | invesalius/gui/import_panel.py -text |
134 | invesalius/gui/language_dialog.py -text | 133 | invesalius/gui/language_dialog.py -text |
135 | invesalius/gui/task_exporter.py -text | 134 | invesalius/gui/task_exporter.py -text |
invesalius/gui/data_notebook.py
1 | +#!/usr/bin/env python | ||
2 | +# -*- coding: UTF-8 -*- | ||
1 | #-------------------------------------------------------------------------- | 3 | #-------------------------------------------------------------------------- |
2 | # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas | 4 | # Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas |
3 | # Copyright: (C) 2001 Centro de Pesquisas Renato Archer | 5 | # Copyright: (C) 2001 Centro de Pesquisas Renato Archer |
@@ -161,7 +163,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | @@ -161,7 +163,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | ||
161 | wx_image.SetData(new_image.tostring()) | 163 | wx_image.SetData(new_image.tostring()) |
162 | return wx.BitmapFromImage(wx_image.Scale(16, 16)) | 164 | return wx.BitmapFromImage(wx_image.Scale(16, 16)) |
163 | 165 | ||
164 | - def InsertNewItem(self, index=0, label=_("Mask 1"), threshold="(1000, 4500)", | 166 | + def InsertNewItem(self, index=0, label=_("Mask"), threshold="(1000, 4500)", |
165 | colour=None): | 167 | colour=None): |
166 | self.InsertStringItem(index, "") | 168 | self.InsertStringItem(index, "") |
167 | self.SetStringItem(index, 1, label, | 169 | self.SetStringItem(index, 1, label, |
@@ -232,7 +234,7 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | @@ -232,7 +234,7 @@ class SurfacesListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | ||
232 | 234 | ||
233 | self.InsertColumn(0, "", wx.LIST_FORMAT_CENTER) | 235 | self.InsertColumn(0, "", wx.LIST_FORMAT_CENTER) |
234 | self.InsertColumn(1, _("Name")) | 236 | self.InsertColumn(1, _("Name")) |
235 | - self.InsertColumn(2, _("Volume (mm3)")) | 237 | + self.InsertColumn(2, _(u"Volume (mm³)")) |
236 | self.InsertColumn(3, _("Transparency"), wx.LIST_FORMAT_RIGHT) | 238 | self.InsertColumn(3, _("Transparency"), wx.LIST_FORMAT_RIGHT) |
237 | 239 | ||
238 | self.SetColumnWidth(0, 20) | 240 | self.SetColumnWidth(0, 20) |
invesalius/gui/default_viewers.py
@@ -86,7 +86,7 @@ class Panel(wx.Panel): | @@ -86,7 +86,7 @@ class Panel(wx.Panel): | ||
86 | 86 | ||
87 | p3 = slice_viewer.Viewer(self, "SAGITAL") | 87 | p3 = slice_viewer.Viewer(self, "SAGITAL") |
88 | s3 = wx.aui.AuiPaneInfo().Centre().Row(1).\ | 88 | s3 = wx.aui.AuiPaneInfo().Centre().Row(1).\ |
89 | - Name("Sagital Slice").Caption(_("Sagital slice")).\ | 89 | + Name("Sagittal Slice").Caption(_("Sagittal slice")).\ |
90 | MaximizeButton(True).CloseButton(False) | 90 | MaximizeButton(True).CloseButton(False) |
91 | 91 | ||
92 | p4 = VolumeViewerCover(self) | 92 | p4 = VolumeViewerCover(self) |
@@ -409,7 +409,7 @@ class VolumeToolPanel(wx.Panel): | @@ -409,7 +409,7 @@ class VolumeToolPanel(wx.Panel): | ||
409 | d = wx.TextEntryDialog(self, _("Preset name")) | 409 | d = wx.TextEntryDialog(self, _("Preset name")) |
410 | if d.ShowModal() == wx.ID_OK: | 410 | if d.ShowModal() == wx.ID_OK: |
411 | preset_name = d.GetValue() | 411 | preset_name = d.GetValue() |
412 | - ps.Publisher().sendMessage('Save raycasting preset', | 412 | + ps.Publisher().sendMessage(_("Save raycasting preset"), |
413 | preset_name) | 413 | preset_name) |
414 | 414 | ||
415 | def __init_menus(self, pubsub_evt=None): | 415 | def __init_menus(self, pubsub_evt=None): |
invesalius/gui/dialogs.py
@@ -48,7 +48,7 @@ class NumberDialog(wx.Dialog): | @@ -48,7 +48,7 @@ class NumberDialog(wx.Dialog): | ||
48 | 48 | ||
49 | # Buttons | 49 | # Buttons |
50 | btn_ok = wx.Button(self, wx.ID_OK) | 50 | btn_ok = wx.Button(self, wx.ID_OK) |
51 | - btn_ok.SetHelpText(_("Above value will be applied.")) | 51 | + btn_ok.SetHelpText(_("Value will be applied.")) |
52 | btn_ok.SetDefault() | 52 | btn_ok.SetDefault() |
53 | 53 | ||
54 | btn_cancel = wx.Button(self, wx.ID_CANCEL) | 54 | btn_cancel = wx.Button(self, wx.ID_CANCEL) |
@@ -252,7 +252,7 @@ class MessageDialog(wx.Dialog): | @@ -252,7 +252,7 @@ class MessageDialog(wx.Dialog): | ||
252 | self.Centre() | 252 | self.Centre() |
253 | 253 | ||
254 | def SaveChangesDialog__Old(filename): | 254 | def SaveChangesDialog__Old(filename): |
255 | - message = _("Save changes to %s?")%filename | 255 | + message = _("The project %s has been modified.\nSave changes?")%filename |
256 | dlg = MessageDialog(message) | 256 | dlg = MessageDialog(message) |
257 | 257 | ||
258 | answer = dlg.ShowModal() | 258 | answer = dlg.ShowModal() |
@@ -291,7 +291,7 @@ def ImportInvalidFiles(): | @@ -291,7 +291,7 @@ def ImportInvalidFiles(): | ||
291 | 291 | ||
292 | def SaveChangesDialog(filename): | 292 | def SaveChangesDialog(filename): |
293 | current_dir = os.path.abspath(".") | 293 | current_dir = os.path.abspath(".") |
294 | - msg = _("Save changes to %s?")%filename | 294 | + msg = _("The project %s has been modified.\nSave changes?")%filename |
295 | if sys.platform == 'darwin': | 295 | if sys.platform == 'darwin': |
296 | dlg = wx.MessageDialog(None, "", msg, | 296 | dlg = wx.MessageDialog(None, "", msg, |
297 | wx.ICON_QUESTION | wx.YES_NO | wx.CANCEL) | 297 | wx.ICON_QUESTION | wx.YES_NO | wx.CANCEL) |
@@ -313,7 +313,7 @@ def SaveChangesDialog(filename): | @@ -313,7 +313,7 @@ def SaveChangesDialog(filename): | ||
313 | 313 | ||
314 | def SaveChangesDialog2(filename): | 314 | def SaveChangesDialog2(filename): |
315 | current_dir = os.path.abspath(".") | 315 | current_dir = os.path.abspath(".") |
316 | - msg = _("Save changes to %s?")%filename | 316 | + msg = _("The project %s has been modified.\nSave changes?")%filename |
317 | if sys.platform == 'darwin': | 317 | if sys.platform == 'darwin': |
318 | dlg = wx.MessageDialog(None, "", msg, | 318 | dlg = wx.MessageDialog(None, "", msg, |
319 | wx.ICON_QUESTION | wx.YES_NO) | 319 | wx.ICON_QUESTION | wx.YES_NO) |
@@ -337,7 +337,7 @@ def ShowAboutDialog(parent): | @@ -337,7 +337,7 @@ def ShowAboutDialog(parent): | ||
337 | info = wx.AboutDialogInfo() | 337 | info = wx.AboutDialogInfo() |
338 | info.Name = "InVesalius" | 338 | info.Name = "InVesalius" |
339 | info.Version = "3.a.1 - RP" | 339 | info.Version = "3.a.1 - RP" |
340 | - info.Copyright = _("(C) 2007 Renato Archer Research Centre") | 340 | + info.Copyright = _("(c) 2007 Center for Information Technology Renato Archer") |
341 | info.Description = wordwrap( | 341 | info.Description = wordwrap( |
342 | _("InVesalius is a software for medical imaging 3D reconstruction. ")+\ | 342 | _("InVesalius is a software for medical imaging 3D reconstruction. ")+\ |
343 | _("Its input is a sequency of DICOM 2D image files acquired with CT or MR.\n\n")+\ | 343 | _("Its input is a sequency of DICOM 2D image files acquired with CT or MR.\n\n")+\ |
invesalius/gui/import_data_wizard.py
@@ -1,372 +0,0 @@ | @@ -1,372 +0,0 @@ | ||
1 | -#-------------------------------------------------------------------------- | ||
2 | -# Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas | ||
3 | -# Copyright: (C) 2001 Centro de Pesquisas Renato Archer | ||
4 | -# Homepage: http://www.softwarepublico.gov.br | ||
5 | -# Contact: invesalius@cti.gov.br | ||
6 | -# License: GNU - GPL 2 (LICENSE.txt/LICENCA.txt) | ||
7 | -#-------------------------------------------------------------------------- | ||
8 | -# Este programa e software livre; voce pode redistribui-lo e/ou | ||
9 | -# modifica-lo sob os termos da Licenca Publica Geral GNU, conforme | ||
10 | -# publicada pela Free Software Foundation; de acordo com a versao 2 | ||
11 | -# da Licenca. | ||
12 | -# | ||
13 | -# Este programa eh distribuido na expectativa de ser util, mas SEM | ||
14 | -# QUALQUER GARANTIA; sem mesmo a garantia implicita de | ||
15 | -# COMERCIALIZACAO ou de ADEQUACAO A QUALQUER PROPOSITO EM | ||
16 | -# PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais | ||
17 | -# detalhes. | ||
18 | -#-------------------------------------------------------------------------- | ||
19 | -import cStringIO | ||
20 | -import wx | ||
21 | -import widgets.foldpanelbar as fpb | ||
22 | -import wx.lib.filebrowsebutton as filebrowse | ||
23 | -import wx.lib.hyperlink as hl | ||
24 | -import wx.wizard as wiz | ||
25 | - | ||
26 | -def getWizTest1Data(): | ||
27 | - return \ | ||
28 | -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00t\x00\x00\x01\x04\x08\x02\ | ||
29 | -\x00\x00\x00v\xad\x87\x05\x00\x00\x00\x03sBIT\x08\x08\x08\xdb\xe1O\xe0\x00\ | ||
30 | -\x00\x06\x06IDATx\x9c\xed\x9b\xc1\xcd\xdbF\x10FGA\xe0\xc0\x07]\x048M\xa8\x01\ | ||
31 | -\x9f\x9c\x02\xd4\x81\xd3\x84\x1a\x10\xec@\r\xa8\x89\xa4\x03\x15\x90\x9c\xd2\ | ||
32 | -\x80\x9aH\x00]t\x08\xec\x0bs`D\x04\xc9\x92\xe0\xee\xf2\xed\xceR\xdf;\x1a$\ | ||
33 | -\xbd\xf8\xf083\xbb?\xb5\xe9\xba\xce\x04\xc37\xb5\x17\xb0f\x14.\x88\xc2\x05Q\ | ||
34 | -\xb8 \n\x17D\xe1\x82(\\\x10\x85\x0b\xa2pA\x14.\x88\xc2\x05Q\xb8 \xdf\xe6?b\ | ||
35 | -\xb3\xd9\xa4\xdd\xb8\xfa3#\x99\x0b\xb2\x80\xb9O>c\x17\xb7\x8a\xcc\x05Y2\xdc\ | ||
36 | -\xae\xfb\xd4u\x9f\x16|`\xeb\xc8\\\x10\x85\x0b\xb2`C\x9b\xe6\xf3\xff\xffi\xce\ | ||
37 | -\x0c\xd7\xf4\xb8&sA\x8a\x99kf\x16ea\xea\xd6\xc4\x11\xb3\xc2M\xde\x83\xbd8*\ | ||
38 | -\x0b \x11ea\xec\x9d\x8e\xb4zx\xcc\xfa\xdf\x06\x99\x0b\x12\xd9\xd0\xfa\x964R\ | ||
39 | -\x827\x9b\x9f\xb2\xd7\xb3*d.\xc8f\xce\x94\xdeO\x0b\x9d\x85\xcd\x9d_;\xbb\xce\ | ||
40 | -\xe6\xd7\xdc\xfe?\xd1&B\x84Y`\x13\x11T\xab\xd7r\xf0\xee5\'e\x99\x0b\xa2pA\ | ||
41 | -\x8a\x9e-\x98\xd9+\xec\x1d\x06d.\x88\xc2\x05\x89,\x0byM\xff\xd5F\x06\x99\x0b\ | ||
42 | -\x12an\x8evMo\xb4\x92\x91\xb9 \xb3\xce\x16D\x1a2\x17D\xe1\x82(\\\x10\x85\x0b\ | ||
43 | -R\xfel\xe1\xbf\x1c\x0e\x87\xb4\x1b\xaf\xd7\xeb\xb2+Y\x1c\x99\x0bR\xdf\xdc\'?\ | ||
44 | -\xc6\\\xfc3\xb5\x8aE\x91\xb9 \x8e\xc2\xbd^?^\xaf\x1fk\xafbI\x1c\x85\xbb>\x14\ | ||
45 | -.\x88\x9f\x866M\xa0\x83\xcd\x99\xe1\xea\x8ek2\x17\xa4\x15s\xcd\xcc\xa2,L\xdd\ | ||
46 | -\x9a,I\x89p\x93\xf7`\xad\xa3\xb2\x00R\xae,\x8c\xbd\xd3\x91V\x0f\x8fi\xe0m\ | ||
47 | -\x90\xb9 e\x1bZ\xdf\x92FJ\xf0\xe1\xf0K\xd1\xc5\xf0\xc8\\\x10?\xa3X\x1b\x07]Q\ | ||
48 | -\xc8\\\x90\xfa\xe6\x06\xa7\x88\xbe*\x0f\x9b\xd7F\'e\x99\x0b\xa2pA\xea\x97\ | ||
49 | -\x85HZ\xaa\x0f2\x17D\xe1\x82\x94-\x0byM\xbf\xb9\x91A\xe6\x82\x9437G;\xff\x1f\ | ||
50 | -\xd7\x04\x91\xb9 \xfa\xf8\x19D\xe6\x82(\\\x10\x85\x0b\xa2pA\x14.\x88\xc2\x05\ | ||
51 | -Q\xb8 \n\x17\xa4\xb9\xf3\\3\xb3\xf3\xf9\x9cv\xe3\xe9tZv%\xd3\xc8\\\x90&\xcd}\ | ||
52 | -\xf2C\xcc\xc5\xbfR\xab\x18G\xe6\x82\xb4\x1d\xee\xe9\xf4\xe1t\xfaP{\x15\xa3\ | ||
53 | -\xb4\x1d\xaes\x14.H\xd3\rm\x9a@\x07\x9b3\xc3-8\xae\xc9\\\x90\x15\x9bkf\x16ea\ | ||
54 | -\xea\xd6d\x14\xa7\xe1&\xef\xc1\\\xa1\xb2\x00\xe2\xd4\xdc\x9e\xb1w:\xd2\xea\ | ||
55 | -\xe11\xa5\xdf\x06\x99\x0b\xe2\xda\\\xb3gK\x1a)\xc1\xe7\xf3oE\x17\x13\x89\xcc\ | ||
56 | -\x05qo\xee\x14\x15\x0e\xba\xa2\x90\xb9 M\x9a\x1b\x9c"\xfa\xaa<l^=L\xca2\x17D\ | ||
57 | -\xe1\x824Y\x16"\xa9V\x1fd.\x88\xc2\x05q_\x16\xf2\x9a~\xdd\x91A\xe6\x82\xb867\ | ||
58 | -G\xbb\xc2\x1f\xd7\x04\x91\xb9 \xfa\xc1\t\x88\xcc\x05Q\xb8 \n\x17D\xe1\x82(\\\ | ||
59 | -\x10\x85\x0b\xa2pA\\\xef\xd0\xe6s\xb9\\\xd2n<\x1e\x8f\xcb\xae\xe4\xdf\xc8\\\ | ||
60 | -\x90\x95\x98\xfb\xe4}\xcc\xc5\xbfS\xabx"sA\xd6\x16\xee\xf1\xf8\xfex\x8c\xf2\ | ||
61 | -\x17dm\xe1\xbaB\xe1\x82\xac\xac\xa1M\x13\xe8`sf\xb8\xe4qM\xe6\x82\xbc\x94\ | ||
62 | -\xb9ffQ\x16\xa6nM\xfe\xa1\x99p\x93\xf7`\x15QY\x00i\xc6\xdc\x9e\xb1w:\xd2\xea\ | ||
63 | -\xe11\xec\xdb sA\x1a3\xd7\xec\xd9\x92FJ\xf0\xe5\x82\x9f\x18\xccG\xe6\x824h\ | ||
64 | -\xee\x14\x8e\xb45\x99\x8b\xb2\x12s\x83SD_\x95\x87\xcdk\xf9IY\xe6\x82(\\\x90\ | ||
65 | -\x95\x94\x85H\n\xd5\x07\x99\x0b\xa2pA\x1a,\x0byM\xbf\xe4\xc8 sA\x1a37G;\xf4\ | ||
66 | -\xe3\x9a 2\x17D\xbf\x89\x00\x91\xb9 \n\x17D\xe1\x82(\\\x10\x85\x0b\xa2pA\x14\ | ||
67 | -.\x88\xc2\x05Q\xb8 \n\x17\xc4\xe3\xc1\xcd\xedvK\xbbq\xbf\xdf/\xbb\x92Ld.\x88\ | ||
68 | -Gs\x9f|\x1fs\xf1\x1f\xd4*2\x90\xb9 \xae\xc3\xdd\xef\xdf\xed\xf7\xefj\xaf"\ | ||
69 | -\x1d\xd7\xe1\xb6\x8e\xc2\x05\xf1\xdc\xd0\xa6\tt\xb093\\\xc9qM\xe6\x82\xb4k\ | ||
70 | -\xae\x99Y\x94\x85\xa9[\x93t\xea\x84\x9b\xbc\x07k\x0b\x95\x05\x90\x9aea\xec\ | ||
71 | -\x9d\x8e\xb4zx\x8c\xbb\xb7A\xe6\x82\xd4nh}K\x1a)\xc1\xb7\xdb\x9fE\x17\xb342\ | ||
72 | -\x17\xa4\xb6\xb9Sx<\xe8\x8aB\xe6\x82x478E\xf4Uy\xd8\xbc61)\xcb\\\x10\x85\x0b\ | ||
73 | -\xe2\xb1,D\xe2\xb7>\xc8\\\x10\x85\x0bR\xbb,\xe45}\xe7#\x83\xcc\x05\xa9in\x8e\ | ||
74 | -v\xde>\xae\t"sA\xf4S)\x10\x99\x0b\xa2pA\x14.\x88\xc2\x05Q\xb8 \n\x17D\xe1\ | ||
75 | -\x82\xd4\xd9\xa1\xdd\xef\xf7\xb4\x1bw\xbb\xdd\xb2+A\x91\xb9 uO\xc5\xde\xc6\\\ | ||
76 | -\xfc\x17\xb5\n\x0c\x99\x0bR9\xdc\xdd\xee\xedn\x17\xe5oK\xc8\\\x10\x85\x0bR\ | ||
77 | -\xfb\xcf<S\x04:\xd8\x9c\x19\xce\xcf\xb8&sA<\x9bkf\x16ea\xea\xd6\x84\x82\n7y\ | ||
78 | -\x0f\xb6&T\x16@\xd8\xb20\xf6NGZ=<\xa6\xb1\xb7A\xe6\x82\xf0\r\xadoI#%\xf8~o\ | ||
79 | -\xef\xc4`>2\x17\xa4\xee(\xb6fmM\xe6\xa2\xd4178E\xf4Uy\xd8\xbc\xae`R\x96\xb9 \ | ||
80 | -\n\x17\xc4\xfb\xd9\x82\x995\xb7w\x18\x90\xb9 \n\x17\x84/\x0byM\xbf\xe9\x91A\ | ||
81 | -\xe6\x82\xb0\xe6\xe6h\xe7\xe7\xaf5\xc9\xc8\\\x10\xfd&\x02D\xe6\x82(\\\x10\ | ||
82 | -\x85\x0b\xa2pA\x9c\x9e-<\x1e\x8f\xb4\x1b\xb7\xdb\xed\xb2+\xc9A\xe6\x8285\xf7\ | ||
83 | -\xc9w1\x17\x7f\xa1V\x91\x8a\xcc\x05\xf1\x1e\xeev\xfbf\xbb}S{\x15\x89x\x0f\ | ||
84 | -\xb7i\x14.\x88\xf3\x866M\xa0\x83\xcd\x99\xe1\x8a\x8dk2\x17\xa4is\xcd\xcc\xa2\ | ||
85 | -,L\xdd\x9a$R-\xdc\xe4=XC\xa8,\x80T.\x0bc\xeft\xa4\xd5\xc3c|\xbd\r2\x17\xc4AC\ | ||
86 | -\xeb[\xd2H\t~<\xbe\x16]\xcc\xa2\xc8\\\x10\x07\xe6N\xe1\xee\xa0+\n\x99\x0b\ | ||
87 | -\xe2\xd4\xdc\xe0\x14\xd1W\xe5a\xf3\xea\x7fR\x96\xb9 \n\x17\xc4iY\x88\xc4i}\ | ||
88 | -\x90\xb9 \n\x17\xc4AY\xc8k\xfa\x9eG\x06\x99\x0bR\xd9\xdc\x1c\xed\\}\\\x13D\ | ||
89 | -\xe6\x82\xe8\xe3g\x10\x99\x0b\xa2pA\x14.\x88\xc2\x05\xf9\x1b\xa1\x11\xf1\xe2\ | ||
90 | -?\xae\xd64\x00\x00\x00\x00IEND\xaeB`\x82' | ||
91 | - | ||
92 | -def getWizTest1Bitmap(): | ||
93 | - return wx.BitmapFromImage(getWizTest1Image()) | ||
94 | - | ||
95 | -def getWizTest1Image(): | ||
96 | - stream = cStringIO.StringIO(getWizTest1Data()) | ||
97 | - return wx.ImageFromStream(stream) | ||
98 | - | ||
99 | - | ||
100 | -def makePageTitle(wizPg, title): | ||
101 | - sizer = wx.BoxSizer(wx.VERTICAL) | ||
102 | - wizPg.SetSizer(sizer) | ||
103 | - title = wx.StaticText(wizPg, -1, title) | ||
104 | - title.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD)) | ||
105 | - sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5) | ||
106 | - sizer.Add(wx.StaticLine(wizPg, -1), 0, wx.EXPAND|wx.ALL, 5) | ||
107 | - return sizer | ||
108 | - | ||
109 | -class BasePage(wiz.PyWizardPage): | ||
110 | - def __init__(self, parent, title, number): | ||
111 | - wiz.PyWizardPage.__init__(self, parent) | ||
112 | - # header data | ||
113 | - self.title = title | ||
114 | - self.number = number | ||
115 | - # previous / next page data | ||
116 | - self.next = self.prev = None | ||
117 | - self.jump_next_page = False | ||
118 | - | ||
119 | - self.__init_gui() | ||
120 | - | ||
121 | - self.Update() | ||
122 | - self.SetAutoLayout(1) | ||
123 | - self.Fit() | ||
124 | - | ||
125 | - def __init_gui(self): | ||
126 | - sizer = wx.BoxSizer(wx.VERTICAL) | ||
127 | - self.SetSizer(sizer) | ||
128 | - | ||
129 | - # Build header | ||
130 | - first_line = wx.BoxSizer(wx.HORIZONTAL) | ||
131 | - number = wx.StaticText(self, -1, str(self.number)+".") | ||
132 | - number.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.BOLD)) | ||
133 | - self.header_number = number | ||
134 | - title = wx.StaticText(self, -1, self.title) | ||
135 | - title.SetFont(wx.Font(16, wx.SWISS, wx.NORMAL, wx.NORMAL)) | ||
136 | - first_line.Add(number, 0, wx.ALIGN_LEFT|wx.ALIGN_BOTTOM|wx.RIGHT, 5) | ||
137 | - first_line.Add(title, 0, wx.ALIGN_LEFT|wx.ALIGN_BOTTOM|wx.RIGHT|wx.BOTTOM, 2) | ||
138 | - sizer.AddSizer(first_line, 0) | ||
139 | - sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.ALL, 5) | ||
140 | - | ||
141 | - self.sizer = sizer | ||
142 | - | ||
143 | - def DecreasePageNumber(self): | ||
144 | - print "number before", self.number | ||
145 | - self.number -= 1 | ||
146 | - self.header_number.SetLabel(str(self.number)+".") | ||
147 | - | ||
148 | - def SetNext(self, next): | ||
149 | - self.next = next | ||
150 | - | ||
151 | - def SetPrev(self, prev): | ||
152 | - self.prev = prev | ||
153 | - | ||
154 | - # Classes derived from wxPyWizardPanel must override | ||
155 | - # GetNext and GetPrev, and may also override GetBitmap | ||
156 | - # as well as all those methods overridable by | ||
157 | - # wx.PyWindow. | ||
158 | - | ||
159 | - def GetNext(self): | ||
160 | - return self.next | ||
161 | - | ||
162 | - def GetPrev(self): | ||
163 | - return self.prev | ||
164 | - | ||
165 | -class RawDataPage(BasePage): | ||
166 | - def __init__(self, parent, title, number): | ||
167 | - BasePage.__init__(self, parent, title, number) | ||
168 | - | ||
169 | -class StudyPage(BasePage): | ||
170 | - def __init__(self, parent, title, number): | ||
171 | - BasePage.__init__(self, parent, title, number) | ||
172 | - | ||
173 | -class DirPage(BasePage): | ||
174 | - """ | ||
175 | - Wizard page for selecting which directory or directories should be searched | ||
176 | - for retrieving medical images. | ||
177 | - """ | ||
178 | - | ||
179 | - def __init__(self, parent, title, number): | ||
180 | - BasePage.__init__(self, parent, title, number) | ||
181 | - self.__init_specific_gui() | ||
182 | - | ||
183 | - self.selected_dir = [] | ||
184 | - | ||
185 | - def __init_specific_gui(self): | ||
186 | - | ||
187 | - line1 = wx.StaticText(self, -1,_("Select the directory which ")+\ | ||
188 | - _("contains medical images of the study interest.")) | ||
189 | - | ||
190 | - | ||
191 | - | ||
192 | - t1 = wx.TextCtrl(self, -1, "", size=(125, -1)) | ||
193 | - | ||
194 | - dbb = filebrowse.DirBrowseButton( | ||
195 | - self, -1, size=(450, -1), changeCallback = self.dbbCallback) | ||
196 | - dbb.SetLabel("") | ||
197 | - line2 = dbb | ||
198 | - #line2 = wx.BoxSizer(wx.HORIZONTAL) | ||
199 | - | ||
200 | - #line3 = wx.BoxSizer(wx.VERTICAL) | ||
201 | - #self.line3 = line3 | ||
202 | - | ||
203 | - #link_add_another_dir = hl.HyperLinkCtrl(self, -1,"Add a new directory") | ||
204 | - #link_add_another_dir.SetUnderlines(True, False, False) | ||
205 | - #link_add_another_dir.SetColours("BLUE", "BLUE", "BLUE") | ||
206 | - #link_add_another_dir.AutoBrowse(False) | ||
207 | - #link_add_another_dir.UpdateLink() | ||
208 | - #link_add_another_dir.Bind(hl.EVT_HYPERLINK_LEFT, self.OnAddDir) | ||
209 | - #self.link_add_new = link_add_another_dir | ||
210 | - | ||
211 | - | ||
212 | - # ADVANCED | ||
213 | - # [] Save selected folders as default | ||
214 | - # [] Consider files inside inner folders of the selected folder, using recursion | ||
215 | - | ||
216 | - | ||
217 | - self.sizer.Add(line1, 0, wx.LEFT|wx.RIGHT|wx.TOP, 5) | ||
218 | - self.sizer.Add(line2, 0, wx.ALL, 5) | ||
219 | - #self.sizer.Add(line3, 0, wx.ALL, 5) | ||
220 | - #self.sizer.Add(link_add_another_dir, 0, wx.LEFT|wx.BOTTOM, 10) | ||
221 | - | ||
222 | - | ||
223 | - fold_panel = fpb.FoldPanelBar(self, -1, wx.DefaultPosition, | ||
224 | - (450, 100), 0,fpb.FPB_SINGLE_FOLD) | ||
225 | - | ||
226 | - # Fold panel style | ||
227 | - style = fpb.CaptionBarStyle() | ||
228 | - style.SetCaptionStyle(fpb.CAPTIONBAR_RECTANGLE) | ||
229 | - style.SetSecondColour(wx.Colour(255,255,255)) | ||
230 | - | ||
231 | - # Fold 1 - Surface properties | ||
232 | - item = fold_panel.AddFoldPanel(_("Advanced options"), | ||
233 | - collapsed=True) | ||
234 | - fold_panel.ApplyCaptionStyle(item, style) | ||
235 | - fold_panel.AddFoldPanelWindow(item, | ||
236 | - wx.CheckBox(item, wx.ID_ANY, _("Use selected folder(s) as default")), | ||
237 | - Spacing= 0, leftSpacing=0, rightSpacing=0) | ||
238 | - fold_panel.AddFoldPanelWindow(item, | ||
239 | - wx.CheckBox(item, wx.ID_ANY, _("Enable recursion in folder(s)")), | ||
240 | - Spacing= 0, leftSpacing=0, rightSpacing=0) | ||
241 | - | ||
242 | - | ||
243 | - self.sizer.Add(fold_panel, 0, wx.TOP|wx.LEFT, 5) | ||
244 | - | ||
245 | - self.sizer.Fit(self) | ||
246 | - self.Update() | ||
247 | - self.SetAutoLayout(1) | ||
248 | - | ||
249 | - | ||
250 | - def JumpNextPage(self): | ||
251 | - self.jump_next_page = True | ||
252 | - self.next.GetNext().DecreasePageNumber() | ||
253 | - | ||
254 | - def OnAddDir(self, evt): | ||
255 | - dlg = wx.DirDialog(self, _("Choose a directory:"), | ||
256 | - style=wx.DD_DIR_MUST_EXIST) | ||
257 | - | ||
258 | - if dlg.ShowModal() == wx.ID_OK: | ||
259 | - path = dlg.GetPath() | ||
260 | - self.selected_dir.append(path) | ||
261 | - self.link_add_new.SetLabel(_("Add another directory")) | ||
262 | - self.AddNewDir(path) | ||
263 | - dlg.Destroy() | ||
264 | - | ||
265 | - def OnChangeDir(self, prev_dir, text): | ||
266 | - dlg = wx.DirDialog(self, _("Choose a directory:"), | ||
267 | - style=wx.DD_DIR_MUST_EXIST) | ||
268 | - dlg.SetPath(prev_dir) | ||
269 | - | ||
270 | - if dlg.ShowModal() == wx.ID_OK: | ||
271 | - path = dlg.GetPath() | ||
272 | - self.selected_dir.remove(prev_dir) | ||
273 | - self.selected_dir.append(path) | ||
274 | - text.SetValue(path) | ||
275 | - dlg.Destroy() | ||
276 | - | ||
277 | - | ||
278 | - def AddNewDir(self, path): | ||
279 | - folder_bmp = wx.ArtProvider.GetBitmap(wx.ART_FOLDER_OPEN, wx.ART_BUTTON, | ||
280 | - (12,12)) | ||
281 | - btn = wx.BitmapButton(self, -1, folder_bmp) | ||
282 | - | ||
283 | - text_dir_path = wx.StaticText(self, -1, path) | ||
284 | - | ||
285 | - tooltip = wx.ToolTip(_("Remove this directory from list")) | ||
286 | - link_remove = hl.HyperLinkCtrl(self, -1,_("Remove")) | ||
287 | - link_remove.SetUnderlines(True, False, False) | ||
288 | - link_remove.SetColours("BLUE", "BLUE", "BLUE") | ||
289 | - link_remove.SetToolTip(tooltip) | ||
290 | - link_remove.AutoBrowse(False) | ||
291 | - link_remove.UpdateLink() | ||
292 | - | ||
293 | - dir_line = wx.BoxSizer(wx.HORIZONTAL) | ||
294 | - dir_line.Add(btn, 0, wx.LEFT|wx.RIGHT, 5) | ||
295 | - dir_line.Add(text_dir_path, 0) | ||
296 | - dir_line.Add(link_remove, 0, wx.ALIGN_RIGHT|wx.RIGHT|wx.LEFT, 5) | ||
297 | - | ||
298 | - link_remove.Bind(hl.EVT_HYPERLINK_LEFT, lambda e: self.RemoveDir(path, dir_line)) | ||
299 | - btn.Bind(wx.EVT_BUTTON, lambda e: self.OnChangeDir(path, link_remove)) | ||
300 | - | ||
301 | - self.line3.Add(dir_line, 1, wx.LEFT, 2) | ||
302 | - #self.line3.Add(text_dir_path, 0, wx.ALL, 5) | ||
303 | - | ||
304 | - self.Fit() | ||
305 | - | ||
306 | - def RemoveDir(self, path, sizer): | ||
307 | - self.selected_dir.remove(path) | ||
308 | - self.line3.Hide(sizer) | ||
309 | - self.line3.RemoveSizer(sizer) | ||
310 | - if not self.selected_dir: | ||
311 | - self.link_add_new.SetLabel(_("Add another directory")) | ||
312 | - self.Layout() | ||
313 | - self.Fit() | ||
314 | - | ||
315 | - | ||
316 | - | ||
317 | - | ||
318 | - def GetNext(self): | ||
319 | - """If jump_next_page is true then return the next page's next page""" | ||
320 | - if self.jump_next_page: | ||
321 | - try: | ||
322 | - self.next.GetNext().SetPrev(self) | ||
323 | - except AttributeError: | ||
324 | - print "Warning: Next is the last Wizard page." | ||
325 | - return None | ||
326 | - else: | ||
327 | - return self.next.GetNext() | ||
328 | - else: | ||
329 | - try: | ||
330 | - self.next.GetNext().SetPrev(self.next) | ||
331 | - except AttributeError: | ||
332 | - print "Worning: This is the last Wizard page" | ||
333 | - return self.next | ||
334 | - | ||
335 | - | ||
336 | - def dbbCallback(self, evt): | ||
337 | - self.log.write('DirBrowseButton: %s\n' % evt.GetString()) | ||
338 | - | ||
339 | -def CreateWizard(parent): | ||
340 | - wizard = wiz.Wizard(parent, -1, _("Import medical images"), getWizTest1Bitmap()) | ||
341 | - | ||
342 | - page1 = DirPage(wizard, _("Choose directory"), 1) | ||
343 | - page2 = RawDataPage(wizard, _("Define RAW data"), 2) | ||
344 | - page3 = StudyPage(wizard, _("Select study"), 3) # 2 can be 3 | ||
345 | - | ||
346 | - | ||
347 | - wizard.FitToPage(page1) | ||
348 | - page3.sizer.Add(wx.StaticText(page3, -1, _("\nThis is the last page."))) | ||
349 | - | ||
350 | - # Set the initial order of the pages | ||
351 | - page1.SetNext(page2) | ||
352 | - page2.SetPrev(page1) | ||
353 | - page2.SetNext(page3) | ||
354 | - page3.SetPrev(page2) | ||
355 | - | ||
356 | - page1.JumpNextPage() | ||
357 | - | ||
358 | - wizard.GetPageAreaSizer().Add(page1) | ||
359 | - | ||
360 | - if wizard.RunWizard(page1): | ||
361 | - print "Completed - Send message to import data" | ||
362 | - else: | ||
363 | - print "Canceled" | ||
364 | - | ||
365 | -class ImportApp(wx.App): | ||
366 | - def OnInit(self): | ||
367 | - CreateWizard(None) | ||
368 | - return True | ||
369 | - | ||
370 | -if __name__ == '__main__': | ||
371 | - app = ImportApp(0) | ||
372 | - app.MainLoop() |
invesalius/gui/task_exporter.py
@@ -291,7 +291,7 @@ class InnerTaskPanel(wx.Panel): | @@ -291,7 +291,7 @@ class InnerTaskPanel(wx.Panel): | ||
291 | dlg = wx.MessageDialog(None, | 291 | dlg = wx.MessageDialog(None, |
292 | _("You need to create a surface and make it ") + | 292 | _("You need to create a surface and make it ") + |
293 | _("visible before exporting it."), | 293 | _("visible before exporting it."), |
294 | - _('InVesalius Information'), | 294 | + 'InVesalius 3', |
295 | wx.OK | wx.ICON_INFORMATION) | 295 | wx.OK | wx.ICON_INFORMATION) |
296 | try: | 296 | try: |
297 | dlg.ShowModal() | 297 | dlg.ShowModal() |
invesalius/gui/task_slice.py
@@ -135,7 +135,7 @@ class InnerTaskPanel(wx.Panel): | @@ -135,7 +135,7 @@ class InnerTaskPanel(wx.Panel): | ||
135 | 135 | ||
136 | def OnLinkNewMask(self, evt=None): | 136 | def OnLinkNewMask(self, evt=None): |
137 | dlg = wx.TextEntryDialog(self, _('Name of new mask:'), | 137 | dlg = wx.TextEntryDialog(self, _('Name of new mask:'), |
138 | - _('InVesalius 3.0 - New mask')) | 138 | + _('InVesalius 3 - New mask')) |
139 | dlg.CenterOnScreen() | 139 | dlg.CenterOnScreen() |
140 | default_mask_name = const.MASK_NAME_PATTERN %(mask.Mask.general_index+2) | 140 | default_mask_name = const.MASK_NAME_PATTERN %(mask.Mask.general_index+2) |
141 | dlg.SetValue(default_mask_name) | 141 | dlg.SetValue(default_mask_name) |
invesalius/gui/task_surface.py
@@ -128,7 +128,7 @@ class InnerTaskPanel(wx.Panel): | @@ -128,7 +128,7 @@ class InnerTaskPanel(wx.Panel): | ||
128 | evt.Skip() | 128 | evt.Skip() |
129 | 129 | ||
130 | def OnLinkNewSurface(self, evt=None): | 130 | def OnLinkNewSurface(self, evt=None): |
131 | - dlg = NewSurfaceDialog(self, -1, _('InVesalius 3.0 - New surface')) | 131 | + dlg = NewSurfaceDialog(self, -1, _('InVesalius 3 - New surface')) |
132 | if dlg.ShowModal() == wx.ID_OK: | 132 | if dlg.ShowModal() == wx.ID_OK: |
133 | print "TODO: Send Signal - Create 3d surface %s \n" % dlg.GetValue() | 133 | print "TODO: Send Signal - Create 3d surface %s \n" % dlg.GetValue() |
134 | dlg.Destroy() | 134 | dlg.Destroy() |
@@ -180,7 +180,7 @@ class NewSurfaceDialog(wx.Dialog): | @@ -180,7 +180,7 @@ class NewSurfaceDialog(wx.Dialog): | ||
180 | 180 | ||
181 | text = wx.TextCtrl(self, -1, "", size=(80,-1)) | 181 | text = wx.TextCtrl(self, -1, "", size=(80,-1)) |
182 | text.SetHelpText(_("Name the new surface to be created")) | 182 | text.SetHelpText(_("Name the new surface to be created")) |
183 | - text.SetValue(_("Default 3D")) | 183 | + text.SetValue(_("Surface")) |
184 | self.text = text | 184 | self.text = text |
185 | 185 | ||
186 | sizer = wx.BoxSizer(wx.VERTICAL) | 186 | sizer = wx.BoxSizer(wx.VERTICAL) |
@@ -208,8 +208,8 @@ class NewSurfaceDialog(wx.Dialog): | @@ -208,8 +208,8 @@ class NewSurfaceDialog(wx.Dialog): | ||
208 | self.SetSizer(sizer) | 208 | self.SetSizer(sizer) |
209 | sizer.Fit(self) | 209 | sizer.Fit(self) |
210 | 210 | ||
211 | - def GetValue(self): | ||
212 | - return self.text.GetValue() + _("| mask: ") + MASK_LIST[self.combo_surface_name.GetSelection()] | 211 | + #def GetValue(self): |
212 | + # return self.text.GetValue() + _("| mask: ") + MASK_LIST[self.combo_surface_name.GetSelection()] | ||
213 | 213 | ||
214 | class FoldPanel(wx.Panel): | 214 | class FoldPanel(wx.Panel): |
215 | def __init__(self, parent): | 215 | def __init__(self, parent): |
invesalius/i18n.py
@@ -49,4 +49,4 @@ def InstallLanguage(language): | @@ -49,4 +49,4 @@ def InstallLanguage(language): | ||
49 | languages=[language], codeset='utf8') | 49 | languages=[language], codeset='utf8') |
50 | # Using unicode | 50 | # Using unicode |
51 | lang.install(unicode=1) | 51 | lang.install(unicode=1) |
52 | - return lang.gettext | 52 | + return lang.ugettext |
locale/en/LC_MESSAGES/invesalius.mo
No preview for this file type
locale/es/LC_MESSAGES/invesalius.mo
No preview for this file type
locale/pt_BR/LC_MESSAGES/invesalius.mo
No preview for this file type