annotate engine/python/fife/extensions/fife_settings.py @ 569:466d76db9701

Some small code cleanups in the extensions. The SimpleXMLSerializer now makes use of exceptions.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Mon, 28 Jun 2010 19:28:53 +0000
parents 9152ed2b5bb8
children 867aad1c01cd
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
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
41 from fife.extensions.serializers.simplexml import SimpleXMLSerializer
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
42
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
43 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
44 <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
45 <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
46 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
47 <VBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
48 <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
49 <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
50 </VBox>
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 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
52 <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
53 <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
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 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
56 <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
57 <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
58 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
59 <Spacer />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
60 <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
61 <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
62 <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
63 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
64 </Window>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
65 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
66
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
67 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
68 <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
69 <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
70 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
71 <Spacer />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
72 <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
73 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
74 </Window>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
75 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
76
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
77 FIFE_MODULE = "FIFE"
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
78
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
79 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
80 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
81 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
82
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
83 Usage::
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
84 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
85 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
86 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
87 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
88 """
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
89
543
cb7ec12214a9 Items can now be serialized/deserialized to/from disk. I haven't finished actors yet. This allows for persistent states when you enter/leave maps.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 539
diff changeset
90 def __init__(self, app_name="", settings_file="", settings_gui_xml="", changes_gui_xml="", copy_dist=True):
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
91 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
92 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
93
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
94 @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
95 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
96 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
97 @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
98 @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
99 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
100 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
101 @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
102 @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
103 of the settings dialog box.
543
cb7ec12214a9 Items can now be serialized/deserialized to/from disk. I haven't finished actors yet. This allows for persistent states when you enter/leave maps.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 539
diff changeset
104 @param copy_dist: Copies the settings-dist.xml file to the settings_file location. If
cb7ec12214a9 Items can now be serialized/deserialized to/from disk. I haven't finished actors yet. This allows for persistent states when you enter/leave maps.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 539
diff changeset
105 this is False it will create a new empty xml file.
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
106
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
107 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
108 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
109 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
110 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
111 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
112
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
113 # Holds SettingEntries
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
114 self._entries = {}
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
115
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
116 self._xmlserializer = None
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
117
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
118 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
119 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
120 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
121 else:
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._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
123 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
124
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
125
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
126 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
127 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
128
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
129 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
130 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
131
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
132
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
133 if not os.path.exists(os.path.join(self._appdata, self._settings_file)):
543
cb7ec12214a9 Items can now be serialized/deserialized to/from disk. I haven't finished actors yet. This allows for persistent states when you enter/leave maps.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 539
diff changeset
134 if os.path.exists('settings-dist.xml') and copy_dist:
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
135 shutil.copyfile('settings-dist.xml', os.path.join(self._appdata, self._settings_file))
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
136
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
137 #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
138 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
139 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
140
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
141 #Used to stylize the options gui
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
142 self._gui_style = "default"
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
143
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
144 #Initialize the XML serializer
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
145 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
146
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
147 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
148
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
149 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
150 """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
151 outside this class."""
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
152 self.createAndAddEntry(FIFE_MODULE, "PlaySounds", "enable_sound",
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
153 requiresrestart=True)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
154 self.createAndAddEntry(FIFE_MODULE, "FullScreen", "enable_fullscreen",
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
155 requiresrestart=True)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
156 self.createAndAddEntry(FIFE_MODULE, "ScreenResolution", "screen_resolution", initialdata = self._resolutions,
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
157 requiresrestart=True)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
158 self.createAndAddEntry(FIFE_MODULE, "RenderBackend", "render_backend", initialdata = self._renderbackends,
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 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
160
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
161 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
162 """"
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
163 @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
164 @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
165 @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
166 @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
167 @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
168 setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
169 @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
170 @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
171 saved
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
172 @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
173 @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
174 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
175 @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
176 @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
177 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
178 @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
179 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
180 entry = SettingEntry(module, name, widgetname, applyfunction, initialdata, requiresrestart)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
181 self.addEntry(entry)
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
182
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
183 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
184 """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
185 @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
186 @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
187 """
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
188 if entry.module not in self._entries:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
189 self._entries[entry.module] = {}
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
190 self._entries[entry.module][entry.name] = entry
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
191
556
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
192 # Make sure the new entry is available
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
193 if self.get(entry.module, entry.name) is None:
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
194 print "Updating", self._settings_file, "to the default, it is missing the entry:"\
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
195 , entry.name ,"for module", entry.module
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
196 self.setDefaults()
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
197 if self.get(entry.module, entry.name) is None:
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
198 print "WARNING:", entry.module, ":", entry.name, "still not found!"
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
199 print "It's probably missing in settings-dist.xml as well!"
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
200
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
201 def loadSettings(self):
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
202 self._xmlserializer = SimpleXMLSerializer(os.path.join(self._appdata, self._settings_file))
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
203
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
204 def saveSettings(self):
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
205 """ Writes the settings to the settings file """
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
206 if self._xmlserializer:
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
207 self._xmlserializer.save()
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
208
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 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
210 """ 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
211
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
212 @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
213 @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
214 @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
215 @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
216 """
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
217 if self._xmlserializer:
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
218 return self._xmlserializer.get(module, name, defaultValue)
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
219 else:
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
220 return None
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
221
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
222 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
223 """
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 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
225
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
226 @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
227 @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
228 @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
229 @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
230 @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
231 @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
232 """
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
233 if self._xmlserializer:
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
234 self._xmlserializer.set(module, name, value, extra_attrs)
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
235
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
236 def setGuiStyle(self, style):
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
237 """ Set a custom gui style used for the option dialog.
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
238 @param style: Pychan style to be used
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
239 @type style: C{string}
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
240 """
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
241 self._gui_style = style
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
242
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
243 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
244 """
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
245 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
246 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
247 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
248 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
249
555
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
250 self.OptionsDlg = self._loadWidget(self._settings_gui_xml)
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
251 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
252 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
253 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
254 '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
255 '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
256 '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
257 })
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
258 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
259
555
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
260 def _loadWidget(self, dialog):
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
261 """Loads a widget. Can load both files and pure xml strings"""
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
262 if os.path.isfile(self._settings_gui_xml):
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
263 return pychan.loadXML(dialog)
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
264 else:
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
265 return pychan.loadXML(StringIO(dialog))
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
266
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
267 def fillWidgets(self):
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
268 for module in self._entries.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
269 for entry in module.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
270 widget = self.OptionsDlg.findChildByName(entry.settingwidgetname)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
271 value = self.get(entry.module, entry.name)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
272 if type(entry.initialdata) is list:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
273 try:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
274 value = entry.initialdata.index(value)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
275 except ValueError:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
276 raise ValueError("\"" + value + "\" is not a valid value for " + entry.name + ". Valid options: " + str(entry.initialdata))
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
277 entry.initializeWidget(widget, value)
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
278
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
279 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
280 """
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 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
282 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
283 """
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
284 for module in self._entries.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
285 for entry in module.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
286 widget = self.OptionsDlg.findChildByName(entry.settingwidgetname)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
287 data = widget.getData()
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
288
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
289 # If the data is a list we need to get the correct selected data
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
290 # from the list. This is needed for e.g. dropdowns or listboxs
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
291 if type(entry.initialdata) is list:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
292 data = entry.initialdata[data]
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
293
558
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
294 # only take action if something really changed
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
295 if data != self.get(entry.module, entry.name):
557
c62fe35ae67c fife_settings: Make sure onApply is only called if the entry changed
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 556
diff changeset
296 self.set(entry.module, entry.name, data)
c62fe35ae67c fife_settings: Make sure onApply is only called if the entry changed
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 556
diff changeset
297 entry.onApply(data)
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
298
558
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
299 if entry.requiresrestart:
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
300 self.changesRequireRestart = True
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
301
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
302 self.saveSettings()
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
303
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
304 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
305 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
306 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
307
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
308
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
309 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
310 """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
311 to perform the changes."""
555
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
312 RestartDlg = self._loadWidget(self._changes_gui_xml)
63226105ac45 Load the changes_gui_xml correcty, even if it is set to a file
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 554
diff changeset
313 RestartDlg.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
314 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
315 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
316
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
317
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
318 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
319 """
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
320 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
321 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
322
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
323 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
324
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
325 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
326 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
327 """
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
328 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
329
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
330 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
331 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
332 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
333 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
334 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
335 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
336 self.loadSettings()
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
337 #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
338
567
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
339 #if self.OptionsDlg:
9152ed2b5bb8 Created SimpleXMLSerializer which makes loading and saving variables to an XML file simple. In the process I removed the the XML code from the Settings class. It now uses SimpleXMLSerializer to load and save settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 558
diff changeset
340 # 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
341
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
342 def _getEntries(self):
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
343 return self._entries
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
344
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
345 def _setEntries(self, entries):
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
346 self._entries = entries
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
347
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
348 entries = property(_getEntries, _setEntries)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
349
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
350
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
351
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
352 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
353
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
354 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
355 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
356 @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
357 @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
358 @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
359 @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
360 @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
361 setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
362 @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
363 @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
364 saved
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
365 @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
366 @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
367 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
368 @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
369 @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
370 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
371 @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
372 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
373 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
374 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
375 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
376 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
377 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
378 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
379
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
380 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
381 """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
382 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
383 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
384 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
385
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
386 def onApply(self, data):
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
387 """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
388 here.
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
389 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
390 if self._applyfunction is not None:
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
391 self._applyfunction(data)
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
392
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
393 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
394 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
395
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
396 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
397 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
398
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
399 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
400 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
401
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
402 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
403 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
404
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
405 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
406 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
407
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
408 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
409 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
410
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
411 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
412 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
413
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
414 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
415 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
416
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
417 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
418 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
419
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
420 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
421 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
422
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
423 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
424 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
425
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
426 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
427 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
428
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
429 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
430 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
431 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
432 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
433 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
434 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
435
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 __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
437 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
438 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
439 " 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
440
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
441