annotate engine/python/fife/extensions/fife_settings.py @ 640:855ad500f991

* Added the ability to set/get the video driver used using the settings interface. Note that the default driver for the OS will be used unless explicitly specified.
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Thu, 07 Oct 2010 18:37:02 +0000
parents 01994b7e505a
children e3140f01749d
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
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
32 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
33 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
34 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
35
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
36 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
37 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
38 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
39
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
40 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
41 <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
42 <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
43 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
44 <VBox>
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="Resolution:" />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
46 <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
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 <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
49 <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
50 <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
51 </VBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
52 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
53 <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
54 <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
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 <Spacer />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
57 <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
58 <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
59 <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
60 </HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
61 </Window>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
62 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
63
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
64 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
65 <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
66 <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
67 <HBox>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
68 <Spacer />
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
69 <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
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 </Window>
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
72 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
73
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
74 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
75
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
76 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
77 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
78 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
79
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
80 Usage::
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
81 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
82 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
83 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
84 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
85 """
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
86
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
87 def __init__(self, app_name="", settings_file="", default_settings_file= "settings-dist.xml", settings_gui_xml="", changes_gui_xml="", copy_dist=True, serializer=None):
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 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
89 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
90
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
91 @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
92 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
93 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
94 @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
95 @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
96 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
97 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
98 @type settings_file: C{string}
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
99 @param default_settings_file: The name of the default settings file. If the settings_file
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
100 does not exist this file will be copied into the place of the settings_file. This file
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
101 must exist in the root directory of your project!
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
102 @type default_settings_file: C{string}
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
103 @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
104 of the settings dialog box.
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
105 @param copy_dist: Copies the default settings file to the settings_file location. If
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
106 this is False it will create a new empty setting file.
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
107 @param serializer: Overrides the default XML serializer
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
108 @type serializer: C{SimpleSerializer}
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
109
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
110 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
111 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
112 self._settings_file = settings_file
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
113 self._default_settings_file = default_settings_file
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
114 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
115 self._changes_gui_xml = changes_gui_xml
626
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
116 self.OptionsDlg = None
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
117
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
118 # Holds SettingEntries
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
119 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
120
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
121 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
122 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
123 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
124 else:
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
125 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
126 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
127
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
128
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
129 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
130 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
131
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
132 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
133 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
134
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
135
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
136 if not os.path.exists(os.path.join(self._appdata, self._settings_file)):
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
137 if os.path.exists(self._default_settings_file) and copy_dist:
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
138 shutil.copyfile(self._default_settings_file, 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
139
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
140 #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
141 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
142 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
143
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
144 #Used to stylize the options gui
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
145 self._gui_style = "default"
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
146
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
147 #Initialize the serializer
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
148 if serializer:
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
149 self._serializer = serializer
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
150 else:
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
151 self._serializer = SimpleXMLSerializer()
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
152
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
153 self.initSerializer()
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
154
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
155 self._initDefaultSettingEntries()
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
156
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
157 def initSerializer(self):
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
158 self._serializer.load(os.path.join(self._appdata, self._settings_file))
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
159
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
160 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
161 """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
162 outside this class."""
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
163 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
164 requiresrestart=True)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
165 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
166 requiresrestart=True)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
167 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
168 requiresrestart=True)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
169 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
170 requiresrestart=True)
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
171
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
172 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
173 """"
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
174 @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
175 @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
176 @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
177 @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
178 @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
179 setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
180 @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
181 @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
182 saved
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
183 @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
184 @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
185 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
186 @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
187 @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
188 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
189 @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
190 """
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
191 entry = SettingEntry(module, name, widgetname, applyfunction, initialdata, requiresrestart)
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
192 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
193
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
194 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
195 """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
196 @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
197 @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
198 """
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
199 if entry.module not in self._entries:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
200 self._entries[entry.module] = {}
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
201 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
202
556
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
203 # 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
204 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
205 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
206 , 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
207 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
208 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
209 print "WARNING:", entry.module, ":", entry.name, "still not found!"
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
210
556
1d60e0223117 Added a check when a new entry is added to the settings.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 555
diff changeset
211
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
212 def saveSettings(self, filename=""):
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
213 """ Writes the settings to the settings file
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
214
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
215 @param filename: Specifies the file to save the settings to. If it is not specified
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
216 the original settings file is used.
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
217 @type filename: C{string}
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
218 """
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
219 if self._serializer:
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
220 if filename == "":
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
221 self._serializer.save(os.path.join(self._appdata, self._settings_file))
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
222 else:
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
223 self._serializer.save(filename)
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
224
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
225 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
226 """ 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
227
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
228 @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
229 @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
230 @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
231 @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
232 """
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
233 if self._serializer:
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
234 return self._serializer.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
235 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
236 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
237
499
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
238 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
239 """
3dff106b945b Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 497
diff changeset
240 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
241
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
242 @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
243 @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
244 @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
245 @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
246 @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
247 @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
248 """
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
249 if self._serializer:
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
250 self._serializer.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
251
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
252 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
253 """ 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
254 @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
255 @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
256 """
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
257 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
258
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
259 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
260 """
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
261 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
262 """
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
263 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
264 self.isSetToDefault = False
626
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
265 if not self.OptionsDlg:
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
266 self.loadSettingsDialog()
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
267 self.fillWidgets()
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
268 self.OptionsDlg.show()
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
269
626
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
270 def loadSettingsDialog(self):
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
271 """
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
272 Load up the settings xml and return the widget.
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
273 """
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
274 self.OptionsDlg = self._loadWidget(self._settings_gui_xml)
533
082e919cc348 Setting Extension:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 532
diff changeset
275 self.OptionsDlg.stylize(self._gui_style)
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
276 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
277 '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
278 '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
279 '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
280 })
626
01994b7e505a * Applied GreyGhosts patch to fife_settings. Allows the user to load the gui XML whenever they want. Also returns a reference to the dialog so it can be worked with outside of fife_settings.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 615
diff changeset
281 return self.OptionsDlg
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
282
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
283 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
284 """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
285 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
286 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
287 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
288 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
289
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
290 def fillWidgets(self):
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
291 for module in self._entries.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
292 for entry in module.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
293 widget = self.OptionsDlg.findChildByName(entry.settingwidgetname)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
294 value = self.get(entry.module, entry.name)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
295 if type(entry.initialdata) is list:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
296 try:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
297 value = entry.initialdata.index(value)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
298 except ValueError:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
299 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
300 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
301
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
302 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
303 """
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 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
305 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
306 """
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
307 for module in self._entries.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
308 for entry in module.itervalues():
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
309 widget = self.OptionsDlg.findChildByName(entry.settingwidgetname)
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
310 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
311
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
312 # 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
313 # 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
314 if type(entry.initialdata) is list:
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
315 data = entry.initialdata[data]
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
316
558
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
317 # 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
318 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
319 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
320 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
321
558
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
322 if entry.requiresrestart:
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
diff changeset
323 self.changesRequireRestart = True
4cb5d0ed33a9 Fixed a small bug introduced in the last commit
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 557
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 self.saveSettings()
514
0cdc727f9f66 Honour the "settings_gui_xml" paramater in the Settings class
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 505
diff changeset
326
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
327 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
328 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
329 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
330
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
331
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
332 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
333 """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
334 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
335 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
336 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
337 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
338 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
339
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
340
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
341 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
342 """
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
343 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
344 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
345
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
346 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
347
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
348 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
349 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
350 """
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
351 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
352
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
353 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
354 """
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
355 Overwrites the setting file with the default settings file.
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
356 """
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
357 shutil.copyfile(self._default_settings_file, os.path.join(self._appdata, self._settings_file))
497
559a26347730 Forgot to add fife_settings.py in my last commit. Adding it now.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
358 self.changesRequireRestart = True
612
867aad1c01cd Added the ability to use a custom serializer with the fife.Setting class.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 569
diff changeset
359 self.initSerializer()
615
6f3f5686a56e Fixed a small bug where the widgets were not being updated with new data when the default settings were loaded.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 614
diff changeset
360
6f3f5686a56e Fixed a small bug where the widgets were not being updated with new data when the default settings were loaded.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 614
diff changeset
361 #update all widgets with the new data
6f3f5686a56e Fixed a small bug where the widgets were not being updated with new data when the default settings were loaded.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 614
diff changeset
362 self.fillWidgets()
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
363
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
364 def _getEntries(self):
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
365 return self._entries
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
366
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
367 def _setEntries(self, entries):
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
368 self._entries = entries
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
369
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
370 def _getSerializer(self):
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
371 return self._serializer
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
372
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
373 entries = property(_getEntries, _setEntries)
614
567d53c1c010 Added the ability to specify the default settings filename. Also added the serializer get property.
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 612
diff changeset
374 serializer = property(_getSerializer)
538
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
375
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
376 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
377
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
378 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
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 @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
381 @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
382 @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
383 @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
384 @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
385 setting
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
386 @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
387 @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
388 saved
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
389 @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
390 @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
391 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
392 @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
393 @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
394 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
395 @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
396 """
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 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
399 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
400 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
401 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
402 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
403
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
404 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
405 """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
406 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
407 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
408 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
409
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
410 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
411 """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
412 here.
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 if self._applyfunction is not None:
554
9b549d42f9ea Improved fife_settings:
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 543
diff changeset
415 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
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 _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
418 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
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 _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
421 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
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 _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
424 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
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 _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
427 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
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 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
430 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
431
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
432 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
433 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
434
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
435 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
436 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
437
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
438 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
439 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
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 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
442 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
443
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
444 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
445 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
446
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
447 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
448 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
449
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
450 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
451 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
452
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
453 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
454 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
455 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
456 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
457 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
458 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
459
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
460 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
461 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
462 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
463 " 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
464
00aa20dc8b7f Made the Setting class much more customizable by adding the SettingEntry class.
nihathrael@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 533
diff changeset
465