chiark / gitweb /
Add initial support for i18n.
[cura.git] / Cura / gui / mainWindow.py
index da65a469b8396a41524dd45ced21a8a19d5cf208..cd656e74d64f9d640bd6ed33cc5dedb3081ceb61 100644 (file)
@@ -36,10 +36,10 @@ class mainWindow(wx.Frame):
                self.normalModeOnlyItems = []
 
                mruFile = os.path.join(profile.getBasePath(), 'mru_filelist.ini')
-               self.config = wx.FileConfig(appName="Cura", 
+               self.config = wx.FileConfig(appName="Cura",
                                                localFilename=mruFile,
                                                style=wx.CONFIG_USE_LOCAL_FILE)
-                                               
+
                self.ID_MRU_MODEL1, self.ID_MRU_MODEL2, self.ID_MRU_MODEL3, self.ID_MRU_MODEL4, self.ID_MRU_MODEL5, self.ID_MRU_MODEL6, self.ID_MRU_MODEL7, self.ID_MRU_MODEL8, self.ID_MRU_MODEL9, self.ID_MRU_MODEL10 = [wx.NewId() for line in xrange(10)]
                self.modelFileHistory = wx.FileHistory(10, self.ID_MRU_MODEL1)
                self.config.SetPath("/ModelMRU")
@@ -52,65 +52,65 @@ class mainWindow(wx.Frame):
 
                self.menubar = wx.MenuBar()
                self.fileMenu = wx.Menu()
-               i = self.fileMenu.Append(-1, 'Load model file...\tCTRL+L')
+               i = self.fileMenu.Append(-1, _("Load model file...\tCTRL+L"))
                self.Bind(wx.EVT_MENU, lambda e: self.scene.showLoadModel(), i)
-               i = self.fileMenu.Append(-1, 'Save model...\tCTRL+S')
+               i = self.fileMenu.Append(-1, _("Save model...\tCTRL+S"))
                self.Bind(wx.EVT_MENU, lambda e: self.scene.showSaveModel(), i)
-               i = self.fileMenu.Append(-1, 'Clear platform')
+               i = self.fileMenu.Append(-1, _("Clear platform"))
                self.Bind(wx.EVT_MENU, lambda e: self.scene.OnDeleteAll(e), i)
 
                self.fileMenu.AppendSeparator()
-               i = self.fileMenu.Append(-1, 'Print...\tCTRL+P')
+               i = self.fileMenu.Append(-1, _("Print...\tCTRL+P"))
                self.Bind(wx.EVT_MENU, lambda e: self.scene.showPrintWindow(), i)
-               i = self.fileMenu.Append(-1, 'Save GCode...')
+               i = self.fileMenu.Append(-1, _("Save GCode..."))
                self.Bind(wx.EVT_MENU, lambda e: self.scene.showSaveGCode(), i)
-               i = self.fileMenu.Append(-1, 'Show slice engine log...')
+               i = self.fileMenu.Append(-1, _("Show slice engine log..."))
                self.Bind(wx.EVT_MENU, lambda e: self.scene._showSliceLog(), i)
 
                self.fileMenu.AppendSeparator()
-               i = self.fileMenu.Append(-1, 'Open Profile...')
+               i = self.fileMenu.Append(-1, _("Open Profile..."))
                self.normalModeOnlyItems.append(i)
                self.Bind(wx.EVT_MENU, self.OnLoadProfile, i)
-               i = self.fileMenu.Append(-1, 'Save Profile...')
+               i = self.fileMenu.Append(-1, _("Save Profile..."))
                self.normalModeOnlyItems.append(i)
                self.Bind(wx.EVT_MENU, self.OnSaveProfile, i)
-               i = self.fileMenu.Append(-1, 'Load Profile from GCode...')
+               i = self.fileMenu.Append(-1, _("Load Profile from GCode..."))
                self.normalModeOnlyItems.append(i)
                self.Bind(wx.EVT_MENU, self.OnLoadProfileFromGcode, i)
                self.fileMenu.AppendSeparator()
-               i = self.fileMenu.Append(-1, 'Reset Profile to default')
+               i = self.fileMenu.Append(-1, _("Reset Profile to default"))
                self.normalModeOnlyItems.append(i)
                self.Bind(wx.EVT_MENU, self.OnResetProfile, i)
 
                self.fileMenu.AppendSeparator()
-               i = self.fileMenu.Append(-1, 'Preferences...\tCTRL+,')
+               i = self.fileMenu.Append(-1, _("Preferences...\tCTRL+,"))
                self.Bind(wx.EVT_MENU, self.OnPreferences, i)
                self.fileMenu.AppendSeparator()
 
                # Model MRU list
                modelHistoryMenu = wx.Menu()
-               self.fileMenu.AppendMenu(wx.NewId(), "&Recent Model Files", modelHistoryMenu)
+               self.fileMenu.AppendMenu(wx.NewId(), _("&Recent Model Files"), modelHistoryMenu)
                self.modelFileHistory.UseMenu(modelHistoryMenu)
                self.modelFileHistory.AddFilesToMenu()
                self.Bind(wx.EVT_MENU_RANGE, self.OnModelMRU, id=self.ID_MRU_MODEL1, id2=self.ID_MRU_MODEL10)
 
                # Profle MRU list
                profileHistoryMenu = wx.Menu()
-               self.fileMenu.AppendMenu(wx.NewId(), "&Recent Profile Files", profileHistoryMenu)
+               self.fileMenu.AppendMenu(wx.NewId(), _("&Recent Profile Files"), profileHistoryMenu)
                self.profileFileHistory.UseMenu(profileHistoryMenu)
                self.profileFileHistory.AddFilesToMenu()
                self.Bind(wx.EVT_MENU_RANGE, self.OnProfileMRU, id=self.ID_MRU_PROFILE1, id2=self.ID_MRU_PROFILE10)
-               
+
                self.fileMenu.AppendSeparator()
-               i = self.fileMenu.Append(wx.ID_EXIT, 'Quit')
+               i = self.fileMenu.Append(wx.ID_EXIT, _("Quit"))
                self.Bind(wx.EVT_MENU, self.OnQuit, i)
-               self.menubar.Append(self.fileMenu, '&File')
+               self.menubar.Append(self.fileMenu, _("&File"))
 
                toolsMenu = wx.Menu()
-               i = toolsMenu.Append(-1, 'Switch to quickprint...')
+               i = toolsMenu.Append(-1, _("Switch to quickprint..."))
                self.switchToQuickprintMenuItem = i
                self.Bind(wx.EVT_MENU, self.OnSimpleSwitch, i)
-               i = toolsMenu.Append(-1, 'Switch to full settings...')
+               i = toolsMenu.Append(-1, _("Switch to full settings..."))
                self.switchToNormalMenuItem = i
                self.Bind(wx.EVT_MENU, self.OnNormalSwitch, i)
                toolsMenu.AppendSeparator()
@@ -118,45 +118,45 @@ class mainWindow(wx.Frame):
                #self.Bind(wx.EVT_MENU, self.OnBatchRun, i)
                #self.normalModeOnlyItems.append(i)
                if minecraftImport.hasMinecraft():
-                       i = toolsMenu.Append(-1, 'Minecraft import...')
+                       i = toolsMenu.Append(-1, _("Minecraft import..."))
                        self.Bind(wx.EVT_MENU, self.OnMinecraftImport, i)
                if version.isDevVersion():
-                       i = toolsMenu.Append(-1, 'PID Debugger...')
+                       i = toolsMenu.Append(-1, _("PID Debugger..."))
                        self.Bind(wx.EVT_MENU, self.OnPIDDebugger, i)
-               self.menubar.Append(toolsMenu, 'Tools')
+               self.menubar.Append(toolsMenu, _("Tools"))
 
                expertMenu = wx.Menu()
-               i = expertMenu.Append(-1, 'Open expert settings...')
+               i = expertMenu.Append(-1, _("Open expert settings..."))
                self.normalModeOnlyItems.append(i)
                self.Bind(wx.EVT_MENU, self.OnExpertOpen, i)
                expertMenu.AppendSeparator()
                if firmwareInstall.getDefaultFirmware() is not None:
-                       i = expertMenu.Append(-1, 'Install default Marlin firmware')
+                       i = expertMenu.Append(-1, _("Install default Marlin firmware"))
                        self.Bind(wx.EVT_MENU, self.OnDefaultMarlinFirmware, i)
-               i = expertMenu.Append(-1, 'Install custom firmware')
+               i = expertMenu.Append(-1, _("Install custom firmware"))
                self.Bind(wx.EVT_MENU, self.OnCustomFirmware, i)
                expertMenu.AppendSeparator()
-               i = expertMenu.Append(-1, 'Run first run wizard...')
+               i = expertMenu.Append(-1, _("Run first run wizard..."))
                self.Bind(wx.EVT_MENU, self.OnFirstRunWizard, i)
-               i = expertMenu.Append(-1, 'Run bed leveling wizard...')
+               i = expertMenu.Append(-1, _("Run bed leveling wizard..."))
                self.Bind(wx.EVT_MENU, self.OnBedLevelWizard, i)
                if self.extruderCount > 1:
-                       i = expertMenu.Append(-1, 'Run head offset wizard...')
+                       i = expertMenu.Append(-1, _("Run head offset wizard..."))
                        self.Bind(wx.EVT_MENU, self.OnHeadOffsetWizard, i)
-               self.menubar.Append(expertMenu, 'Expert')
+               self.menubar.Append(expertMenu, _("Expert"))
 
                helpMenu = wx.Menu()
-               i = helpMenu.Append(-1, 'Online documentation...')
+               i = helpMenu.Append(-1, _("Online documentation..."))
                self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('http://daid.github.com/Cura'), i)
