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

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

IAI support added

  • Property svn:eol-style set to native
File size: 5.5 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') then
163 begin
164 tmpAlternativeExe := GetDefaultFtpExe;
165 if tmpAlternativeExe <> '' then
166 begin
167 tmpExe := tmpAlternativeExe;
168 tmpWorkingDir := GetDefaultFtpWorkingDir;
169 tmpParameters := GetDefaultFtpParameters;
170 end
171 end
172 else if StrStartsWithIgnoringCase(aURL, '"mailto') then
173 begin
174 tmpAlternativeExe := GetDefaultMailExe;
175 if tmpAlternativeExe <> '' then
176 begin
177 tmpExe := tmpAlternativeExe;
178 tmpWorkingDir := GetDefaultMailWorkingDir;
179 tmpParameters := GetDefaultMailParameters;
180 end
181 end
182 else if StrStartsWithIgnoringCase(aURL, '"news') then
183 begin
184 tmpAlternativeExe := GetDefaultNewsExe;
185 if tmpAlternativeExe <> '' then
186 begin
187 tmpExe := tmpAlternativeExe;
188 tmpWorkingDir := GetDefaultNewsWorkingDir;
189 tmpParameters := GetDefaultNewsParameters;
190 end
191 end;
192
193 ChDir(RemoveRightDirectorySeparator(tmpWorkingDir));
194 LaunchProgram(tmpExe, tmpParameters + ' ' + aURL, tmpWorkingDir);
195 end;
196
197Initialization
198End.
Note: See TracBrowser for help on using the repository browser.