root/trunk/ConsUtilServiceClass.pas

Revision 155, 6.1 kB (checked in by sagrer, 2 years ago)
  1. Функционал переводов отвязан от класса консольной утилиты, выдернут в новый класс в новый модуль TranslManager?.pas. При подключении модуля создается глобальный объект TranslMan? и доступна глобальная функция _() которая по сути обертка над методом _() класса TMOExtractor. Все это нужно чтобы не было привязки функционала локализации к классу консольного приложения.
  2. В связи с вышеизложенным поправлены исходники всех проектов, использовавших старый способ подключения переводов.
  3. Локализация прикручена к VerRevUpdater?, он же локализован на русский язык - выполнено #36.
  • Property svnmailer:content-charset set to cp1251
Line 
1 ///////////////////////////////////////////////////////////
2 //                 TConsUtilServiceClass                 //
3 //   Базовый класс для "интерфейса" консольной утилиты   //
4 //                Copyright (C) 2007 Sagrer              //
5 //              Распространяется на условиях             //
6 //                      LGPL v2.1                        //
7 //                                                       //
8 //                  версия модуля 0.2                    //
9 //                                                       //
10 //                  sagrer@yandex.ru                     //
11 ///////////////////////////////////////////////////////////
12
13 //К работе над данным файлом приложили руки, ноги.... короче аффтары:
14 // 1) Sagrer (sagrer@yandex.ru)
15
16 ////////////////////////////////////////////////////////////////////////
17
18 unit ConsUtilServiceClass;
19
20 {$mode objfpc}{$H+}
21
22 interface
23
24 uses
25   Classes, SysUtils, forms, TranslManager;
26
27 type
28   TConsUtilServiceClass = class        //Базовый класс для "интерфейса" консольной утилиты
29   private
30     //Закрытые переменные.
31   protected
32     //Защищенные переменные.
33     ProcessFurther : boolean;          //Продолжать ли выполнение команд.
34     //Защищенные методы.
35   public
36     //Переменные
37     DoShowHelp : boolean;              //Показывать ли справку.
38     DoShowVersion : boolean;           //Выводить ли инфу о версии.
39     DoSilent : boolean;                //Работать ли в тихом режиме.
40     DoPause : boolean;                 //Ждать ли нажатия любой клавиши после завершения всех действий.
41
42     //Конструкторы-деструкторы...
43     constructor Create; virtual;
44     destructor Destroy; override;
45
46     //Другие методы...
47     procedure ProcessParameters;  virtual;     //Проверить параметры командной строки.
48     procedure DoWork;             virtual;     //Выполнить боевую задачу %).
49     procedure ShowHelp;           virtual;     //Вывести справку.
50     procedure ShowVersion;        virtual;     //Вывести версию.
51     procedure ShowOptions;        virtual;     //Перегружается в наследнике, если нужно вывести дополнительные опции в хелпе
52     procedure ShowDescription;    virtual;     //Перегружается в наследнике если нужно вывести дополнительное описание утилиты.
53   end;
54
55 implementation
56
57 /////////////////////////////////////////////
58 //          TConsUtilServiceClass          //
59 /////////////////////////////////////////////
60
61 //-----------------------------------------//
62 //        Конструкторы-деструкторы...      //
63 //-----------------------------------------//
64
65 constructor TConsUtilServiceClass.Create;
66 begin
67   //Проставить дефолтные значения...
68   //Закрытые
69
70   //Защищенные
71   ProcessFurther := true;
72   //Открытые
73   DoShowHelp := false;
74   DoShowVersion := false;
75   DoSilent := false;
76   DoPause := false;
77
78   //Создать вложенные объекты классов...
79 end;
80
81 destructor TConsUtilServiceClass.Destroy;
82 begin
83   //Выкидываем мусор
84
85   //Выполнить унаследованный деструктор
86   inherited;
87 end;
88
89 //------------------------------------------//
90 //             Другие методы...             //
91 //------------------------------------------//
92
93 procedure TConsUtilServiceClass.ProcessParameters;
94 //Проверить параметры командной строки.
95 begin
96   //Проверим опции командной строки...
97
98   if Application.HasOption('h') or Application.HasOption('help') or Application.HasOption('?') then begin
99     //Вывести справку.
100     DoShowHelp := true;
101   end;
102
103   if Application.HasOption('v') or Application.HasOption('version') then begin
104     //Выводить инфу о номере версии.
105     DoShowVersion := true;
106   end;
107
108   if Application.HasOption('s') or Application.HasOption('silent') then begin
109     //Работать в тихом режиме.
110     DoSilent := true;
111   end;
112
113   if Application.HasOption('p') or Application.HasOption('pause') then begin
114     //Паузить ли перед завершением работы
115     DoPause := true;
116   end;
117 end;
118
119 procedure TConsUtilServiceClass.DoWork;
120 //Выполнить боевую задачу %).
121 begin
122   //Выполнить нужно одну из задач - по её завершении ProcessFurther := false
123   //и дальше нифига не выполняется.
124
125   //Справка.
126   if (DoShowHelp = true) and (ProcessFurther = true) then begin
127     //Блокировка других веток
128     ProcessFurther := false;
129     //Выводим инфу...
130     ShowHelp;
131   end;
132
133   //Номер версии.
134   if (DoShowVersion = true) and (ProcessFurther = true) then begin
135     //Блокировка других веток
136     ProcessFurther := false;
137     //Выводим инфу...
138     ShowVersion;
139   end;
140
141   //Если ничего до сих пор не выполнилось - то выполняем боевую задачу....
142   //Тут экзампл. По идее вы должны это через override сделать в своем классе.
143   //if ProcessFurther = true then begin
144     ////Блокировка других веток
145     //ProcessFurther := false;
146     ////Работаем....
147
148   //end;
149
150 end;
151
152 procedure TConsUtilServiceClass.ShowHelp;
153 //Вывести справку.
154 begin
155   //Отделяющая строка.
156   Writeln();
157   //Выводим сначала версию...
158   ShowVersion();
159   //Отделяющая строка.
160   Writeln();
161   //Описание
162   ShowDescription();
163   //Отделяющая строка.
164   Writeln();
165   //Теперь выводим собсно справку...
166   Writeln(_('Usage: ')+ExtractFileName(Application.ExeName)+_(' [options]'));
167   Writeln();
168   // Показать доступные опции...
169   ShowOptions;
170   //Отделяющая строка.
171   Writeln();
172 end;
173
174 procedure TConsUtilServiceClass.ShowVersion;
175 //Вывести версию.
176 begin
177   //Пусто. Оверрайдте.
178 end;
179
180 procedure TConsUtilServiceClass.ShowOptions;
181 //Перегружается в наследнике, если нужно вывести дополнительные опции в хелпе
182 begin
183   Writeln(_('Options:'));
184   Writeln(_('          -h, --help, -? : shows this help message.'));
185   Writeln(_('          -v, --version : shows utility''s version number and copyright.'));
186   Writeln(_('          -s, --silent : works in silent mode (without any questions).'));
187   Writeln(_('                         By default works in interactive mode and can '));
188   Writeln(_('                         ask anything.'));
189   Writeln(_('          -p, --pause : waits until User press Enter after finishing all work.'));
190 end;
191
192 procedure TConsUtilServiceClass.ShowDescription;
193 //Перегружается в наследнике если нужно вывести дополнительное описание утилиты.
194 begin
195   //Пусто. Оверрайдте.
196 end;
197
198 end.
199
Note: See TracBrowser for help on using the browser.