source: branches/2.19_branch/NewView/WebBrowserUnit.pas@ 331

Last change on this file since 331 was 305, checked in by RBRi, 17 years ago

fixes for improved url handling (in the about dialog)

  • Property svn:eol-style set to native
File size: 5.7 KB
Line 
1Unit WebBrowserUnit;
2
3// NewView - a new OS/2 Help Viewer
4// Copyright 2003 Aaron Lawrence (aaronl at consultant dot com)
5// Copyright 2006-2007 Ronald Brill (rbri at rbri dot de)
6// This software is released under the Gnu Public License - see readme.txt
7
8Interface
9
10 // Code for running the default browser.
11 // Doesn't implement DDE!
12 Procedure LaunchURL(const aURL: String);
13
14
15Implementation
16
17uses
18 PMSHL,
19 OS2Def,
20 ACLUtility,
21 SysUtils,
22 RunProgramUnit,
23 FileUtilsUnit,
24 StringUtilsUnit,
25 DebugUnit;
26
27const
28 PROFILE_APPLICATION_WPURLDEFAULTSETTINGS = 'WPURLDEFAULTSETTINGS';
29 // Browser
30 PROFILE_KEY_DEFAULT_BROWSER_EXE = 'DefaultBrowserExe';
31 PROFILE_KEY_DEFAULT_WORKING_DIR = 'DefaultWorkingDir';
32 PROFILE_KEY_DEFAULT_PARAMETERS = 'DefaultParameters';
33
34 PROFILE_KEY_DEFAULT_MAIL_EXE = 'DefaultMailExe';
35 PROFILE_KEY_DEFAULT_MAIL_WORKING_DIR = 'DefaultMailWorkingDir';
36 PROFILE_KEY_DEFAULT_MAIL_PARAMETERS = 'DefaultMailParameters';
37
38 PROFILE_KEY_DEFAULT_NEWS_EXE = 'DefaultNewsExe';
39 PROFILE_KEY_DEFAULT_NEWS_WORKING_DIR = 'DefaultNewsWorkingDir';
40 PROFILE_KEY_DEFAULT_NEWS_PARAMETERS = 'DefaultNewsParameters';
41
42 PROFILE_KEY_DEFAULT_FTP_EXE = 'DefaultFTPExe';
43 PROFILE_KEY_DEFAULT_FTP_WORKING_DIR = 'DefaultFTPWorkingDir';
44 PROFILE_KEY_DEFAULT_FTP_PARAMETERS = 'DefaultFTPParameters';
45
46
47 Function GetDefaultBrowserExe : String;
48 begin
49 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_BROWSER_EXE, '');
50 if Result = '' then
51 begin
52 // try Web Explorer
53 SearchPath('PATH', 'explore.exe', Result);
54 end;
55 end;
56
57
58 Function GetDefaultBrowserWorkingDir : String;
59 begin
60 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_WORKING_DIR, '');
61 if Result = '' then
62 begin
63 Result := ExtractFilePath(GetDefaultBrowserExe);
64 end;
65 end;
66
67
68 Function GetDefaultParameters : String;
69 begin
70 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_PARAMETERS, '');
71 end;
72
73
74 Function GetDefaultMailExe : String;
75 begin
76 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_MAIL_EXE, '');
77 end;
78
79
80 Function GetDefaultMailWorkingDir : String;
81 begin
82 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_MAIL_WORKING_DIR, '');
83 if Result = '' then
84 begin
85 Result := ExtractFilePath(GetDefaultMailExe);
86 end;
87 end;
88
89
90 Function GetDefaultMailParameters : String;
91 begin
92 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_MAIL_PARAMETERS, '');
93 end;
94
95
96 Function GetDefaultNewsExe : String;
97 begin
98 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_NEWS_EXE, '');
99 end;
100
101
102 Function GetDefaultNewsWorkingDir : String;
103 begin
104 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_NEWS_WORKING_DIR, '');
105 if Result = '' then
106 begin
107 Result := ExtractFilePath(GetDefaultNewsExe);
108 end;
109 end;
110
111
112 Function GetDefaultNewsParameters : String;
113 begin
114 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_NEWS_PARAMETERS, '');
115 end;
116
117
118 Function GetDefaultFtpExe : String;
119 begin
120 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_FTP_EXE, '');
121 end;
122
123
124 Function GetDefaultFtpWorkingDir : String;
125 begin
126 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_FTP_WORKING_DIR, '');
127 if Result = '' then
128 begin
129 Result := ExtractFilePath(GetDefaultFtpExe);
130 end;
131 end;
132
133
134 Function GetDefaultFtpParameters : String;
135 begin
136 Result := GetUserProfileString(PROFILE_APPLICATION_WPURLDEFAULTSETTINGS, PROFILE_KEY_DEFAULT_FTP_PARAMETERS, '');
137 end;
138
139
140 Procedure LaunchURL(const aURL: String);
141 var
142 tmpExe : String;
143 tmpAlternativeExe : String;
144 tmpWorkingDir : String;
145 tmpParameters : String;
146 begin
147 // default is to start the browser
148 tmpExe := GetDefaultBrowserExe;
149 tmpWorkingDir := GetDefaultBrowserWorkingDir;
150 tmpParameters := GetDefaultParameters;
151
152 if not FileExists(tmpExe) then
153 begin
154 raise Exception.Create('Browser program doesn''t exist: ' + tmpExe);
155 end;
156
157 if tmpExe = '' then
158 begin
159 raise Exception.Create('You don''t have a default browser configured.');
160 end;
161
162 if StrStartsWithIgnoringCase(aURL, '"ftp')
163 or StrStartsWithIgnoringCase(aURL, 'ftp')
164 then
165 begin
166 tmpAlternativeExe := GetDefaultFtpExe;
167 if tmpAlternativeExe <> '' then
168 begin
169 tmpExe := tmpAlternativeExe;
170 tmpWorkingDir := GetDefaultFtpWorkingDir;
171 tmpParameters := GetDefaultFtpParameters;
172 end
173 end
174 else if StrStartsWithIgnoringCase(aURL, '"mailto')
175 or StrStartsWithIgnoringCase(aURL, 'mailto')
176 then
177 begin
178 tmpAlternativeExe := GetDefaultMailExe;
179 if tmpAlternativeExe <> '' then
180 begin
181 tmpExe := tmpAlternativeExe;
182 tmpWorkingDir := GetDefaultMailWorkingDir;
183 tmpParameters := GetDefaultMailParameters;
184 end
185 end
186 else if StrStartsWithIgnoringCase(aURL, '"news')
187 or StrStartsWithIgnoringCase(aURL, '"news')
188 then
189 begin
190 tmpAlternativeExe := GetDefaultNewsExe;
191 if tmpAlternativeExe <> '' then
192 begin
193 tmpExe := tmpAlternativeExe;
194 tmpWorkingDir := GetDefaultNewsWorkingDir;
195 tmpParameters := GetDefaultNewsParameters;
196 end
197 end;
198
199 ChDir(RemoveRightDirectorySeparator(tmpWorkingDir));
200 LaunchProgram(tmpExe, tmpParameters + ' ' + aURL, tmpWorkingDir);
201 end;
202
203Initialization
204End.
Note: See TracBrowser for help on using the repository browser.