Source code for diffpy.pdfgui.gui.preferencespanel

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
##############################################################################
#
# PDFgui            by DANSE Diffraction group
#                   Simon J. L. Billinge
#                   (c) 2007 trustees of the Michigan State University.
#                   All rights reserved.
#
# File coded by:    Chris Farrow
#
# See AUTHORS.txt for a list of people who contributed.
# See LICENSE.txt for license information.
#
##############################################################################

# generated by wxGlade 0.9.3 on Fri Jul 19 16:05:32 2019

import wx
import wx.lib.filebrowsebutton

from diffpy.pdfgui.control import structureviewer
from diffpy.pdfgui.gui import tooltips
from diffpy.pdfgui.gui.pdfpanel import PDFPanel


[docs] class PreferencesPanel(wx.Panel, PDFPanel): def __init__(self, *args, **kwds): PDFPanel.__init__(self) # begin wxGlade: PreferencesPanel.__init__ kwds["style"] = kwds.get("style", 0) | wx.TAB_TRAVERSAL wx.Panel.__init__(self, *args, **kwds) sizer_1 = wx.BoxSizer(wx.VERTICAL) sizerPanelName = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, ""), wx.HORIZONTAL) sizer_1.Add(sizerPanelName, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) self.labelPanelName = wx.StaticText(self, wx.ID_ANY, "Preferences") self.labelPanelName.SetFont( wx.Font( 18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, "Bitstream Vera Sans", ) ) sizerPanelName.Add(self.labelPanelName, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) grid_sizer_1 = wx.GridSizer(3, 3, 10, 10) sizer_1.Add(grid_sizer_1, 0, wx.ALL, 5) self.labelViewer = wx.StaticText(self, wx.ID_ANY, "Structure viewer executable") grid_sizer_1.Add(self.labelViewer, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 0) self.textCtrlViewer = wx.TextCtrl(self, wx.ID_ANY, "") grid_sizer_1.Add(self.textCtrlViewer, 0, wx.EXPAND, 0) self.buttonViewerBrowse = wx.Button(self, wx.ID_ANY, "Browse") grid_sizer_1.Add(self.buttonViewerBrowse, 0, 0, 0) self.labelArgStr = wx.StaticText(self, wx.ID_ANY, "Argument string") grid_sizer_1.Add(self.labelArgStr, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 0) self.textCtrlArgument = wx.TextCtrl(self, wx.ID_ANY, "") grid_sizer_1.Add(self.textCtrlArgument, 0, wx.EXPAND, 0) grid_sizer_1.Add((20, 20), 0, 0, 0) self.labelFormat = wx.StaticText(self, wx.ID_ANY, "Structure format") grid_sizer_1.Add(self.labelFormat, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 0) self.choiceFormat = wx.Choice(self, wx.ID_ANY, choices=[]) grid_sizer_1.Add(self.choiceFormat, 0, wx.EXPAND, 0) grid_sizer_1.Add((20, 20), 0, 0, 0) self.structureDirCheckBox = wx.CheckBox(self, wx.ID_ANY, "Remember path to structure files") sizer_1.Add(self.structureDirCheckBox, 0, wx.ALL, 5) self.dataDirCheckBox = wx.CheckBox(self, wx.ID_ANY, "Remember path to data sets") sizer_1.Add(self.dataDirCheckBox, 0, wx.ALL, 5) sizer_1.Add((0, 0), 1, wx.EXPAND, 0) self.static_line_1 = wx.StaticLine(self, wx.ID_ANY) sizer_1.Add(self.static_line_1, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) sizer_3 = wx.BoxSizer(wx.HORIZONTAL) sizer_1.Add(sizer_3, 0, wx.EXPAND, 0) sizer_3.Add((0, 0), 1, 0, 0) self.okButton = wx.Button(self, wx.ID_OK, "OK") sizer_3.Add(self.okButton, 0, wx.ALL, 5) self.cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel") sizer_3.Add(self.cancelButton, 0, wx.ALL, 5) self.SetSizer(sizer_1) sizer_1.Fit(self) self.Layout() self.Bind(wx.EVT_BUTTON, self.onBrowse, self.buttonViewerBrowse) self.Bind(wx.EVT_BUTTON, self.onOK, self.okButton) self.Bind(wx.EVT_BUTTON, self.onCancel, self.cancelButton) # end wxGlade self.__customProperties() def __customProperties(self): """Set the custom properties.""" # Fill the options in the format choice viewer = structureviewer.getStructureViewer() formats = viewer.getFileFormats() formats.sort() for fmt in formats: self.choiceFormat.Append(fmt) self.setToolTips(tooltips.preferencespanel) return
[docs] def onCancel(self, event): # wxGlade: PreferencesPanel.<event_handler> """Cancel the changes. Go back to the last panel. """ selections = self.treeCtrlMain.GetSelections() if selections: node = selections[0] entrytype = self.treeCtrlMain.GetNodeType(node) else: entrytype = None self.mainFrame.setMode("fitting") self.mainFrame.switchRightPanel(entrytype) return
[docs] def onOK(self, event): # wxGlade: PreferencesPanel.<event_handler> """Record all of the preferences and return to fitting mode.""" # Record structure viewer stuff executable = str(self.textCtrlViewer.GetValue()).strip() argstr = str(self.textCtrlArgument.GetValue()).strip() fileformat = str(self.choiceFormat.GetStringSelection()) config = { "executable": executable, "argstr": argstr, "fileformat": fileformat, } viewer = structureviewer.getStructureViewer() viewer.setConfig(config) # Structures path remember = bool(self.structureDirCheckBox.GetValue()) if not self.cP.has_section("PHASE"): self.cP.add_section("PHASE") self.cP.set("PHASE", "remember", str(remember)) # Data set path remember = bool(self.dataDirCheckBox.GetValue()) if not self.cP.has_section("DATASET"): self.cP.add_section("DATASET") self.cP.set("DATASET", "remember", str(remember)) # Get out of here self.onCancel(event) return
[docs] def refresh(self): """Refresh the panel.""" # Structure viewer stuff viewer = structureviewer.getStructureViewer() config = viewer.getConfig() self.textCtrlViewer.SetValue(config["executable"]) self.textCtrlArgument.SetValue(config["argstr"]) self.choiceFormat.SetStringSelection(config["fileformat"]) remember = False if self.cP.has_option("DATASET", "remember"): remember = self.cP.getboolean("DATASET", "remember") self.dataDirCheckBox.SetValue(remember) remember = False if self.cP.has_option("PHASE", "remember"): remember = self.cP.getboolean("PHASE", "remember") self.structureDirCheckBox.SetValue(remember) return
[docs] def onBrowse(self, event): # wxGlade: PreferencesPanel.<event_handler> d = wx.FileDialog( None, "Choose structure viewer", ".", "", "All Files|*", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST, ) if d.ShowModal() == wx.ID_OK: fullpath = d.GetPath() self.textCtrlViewer.SetValue(fullpath) return
# end of class PreferencesPanel