-               i = helpMenu.Append(-1, 'Report a problem...')
+               i = helpMenu.Append(-1, _("Report a problem..."))
                self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/Cura/issues'), i)
-               i = helpMenu.Append(-1, 'Check for update...')
+               i = helpMenu.Append(-1, _("Check for update..."))
                self.Bind(wx.EVT_MENU, self.OnCheckForUpdate, i)
-               i = helpMenu.Append(-1, 'Open YouMagine website...')
+               i = helpMenu.Append(-1, _("Open YouMagine website..."))
                self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://www.youmagine.com/'), i)
-               i = helpMenu.Append(-1, 'About Cura...')
+               i = helpMenu.Append(-1, _("About Cura..."))
                self.Bind(wx.EVT_MENU, self.OnAbout, i)
-               self.menubar.Append(helpMenu, 'Help')
+               self.menubar.Append(helpMenu, _("Help"))
                self.SetMenuBar(self.menubar)
 
                self.splitter = wx.SplitterWindow(self, style = wx.SP_3D | wx.SP_LIVE_UPDATE)
@@ -172,7 +172,7 @@ class mainWindow(wx.Frame):
                self.leftSizer.Add(self.simpleSettingsPanel, 1)
                self.leftSizer.Add(self.normalSettingsPanel, 1, wx.EXPAND)
                self.leftPane.SetSizer(self.leftSizer)
