annotate engine/python/fife/extensions/fife_settings.py @ 538:00aa20dc8b7f

Made the Setting class much more customizable by adding the SettingEntry class. Adopted demos to the changes Note: Setting ScreenWidth and ScreenHeight are now combined into ScreenResolution of format <width>x<height> FullScreen and PlaySounds are now of type bool
author nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
date Tue, 01 Jun 2010 18:14:26 +0000
parents 082e919cc348
children 4c7b5eee211c
rev   line source
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
1 # -*- coding: utf-8 -*-
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
2
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
3 # ####################################################################
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
4 # Copyright (C) 2005-2010 by the FIFE team
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
5 # http://www.fifengine.net
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
6 # This file is part of FIFE.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
7 #
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
8 # FIFE is free software; you can redistribute it and/or
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
9 # modify it under the terms of the GNU Lesser General Public
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
10 # License as published by the Free Software Foundation; either
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
11 # version 2.1 of the License, or (at your option) any later version.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
12 #
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
13 # This library is distributed in the hope that it will be useful,
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
16 # Lesser General Public License for more details.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
17 #
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
18 # You should have received a copy of the GNU Lesser General Public
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
19 # License along with this library; if not, write to the
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
20 # Free Software Foundation, Inc.,
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
21 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
22 # ####################################################################
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
23
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
24 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
25 Settings
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
26 ==================================
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
27
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
28 This module provides a nice framework for loading and saving game settings.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
29 It is by no means complete but it does provide a good starting point.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
30
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
31 @note: Please note that you MUST provide a default settings-dist.xml file
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
32 in the root directory of your project for this module to function correctly.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
33 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
34
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
35 import shutil
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
36 import os
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
37 from StringIO import StringIO
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
38
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
39 from fife.extensions import pychan
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
40 from fife.extensions.fife_utils import getUserDataDirectory
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
41 try:
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
42 import xml.etree.cElementTree as ET
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
43 except:
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
44 import xml.etree.ElementTree as ET
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
45
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
46
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
47 SETTINGS_GUI_XML="""\
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
48 <Window name="Settings" title="Settings">
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
49 <Label text="Settings menu!" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
50 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
51 <VBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
52 <Label text="Resolution:" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
53 <Label text="Renderer:" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
54 </VBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
55 <VBox min_size="120,60">
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
56 <DropDown name="screen_resolution" min_size="120,0" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
57 <DropDown name="render_backend" min_size="120,0" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
58 </VBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
59 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
60 <CheckBox name="enable_fullscreen" text="Use the full screen mode" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
61 <CheckBox name="enable_sound" text="Enable sound" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
62 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
63 <Spacer />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
64 <Button name="cancelButton" text="Cancel" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
65 <Button name="okButton" text="Ok" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
66 <Button name="defaultButton" text="Defaults" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
67 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
68 </Window>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
69 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
70
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
71 CHANGES_REQUIRE_RESTART="""\
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
72 <Window title="Changes require restart">
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
73 <Label text="Some of your changes require you to restart." />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
74 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
75 <Spacer />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
76 <Button name="closeButton" text="Ok" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
77 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
78 </Window>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
79 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
80
505
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
81 EMPTY_SETTINGS="""\
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
82 <?xml version='1.0' encoding='UTF-8'?>
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
83 <Settings>
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
84 <Module name="FIFE">
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
85
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
86 </Module>
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
87
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
88 </Settings>
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
89 """
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
90
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
91 DEFAULT_MODULE = "FIFE"
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
92
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
93 class Setting(object):
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
94 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
95 This class manages loading and saving of game settings.
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
96
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
97 Usage::
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
98 from fife.extensions.fife_settings import Setting
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
99 settings = Setting(app_name="myapp")
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
100 screen_width = settings.get("FIFE", "ScreenWidth", 1024)
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
101 screen_height = settings.get("FIFE", "ScreenHeight", 768)
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
102 """
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
103
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
104 def __init__(self, app_name="", settings_file="", settings_gui_xml="", changes_gui_xml=""):
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
105 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
106 Initializes the Setting object.
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
107
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
108 @param app_name: The applications name. If this parameter is provided
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
109 alone it will try to read the settings file from the users home directory.
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
110 In windows this will be something like: C:\Documents and Settings\user\Application Data\fife
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
111 @type app_name: C{string}
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
112 @param settings_file: The name of the settings file. If this parameter is
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
113 provided it will look for the setting file as you specify it, first looking
505
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
114 in the working directory. It will NOT look in the users home directory.
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
115 @type settings_file: C{string}
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
116 @param settings_gui_xml: If you specify this parameter you can customize the look
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
117 of the settings dialog box.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
118 @note: As of now you MUST have all the elements of the default settings dialog box.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
119 At some point we may make it customizable.
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
120
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
121 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
122 self._app_name = app_name
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
123 self._settings_file = settings_file
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
124 self._settings_gui_xml = settings_gui_xml
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
125 self._changes_gui_xml = changes_gui_xml
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
126
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
127 if self._settings_file == "":
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
128 self._settings_file = "settings.xml"
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
129 self._appdata = getUserDataDirectory("fife", self._app_name)
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
130 else:
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
131 self._appdata = os.path.dirname(self._settings_file)
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
132 self._settings_file = os.path.basename(self._settings_file)
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
133
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
134
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
135 if self._settings_gui_xml == "":
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
136 self._settings_gui_xml = SETTINGS_GUI_XML
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
137
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
138 if self._changes_gui_xml == "":
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
139 self._changes_gui_xml = CHANGES_REQUIRE_RESTART
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
140
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
141
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
142 if not os.path.exists(os.path.join(self._appdata, self._settings_file)):
505
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
143 if os.path.exists('settings-dist.xml'):
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
144 shutil.copyfile('settings-dist.xml', os.path.join(self._appdata, self._settings_file))
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
145 else:
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
146 #no settings file found
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
147 tree = ET.parse(StringIO(EMPTY_SETTINGS))
ee65aa323457 Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 499
diff changeset
148 tree.write(os.path.join(self._appdata, self._settings_file), 'UTF-8')
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
149
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
150 #default settings
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
151 self._resolutions = ['640x480', '800x600', '1024x768', '1280x800', '1440x900']
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
152 self._renderbackends = ['OpenGL', 'SDL']
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
153
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
154 #Used to stylize the options gui
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
155 self._gui_style = "default"
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
156
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
157 self.loadSettings()
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
158
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
159 # Holds SettingEntries
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
160 self._entries = []
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
161
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
162 self._initDefaultSettingEntries()
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
163
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
164 def _initDefaultSettingEntries(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
165 """Initializes the default fife setting entries. Not to be called from
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
166 outside this class."""
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
167 self.createAndAddEntry(DEFAULT_MODULE, "PlaySounds", "enable_sound",
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
168 requiresrestart=True)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
169 self.createAndAddEntry(DEFAULT_MODULE, "FullScreen", "enable_fullscreen",
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
170 requiresrestart=True)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
171 self.createAndAddEntry(DEFAULT_MODULE, "ScreenResolution", "screen_resolution", initialdata = self._resolutions,
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
172 requiresrestart=True)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
173 self.createAndAddEntry(DEFAULT_MODULE, "RenderBackend", "render_backend", initialdata = self._renderbackends,
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
174 requiresrestart=True)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
175
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
176 def createAndAddEntry(self, module, name, widgetname, applyfunction=None, initialdata=None, requiresrestart=False):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
177 """"
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
178 @param module: The Setting module this Entry belongs to
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
179 @type module: C{String}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
180 @param name: The Setting's name
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
181 @type name: C{String}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
182 @param widgetname: The name of the widget that is used to change this
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
183 setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
184 @type widgetname: C{String}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
185 @param applyfunction: function that makes the changes when the Setting is
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
186 saved
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
187 @type applyfunction: C{function}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
188 @param initialdata: If the widget supports the setInitialData() function
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
189 this can be used to set the initial data
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
190 @type initialdata: C{String} or C{Boolean}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
191 @param requiresrestart: Whether or not the changing of this setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
192 requires a restart
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
193 @type requiresrestart: C{Boolean}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
194 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
195 entry = SettingEntry(module, name, widgetname, applyfunction, initialdata, requiresrestart)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
196 self._entries.append(entry)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
197
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
198 def addEntry(self, entry):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
199 """Adds a new C{SettingEntry} to the Settting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
200 @param entry: A new SettingEntry that is to be added
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
201 @type entry: C{SettingEntry}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
202 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
203 self._entries.append(entry)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
204
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
205 def loadSettings(self):
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
206 self._tree = ET.parse(os.path.join(self._appdata, self._settings_file))
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
207 self._root_element = self._tree.getroot()
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
208 self.validateTree()
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
209
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
210 def setGuiStyle(self, style):
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
211 """ Set a custom gui style used for the option dialog.
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
212 @param style: Pychan style to be used
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
213 @type style: C{string}
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
214 """
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
215 self._gui_style = style
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
216
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
217 def validateTree(self):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
218 """ Iterates the settings tree and prints warning when an invalid tag is found """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
219 for c in self._root_element.getchildren():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
220 if c.tag != "Module":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
221 print "Invalid tag in settings.xml. Expected Module, got: ", c.tag
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
222 elif c.get("name", "") == "":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
223 print "Invalid tag in settings.xml. Module name is empty."
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
224 else:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
225 for e in c.getchildren():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
226 if e.tag != "Setting":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
227 print "Invalid tag in settings.xml in module: ",c.tag,
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
228 print ". Expected Setting, got: ", e.tag
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
229 elif c.get("name", "") == "":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
230 print "Invalid tag in settings.xml in module: ",c.tag,
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
231 print ". Setting name is empty", e.tag
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
232
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
233 def getModuleTree(self, module):
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
234 """
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
235 Returns a module element from the settings tree. If no module with the specified
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
236 name exists, a new element will be created.
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
237
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
238 @param module: The module to get from the settings tree
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
239 @type module: C{string}
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
240 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
241 if not isinstance(module, str) and not isinstance(module, unicode):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
242 raise AttributeError("Settings:getModuleTree: Invalid type for module argument.")
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
243
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
244 for c in self._root_element.getchildren():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
245 if c.tag == "Module" and c.get("name", "") == module:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
246 return c
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
247
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
248 # Create module
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
249 return ET.SubElement(self._root_element, "Module", {"name":module})
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
250
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
251 def get(self, module, name, defaultValue=None):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
252 """ Gets the value of a specified setting
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
253
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
254 @param module: Name of the module to get the setting from
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
255 @param name: Setting name
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
256 @param defaultValue: Specifies the default value to return if the setting is not found
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
257 @type defaultValue: C{str} or C{unicode} or C{int} or C{float} or C{bool} or C{list} or C{dict}
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
258 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
259 if not isinstance(name, str) and not isinstance(name, unicode):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
260 raise AttributeError("Settings:get: Invalid type for name argument.")
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
261
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
262 moduleTree = self.getModuleTree(module)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
263 element = None
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
264 for e in moduleTree.getchildren():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
265 if e.tag == "Setting" and e.get("name", "") == name:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
266 element = e
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
267 break
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
268 else:
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
269 return defaultValue
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
270
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
271 e_value = element.text
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
272 e_strip = element.get("strip", "1").strip().lower()
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
273 e_type = str(element.get("type", "str")).strip()
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
274
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
275 if e_value is None:
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
276 return defaultValue
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
277
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
278 # Strip value
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
279 if e_strip == "" or e_strip == "false" or e_strip == "no" or e_strip == "0":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
280 e_strip = False
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
281 else: e_strip = True
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
282
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
283 if e_type == "str" or e_type == "unicode":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
284 if e_strip: e_value = e_value.strip()
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
285 else:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
286 e_value = e_value.strip()
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
287
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
288 # Return value
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
289 if e_type == 'int':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
290 return int(e_value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
291 elif e_type == 'float':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
292 return float(e_value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
293 elif e_type == 'bool':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
294 e_value = e_value.lower()
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
295 if e_value == "" or e_value == "false" or e_value == "no" or e_value == "0":
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
296 return False
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
297 else:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
298 return True
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
299 elif e_type == 'str':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
300 return str(e_value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
301 elif e_type == 'unicode':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
302 return unicode(e_value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
303 elif e_type == 'list':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
304 return self._deserializeList(e_value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
305 elif e_type == 'dict':
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
306 return self._deserializeDict(e_value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
307
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
308 def set(self, module, name, value, extra_attrs={}):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
309 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
310 Sets a setting to specified value.
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
311
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
312 @param module: Module where the setting should be set
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
313 @param name: Name of setting
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
314 @param value: Value to assign to setting
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
315 @type value: C{str} or C{unicode} or C{int} or C{float} or C{bool} or C{list} or C{dict}
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
316 @param extra_attrs: Extra attributes to be stored in the XML-file
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
317 @type extra_attrs: C{dict}
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
318 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
319 if not isinstance(name, str) and not isinstance(name, unicode):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
320 raise AttributeError("Settings:set: Invalid type for name argument.")
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
321
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
322 moduleTree = self.getModuleTree(module)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
323 e_type = "str"
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
324
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
325 if isinstance(value, bool): # This must be before int
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
326 e_type = "bool"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
327 value = str(value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
328 elif isinstance(value, int):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
329 e_type = "int"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
330 value = str(value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
331 elif isinstance(value, float):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
332 e_type = "float"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
333 value = str(value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
334 elif isinstance(value, unicode):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
335 e_type = "unicode"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
336 value = unicode(value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
337 elif isinstance(value, list):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
338 e_type = "list"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
339 value = self._serializeList(value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
340 elif isinstance(value, dict):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
341 e_type = "dict"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
342 value = self._serializeDict(value)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
343 else:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
344 e_type = "str"
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
345 value = str(value)
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
346
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
347 for e in moduleTree.getchildren():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
348 if e.tag != "Setting": continue
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
349 if e.get("name", "") == name:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
350 e.text = value
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
351 break
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
352 else:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
353 attrs = {"name":name, "type":e_type}
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
354 for k in extra_attrs:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
355 if k not in attrs:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
356 attrs[k] = extra_args[k]
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
357 elm = ET.SubElement(moduleTree, "Setting", attrs)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
358 elm.text = value
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
359
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
360 def saveSettings(self):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
361 """ Writes the settings to the settings file """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
362 self._indent(self._root_element)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
363 self._tree.write(os.path.join(self._appdata, self._settings_file), 'UTF-8')
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
364
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
365 def _indent(self, elem, level=0):
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
366 """
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
367 Adds whitespace, so the resulting XML-file is properly indented.
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
368 Shamelessly stolen from http://effbot.org/zone/element-lib.htm
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
369 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
370 i = "\n" + level*" "
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
371 if len(elem):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
372 if not elem.text or not elem.text.strip():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
373 elem.text = i + " "
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
374 if not elem.tail or not elem.tail.strip():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
375 elem.tail = i
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
376 for elem in elem:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
377 self._indent(elem, level+1)
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
378 if not elem.tail or not elem.tail.strip():
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
379 elem.tail = i
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
380 else:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
381 if level and (not elem.tail or not elem.tail.strip()):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
382 elem.tail = i
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
383
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
384 # FIXME:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
385 # These serialization functions are not reliable at all
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
386 # This will only serialize the first level of a dict or list
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
387 # It will not check the types nor the content for conflicts.
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
388 # Perhaps we should add a small serialization library?
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
389 def _serializeList(self, list):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
390 """ Serializes a list, so it can be stored in a text file """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
391 return " ; ".join(list)
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
392
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
393 def _deserializeList(self, string):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
394 """ Deserializes a list back into a list object """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
395 return string.split(" ; ")
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
396
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
397 def _serializeDict(self, dict):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
398 """ Serializes a list, so it can be stored in a text file """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
399 serial = ""
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
400 for key in dict:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
401 value = dict[key]
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
402 if serial != "": serial += " ; "
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
403 serial += str(key)+" : "+str(value)
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
404
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
405 return serial
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
406
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
407 def _deserializeDict(self, serial):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
408 """ Deserializes a list back into a dict object """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
409 dict = {}
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
410 items = serial.split(" ; ")
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
411 for i in items:
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
412 kv_pair = i.split(" : ")
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
413 dict[kv_pair[0]] = kv_pair[1]
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
414 return dict
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
415
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
416 def onOptionsPress(self):
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
417 """
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
418 Opens the options dialog box. Usually you would bind this to a button.
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
419 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
420 self.changesRequireRestart = False
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
421 self.isSetToDefault = False
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
422
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
423 if os.path.isfile(self._settings_gui_xml):
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
424 self.OptionsDlg = pychan.loadXML(self._settings_gui_xml)
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
425 else:
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
426 self.OptionsDlg = pychan.loadXML(StringIO(self._settings_gui_xml))
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
427 self.OptionsDlg.stylize(self._gui_style)
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
428 self.fillWidgets()
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
429 self.OptionsDlg.mapEvents({
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
430 'okButton' : self.applySettings,
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
431 'cancelButton' : self.OptionsDlg.hide,
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
432 'defaultButton' : self.setDefaults
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
433 })
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
434 self.OptionsDlg.show()
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
435
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
436 def fillWidgets(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
437 for entry in self._entries:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
438 widget = self.OptionsDlg.findChildByName(entry.settingwidgetname)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
439 value = self.get(entry.module, entry.name)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
440 if type(entry.initialdata) is list:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
441 try:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
442 value = entry.initialdata.index(value)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
443 except ValueError:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
444 raise ValueError(value + " is not a valid value for " + entry.name)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
445 entry.initializeWidget(widget, value)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
446
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
447 def applySettings(self):
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
448 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
449 Writes the settings file. If a change requires a restart of the engine
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
450 it notifies you with a small dialog box.
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
451 """
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
452 for entry in self._entries:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
453 widget = self.OptionsDlg.findChildByName(entry.settingwidgetname)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
454 data = widget.getData()
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
455
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
456 # If the data is a list we need to get the correct selected data
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
457 # from the list. This is needed for e.g. dropdowns or listboxs
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
458 if type(entry.initialdata) is list:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
459 value = entry.initialdata[data]
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
460 self.set(entry.module, entry.name, value)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
461 else:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
462 self.set(entry.module, entry.name, data)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
463
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
464 if entry.requiresrestart:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
465 self.changesRequireRestart = True
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
466 entry.onApply(widget)
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
467
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
468 self.saveSettings()
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
469
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
470 self.OptionsDlg.hide()
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
471 if self.changesRequireRestart:
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
472 self._showChangeRequireRestartDialog()
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
473
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
474
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
475 def _showChangeRequireRestartDialog(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
476 """Shows a dialog that informes the user that a restart is required
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
477 to perform the changes."""
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
478 RestartDlg = pychan.loadXML(StringIO(self._changes_gui_xml))
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
479 RestartDlg.mapEvents({ 'closeButton' : RestartDlg.hide })
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
480 RestartDlg.show()
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
481
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
482
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
483 def setAvailableScreenResolutions(self, reslist):
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
484 """
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
485 A list of valid default screen resolutions. This should be called once
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
486 right after you instantiate Settings.
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
487
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
488 Valid screen resolutions must be strings in the form of: WIDTHxHEIGHT
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
489
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
490 Example:
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
491 settings.setAvailableScreenResolutions(["800x600", "1024x768"])
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
492 """
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
493 self._resolutions = reslist
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
494
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
495 def setDefaults(self):
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
496 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
497 Overwrites the setting file with the default settings-dist.xml file.
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
498 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
499 shutil.copyfile('settings-dist.xml', os.path.join(self._appdata, self._settings_file))
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
500 self.changesRequireRestart = True
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
501 self.loadSettings()
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
502 self._showChangeRequireRestartDialog()
532
4da56756a617 Fixed a small bug that didn't allow to use xml files as gui input for the setting extension
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 515
diff changeset
503
515
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
504 if self.OptionsDlg:
520bd1621644 Added a loadSettings function. Added the ability to set the valid screen resolutions. Fixed a problem with the settings dialog that kept the settings you selected even though you pressed cancel. When you press the "defaults" button it now applies the defaults and prompts the user to restart the game.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 514
diff changeset
505 self.OptionsDlg.hide()
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
506
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
507
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
508
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
509 class SettingEntry(object):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
510
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
511 def __init__(self, module, name, widgetname, applyfunction=None, initialdata=None, requiresrestart=False):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
512 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
513 @param module: The Setting module this Entry belongs to
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
514 @type module: C{String}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
515 @param name: The Setting's name
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
516 @type name: C{String}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
517 @param widgetname: The name of the widget that is used to change this
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
518 setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
519 @type widgetname: C{String}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
520 @param applyfunction: function that makes the changes when the Setting is
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
521 saved
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
522 @type applyfunction: C{function}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
523 @param initialdata: If the widget supports the setInitialData() function
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
524 this can be used to set the initial data
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
525 @type initialdata: C{String} or C{Boolean}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
526 @param requiresrestart: Whether or not the changing of this setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
527 requires a restart
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
528 @type requiresrestart: C{Boolean}
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
529 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
530 self._module = module
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
531 self._name = name
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
532 self._settingwidgetname = widgetname
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
533 self._requiresrestart = requiresrestart
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
534 self._initialdata = initialdata
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
535 self._applyfunction = applyfunction
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
536
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
537 def initializeWidget(self, widget, currentValue):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
538 """Initialize the widget with needed data"""
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
539 if self._initialdata is not None:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
540 widget.setInitialData(self._initialdata)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
541 widget.setData(currentValue)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
542
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
543 def onApply(self, widget):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
544 """Implement actions that need to be taken when the setting is changed
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
545 here.
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
546 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
547 if self._applyfunction is not None:
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
548 self._applyfunction(widget.getData())
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
549
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
550 def _getModule(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
551 return self._module
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
552
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
553 def _setModule(self, module):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
554 self._module = module
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
555
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
556 def _getName(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
557 return self._name
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
558
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
559 def _setName(self, name):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
560 self._name = name
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
561
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
562 def _getSettingWidgetName(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
563 return self._settingwidgetname
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
564
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
565 def _setSettingWidgetName(self, settingwidgetname):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
566 self._settingwidgetname = settingwidgetname
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
567
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
568 def _getRequiresRestart(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
569 return self._requiresrestart
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
570
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
571 def _setRequiresRestart(self, requiresrestart):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
572 self._requiresrestart = requiresrestart
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
573
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
574 def _getInitialData(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
575 return self._initialdata
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
576
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
577 def _setInitialData(self, initialdata):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
578 self._initialdata = initialdata
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
579
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
580 def _getApplyFunction(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
581 return self._applyfunction
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
582
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
583 def _setApplyFunction(self, applyfunction):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
584 self._applyfunction = applyfunction
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
585
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
586 module = property(_getModule, _setModule)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
587 name = property(_getName, _setName)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
588 settingwidgetname = property(_getSettingWidgetName, _setSettingWidgetName)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
589 requiresrestart = property(_getRequiresRestart, _setRequiresRestart)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
590 initialdata = property(_getInitialData, _setInitialData)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
591 applyfunction = property(_getApplyFunction, _setApplyFunction)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
592
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
593 def __str__(self):
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
594 return "SettingEntry: " + self.name + " Module: " + self.module + " Widget: " + \
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
595 self.settingwidgetname + " requiresrestart: " + str(self.requiresrestart) + \
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
596 " initialdata: " + str(self.initialdata)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
597
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
598