Commit 38b899b277c0729dce6b8fb3fc240d8f0f6129ba
1 parent
3d07ca34
Exists in
master
and in
68 other branches
ENH: Credits to translators and artist
Showing
1 changed file
with
154 additions
and
16 deletions
Show diff stats
invesalius/gui/dialogs.py
| ... | ... | @@ -231,16 +231,6 @@ def ShowSaveAsProjectDialog(default_filename=None): |
| 231 | 231 | os.chdir(current_dir) |
| 232 | 232 | return filename |
| 233 | 233 | |
| 234 | - | |
| 235 | - | |
| 236 | - | |
| 237 | - | |
| 238 | - | |
| 239 | - | |
| 240 | - | |
| 241 | - | |
| 242 | - | |
| 243 | - | |
| 244 | 234 | class MessageDialog(wx.Dialog): |
| 245 | 235 | def __init__(self, message): |
| 246 | 236 | pre = wx.PreDialog() |
| ... | ... | @@ -395,6 +385,144 @@ def NewMask(): |
| 395 | 385 | return dlg.GetValue() |
| 396 | 386 | return None |
| 397 | 387 | |
| 388 | +class NewMaskDialog(wx.Dialog): | |
| 389 | + def __init__(self, | |
| 390 | + parent=None, | |
| 391 | + ID=-1, | |
| 392 | + title="InVesalius 3", | |
| 393 | + size=wx.DefaultSize, | |
| 394 | + pos=wx.DefaultPosition, | |
| 395 | + style=wx.DEFAULT_DIALOG_STYLE, | |
| 396 | + useMetal=False): | |
| 397 | + import constants as const | |
| 398 | + import data.surface as surface | |
| 399 | + import project as prj | |
| 400 | + | |
| 401 | + # Instead of calling wx.Dialog.__init__ we precreate the dialog | |
| 402 | + # so we can set an extra style that must be set before | |
| 403 | + # creation, and then we create the GUI object using the Create | |
| 404 | + # method. | |
| 405 | + pre = wx.PreDialog() | |
| 406 | + pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) | |
| 407 | + pre.Create(parent, ID, title, pos, (500,300), style) | |
| 408 | + | |
| 409 | + # This next step is the most important, it turns this Python | |
| 410 | + # object into the real wrapper of the dialog (instead of pre) | |
| 411 | + # as far as the wxPython extension is concerned. | |
| 412 | + self.PostCreate(pre) | |
| 413 | + | |
| 414 | + self.CenterOnScreen() | |
| 415 | + | |
| 416 | + # This extra style can be set after the UI object has been created. | |
| 417 | + if 'wxMac' in wx.PlatformInfo and useMetal: | |
| 418 | + self.SetExtraStyle(wx.DIALOG_EX_METAL) | |
| 419 | + | |
| 420 | + self.CenterOnScreen() | |
| 421 | + | |
| 422 | + # LINE 1: Surface name | |
| 423 | + | |
| 424 | + label_surface = wx.StaticText(self, -1, _("New mask name:")) | |
| 425 | + | |
| 426 | + default_name = const.SURFACE_NAME_PATTERN %(surface.Surface.general_index+2) | |
| 427 | + text = wx.TextCtrl(self, -1, "", size=(80,-1)) | |
| 428 | + text.SetHelpText(_("Name the mask to be created")) | |
| 429 | + text.SetValue(default_name) | |
| 430 | + self.text = text | |
| 431 | + | |
| 432 | + # LINE 2: Mask of reference | |
| 433 | + | |
| 434 | + # Informative label | |
| 435 | + label_mask = wx.StaticText(self, -1, _("Threshold preset:")) | |
| 436 | + | |
| 437 | + # Retrieve existing masks | |
| 438 | + project = prj.Project() | |
| 439 | + thresh_list = project.threshold_modes.keys() | |
| 440 | + thresh_list.sort() | |
| 441 | + default_index = proj.threshold_modes.get_key(_("Default")) | |
| 442 | + self.thresh_list = thresh_list | |
| 443 | + | |
| 444 | + # Mask selection combo | |
| 445 | + combo_mask = wx.ComboBox(self, -1, "", choices= self.thresh_list, | |
| 446 | + style=wx.CB_DROPDOWN|wx.CB_READONLY) | |
| 447 | + combo_mask.SetSelection(len(self.thresh_list)-1) | |
| 448 | + if sys.platform != 'win32': | |
| 449 | + combo_mask.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) | |
| 450 | + self.combo_mask = combo_mask | |
| 451 | + | |
| 452 | + # LINE 3: Surface quality | |
| 453 | + label_quality = wx.StaticText(self, -1, _("Surface quality:")) | |
| 454 | + | |
| 455 | + choices = const.SURFACE_QUALITY_LIST, | |
| 456 | + style = wx.CB_DROPDOWN|wx.CB_READONLY | |
| 457 | + combo_quality = wx.ComboBox(self, -1, "", | |
| 458 | + choices= choices, | |
| 459 | + style=style) | |
| 460 | + combo_quality.SetSelection(3) | |
| 461 | + if sys.platform != 'win32': | |
| 462 | + combo_quality.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) | |
| 463 | + self.combo_quality = combo_quality | |
| 464 | + | |
| 465 | + | |
| 466 | + # OVERVIEW | |
| 467 | + # Sizer that joins content above | |
| 468 | + flag_link = wx.EXPAND|wx.GROW|wx.ALL | |
| 469 | + flag_button = wx.ALL | wx.EXPAND| wx.GROW | |
| 470 | + | |
| 471 | + fixed_sizer = wx.FlexGridSizer(rows=2, cols=2, hgap=10, vgap=0) | |
| 472 | + fixed_sizer.AddGrowableCol(0, 1) | |
| 473 | + fixed_sizer.AddMany([ (label_surface, 1, flag_link, 5), | |
| 474 | + (text, 1, flag_button, 2), | |
| 475 | + (label_mask, 1, flag_link, 5), | |
| 476 | + (combo_mask, 0, flag_button, 1), | |
| 477 | + (label_quality, 1, flag_link, 5), | |
| 478 | + (combo_quality, 0, flag_button, 1)]) | |
| 479 | + | |
| 480 | + | |
| 481 | + # LINES 4 and 5: Checkboxes | |
| 482 | + check_box_holes = wx.CheckBox(self, -1, _("Fill holes")) | |
| 483 | + check_box_holes.SetValue(True) | |
| 484 | + self.check_box_holes = check_box_holes | |
| 485 | + check_box_largest = wx.CheckBox(self, -1, _("Keep largest region")) | |
| 486 | + self.check_box_largest = check_box_largest | |
| 487 | + | |
| 488 | + # LINE 6: Buttons | |
| 489 | + | |
| 490 | + btn_ok = wx.Button(self, wx.ID_OK) | |
| 491 | + btn_ok.SetDefault() | |
| 492 | + btn_cancel = wx.Button(self, wx.ID_CANCEL) | |
| 493 | + | |
| 494 | + btnsizer = wx.StdDialogButtonSizer() | |
| 495 | + btnsizer.AddButton(btn_ok) | |
| 496 | + btnsizer.AddButton(btn_cancel) | |
| 497 | + btnsizer.Realize() | |
| 498 | + | |
| 499 | + # OVERVIEW | |
| 500 | + # Merge all sizers and checkboxes | |
| 501 | + sizer = wx.BoxSizer(wx.VERTICAL) | |
| 502 | + sizer.Add(fixed_sizer, 0, wx.TOP|wx.RIGHT|wx.LEFT|wx.GROW|wx.EXPAND, 20) | |
| 503 | + sizer.Add(check_box_holes, 0, wx.RIGHT|wx.LEFT, 30) | |
| 504 | + sizer.Add(check_box_largest, 0, wx.RIGHT|wx.LEFT, 30) | |
| 505 | + sizer.Add(btnsizer, 0, wx.ALIGN_RIGHT|wx.ALL, 10) | |
| 506 | + | |
| 507 | + self.SetSizer(sizer) | |
| 508 | + sizer.Fit(self) | |
| 509 | + | |
| 510 | + def GetValue(self): | |
| 511 | + mask_index = self.combo_mask.GetSelection() | |
| 512 | + surface_name = self.text.GetValue() | |
| 513 | + quality = const.SURFACE_QUALITY_LIST[self.combo_quality.GetSelection()] | |
| 514 | + fill_holes = self.check_box_holes.GetValue() | |
| 515 | + keep_largest = self.check_box_largest.GetValue() | |
| 516 | + return (mask_index, surface_name, quality, fill_holes, keep_largest) | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 398 | 526 | def InexistentPath(path): |
| 399 | 527 | msg = _("%s does not exist.")%(path) |
| 400 | 528 | if sys.platform == 'darwin': |
| ... | ... | @@ -473,11 +601,16 @@ def ShowAboutDialog(parent): |
| 473 | 601 | "Paulo Henrique Junqueira Amorim", |
| 474 | 602 | "Thiago Franco de Moraes"] |
| 475 | 603 | #info.DocWriters = |
| 476 | - info.Translators = ["Alex P. Natsios (GR)", | |
| 477 | - "Andreas Loupasakis (GR)", | |
| 478 | - "Dimitris Glezos (GR)", | |
| 604 | + info.Translators = ["Alex P. Natsios (EL)", | |
| 605 | + "Andreas Loupasakis (EL)", | |
| 606 | + "Cheng-Chia Tseng (ZH)", | |
| 607 | + "Dimitris Glezos (EL)", | |
| 479 | 608 | u"Frédéric Lopez (FR)", |
| 480 | - "Nikos Korkakakis (GR)"] | |
| 609 | + "J. Javier de Lima Moreno (ES)" | |
| 610 | + "Nikos Korkakakis (EL)", | |
| 611 | + "Sebastian Hilbert (FR)"] | |
| 612 | + | |
| 613 | + info.Artists = ["Otavio Henrique Junqueira Amorim"] | |
| 481 | 614 | |
| 482 | 615 | # Then we call wx.AboutBox giving its info object |
| 483 | 616 | wx.AboutBox(info) |
| ... | ... | @@ -518,6 +651,8 @@ class NewSurfaceDialog(wx.Dialog): |
| 518 | 651 | # as far as the wxPython extension is concerned. |
| 519 | 652 | self.PostCreate(pre) |
| 520 | 653 | |
| 654 | + self.CenterOnScreen() | |
| 655 | + | |
| 521 | 656 | # This extra style can be set after the UI object has been created. |
| 522 | 657 | if 'wxMac' in wx.PlatformInfo and useMetal: |
| 523 | 658 | self.SetExtraStyle(wx.DIALOG_EX_METAL) |
| ... | ... | @@ -557,8 +692,11 @@ class NewSurfaceDialog(wx.Dialog): |
| 557 | 692 | # LINE 3: Surface quality |
| 558 | 693 | label_quality = wx.StaticText(self, -1, _("Surface quality:")) |
| 559 | 694 | |
| 560 | - combo_quality = wx.ComboBox(self, -1, "", choices= const.SURFACE_QUALITY_LIST, | |
| 561 | - style=wx.CB_DROPDOWN|wx.CB_READONLY) | |
| 695 | + choices = const.SURFACE_QUALITY_LIST | |
| 696 | + style = wx.CB_DROPDOWN|wx.CB_READONLY | |
| 697 | + combo_quality = wx.ComboBox(self, -1, "", | |
| 698 | + choices= choices, | |
| 699 | + style=style) | |
| 562 | 700 | combo_quality.SetSelection(3) |
| 563 | 701 | if sys.platform != 'win32': |
| 564 | 702 | combo_quality.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) | ... | ... |