indexing
description: "[
THIS CLASS WAS AUTO-GENERATED WITH THE COMMAND
em_settings_generator settings.xml
DO NOT EDIT THIS CLASS
Settings that can be accessed, modified, loaded and saved
]"
date: "$Date$"
revision: "$Revision$"
class SETTINGS
inherit
XM_CALLBACKS_FILTER_FACTORY
export {NONE} all end
EM_SHARED_USER_DIRECTORY
export {NONE} all end
EM_SHARED_APPLICATION_ID
create
make
feature -- Initialization
make is
require
application_id_set: application_id.item /= void
do
set_user_file (user_directory.item, application_id.item + "_settings.xml")
-- Inits for Section: audio
music_song := default_music_song
music_genre := default_music_genre
music_enabled := default_music_enabled
music_volume := default_music_volume
sfx_enabled := default_sfx_enabled
sfx_volume := default_sfx_volume
end
feature -- Attributes
-- Attributes for Section: audio
music_song: STRING
music_genre: STRING
music_enabled: BOOLEAN
music_volume: INTEGER
sfx_enabled: BOOLEAN
sfx_volume: INTEGER
feature -- Defaults
-- Defaults for Section: audio
default_music_song: STRING is "def"
default_music_genre: STRING is "pop"
default_music_enabled: BOOLEAN is true
default_music_volume: INTEGER is 100
default_sfx_enabled: BOOLEAN is false
default_sfx_volume: INTEGER is 90
restore_all_defaults is
do
restore_audio_defaults
end
restore_audio_defaults is
do
music_song := default_music_song
music_genre := default_music_genre
music_enabled := default_music_enabled
music_volume := default_music_volume
sfx_enabled := default_sfx_enabled
sfx_volume := default_sfx_volume
end
feature -- Element change
-- Setter for Section: audio
set_music_song (val: STRING) is
do
music_song := val
end
set_music_genre (val: STRING) is
do
music_genre := val
end
set_music_enabled (val: BOOLEAN) is
do
music_enabled := val
end
set_music_volume (val: INTEGER) is
do
music_volume := val
end
set_sfx_enabled (val: BOOLEAN) is
do
sfx_enabled := val
end
set_sfx_volume (val: INTEGER) is
do
sfx_volume := val
end
feature -- User settings
set_user_file (a_directory: STRING; a_filename: STRING) is
require
a_filename /= void
a_directory.item (a_directory.count) = '/'
do
create user_dir.make (a_directory)
create user_file.make (a_directory + a_filename)
end
user_dir: KL_DIRECTORY
user_file: PLAIN_TEXT_FILE
write_user_settings is
do
if not user_file.exists then
if not user_dir.exists then
user_dir.recursive_create_directory
end
if user_file.is_creatable then
user_file.create_read_write
user_file.close
end
end
if user_file.exists and then user_file.is_writable then
user_file.open_write
user_file.put_string ("%N%N")
user_file.put_string ("%N")
-- Write audio settings
if not music_song.is_equal(default_music_song) then
user_file.put_string ("%T%N")
end
if not music_genre.is_equal(default_music_genre) then
user_file.put_string ("%T%N")
end
if not music_enabled.is_equal(default_music_enabled) then
user_file.put_string ("%T%N")
end
if not music_volume.is_equal(default_music_volume) then
user_file.put_string ("%T%N")
end
if not sfx_enabled.is_equal(default_sfx_enabled) then
user_file.put_string ("%T%N")
end
if not sfx_volume.is_equal(default_sfx_volume) then
user_file.put_string ("%T%N")
end
user_file.put_string("%N%N")
user_file.close
else
debug
io.put_string("Failed to write settings%N")
end
end
end
user_settings_parser: XM_EIFFEL_PARSER
user_settings_filter: EM_SETTINGS_READER_XM_FILTER
user_settings_table: DS_HASH_TABLE[STRING, STRING]
read_user_settings is
do
if user_file.exists and then user_file.is_readable then
user_file.open_read
create user_settings_filter.make_null
create user_settings_parser.make
user_settings_parser.set_callbacks (callbacks_pipe (<>))
user_file.read_stream (user_file.count)
user_settings_parser.parse_from_string (user_file.last_string)
user_settings_table := user_settings_filter.user_settings_table
user_file.close
-- Apply audio settings
if user_settings_table.has("music_song") then
music_song := user_settings_table.item("music_song")
end
if user_settings_table.has("music_genre") then
music_genre := user_settings_table.item("music_genre")
end
if user_settings_table.has("music_enabled") then
if user_settings_table.item("music_enabled").is_boolean then
music_enabled := user_settings_table.item("music_enabled").to_boolean
end
end
if user_settings_table.has("music_volume") then
if user_settings_table.item("music_volume").is_integer then
music_volume := user_settings_table.item("music_volume").to_integer
end
end
if user_settings_table.has("sfx_enabled") then
if user_settings_table.item("sfx_enabled").is_boolean then
sfx_enabled := user_settings_table.item("sfx_enabled").to_boolean
end
end
if user_settings_table.has("sfx_volume") then
if user_settings_table.item("sfx_volume").is_integer then
sfx_volume := user_settings_table.item("sfx_volume").to_integer
end
end
end
end
feature -- Widgets
-- Widgets for Section: audio
widget_music_song: EM_TEXTLIST[STRING]
widget_music_genre: EM_COMBOBOX[STRING]
widget_music_enabled: EM_CHECKBOX
widget_music_volume: EM_SLIDER
widget_sfx_enabled: EM_CHECKBOX
widget_sfx_volume: EM_SLIDER
create_all_widgets is
do
create_audio_widgets
all_widgets_created := true
end
create_audio_widgets is
do
create widget_music_song.make_empty
widget_music_song.insert_void_element
widget_music_song.put("abc")
widget_music_song.put("def")
widget_music_song.put("ghi")
if widget_music_song.has (music_song) then
widget_music_song.set_selected_element (music_song)
end
create widget_music_genre.make_empty
widget_music_genre.put("rock")
widget_music_genre.put("pop")
widget_music_genre.put("classic")
if widget_music_genre.has (music_genre) then
widget_music_genre.set_selected_element (music_genre)
end
create widget_music_enabled.make_empty
if music_enabled then
widget_music_enabled.set_checked
else
widget_music_enabled.set_unchecked
end
create widget_music_volume.make_from_range_horizontal(0, 128)
widget_music_volume.set_current_value(music_volume)
create widget_sfx_enabled.make_empty
if sfx_enabled then
widget_sfx_enabled.set_checked
else
widget_sfx_enabled.set_unchecked
end
create widget_sfx_volume.make_from_range_horizontal(0, 128)
widget_sfx_volume.set_current_value(sfx_volume)
audio_widgets_created := true
end
free_all_widgets is
do
free_audio_widgets
all_widgets_created := false
end
free_audio_widgets is
do
all_widgets_created := false
audio_widgets_created := false
widget_music_song := void
widget_music_genre := void
widget_music_enabled := void
widget_music_volume := void
widget_sfx_enabled := void
widget_sfx_volume := void
end
apply_all_settings is
do
apply_audio_settings
end
apply_audio_settings is
require
widgets_created: audio_widgets_created
do
music_song := widget_music_song.selected_element
music_genre := widget_music_genre.selected_element
music_enabled := widget_music_enabled.is_checked
music_volume := widget_music_volume.current_value
sfx_enabled := widget_sfx_enabled.is_checked
sfx_volume := widget_sfx_volume.current_value
end
reset_all_widgets is
do
reset_audio_widgets
end
reset_audio_widgets is
require
widgets_created: audio_widgets_created
do
if widget_music_song.has (music_song) then
widget_music_song.set_selected_element(music_song)
end
if widget_music_genre.has (music_genre) then
widget_music_genre.set_selected_element(music_genre)
end
if music_enabled = true then
widget_music_enabled.set_checked
else
widget_music_enabled.set_unchecked
end
widget_music_volume.set_current_value(music_volume)
if sfx_enabled = true then
widget_sfx_enabled.set_checked
else
widget_sfx_enabled.set_unchecked
end
widget_sfx_volume.set_current_value(sfx_volume)
end
all_widgets_created: BOOLEAN
audio_widgets_created: BOOLEAN
end