-               
+
                #Preview window
                self.scene = sceneView.SceneView(self.rightPane)
 
@@ -212,7 +212,7 @@ class mainWindow(wx.Frame):
                                        self.SetPosition((posx,posy))
                                if width > 0 and height > 0:
                                        self.SetSize((width,height))
-                               
+
                        self.normalSashPos = int(profile.getPreference('window_normal_sash'))
                except:
                        self.normalSashPos = 0
@@ -248,11 +248,11 @@ class mainWindow(wx.Frame):
                if isSimple:
                        # Save normal mode sash
                        self.normalSashPos = self.splitter.GetSashPosition()
-                       
+
                        # Change location of sash to width of quick mode pane 
-                       (width, height) = self.simpleSettingsPanel.GetSizer().GetSize() 
+                       (width, height) = self.simpleSettingsPanel.GetSizer().GetSize()
                        self.splitter.SetSashPosition(width, True)
-                       
+
                        # Disable sash
                        self.splitter.SetSashSize(0)
                else:
@@ -290,7 +290,7 @@ class mainWindow(wx.Frame):
                self.config.SetPath("/ModelMRU")
                self.modelFileHistory.Save(self.config)
                self.config.Flush()
-       
+
        def OnProfileMRU(self, e):
                fileNum = e.GetId() - self.ID_MRU_PROFILE1
                path = self.profileFileHistory.GetHistoryFile(fileNum)
@@ -315,7 +315,7 @@ class mainWindow(wx.Frame):
                self.simpleSettingsPanel.updateProfileToControls()
 
        def OnLoadProfile(self, e):
