From 699432aab659335adee2d31707765efe10ce9ba8 Mon Sep 17 00:00:00 2001 From: Wizzup? Date: Fri, 8 Jan 2010 00:09:15 +0000 Subject: [PATCH] Comments + changes git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@385 3f818213-9676-44b0-a9b4-5e4c4e03d09d --- Projects/SAMufasaGUI/colourhistory.pas | 2 +- Projects/SAMufasaGUI/updateform.pas | 32 +++------ Units/MMLAddon/settings.pas | 94 +++++++++++++++++++++++++- 3 files changed, 100 insertions(+), 28 deletions(-) diff --git a/Projects/SAMufasaGUI/colourhistory.pas b/Projects/SAMufasaGUI/colourhistory.pas index 9fd49c9..25ff55f 100644 --- a/Projects/SAMufasaGUI/colourhistory.pas +++ b/Projects/SAMufasaGUI/colourhistory.pas @@ -18,7 +18,7 @@ See the file COPYING, included in this distribution, for details about the copyright. - Coliur History window for Mufasa Macro Library + Colour History window for Mufasa Macro Library } unit colourhistory; diff --git a/Projects/SAMufasaGUI/updateform.pas b/Projects/SAMufasaGUI/updateform.pas index d9deb7f..b72c18d 100644 --- a/Projects/SAMufasaGUI/updateform.pas +++ b/Projects/SAMufasaGUI/updateform.pas @@ -68,26 +68,18 @@ begin end; function TSimbaUpdateForm.GetLatestSimbaVersion: Integer; -var - saveAfterSetting: Boolean = false; + begin if SimbaVersionThread = nil then//Create thread (only if no-other one is already running) begin SimbaVersionThread := TSimbaVersionThread.Create(true); - if not SettingsForm.Settings.KeyExists('Settings/Updater/RemoteVersionLink') then - saveAfterSetting := true; - - SimbaVersionThread.InputURL := SettingsForm.Settings.GetSetDefaultKeyValue( + SimbaVersionThread.InputURL := SettingsForm.Settings.GetSetLoadSaveDefaultKeyValue( 'Settings/Updater/RemoteVersionLink', 'http://old.villavu.com/merlijn/Simba'{$IFDEF WINDOWS} + - '.exe'{$ENDIF} + '.version'); + '.exe'{$ENDIF} + '.version', + SimbaSettingsFile); - if saveAfterSetting then - SettingsForm.Settings.SaveToXML(SimbaSettingsFile); - - - // SimbaVersionThread.InputURL:= 'http://old.villavu.com/merlijn/Simba'{$IFDEF WINDOWS} +'.exe'{$ENDIF} + '.version'; SimbaVersionThread.Resume; while SimbaVersionThread.Done = false do//Wait till thread is done begin @@ -151,27 +143,19 @@ begin end; procedure TSimbaUpdateForm.PerformUpdate; -var - saveAfterSetting: Boolean = false; + begin Updater := TMMLFileDownloader.Create; FCancelling := False; FCancelled := False; - // Make this a setting later - - if not SettingsForm.Settings.KeyExists('Settings/Updater/RemoteLink') then - saveAfterSetting := true; - - Updater.FileURL := SettingsForm.Settings.GetSetDefaultKeyValue( + Updater.FileURL := SettingsForm.Settings.GetSetLoadSaveDefaultKeyValue( 'Settings/Updater/RemoteLink', - 'http://old.villavu.com/merlijn/Simba'{$IFDEF WINDOWS} +'.exe'{$ENDIF} + 'http://old.villavu.com/merlijn/Simba'{$IFDEF WINDOWS} +'.exe'{$ENDIF}, + SimbaSettingsFile ); - if saveAfterSetting then - SettingsForm.Settings.SaveToXML(SimbaSettingsFile); - //ApplicationName{$IFDEF WINDOWS} +'.exe'{$ENDIF}; // Should work on Windows as well diff --git a/Units/MMLAddon/settings.pas b/Units/MMLAddon/settings.pas index 5db57d5..8eda7b1 100644 --- a/Units/MMLAddon/settings.pas +++ b/Units/MMLAddon/settings.pas @@ -1,3 +1,26 @@ +{ + This file is part of the Mufasa Macro Library (MML) + Copyright (c) 2009 by Raymond van Venetiƫ and Merlijn Wajer + + MML is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MML is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MML. If not, see . + + See the file COPYING, included in this distribution, + for details about the copyright. + + Settings class for Mufasa Macro Library +} + unit settings; {$mode objfpc}{$M+} @@ -22,6 +45,20 @@ type end; + { + TMMLSettings; class to manage settings with XML. + Features: + - Loading and Saving to XML. + - Showing the settings as a tree. + - Changing, Creating settings. (No Deleting yet.) + - Bad naming conventions. + Bugs: + - Don't use '/' as a *name* for a node. It WILL fuck up. + It is no problem in values, but in NAMES for nodes, it will + simply not work. + - Poor naming. + } + TMMLSettings = class(TObject) public @@ -201,6 +238,11 @@ begin Result := N; end; +{ + Return the "path" of the given Node. + The node should be in Nodes. (TreeView.Items) +} + function TMMLSettings.GetNodePath(Node: TTreeNode): String; var N: TTreeNode; @@ -224,6 +266,10 @@ begin result := result + s[i] + '/'; end; +{ + Equivalent to 'ls' or 'dir'. It lists the keys in a certain key (directory) +} + function TMMLSettings.ListKeys(KeyName: String): TStringArray; var N: TTreeNode; @@ -243,12 +289,22 @@ begin end; end; +{ + Return wether the given key exists or not +} + function TMMLSettings.KeyExists(KeyName: String): Boolean; begin Result := WalkToNode(KeyName) <> nil; end; +{ + Return wether the given key is a key. (again, bad naming) + What I mean is, a 'key' only has a 'Value', which a 'directory key' has other + keys (or none) as childs. +} + function TMMLSettings.IsKey(KeyName: String): Boolean; var N: TTreeNode; @@ -271,6 +327,10 @@ begin Exit(i = 0); end; +{ + Perhaps this should just do Exit(not IsKey(KeyName)) +} + function TMMLSettings.IsDirectory(KeyName: String): Boolean; var N: TTreeNode; @@ -281,6 +341,10 @@ begin Exit(False); end; +{ + Get the value of a Key. (String) +} + function TMMLSettings.GetKeyValue(KeyName: String): String; var N: TTreeNode; @@ -300,6 +364,12 @@ begin Exit(''); end; +{ + If the key exists - return the value. + If it does not exist, create the key - with a possible path, set it to + defVal and return defVal. +} + function TMMLSettings.GetSetDefaultKeyValue(KeyName, defVal: String): String; var Res: String; @@ -319,6 +389,10 @@ begin Exit(Res); end; +{ + Clear the entire tree. Load from fileName. call GetSetDefaultKeyValue. +} + function TMMLSettings.GetSetLoadSaveDefaultKeyValue(KeyName, defVal, fileName: String): String; begin Nodes.Clear; @@ -327,6 +401,9 @@ begin SaveToXML(fileName); end; +{ + If Key exists, call getSetDefaultKeyValue, else call GetSetLoadSaveDefaultKeyValue +} function TMMLSettings.GetSetLoadSaveDefaultKeyValueIfNotExists(KeyName, defVal, fileName: String): String; begin if KeyExists(KeyName) then @@ -335,6 +412,12 @@ begin Exit(GetSetLoadSaveDefaultKeyValue(KeyName, defVal, fileName)); end; +{ + Create the given key. If CreatePath = true, then create every key that is + required to create the key. (Say KeyName = 'a/b/c/d/e' and only key a exists, + and CreatePath = True, then b,c,d and e are all created. +} + function TMMLSettings.CreateKey(KeyName: String; CreatePath: Boolean = False): Boolean; var N, newN, nParent: TTreeNode; @@ -374,10 +457,7 @@ begin N := WalkToNode(NewPath); if (N = nil) and (not CreatePath) then - begin - writeln('(N = nil) and (not CreatePath)'); exit(false); - end; if (N = nil) and CreatePath then begin @@ -408,6 +488,10 @@ begin newN.MoveTo(nParent, naAddChild); end; +{ + Set the value of a key. +} + procedure TMMLSettings.SetKeyValue(KeyName: String; KeyValue: String); var N, NN: TTreeNode; @@ -441,6 +525,8 @@ begin end; end; + +{ load from xml } procedure TMMLSettings.LoadFromXML(fileName: String); var Doc: TXMLDocument; @@ -487,6 +573,8 @@ begin end; end; +{ save to xml } + procedure TMMLSettings.SaveToXML(fileName: String); var XMLDoc: TXMLDocument;