def afterSplashCallback(self): #-- Load Profile and Preferences profile.loadPreferences(os.path.join(self.basePath, 'preferences.ini')) profile.loadProfile(os.path.join(self.basePath, 'current-profile.ini')) #-- Load Language resources.setupLocalization(profile.getPreference('language')) #-- Create Main Window self.mainWindow = MainWindow() #-- Check for updates if profile.getPreferenceBool('check_for_updates') and version.checkForUpdates(): v = VersionWindow(self.mainWindow) if v.download: return #-- Show Main Window self.SetTopWindow(self.mainWindow) self.mainWindow.Show() if profile.getPreferenceBool('show_welcome'): #-- Create Welcome Window WelcomeWindow(self.mainWindow) setFullScreenCapable(self.mainWindow) if sys.isDarwin(): wx.CallAfter(self.StupidMacOSWorkaround)
def afterSplashCallback(self): #-- Load Profile and Preferences profile.loadPreferences(os.path.join(self.basePath, 'preferences.ini')) profile.loadProfile(os.path.join(self.basePath, 'current-profile.ini')) profile.loadMachineSettings( os.path.join(self.basePath, profile.getMachineSettingFileName())) #-- Load Language resources.setupLocalization(profile.getPreference('language')) #-- Create Main Window self.mainWindow = MainWindow() #-- Check for updates if profile.getPreferenceBool( 'check_for_updates') and version.checkForUpdates(): v = VersionWindow(self.mainWindow) if v.download: return #-- Show Main Window self.SetTopWindow(self.mainWindow) self.mainWindow.Show() if profile.getPreferenceBool('show_welcome'): #-- Create Welcome Window WelcomeWindow(self.mainWindow) setFullScreenCapable(self.mainWindow) if sys.isDarwin(): wx.CallAfter(self.StupidMacOSWorkaround)
def __init__(self, parent): super(WelcomeWindow, self).__init__(parent, size=(640+120,480+40), style=wx.DEFAULT_FRAME_STYLE^wx.RESIZE_BORDER) self.parent = parent self.lastFiles = eval(profile.getPreference('last_files')) header = Header(self) content = Content(self) checkBoxShow = wx.CheckBox(self, label=_("Don't show this dialog again"), style=wx.ALIGN_LEFT) checkBoxShow.SetValue(not profile.getPreferenceBool('show_welcome')) checkBoxShow.Bind(wx.EVT_CHECKBOX, self.onCheckBoxChanged) self.Bind(wx.EVT_CLOSE, self.onClose) #-- Layout vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(header, 2, wx.ALL|wx.EXPAND, 1) vbox.Add(content, 3, wx.ALL|wx.EXPAND^wx.BOTTOM, 20) hbox = wx.BoxSizer(wx.HORIZONTAL) hbox.Add((0,0), 1, wx.ALL|wx.EXPAND, 0) hbox.Add(checkBoxShow, 0, wx.ALL, 0) vbox.Add(hbox, 0, wx.ALL|wx.EXPAND, 15) self.SetSizer(vbox) self.Centre() self.ShowModal()
def __init__(self, parent): super(WelcomeWindow, self).__init__(parent, size=(640 + 120, 480 + 40), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER) self.parent = parent self.lastFiles = eval(profile.getPreference('last_files')) header = Header(self) content = Content(self) checkBoxShow = wx.CheckBox(self, label=_("Don't show this dialog again"), style=wx.ALIGN_LEFT) checkBoxShow.SetValue(not profile.getPreferenceBool('show_welcome')) checkBoxShow.Bind(wx.EVT_CHECKBOX, self.onCheckBoxChanged) self.Bind(wx.EVT_CLOSE, self.onClose) #-- Layout vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(header, 2, wx.ALL | wx.EXPAND, 1) vbox.Add(content, 3, wx.ALL | wx.EXPAND ^ wx.BOTTOM, 20) hbox = wx.BoxSizer(wx.HORIZONTAL) hbox.Add((0, 0), 1, wx.ALL | wx.EXPAND, 0) hbox.Add(checkBoxShow, 0, wx.ALL, 0) vbox.Add(hbox, 0, wx.ALL | wx.EXPAND, 15) self.SetSizer(vbox) self.Centre() self.ShowModal()
def onUpdates(self, event): if profile.getPreferenceBool('check_for_updates'): if version.checkForUpdates(): VersionWindow(self) else: dlg = wx.MessageDialog(self, _("You are running the latest version of Horus!"), _("Updated!"), wx.OK|wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy()
def onUpdates(self, event): if profile.getPreferenceBool('check_for_updates'): if version.checkForUpdates(): VersionWindow(self) else: dlg = wx.MessageDialog(self, _("You are running the latest version of Horus!"), _("Updated!"), wx.OK|wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy()
def isVisible(self): if profile.getPreferenceBool('basic_mode'): return self.setting.getCategory() is 'basic' else: scanType = profile.getProfileSetting('scan_type') if self.setting.getTag() != None: if scanType == 'Simple Scan': return self.setting.getTag() == 'simple' elif scanType == 'Texture Scan': return self.setting.getTag() == 'texture' else: return True
def isVisible(self): if profile.getPreferenceBool('basic_mode'): return self.setting.getCategory() is 'basic' else: scanType = profile.getSetting('scan_type') if self.setting.getTag() != None: if scanType == 'Simple Scan': return self.setting.getTag() == 'simple' elif scanType == 'Texture Scan': return self.setting.getTag() == 'texture' else: return True
def afterSplashCallback(self): #-- Load Profile and Preferences profile.loadPreferences(os.path.join(self.basePath, 'preferences.ini')) profile.loadProfile(os.path.join(self.basePath, 'current-profile.ini')) #-- Load Language resources.setupLocalization(profile.getPreference('language')) #-- Create Main Window mainWindow = MainWindow() if profile.getPreferenceBool('show_welcome'): #-- Create Welcome Window welcome = WelcomeWindow(mainWindow)
def afterSplashCallback(self): #-- Load Profile and Preferences profile.loadPreferences(os.path.join(self.basePath, 'preferences.ini')) profile.loadProfile(os.path.join(self.basePath, 'current-profile.ini')) #-- Load Language resources.setupLocalization(profile.getPreference('language')) #-- Create Main Window mainWindow = MainWindow() if profile.getPreferenceBool('show_welcome'): #-- Create Welcome Window welcome = WelcomeWindow(mainWindow)
def __init__(self): super(MainWindow, self).__init__(None, title=_("Horus " + version.getVersion()), size=self.size) self.SetMinSize((600, 450)) ###-- Initialize Engine self.driver = Driver.Instance() self.simpleScan = scan.SimpleScan.Instance() self.textureScan = scan.TextureScan.Instance() self.pcg = scan.PointCloudGenerator.Instance() self.cameraIntrinsics = calibration.CameraIntrinsics.Instance() self.simpleLaserTriangulation = calibration.SimpleLaserTriangulation.Instance() self.laserTriangulation = calibration.LaserTriangulation.Instance() self.platformExtrinsics = calibration.PlatformExtrinsics.Instance() #-- Serial Name initialization serialList = self.serialList() currentSerial = profile.getProfileSetting('serial_name') if len(serialList) > 0: if currentSerial not in serialList: profile.putProfileSetting('serial_name', serialList[0]) #-- Video Id initialization videoList = self.videoList() currentVideoId = profile.getProfileSetting('camera_id') if len(videoList) > 0: if currentVideoId not in videoList: profile.putProfileSetting('camera_id', videoList[0]) self.lastFiles = eval(profile.getPreference('last_files')) print ">>> Horus " + version.getVersion() + " <<<" ###-- Initialize GUI ##-- Set Icon icon = wx.Icon(resources.getPathForImage("horus.ico"), wx.BITMAP_TYPE_ICO) self.SetIcon(icon) ##-- Status Bar #self.CreateStatusBar() ##-- Menu Bar self.menuBar = wx.MenuBar() #-- Menu File self.menuFile = wx.Menu() self.menuLaunchWizard = self.menuFile.Append(wx.NewId(), _("Launch Wizard")) self.menuFile.AppendSeparator() self.menuLoadModel = self.menuFile.Append(wx.NewId(), _("Load Model")) self.menuSaveModel = self.menuFile.Append(wx.NewId(), _("Save Model")) self.menuClearModel = self.menuFile.Append(wx.NewId(), _("Clear Model")) self.menuFile.AppendSeparator() self.menuOpenProfile = self.menuFile.Append(wx.NewId(), _("Open Profile"), _("Opens Profile .ini")) self.menuSaveProfile = self.menuFile.Append(wx.NewId(), _("Save Profile")) self.menuResetProfile = self.menuFile.Append(wx.NewId(), _("Reset Profile")) self.menuFile.AppendSeparator() self.menuExit = self.menuFile.Append(wx.ID_EXIT, _("Exit")) self.menuBar.Append(self.menuFile, _("File")) #-- Menu Edit self.menuEdit = wx.Menu() # self.menuBasicMode = self.menuEdit.AppendRadioItem(wx.NewId(), _("Basic Mode")) # self.menuAdvancedMode = self.menuEdit.AppendRadioItem(wx.NewId(), _("Advanced Mode")) # self.menuEdit.AppendSeparator() self.menuPreferences = self.menuEdit.Append(wx.NewId(), _("Preferences")) self.menuMachineSettings = self.menuEdit.Append(wx.NewId(), _("Machine Settings")) self.menuBar.Append(self.menuEdit, _("Edit")) #-- Menu View self.menuView = wx.Menu() self.menuControl = wx.Menu() self.menuControlPanel = self.menuControl.AppendCheckItem(wx.NewId(), _("Panel")) self.menuControlVideo = self.menuControl.AppendCheckItem(wx.NewId(), _("Video")) self.menuView.AppendMenu(wx.NewId(), _("Control"), self.menuControl) self.menuCalibration = wx.Menu() self.menuCalibrationPanel = self.menuCalibration.AppendCheckItem(wx.NewId(), _("Panel")) self.menuCalibrationVideo = self.menuCalibration.AppendCheckItem(wx.NewId(), _("Video")) self.menuView.AppendMenu(wx.NewId(), _("Calibration"), self.menuCalibration) self.menuScanning = wx.Menu() self.menuScanningPanel = self.menuScanning.AppendCheckItem(wx.NewId(), _("Panel")) self.menuScanningVideo = self.menuScanning.AppendCheckItem(wx.NewId(), _("Video")) self.menuScanningScene = self.menuScanning.AppendCheckItem(wx.NewId(), _("Scene")) self.menuView.AppendMenu(wx.NewId(), _("Scanning"), self.menuScanning) self.menuBar.Append(self.menuView, _("View")) #-- Menu Help self.menuHelp = wx.Menu() self.menuWelcome = self.menuHelp.Append(wx.ID_ANY, _("Welcome")) if profile.getPreferenceBool('check_for_updates'): self.menuUpdates = self.menuHelp.Append(wx.ID_ANY, _("Updates")) self.menuWiki = self.menuHelp.Append(wx.ID_ANY, _("Wiki")) self.menuSources = self.menuHelp.Append(wx.ID_ANY, _("Sources")) self.menuIssues = self.menuHelp.Append(wx.ID_ANY, _("Issues")) self.menuForum = self.menuHelp.Append(wx.ID_ANY, _("Forum")) self.menuAbout = self.menuHelp.Append(wx.ID_ABOUT, _("About")) self.menuBar.Append(self.menuHelp, _("Help")) self.SetMenuBar(self.menuBar) ##-- Create Workbenchs self.controlWorkbench = ControlWorkbench(self) self.scanningWorkbench = ScanningWorkbench(self) self.calibrationWorkbench = CalibrationWorkbench(self) _choices = [] choices = profile.getProfileSettingObject('workbench').getType() for i in choices: _choices.append(_(i)) self.workbenchDict = dict(zip(_choices, choices)) for workbench in [self.controlWorkbench, self.calibrationWorkbench, self.scanningWorkbench]: workbench.combo.Clear() for i in choices: workbench.combo.Append(_(i)) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.controlWorkbench, 1, wx.ALL|wx.EXPAND) sizer.Add(self.calibrationWorkbench, 1, wx.ALL|wx.EXPAND) sizer.Add(self.scanningWorkbench, 1, wx.ALL|wx.EXPAND) self.SetSizer(sizer) ##-- Events self.Bind(wx.EVT_MENU, self.onLaunchWizard, self.menuLaunchWizard) self.Bind(wx.EVT_MENU, self.onLoadModel, self.menuLoadModel) self.Bind(wx.EVT_MENU, self.onSaveModel, self.menuSaveModel) self.Bind(wx.EVT_MENU, self.onClearModel, self.menuClearModel) self.Bind(wx.EVT_MENU, self.onOpenProfile, self.menuOpenProfile) self.Bind(wx.EVT_MENU, self.onSaveProfile, self.menuSaveProfile) self.Bind(wx.EVT_MENU, self.onResetProfile, self.menuResetProfile) self.Bind(wx.EVT_MENU, self.onExit, self.menuExit) # self.Bind(wx.EVT_MENU, self.onModeChanged, self.menuBasicMode) # self.Bind(wx.EVT_MENU, self.onModeChanged, self.menuAdvancedMode) self.Bind(wx.EVT_MENU, self.onPreferences, self.menuPreferences) self.Bind(wx.EVT_MENU, self.onMachineSettings, self.menuMachineSettings) self.Bind(wx.EVT_MENU, self.onControlPanelClicked, self.menuControlPanel) self.Bind(wx.EVT_MENU, self.onControlVideoClicked, self.menuControlVideo) self.Bind(wx.EVT_MENU, self.onCalibrationPanelClicked, self.menuCalibrationPanel) self.Bind(wx.EVT_MENU, self.onCalibrationVideoClicked, self.menuCalibrationVideo) self.Bind(wx.EVT_MENU, self.onScanningPanelClicked, self.menuScanningPanel) self.Bind(wx.EVT_MENU, self.onScanningVideoSceneClicked, self.menuScanningVideo) self.Bind(wx.EVT_MENU, self.onScanningVideoSceneClicked, self.menuScanningScene) self.Bind(wx.EVT_MENU, self.onAbout, self.menuAbout) self.Bind(wx.EVT_MENU, self.onWelcome, self.menuWelcome) if profile.getPreferenceBool('check_for_updates'): self.Bind(wx.EVT_MENU, self.onUpdates, self.menuUpdates) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/bq/horus/wiki'), self.menuWiki) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/bq/horus'), self.menuSources) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/bq/horus/issues'), self.menuIssues) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://groups.google.com/forum/?hl=es#!forum/ciclop-3d-scanner'), self.menuForum) self.Bind(wx.EVT_COMBOBOX, self.onComboBoxWorkbenchSelected, self.controlWorkbench.combo) self.Bind(wx.EVT_COMBOBOX, self.onComboBoxWorkbenchSelected, self.calibrationWorkbench.combo) self.Bind(wx.EVT_COMBOBOX, self.onComboBoxWorkbenchSelected, self.scanningWorkbench.combo) self.Bind(wx.EVT_CLOSE, self.onClose) self.updateProfileToAllControls() x, y, w, h = wx.Display(0).GetGeometry() ws, hs = self.size self.SetPosition((x+(w-ws)/2., y+(h-hs)/2.))
def updateProfileToAllControls(self): """ """ # if profile.getPreferenceBool('basic_mode'): # self.menuBasicMode.Check(True) # else: # self.menuAdvancedMode.Check(True) if profile.getPreferenceBool('view_control_panel'): self.controlWorkbench.scrollPanel.Show() self.menuControlPanel.Check(True) else: self.controlWorkbench.scrollPanel.Hide() self.menuControlPanel.Check(False) if profile.getPreferenceBool('view_control_video'): self.controlWorkbench.videoView.Show() self.menuControlVideo.Check(True) else: self.controlWorkbench.videoView.Hide() self.menuControlVideo.Check(False) if profile.getPreferenceBool('view_calibration_panel'): self.calibrationWorkbench.scrollPanel.Show() self.menuCalibrationPanel.Check(True) else: self.calibrationWorkbench.scrollPanel.Hide() self.menuCalibrationPanel.Check(False) if profile.getPreferenceBool('view_calibration_video'): self.calibrationWorkbench.videoView.Show() self.menuCalibrationVideo.Check(True) else: self.calibrationWorkbench.videoView.Hide() self.menuCalibrationVideo.Check(False) if profile.getPreferenceBool('view_scanning_panel'): self.scanningWorkbench.scrollPanel.Show() self.menuScanningPanel.Check(True) else: self.scanningWorkbench.scrollPanel.Hide() self.menuScanningPanel.Check(False) checkedVideo = profile.getPreferenceBool('view_scanning_video') checkedScene = profile.getPreferenceBool('view_scanning_scene') self.menuScanningVideo.Check(checkedVideo) self.menuScanningScene.Check(checkedScene) self.scanningWorkbench.splitterWindow.Unsplit() if checkedVideo: self.scanningWorkbench.videoView.Show() self.scanningWorkbench.splitterWindow.SplitVertically(self.scanningWorkbench.videoView, self.scanningWorkbench.scenePanel) if checkedScene: self.scanningWorkbench.scenePanel.Show() else: self.scanningWorkbench.scenePanel.Hide() self.scanningWorkbench.splitterWindow.Unsplit() else: self.scanningWorkbench.videoView.Hide() if checkedScene: self.scanningWorkbench.scenePanel.Show() self.scanningWorkbench.splitterWindow.SplitVertically(self.scanningWorkbench.scenePanel, self.scanningWorkbench.videoView) self.scanningWorkbench.splitterWindow.Unsplit() else: self.scanningWorkbench.scenePanel.Hide() self.scanningWorkbench.splitterWindow.Unsplit() self.updateDriverProfile() self.updatePCGProfile() self.updateCalibrationProfile() self.workbenchUpdate() self.Layout()
def isVisible(self): if profile.getPreferenceBool('basic_mode'): return self.setting.getCategory() is 'basic' else: return self.setting.getCategory() is 'basic' or self.setting.getCategory() is 'advanced'
def updateProfileToAllControls(self): """ """ # if profile.getPreferenceBool('basic_mode'): # self.menuBasicMode.Check(True) # else: # self.menuAdvancedMode.Check(True) if profile.getPreferenceBool('view_control_panel'): self.controlWorkbench.scrollPanel.Show() self.menuControlPanel.Check(True) else: self.controlWorkbench.scrollPanel.Hide() self.menuControlPanel.Check(False) if profile.getPreferenceBool('view_control_video'): self.controlWorkbench.videoView.Show() self.menuControlVideo.Check(True) else: self.controlWorkbench.videoView.Hide() self.menuControlVideo.Check(False) if profile.getPreferenceBool('view_calibration_panel'): self.calibrationWorkbench.scrollPanel.Show() self.menuCalibrationPanel.Check(True) else: self.calibrationWorkbench.scrollPanel.Hide() self.menuCalibrationPanel.Check(False) if profile.getPreferenceBool('view_calibration_video'): self.calibrationWorkbench.videoView.Show() self.menuCalibrationVideo.Check(True) else: self.calibrationWorkbench.videoView.Hide() self.menuCalibrationVideo.Check(False) if profile.getPreferenceBool('view_scanning_panel'): self.scanningWorkbench.scrollPanel.Show() self.menuScanningPanel.Check(True) else: self.scanningWorkbench.scrollPanel.Hide() self.menuScanningPanel.Check(False) checkedVideo = profile.getPreferenceBool('view_scanning_video') checkedScene = profile.getPreferenceBool('view_scanning_scene') self.menuScanningVideo.Check(checkedVideo) self.menuScanningScene.Check(checkedScene) self.scanningWorkbench.splitterWindow.Unsplit() if checkedVideo: self.scanningWorkbench.videoView.Show() self.scanningWorkbench.splitterWindow.SplitVertically(self.scanningWorkbench.videoView, self.scanningWorkbench.scenePanel) if checkedScene: self.scanningWorkbench.scenePanel.Show() else: self.scanningWorkbench.scenePanel.Hide() self.scanningWorkbench.splitterWindow.Unsplit() else: self.scanningWorkbench.videoView.Hide() if checkedScene: self.scanningWorkbench.scenePanel.Show() self.scanningWorkbench.splitterWindow.SplitVertically(self.scanningWorkbench.scenePanel, self.scanningWorkbench.videoView) self.scanningWorkbench.splitterWindow.Unsplit() else: self.scanningWorkbench.scenePanel.Hide() self.scanningWorkbench.splitterWindow.Unsplit() self.updateDriverProfile() self.updatePCGProfile() self.updateCalibrationProfile() self.workbenchUpdate() self.Layout()
def __init__(self): super(MainWindow, self).__init__(None, title=_("Horus " + version.getVersion()), size=self.size) self.SetMinSize((600, 450)) ###-- Initialize Engine self.driver = Driver.Instance() self.simpleScan = scan.SimpleScan.Instance() self.textureScan = scan.TextureScan.Instance() self.pcg = scan.PointCloudGenerator.Instance() self.cameraIntrinsics = calibration.CameraIntrinsics.Instance() self.simpleLaserTriangulation = calibration.SimpleLaserTriangulation.Instance() self.laserTriangulation = calibration.LaserTriangulation.Instance() self.platformExtrinsics = calibration.PlatformExtrinsics.Instance() #-- Serial Name initialization serialList = self.serialList() currentSerial = profile.getProfileSetting('serial_name') if len(serialList) > 0: if currentSerial not in serialList: profile.putProfileSetting('serial_name', serialList[0]) #-- Video Id initialization videoList = self.videoList() currentVideoId = profile.getProfileSetting('camera_id') if len(videoList) > 0: if currentVideoId not in videoList: profile.putProfileSetting('camera_id', videoList[0]) self.lastFiles = eval(profile.getPreference('last_files')) print ">>> Horus " + version.getVersion() + " <<<" ###-- Initialize GUI ##-- Set Icon icon = wx.Icon(resources.getPathForImage("horus.ico"), wx.BITMAP_TYPE_ICO) self.SetIcon(icon) ##-- Status Bar #self.CreateStatusBar() ##-- Menu Bar self.menuBar = wx.MenuBar() #-- Menu File self.menuFile = wx.Menu() self.menuLaunchWizard = self.menuFile.Append(wx.NewId(), _("Launch Wizard")) self.menuFile.AppendSeparator() self.menuLoadModel = self.menuFile.Append(wx.NewId(), _("Load Model")) self.menuSaveModel = self.menuFile.Append(wx.NewId(), _("Save Model")) self.menuClearModel = self.menuFile.Append(wx.NewId(), _("Clear Model")) self.menuFile.AppendSeparator() self.menuOpenProfile = self.menuFile.Append(wx.NewId(), _("Open Profile"), _("Opens Profile .ini")) self.menuSaveProfile = self.menuFile.Append(wx.NewId(), _("Save Profile")) self.menuResetProfile = self.menuFile.Append(wx.NewId(), _("Reset Profile")) self.menuFile.AppendSeparator() self.menuExit = self.menuFile.Append(wx.ID_EXIT, _("Exit")) self.menuBar.Append(self.menuFile, _("File")) #-- Menu Edit self.menuEdit = wx.Menu() # self.menuBasicMode = self.menuEdit.AppendRadioItem(wx.NewId(), _("Basic Mode")) # self.menuAdvancedMode = self.menuEdit.AppendRadioItem(wx.NewId(), _("Advanced Mode")) # self.menuEdit.AppendSeparator() self.menuPreferences = self.menuEdit.Append(wx.NewId(), _("Preferences")) self.menuBar.Append(self.menuEdit, _("Edit")) #-- Menu View self.menuView = wx.Menu() self.menuControl = wx.Menu() self.menuControlPanel = self.menuControl.AppendCheckItem(wx.NewId(), _("Panel")) self.menuControlVideo = self.menuControl.AppendCheckItem(wx.NewId(), _("Video")) self.menuView.AppendMenu(wx.NewId(), _("Control"), self.menuControl) self.menuCalibration = wx.Menu() self.menuCalibrationPanel = self.menuCalibration.AppendCheckItem(wx.NewId(), _("Panel")) self.menuCalibrationVideo = self.menuCalibration.AppendCheckItem(wx.NewId(), _("Video")) self.menuView.AppendMenu(wx.NewId(), _("Calibration"), self.menuCalibration) self.menuScanning = wx.Menu() self.menuScanningPanel = self.menuScanning.AppendCheckItem(wx.NewId(), _("Panel")) self.menuScanningVideo = self.menuScanning.AppendCheckItem(wx.NewId(), _("Video")) self.menuScanningScene = self.menuScanning.AppendCheckItem(wx.NewId(), _("Scene")) self.menuView.AppendMenu(wx.NewId(), _("Scanning"), self.menuScanning) self.menuBar.Append(self.menuView, _("View")) #-- Menu Help self.menuHelp = wx.Menu() self.menuWelcome = self.menuHelp.Append(wx.ID_ANY, _("Welcome")) if profile.getPreferenceBool('check_for_updates'): self.menuUpdates = self.menuHelp.Append(wx.ID_ANY, _("Updates")) self.menuWiki = self.menuHelp.Append(wx.ID_ANY, _("Wiki")) self.menuSources = self.menuHelp.Append(wx.ID_ANY, _("Sources")) self.menuIssues = self.menuHelp.Append(wx.ID_ANY, _("Issues")) self.menuForum = self.menuHelp.Append(wx.ID_ANY, _("Forum")) self.menuAbout = self.menuHelp.Append(wx.ID_ABOUT, _("About")) self.menuBar.Append(self.menuHelp, _("Help")) self.SetMenuBar(self.menuBar) ##-- Create Workbenchs self.controlWorkbench = ControlWorkbench(self) self.scanningWorkbench = ScanningWorkbench(self) self.calibrationWorkbench = CalibrationWorkbench(self) _choices = [] choices = profile.getProfileSettingObject('workbench').getType() for i in choices: _choices.append(_(i)) self.workbenchDict = dict(zip(_choices, choices)) for workbench in [self.controlWorkbench, self.calibrationWorkbench, self.scanningWorkbench]: workbench.combo.Clear() for i in choices: workbench.combo.Append(_(i)) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.controlWorkbench, 1, wx.ALL|wx.EXPAND) sizer.Add(self.calibrationWorkbench, 1, wx.ALL|wx.EXPAND) sizer.Add(self.scanningWorkbench, 1, wx.ALL|wx.EXPAND) self.SetSizer(sizer) ##-- Events self.Bind(wx.EVT_MENU, self.onLaunchWizard, self.menuLaunchWizard) self.Bind(wx.EVT_MENU, self.onLoadModel, self.menuLoadModel) self.Bind(wx.EVT_MENU, self.onSaveModel, self.menuSaveModel) self.Bind(wx.EVT_MENU, self.onClearModel, self.menuClearModel) self.Bind(wx.EVT_MENU, self.onOpenProfile, self.menuOpenProfile) self.Bind(wx.EVT_MENU, self.onSaveProfile, self.menuSaveProfile) self.Bind(wx.EVT_MENU, self.onResetProfile, self.menuResetProfile) self.Bind(wx.EVT_MENU, self.onExit, self.menuExit) # self.Bind(wx.EVT_MENU, self.onModeChanged, self.menuBasicMode) # self.Bind(wx.EVT_MENU, self.onModeChanged, self.menuAdvancedMode) self.Bind(wx.EVT_MENU, self.onPreferences, self.menuPreferences) self.Bind(wx.EVT_MENU, self.onControlPanelClicked, self.menuControlPanel) self.Bind(wx.EVT_MENU, self.onControlVideoClicked, self.menuControlVideo) self.Bind(wx.EVT_MENU, self.onCalibrationPanelClicked, self.menuCalibrationPanel) self.Bind(wx.EVT_MENU, self.onCalibrationVideoClicked, self.menuCalibrationVideo) self.Bind(wx.EVT_MENU, self.onScanningPanelClicked, self.menuScanningPanel) self.Bind(wx.EVT_MENU, self.onScanningVideoSceneClicked, self.menuScanningVideo) self.Bind(wx.EVT_MENU, self.onScanningVideoSceneClicked, self.menuScanningScene) self.Bind(wx.EVT_MENU, self.onAbout, self.menuAbout) self.Bind(wx.EVT_MENU, self.onWelcome, self.menuWelcome) if profile.getPreferenceBool('check_for_updates'): self.Bind(wx.EVT_MENU, self.onUpdates, self.menuUpdates) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/bq/horus/wiki'), self.menuWiki) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/bq/horus'), self.menuSources) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/bq/horus/issues'), self.menuIssues) self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://groups.google.com/forum/?hl=es#!forum/ciclop-3d-scanner'), self.menuForum) self.Bind(wx.EVT_COMBOBOX, self.onComboBoxWorkbenchSelected, self.controlWorkbench.combo) self.Bind(wx.EVT_COMBOBOX, self.onComboBoxWorkbenchSelected, self.calibrationWorkbench.combo) self.Bind(wx.EVT_COMBOBOX, self.onComboBoxWorkbenchSelected, self.scanningWorkbench.combo) self.Bind(wx.EVT_CLOSE, self.onClose) self.updateProfileToAllControls() x, y, w, h = wx.Display(0).GetGeometry() ws, hs = self.size self.SetPosition((x+(w-ws)/2., y+(h-hs)/2.))