Mercurial > fife-parpg
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 |