/
glscene
/
pasdoc
Обзор
Документация
Войти
/
glscene
/
pasdoc
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
source/gui/HISTORY
126 строк
6 KB
Michalis Kamburelis
+ SettingsFileName property
21 апр 2005, 02:57
21 апр 2005, 02:57
19c6336
Код
Авторство
О чём код?
- Done item from TO-DO file: Caption should reflect current filename of the project, or 'noname.pds' if it's not saved yet. Also '*' should be added when Changed = true. These are the common ways to say user what filename he is editing (because he *is* editing a file using pasdoc_gui: he's editing his PasDoc Settings, pds file) and what is the value of Changed. This would also render unnecessary the code "PageControl1.ActivePageIndex := 0;" currently done when user executes "New" menu command. I find it unpleasant, but for now it's sometimes necessary to clearly show the user that settings were reseted. For later changes see cvs logs. Although some changes may be mentioned in this file if they were previously mentioned in TO-DO file. Upon fixing such things you can move text from TO-DO file to this HISTORY file. kambi, 2005-04-20: Changes done to HelpGenerator to make it work cleanly with FPC/Lazarus: - I renamed it to "pasdoc_gui" (instead of "HelpGenerator"), because I just consider it a better name. I also changed output extension to "pds" (was "hgs"). This not only reflects new name, but it also reflects the fact that pasdoc_gui *cannot* read files written by HelpGenerator. See lower in this file for description why I changed the way settings are read/written. - I removed dependency on MemCheck unit, not only because it's does not comply with GNU GPL free but also because it's absolutely useless for FPC programs. (HeapTrc unit exists for FPC that does roughly what MemCheck unit does for Delphi). - I also removed USGS copyright notices at the beginning of the file frmhelpgeneratorunit.pas because they were making unclear statements about what and how is required. I replaced them with standard GNU GPL copyright preamble. My basis is that original code by Richard is said to be on public domain, so I can do anything with it, including licensing modified version of HelpGenerator as GNU GPL sources. If someone thinks that I cannot do this, I will obey. Although I prefer to develop free software using GNU GPL, and a "clean GNU GPL", without any additional legal statements. Richard: even if what I did is OK, you may still want me to change the first line of copyright. I put there "Copyright 2004-2005 Richard B. Winston, U.S. Geological Survey (USGS)" basing on previous copyright comments. - Part of "Options" tab splitted to "Header/Footer" tab to make it smaller. - "About" form changed. - Running external browser is implemented using TProcess. - Let me elaborate a little why previous system with saving setting was not working correctly: When you save a component to a stream, Delphi and FPC do not write properties that have a default value. This is against the spirit of what was assumed in HelpGenerator code, that incorrectly *assumed* that this will always be done. You can see this bug in HelpGenerator: 1. clear "Defines" memo 2. save project as "foo.hgs" 3. write some values in "Defines" memo, like 'FPC' 4. load project as "foo.hgs" Bug: "Defines" memo contains value 'FPC', but it shouldn't, because "foo.hgs" says that no defines should be specified. Why ? Because ObjectPascal streaming system did not record in "foo.hgs" file value of Directives property, it assumed that having Count=0 is the default state of "Defines" property, so there is no need to save it. There are a couple of property types where this behavior will always be present, e.g. string properties are never saved when their value is '' etc. For *some* properties (namely, ones that are obtained via GetOrdProp RTTI call, with the exception of "Integer default $80000000" because $80000000 is special) you can reliably tell Delphi to always save them (regardless of their value) but 1. this is uncleanly done in Delphi (because it's not a general solution, it doesn't work for all property types (it doesn't work for TString property or a string property), and there's that funny thing with $80000000 being special) 2. unfortunately FPC does not implement it for now. This means that in FPC property always has some implicit default value, like "false" for booleans and "0" for integers. There is *no* way to tell FPC to always save a boolean property to a file (regardless of value of that property). See this thread in fpc-pascal mailing archives: [http://www.nl.freepascal.org/lists/fpc-pascal/2005-April/008267.html] What does it mean in a "general view" ? Using ObjectPascal streaming system is a perfect (and easy) way when you always load object from a file *right after* creating it and you're prepared that if some property has some default value, it's "Set" method will not be called by the streaming system at all. Streaming system simply assumes that properties are already correctly set to their default values. That's why I decided that it will be simplest to simply resign from using separate THelpGeneratorProjectOptions class at all. I simply remade reading/writing everything using simple TIniFile. This means that adding new things to a settings file is a little more error-prone (you don't have to add only one property to some class, you have to remember to add both the reading and the writing code to appropriate places). Although in fact it's simpler and shorter (less dummy Get/Set methods, also no need for dummy splitting of clbMethodVisibility items to 5 boolean properties.) As for now, I see that my version of frmHelpGenerator has 250 lines less than original one :) OK, I surprised myself :) - Implementation of SetDefaults extended with things that were originally only in New1Click. This is for clarity. - Oh, and I changed default "Defines" from Delphi and Win32 oriented to FPC and Linux oriented. Sorry, I just couldn't resists :) Seriously, this is TO-DO item in TO-DO file, see item "pasdoc_gui should allow user to configure default state of Defines"