-               dlg=wx.FileDialog(self, "Select profile file to load", os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
+               dlg=wx.FileDialog(self, _("Select profile file to load"), os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
                dlg.SetWildcard("ini files (*.ini)|*.ini")
                if dlg.ShowModal() == wx.ID_OK:
                        profileFile = dlg.GetPath()
@@ -327,7 +327,7 @@ class mainWindow(wx.Frame):
                dlg.Destroy()
 
        def OnLoadProfileFromGcode(self, e):
-               dlg=wx.FileDialog(self, "Select gcode file to load profile from", os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
+               dlg=wx.FileDialog(self, _("Select gcode file to load profile from"), os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
                dlg.SetWildcard("gcode files (*.gcode)|*.gcode;*.g")
                if dlg.ShowModal() == wx.ID_OK:
                        gcodeFile = dlg.GetPath()
@@ -340,11 +340,11 @@ class mainWindow(wx.Frame):
                        if hasProfile:
                                self.updateProfileToControls()
                        else:
-                               wx.MessageBox('No profile found in GCode file.\nThis feature only works with GCode files made by Cura 12.07 or newer.', 'Profile load error', wx.OK | wx.ICON_INFORMATION)
+                               wx.MessageBox(_("No profile found in GCode file.\nThis feature only works with GCode files made by Cura 12.07 or newer."), _("Profile load error"), wx.OK | wx.ICON_INFORMATION)
                dlg.Destroy()
 
        def OnSaveProfile(self, e):
-               dlg=wx.FileDialog(self, "Select profile file to save", os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_SAVE)
+               dlg=wx.FileDialog(self, _("Select profile file to save"), os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_SAVE)
                dlg.SetWildcard("ini files (*.ini)|*.ini")
                if dlg.ShowModal() == wx.ID_OK:
                        profileFile = dlg.GetPath()
@@ -352,7 +352,7 @@ class mainWindow(wx.Frame):
                dlg.Destroy()
 
        def OnResetProfile(self, e):
-               dlg = wx.MessageDialog(self, 'This will reset all profile settings to defaults.\nUnless you have saved your current profile, all settings will be lost!\nDo you really want to reset?', 'Profile reset', wx.YES_NO | wx.ICON_QUESTION)
+               dlg = wx.MessageDialog(self, _("This will reset all profile settings to defaults.\nUnless you have saved your current profile, all settings will be lost!\nDo you really want to reset?"), _("Profile reset"), wx.YES_NO | wx.ICON_QUESTION)
                result = dlg.ShowModal() == wx.ID_YES
                dlg.Destroy()
                if result:
@@ -372,8 +372,8 @@ class mainWindow(wx.Frame):
 
        def OnCustomFirmware(self, e):
                if profile.getPreference('machine_type').startswith('ultimaker'):
-                       wx.MessageBox('Warning: Installing a custom firmware does not guarantee that you machine will function correctly, and could damage your machine.', 'Firmware update', wx.OK | wx.ICON_EXCLAMATION)
-               dlg=wx.FileDialog(self, "Open firmware to upload", os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
+                       wx.MessageBox(_("Warning: Installing a custom firmware does not guarantee that you machine will function correctly, and could damage your machine."), _("Firmware update"), wx.OK | wx.ICON_EXCLAMATION)
+               dlg=wx.FileDialog(self, _("Open firmware to upload"), os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST)
                dlg.SetWildcard("HEX file (*.hex)|*.hex;*.HEX")
                if dlg.ShowModal() == wx.ID_OK:
                        filename = dlg.GetPath()
@@ -410,17 +410,17 @@ class mainWindow(wx.Frame):
        def OnCheckForUpdate(self, e):
                newVersion = version.checkForNewerVersion()
                if newVersion is not None:
-                       if wx.MessageBox('A new version of Cura is available, would you like to download?', 'New version available', wx.YES_NO | wx.ICON_INFORMATION) == wx.YES:
+                       if wx.MessageBox(_("A new version of Cura is available, would you like to download?"), _("New version available"), wx.YES_NO | wx.ICON_INFORMATION) == wx.YES:
                                webbrowser.open(newVersion)
                else:
-                       wx.MessageBox('You are running the latest version of Cura!', 'Awesome!', wx.ICON_INFORMATION)
+                       wx.MessageBox(_("You are running the latest version of Cura!"), _("Awesome!"), wx.ICON_INFORMATION)
 
        def OnAbout(self, e):
                info = wx.AboutDialogInfo()
-               info.SetName('Cura')
-               info.SetDescription('End solution for Open Source Fused Filament Fabrication 3D printing.')
+               info.SetName("Cura")
+               info.SetDescription(_("End solution for Open Source Fused Filament Fabrication 3D printing."))
                info.SetWebSite('http://software.ultimaker.com/')
-               info.SetCopyright('Copyright (C) David Braam')
+               info.SetCopyright(_("Copyright (C) David Braam"))
                info.SetLicence("""
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU Affero General Public License as published by