Commited latest SciTech changes into CVS. This includes updates to the
applet code (with changes copyright headers) as well as updates to the wxImage and dib.cpp modules to use virtual file systems so that we can load these objects from ZIP files correctly. The dib.cpp module was also extensively cleaned up (although the DIB writing code does not presently use file streams as we couldn't figure out if it was possible to write to a ZIP file stream). The code has been tested and functions correctly for both regular files and ZIP files. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
128
contrib/src/applet/prepecho.cpp
Normal file
128
contrib/src/applet/prepecho.cpp
Normal file
@@ -0,0 +1,128 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* wxWindows HTML Applet Package
|
||||
*
|
||||
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* The contents of this file are subject to the wxWindows License
|
||||
* Version 3.0 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.wxwindows.org/licence3.txt
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* ========================================================================
|
||||
*
|
||||
* Language: ANSI C++
|
||||
* Environment: Any
|
||||
*
|
||||
* Description: This file is the implementation of the Preprocessor object
|
||||
* for parsing the <!--#echo directive
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
// For compilers that support precompilation
|
||||
#include "wx/wxprec.h"
|
||||
#include "wx/html/forcelnk.h"
|
||||
|
||||
// Include private headers
|
||||
#include "wx/applet/prepecho.h"
|
||||
#include "wx/applet/echovar.h"
|
||||
|
||||
/*---------------------------- Global variables ---------------------------*/
|
||||
|
||||
|
||||
/*----------------------------- Implementation ----------------------------*/
|
||||
|
||||
/****************************************************************************
|
||||
PARAMETERS:
|
||||
text - HTML to process for echo directives
|
||||
|
||||
RETURNS:
|
||||
The string containing the processed HTML
|
||||
|
||||
REMARKS:
|
||||
This function replaces #echo directives with a variable retrieved from the
|
||||
class given in the HTML directive. These classes are created by making a sub
|
||||
class of wxEchoVariable. Dynamic class construction is used at run time
|
||||
internally to create an instance of this class and access the value of the
|
||||
variable.
|
||||
|
||||
SEE ALSO:
|
||||
wxEchoVariable
|
||||
****************************************************************************/
|
||||
wxString wxEchoPrep::Process(
|
||||
const wxString& text) const
|
||||
{
|
||||
int i;
|
||||
char ft[] = "<!--#echo ";
|
||||
|
||||
// make a copy so we can replace text as we go without affecting the original
|
||||
wxString output = text;
|
||||
|
||||
while ((i = (output.Lower()).Find(ft)) != -1) {
|
||||
// Loop until every #echo directive is found
|
||||
|
||||
int n, c, end;
|
||||
wxString cname, parms;
|
||||
wxString tag;
|
||||
|
||||
// grab the tag and remove it from the file
|
||||
end = (output.Mid(i)).Find("-->");
|
||||
if (end == -1) {
|
||||
#ifdef CHECKED
|
||||
wxMessageBox("wxHTML #echo error: Premature end of file while parsing #echo.","Error",wxICON_ERROR);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
end += 3;
|
||||
tag = output.Mid(i, end);
|
||||
output.Remove(i, end);
|
||||
|
||||
n = (tag.Lower()).Find(" parm=");
|
||||
c = tag.Find("-->");
|
||||
if (n == -1) {
|
||||
n = c;
|
||||
// find the classname
|
||||
c = (tag.Mid(10, n-10)).Find(" ");
|
||||
if (c == -1) n -= 10;
|
||||
else n = c;
|
||||
cname = tag.Mid(10, n);
|
||||
|
||||
// grab the value from the class, put it in tag since the data is no longer needed
|
||||
tag = wxEchoVariable::GetValue(cname, NULL);
|
||||
}
|
||||
else {
|
||||
// Find the parms
|
||||
parms = tag.Mid(n+6, c-n-6);
|
||||
// Clip off any quotation marks if they exist. (don't die if there arn't any)
|
||||
c = parms.Find("\"");
|
||||
if (c != -1) parms = parms.Mid(c+1);
|
||||
c = parms.Find("\"");
|
||||
if (c != -1) parms = parms.Mid(0, c);
|
||||
// find the classname
|
||||
c = (tag.Mid(10, n-10)).Find(" ");
|
||||
if (c == -1) n -= 10;
|
||||
else n = c;
|
||||
cname = tag.Mid(10, n);
|
||||
|
||||
// grab the value from the class, put it in tag since the data is no longer needed
|
||||
tag = wxEchoVariable::GetValue(cname, parms.c_str());
|
||||
}
|
||||
|
||||
|
||||
output = (output.Mid(0,i) + tag + output.Mid(i));
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
FORCE_LINK(echovar)
|
||||
|
Reference in New Issue
Block a user