source: cprs/branches/GUI-config/SkinFormU.pas@ 1531

Last change on this file since 1531 was 482, checked in by Kevin Toppenberg, 16 years ago

Fixed looping file list, and skin missing bugs

File size: 6.3 KB
Line 
1unit SkinFormU;
2 (*
3 WorldVistA Configuration Utility
4 (c) 8/2008 Kevin Toppenberg
5 Programmed by Kevin Toppenberg, Eddie Hagood
6
7 Family Physicians of Greeneville, PC
8 1410 Tusculum Blvd, Suite 2600
9 Greeneville, TN 37745
10 kdtop@yahoo.com
11
12 This library is free software; you can redistribute it and/or
13 modify it under the terms of the GNU Lesser General Public
14 License as published by the Free Software Foundation; either
15 version 2.1 of the License, or (at your option) any later version.
16
17 This library is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 Lesser General Public License for more details.
21
22 You should have received a copy of the GNU Lesser General Public
23 License along with this library; if not, write to the Free Software
24 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 *)
26
27
28 //==========================================================================
29 //==========================================================================
30 // NOTICE BELOW...
31 //==========================================================================
32 //==========================================================================
33 (*
34 NOTICE:
35 This unit makes use of propriatary, commercial, binary files
36 (.DCU files) that are bound by a *separate* license. Please see that
37 license which is in the \GUI-Config\SkinStuff\ folder
38 *)
39
40//NOTE: If the compilation directive USE_SKINS is not defined, then this
41// form compiles without the skin manager, and is essentially useless.
42// I chose not to remove the entire form for programming reasons, but
43// it will not be accessible to the user unless active.
44
45interface
46
47uses
48 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
49 {$IFDEF USE_SKINS}
50 ipSkinManager,
51 {$ENDIF}
52 StdCtrls, ExtCtrls, ComCtrls, Buttons, DBCtrls, Mask;
53
54type
55 TSkinForm = class(TForm)
56 Panel3: TPanel;
57 SkinsListBox: TListBox;
58 ApplySkinButton: TButton;
59 btnDisable: TButton;
60 Label12: TLabel;
61 Button6: TButton;
62 Button1: TButton;
63 cbSkinAtStartup: TCheckBox;
64 procedure FormCreate(Sender: TObject);
65 procedure ApplySkinButtonClick(Sender: TObject);
66 procedure SkinsListBoxDblClick(Sender: TObject);
67 procedure SkinsListBoxKeyPress(Sender: TObject; var Key: Char);
68 procedure Button6Click(Sender: TObject);
69 procedure FormDestroy(Sender: TObject);
70 procedure FormShow(Sender: TObject);
71 private
72 { Private declarations }
73 {$IFDEF USE_SKINS}
74 SkinManager : TipSkinManager;
75 {$ENDIF}
76 FINIFileName : string;
77 procedure FillSkinList;
78 public
79 { Public declarations }
80 CurrentSkinFile : string;
81 procedure ActivateCurrentSkin;
82 procedure InactivateSkin;
83 end;
84
85var
86 SkinForm: TSkinForm;
87
88//CONST
89// SKIN_NONE = '<TURN OFF SKINS>' ;
90
91implementation
92
93{$R *.DFM}
94
95uses ShellAPI, inifiles;
96
97 procedure TSkinForm.FillSkinList;
98 var
99 SRec : TSearchRec;
100 R : Integer;
101 begin
102 SkinsListBox.Items.Clear;
103// SkinsListBox.Items.Add (SKIN_NONE);
104 R := FindFirst (ExtractFilePath (Application.ExeName) + '\SkinStuff\Skins\*.ipz', faAnyFile, SRec);
105 while R = 0 do
106 begin
107 SkinsListBox.Items.Add (SRec.Name);
108 R := FindNext (SRec);
109 end;
110 SkinsListBox.Sorted := true;
111 SkinsListBox.ItemIndex := 0;
112 end;
113
114
115 procedure TSkinForm.FormCreate(Sender: TObject);
116 var iniFile : TIniFile;
117 begin
118 {$IFDEF USE_SKINS}
119 SkinManager := TipSkinManager.Create(self);
120 {$ENDIF}
121 FINIFileName := ExtractFilePath(ParamStr(0)) + 'GUI_Config.ini';
122 iniFile := TIniFile.Create(FINIFileName);
123 cbSkinAtStartup.Checked := iniFile.ReadBool('Skin','Load At Startup',false);
124 CurrentSkinFile := iniFile.ReadString('Skin','Default Skin','SkinStuff\Skins\ICQ_Longhorn_v.1.2.ipz');
125 iniFile.Free;
126 end;
127
128 procedure TSkinForm.FormDestroy(Sender: TObject);
129 var iniFile : TIniFile;
130 begin
131 iniFile := TIniFile.Create(FINIFileName);
132 iniFile.WriteString('Skin','Default Skin',CurrentSkinFile);
133 iniFile.WriteBool('Skin','Load At Startup',cbSkinAtStartup.Checked);
134 iniFile.Free;
135 {$IFDEF USE_SKINS}
136 SkinManager.Free;
137 {$ENDIF}
138 end;
139
140 procedure TSkinForm.ApplySkinButtonClick(Sender: TObject);
141 var fileS : String;
142 begin
143 fileS := '';
144 if SkinsListBox.ItemIndex > -1 then begin
145 fileS := SkinsListBox.Items [SkinsListBox.ItemIndex];
146 end;
147// if fileS = SKIN_NONE then fileS := '';
148 CurrentSkinFile := 'SkinStuff\Skins\' +fileS;
149 ModalResult := mrOK;
150 end;
151
152 procedure TSkinForm.SkinsListBoxDblClick(Sender: TObject);
153 begin
154 ApplySkinButtonClick (Self);
155 end;
156
157 procedure TSkinForm.SkinsListBoxKeyPress(Sender: TObject; var Key: Char);
158 begin
159 if Key = #13 then ApplySkinButtonClick (Self);
160 end;
161
162 procedure TSkinForm.Button6Click(Sender: TObject);
163 begin
164 ShellExecute (Handle, 'open', 'http://www2.wincustomize.com/Skins.aspx?LibID=12&view=1&sortby=9&sortdir=DESC&p=1&advanced=0&mode=1&u=0', nil, nil, SW_SHOWNORMAL);
165 end;
166
167 procedure TSkinForm.ActivateCurrentSkin;
168 begin
169 {$IFDEF USE_SKINS}
170 SkinManager.SkinFile := ExtractFilePath (Application.ExeName) + CurrentSkinFile;
171 if FileExists(SkinManager.SkinFile)=false then begin
172 SkinManager.SkinFile := '';
173 end;
174 if SkinManager.SkinFile <>'' then begin
175 try
176 SkinManager.Active := true;
177 except
178 on EInvalidOperation do begin
179 MessageDlg('Error Applying Skin. Please try another.',mtInformation,[mbOK],0);
180 end;
181 else begin
182 MessageDlg('Error Applying Skin. Please try another.',mtInformation,[mbOK],0);
183 end;
184 end;
185 end else begin
186 SkinManager.Active := false;
187 end;
188 {$ENDIF}
189 end;
190
191
192 procedure TSkinForm.InactivateSkin;
193 begin
194 {$IFDEF USE_SKINS}
195 SkinManager.Active := false;
196 {$ENDIF}
197 end;
198
199 procedure TSkinForm.FormShow(Sender: TObject);
200 begin
201 FillSkinList;
202 end;
203
204 end.
Note: See TracBrowser for help on using the repository browser.