19 from ..widgets
import RIDEDialog, VerticalSizer
20 from .configobj
import ConfigObj, UnreprError
21 from .settings
import ConfigurationError, _Section, initialize_settings
23 from ..context
import SETTINGS_DIRECTORY
37 title =
"Save or Load Settings"
38 RIDEDialog.__init__(self, parent=parent, title=title, size=(650, 400))
40 self.SetLayoutDirection(wx.Layout_LeftToRight)
41 main_sizer = wx.FlexGridSizer(rows=5, cols=1, vgap=10, hgap=10)
42 buttons_sizer = wx.BoxSizer(orient=wx.HORIZONTAL)
43 load = wx.Button(self, ID_LOAD,
'Load settings from file...')
44 save = wx.Button(self, ID_SAVE,
'Save settings to file...')
45 self.SetSizer(VerticalSizer())
46 self.SetBackgroundColour(Colour(self.color_background))
47 self.SetForegroundColour(Colour(self.color_foreground))
48 self.
_default_path_default_path = os.path.join(SETTINGS_DIRECTORY,
'settings.cfg')
49 directory = wx.StaticText(self, label=f
"Current directory: {SETTINGS_DIRECTORY}")
50 buttons_sizer.Add(load)
51 buttons_sizer.AddSpacer(10)
52 buttons_sizer.Add(save)
53 main_sizer.Add(directory)
54 main_sizer.AddSpacer(10)
55 main_sizer.Add(buttons_sizer)
56 self.SetSizerAndFit(main_sizer)
57 self.Bind(wx.EVT_BUTTON, self.
OnLoadOnLoad)
58 self.Bind(wx.EVT_BUTTON, self.
OnSaveOnSave)
62 if event.GetId() != ID_LOAD:
64 self.SetReturnCode(ID_CANCEL)
66 load_dlg = wx.FileDialog(self, message=
"File with Settings to Load",
67 defaultDir=SETTINGS_DIRECTORY, wildcard=
"*.cfg")
68 if load_dlg.ShowModal() == wx.ID_CANCEL:
69 self.SetReturnCode(ID_CANCEL)
71 file = load_dlg.GetPath()
73 if os.path.isfile(file):
81 self.
_parent_parent.GetParent().Refresh()
82 self.SetReturnCode(ID_LOAD)
87 self.SetReturnCode(ID_CANCEL)
91 if event.GetId() != ID_SAVE:
93 self.SetReturnCode(ID_CANCEL)
96 with wx.FileDialog(self, message=
"Save Settings to file", defaultDir=SETTINGS_DIRECTORY,
97 wildcard=
"*.cfg", style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
as save_dlg:
98 if save_dlg.ShowModal() == wx.ID_CANCEL:
99 self.SetReturnCode(ID_CANCEL)
102 pathname = save_dlg.GetPath()
103 filename = os.path.basename(pathname)
104 dirname = os.path.dirname(pathname)
108 raise RuntimeError(
'Could not open settings file "%s" for writing' % pathname)
109 self.SetReturnCode(ID_SAVE)
115 nnew_settings =
ConfigObj(user_path, unrepr=
True)
116 mysection=nnew_settings.get(self.
_section_section)
118 mysection = nnew_settings[
'Plugins'].get(self.
_section_section)
120 raise ConfigurationError(
"Error trying to get '%s' from file %s" % (f
"[Plugins][{self._section}]",user_path))
122 for key, value
in mysection.items():
123 if self.
_settings_settings.has_setting(key):
124 if isinstance(value, dict):
125 for k, v
in value.items():
126 if isinstance(self.
_settings_settings.get_without_default(key).get_without_default(k), _Section):
127 self.
_settings_settings[key][k].set_defaults(
None, **v)
133 except UnreprError
as err:
An object to read, create, and write config files.
def __init__(self, parent, settings)
def load_and_merge(self, user_path)
def initialize_settings(path, dest_file_name=None)