wxGetWorkingDirectory() deprecated. Fixed #1338966.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2005-11-07 13:27:09 +00:00
parent f3e874756b
commit ce045aed58
7 changed files with 322 additions and 288 deletions

View File

@@ -8,6 +8,7 @@ wxWidgets Change Log - For more verbose changes, see the manual
All: All:
- wxLaunchDefaultBrowser() now supports wxBROWSER_NEW_WINDOW flag - wxLaunchDefaultBrowser() now supports wxBROWSER_NEW_WINDOW flag
- wxGetWorkingDirectory() deprecated. Use wxGetCwd() instead.
All (GUI): All (GUI):

View File

@@ -1,3 +1,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: function.tex
%% Purpose: Functions and macros
%% Author: wxWidgets Team
%% Modified by:
%% Created:
%% RCS-ID: $Id$
%% Copyright: (c) wxWidgets Team
%% License: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Functions}\label{functions} \chapter{Functions}\label{functions}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage} \setfooter{\thepage}{}{}{}{}{\thepage}
@@ -1122,7 +1133,7 @@ Returns a string containing the current (or working) directory.
\func{wxString}{wxGetWorkingDirectory}{\param{char *}{buf=NULL}, \param{int }{sz=1000}} \func{wxString}{wxGetWorkingDirectory}{\param{char *}{buf=NULL}, \param{int }{sz=1000}}
{\bf NB:} This function is obsolete: use \helpref{wxGetCwd}{wxgetcwd} instead. {\bf NB:} This function is deprecated: use \helpref{wxGetCwd}{wxgetcwd} instead.
Copies the current working directory into the buffer if supplied, or Copies the current working directory into the buffer if supplied, or
copies the working directory into new storage (which you {\emph must} delete copies the working directory into new storage (which you {\emph must} delete
@@ -1514,24 +1525,24 @@ as wxGetTranslation.
The second form is used when retrieving translation of string that has The second form is used when retrieving translation of string that has
different singular and plural form in English or different plural forms in some different singular and plural form in English or different plural forms in some
other language. It takes two extra arguments: as above, \arg{str} other language. It takes two extra arguments: as above, \arg{str}
parameter must contain the singular form of the string to be converted and parameter must contain the singular form of the string to be converted and
is used as the key for the search in the catalog. The \arg{strPlural} parameter is used as the key for the search in the catalog. The \arg{strPlural} parameter
is the plural form (in English). The parameter \arg{n} is used to determine the is the plural form (in English). The parameter \arg{n} is used to determine the
plural form. If no message catalog is found \arg{str} is returned if `n == 1', plural form. If no message catalog is found \arg{str} is returned if `n == 1',
otherwise \arg{strPlural}. otherwise \arg{strPlural}.
See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150} See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150}
for additional information on plural forms handling. For a shorter alternative for additional information on plural forms handling. For a shorter alternative
see the \helpref{wxPLURAL()}{wxplural} macro. see the \helpref{wxPLURAL()}{wxplural} macro.
Both versions call \helpref{wxLocale::GetString}{wxlocalegetstring}. Both versions call \helpref{wxLocale::GetString}{wxlocalegetstring}.
Note that this function is not suitable for literal strings in Unicode Note that this function is not suitable for literal strings in Unicode
builds, since the literal strings must be enclosed into builds, since the literal strings must be enclosed into
\helpref{\_T()}{underscoret} or \helpref{wxT}{wxt} macro which makes them \helpref{\_T()}{underscoret} or \helpref{wxT}{wxt} macro which makes them
unrecognised by \texttt{xgettext}, and so they are not extracted to the message unrecognised by \texttt{xgettext}, and so they are not extracted to the message
catalog. Instead, use the \helpref{\_()}{underscore} and catalog. Instead, use the \helpref{\_()}{underscore} and
\helpref{wxPLURAL}{wxplural} macro for all literal strings. \helpref{wxPLURAL}{wxplural} macro for all literal strings.
@@ -1596,12 +1607,12 @@ no substring matching is done.
\param{const wxString\& }{delims = wxDEFAULT\_DELIMITERS},\\ \param{const wxString\& }{delims = wxDEFAULT\_DELIMITERS},\\
\param{wxStringTokenizerMode }{mode = wxTOKEN\_DEFAULT}} \param{wxStringTokenizerMode }{mode = wxTOKEN\_DEFAULT}}
This is a convenience function wrapping This is a convenience function wrapping
\helpref{wxStringTokenizer}{wxstringtokenizer} which simply returns all tokens \helpref{wxStringTokenizer}{wxstringtokenizer} which simply returns all tokens
found in the given \arg{str} in an array. found in the given \arg{str} in an array.
Please see Please see
\helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer} \helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer}
for the description of the other parameters. for the description of the other parameters.
@@ -2805,7 +2816,7 @@ details.
\func{}{wxON\_BLOCK\_EXIT\_OBJ1}{\param{}{obj}, \param{}{method}, \param{}{p1}} \func{}{wxON\_BLOCK\_EXIT\_OBJ1}{\param{}{obj}, \param{}{method}, \param{}{p1}}
\func{}{wxON\_BLOCK\_EXIT\_OBJ2}{\param{}{obj}, \param{}{method}, \param{}{p1}, \param{}{p2}} \func{}{wxON\_BLOCK\_EXIT\_OBJ2}{\param{}{obj}, \param{}{method}, \param{}{p1}, \param{}{p2}}
This family of macros is similar to \helpref{wxON\_BLOCK\_EXIT}{wxonblockexit} This family of macros is similar to \helpref{wxON\_BLOCK\_EXIT}{wxonblockexit}
but calls a method of the given object instead of a free function. but calls a method of the given object instead of a free function.
\wxheading{Include files} \wxheading{Include files}
@@ -3066,7 +3077,7 @@ frame or dialog containing it, or {\tt NULL}.
\func{bool}{wxLaunchDefaultBrowser}{\param{const wxString\& }{url}, \param{int }{flags = $0$}} \func{bool}{wxLaunchDefaultBrowser}{\param{const wxString\& }{url}, \param{int }{flags = $0$}}
Open the \arg{url} in user's default browser. If \arg{flags} parameter contains Open the \arg{url} in user's default browser. If \arg{flags} parameter contains
\texttt{wxBROWSER\_NEW\_WINDOW} flag, a new window is opened for the URL \texttt{wxBROWSER\_NEW\_WINDOW} flag, a new window is opened for the URL
(currently this is only supported under Windows). (currently this is only supported under Windows).
@@ -3392,7 +3403,7 @@ dynamically. The same as DECLARE\_ABSTRACT\_CLASS.
Used inside a class declaration to make the class known to wxWidgets RTTI Used inside a class declaration to make the class known to wxWidgets RTTI
system and also declare that the objects of this class should be dynamically system and also declare that the objects of this class should be dynamically
creatable from run-time type information. Notice that this implies that the creatable from run-time type information. Notice that this implies that the
class should have a default constructor, if this is not the case consider using class should have a default constructor, if this is not the case consider using
\helpref{DECLARE\_CLASS}{declareclass}. \helpref{DECLARE\_CLASS}{declareclass}.
Example: Example:
@@ -4472,4 +4483,3 @@ Removes the variable {\it var} from the environment.
function. function.
Returns \true on success. Returns \true on success.

View File

@@ -1,3 +1,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: image.tex
%% Purpose: wxImage documentation
%% Author: wxWidgets Team
%% Modified by:
%% Created:
%% RCS-ID: $Id$
%% Copyright: (c) wxWidgets Team
%% License: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxImage}}\label{wximage} \section{\class{wxImage}}\label{wximage}
This class encapsulates a platform-independent image. An image can be created This class encapsulates a platform-independent image. An image can be created
@@ -6,9 +17,9 @@ can be loaded from a file in a variety of formats, and is extensible to new form
via image format handlers. Functions are available to set and get image bits, so via image format handlers. Functions are available to set and get image bits, so
it can be used for basic image manipulation. it can be used for basic image manipulation.
A wxImage cannot (currently) be drawn directly to a \helpref{wxDC}{wxdc}. Instead, A wxImage cannot (currently) be drawn directly to a \helpref{wxDC}{wxdc}. Instead,
a platform-specific \helpref{wxBitmap}{wxbitmap} object must be created from it using a platform-specific \helpref{wxBitmap}{wxbitmap} object must be created from it using
the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor. the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor.
This bitmap can then This bitmap can then
be drawn in a device context, using \helpref{wxDC::DrawBitmap}{wxdcdrawbitmap}. be drawn in a device context, using \helpref{wxDC::DrawBitmap}{wxdcdrawbitmap}.
@@ -23,7 +34,7 @@ it also stores a byte representing the pixel opacity. An alpha value of $0$
corresponds to a transparent pixel (null opacity) while a value of $255$ corresponds to a transparent pixel (null opacity) while a value of $255$
means that the pixel is 100\% opaque. means that the pixel is 100\% opaque.
Unlike RGB data, not all images have an alpha channel and before using Unlike RGB data, not all images have an alpha channel and before using
\helpref{GetAlpha}{wximagegetalpha} you should check if this image contains \helpref{GetAlpha}{wximagegetalpha} you should check if this image contains
an alpha channel with \helpref{HasAlpha}{wximagehasalpha}. Note that currently only an alpha channel with \helpref{HasAlpha}{wximagehasalpha}. Note that currently only
images loaded from PNG files with transparency information will have an alpha images loaded from PNG files with transparency information will have an alpha
@@ -34,7 +45,7 @@ as support for saving images with alpha channel which also isn't implemented).
The following image handlers are available. {\bf wxBMPHandler} is always The following image handlers are available. {\bf wxBMPHandler} is always
installed by default. To use other image formats, install the appropriate installed by default. To use other image formats, install the appropriate
handler with \helpref{wxImage::AddHandler}{wximageaddhandler} or handler with \helpref{wxImage::AddHandler}{wximageaddhandler} or
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}. \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
\twocolwidtha{5cm}% \twocolwidtha{5cm}%
@@ -70,7 +81,7 @@ PNM format, {\bf wxPNMHandler} will always save as raw RGB.
\wxheading{See also} \wxheading{See also}
\helpref{wxBitmap}{wxbitmap}, \helpref{wxBitmap}{wxbitmap},
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
@@ -100,7 +111,7 @@ Otherwise, the image data will be uninitialized.
\func{}{wxImage}{\param{int}{ width}, \param{int}{ height}, \param{unsigned char*}{ data}, \param{bool}{ static\_data = \false}} \func{}{wxImage}{\param{int}{ width}, \param{int}{ height}, \param{unsigned char*}{ data}, \param{bool}{ static\_data = \false}}
Creates an image from given data with the given width and height. If Creates an image from given data with the given width and height. If
{\it static\_data} is true, then wxImage will not delete the actual {\it static\_data} is true, then wxImage will not delete the actual
image data in its destructor, otherwise it will free it by calling image data in its destructor, otherwise it will free it by calling
{\it free()}. {\it free()}.
@@ -152,8 +163,8 @@ Creates an image from XPM data.
\docparam{mimetype}{MIME type string (for example 'image/jpeg')} \docparam{mimetype}{MIME type string (for example 'image/jpeg')}
\docparam{index}{Index of the image to load in the case that the image file contains multiple images. \docparam{index}{Index of the image to load in the case that the image file contains multiple images.
This is only used by GIF, ICO and TIFF handlers. The default value (-1) means This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
"choose the default image" and is interpreted as the first image (index=0) by "choose the default image" and is interpreted as the first image (index=0) by
the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.} the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
\docparam{xpmData}{A pointer to XPM image data.} \docparam{xpmData}{A pointer to XPM image data.}
@@ -163,10 +174,10 @@ the GIF and TIFF handler and as the largest and most colourful one by the ICO ha
Depending on how wxWidgets has been configured, not all formats may be available. Depending on how wxWidgets has been configured, not all formats may be available.
Note: any handler other than BMP must be previously Note: any handler other than BMP must be previously
initialized with \helpref{wxImage::AddHandler}{wximageaddhandler} or initialized with \helpref{wxImage::AddHandler}{wximageaddhandler} or
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}. \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
hotspot for loaded cursor file: hotspot for loaded cursor file:
\begin{verbatim} \begin{verbatim}
int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X); int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
@@ -245,8 +256,8 @@ This function is called by wxWidgets on exit.
\constfunc{unsigned long}{ComputeHistogram}{\param{wxImageHistogram\& }{histogram}} \constfunc{unsigned long}{ComputeHistogram}{\param{wxImageHistogram\& }{histogram}}
Computes the histogram of the image. {\it histogram} is a reference to Computes the histogram of the image. {\it histogram} is a reference to
wxImageHistogram object. wxImageHistogram is a specialization of wxImageHistogram object. wxImageHistogram is a specialization of
\helpref{wxHashMap}{wxhashmap} "template" and is defined as follows: \helpref{wxHashMap}{wxhashmap} "template" and is defined as follows:
\begin{verbatim} \begin{verbatim}
@@ -282,7 +293,7 @@ ConvertAlphaToMask does nothing.
\wxheading{Return value} \wxheading{Return value}
\false if FindFirstUnusedColour returns \false, \true otherwise. \false if FindFirstUnusedColour returns \false, \true otherwise.
\membersection{wxImage::ConvertToBitmap}\label{wximageconverttobitmap} \membersection{wxImage::ConvertToBitmap}\label{wximageconverttobitmap}
@@ -298,7 +309,7 @@ Deprecated, use equivalent \helpref{wxBitmap constructor}{wxbitmapctor}
\constfunc{wxImage}{ConvertToMono}{\param{unsigned char}{ r}, \param{unsigned char}{ g}, \param{unsigned char}{ b}} \constfunc{wxImage}{ConvertToMono}{\param{unsigned char}{ r}, \param{unsigned char}{ g}, \param{unsigned char}{ b}}
Returns monochromatic version of the image. The returned image has white Returns monochromatic version of the image. The returned image has white
colour where the original has {\it (r,g,b)} colour and black colour colour where the original has {\it (r,g,b)} colour and black colour
everywhere else. everywhere else.
@@ -410,7 +421,7 @@ It is usually a good idea to prepend a description before passing the result to
Example: Example:
\begin{verbatim} \begin{verbatim}
wxFileDialog FileDlg( this, "Choose Image", ::wxGetWorkingDirectory(), "", _("Image Files ") + wxImage::GetImageExtWildcard(), wxOPEN ); wxFileDialog FileDlg( this, "Choose Image", ::wxGetCwd(), "", _("Image Files ") + wxImage::GetImageExtWildcard(), wxOPEN );
\end{verbatim} \end{verbatim}
\wxheading{See also} \wxheading{See also}
@@ -474,7 +485,7 @@ Returns the green intensity at the given coordinate.
\func{static int}{GetImageCount}{\param{wxInputStream\&}{ stream}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}} \func{static int}{GetImageCount}{\param{wxInputStream\&}{ stream}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}}
If the image file contains more than one image and the image handler is capable If the image file contains more than one image and the image handler is capable
of retrieving these individually, this function will return the number of of retrieving these individually, this function will return the number of
available images. available images.
@@ -549,7 +560,7 @@ Gets the red value of the mask colour.
\constfunc{bool}{GetOrFindMaskColour}{\param{unsigned char}{ *r}, \param{unsigned char}{ *g}, \param{unsigned char}{ *b}} \constfunc{bool}{GetOrFindMaskColour}{\param{unsigned char}{ *r}, \param{unsigned char}{ *g}, \param{unsigned char}{ *b}}
Get the current mask colour or find a suitable unused colour that could be Get the current mask colour or find a suitable unused colour that could be
used as a mask colour. Returns {\tt true} if the image currently has a mask. used as a mask colour. Returns {\tt true} if the image currently has a mask.
@@ -574,7 +585,7 @@ Returns the red intensity at the given coordinate.
\constfunc{wxImage}{GetSubImage}{\param{const wxRect\&}{ rect}} \constfunc{wxImage}{GetSubImage}{\param{const wxRect\&}{ rect}}
Returns a sub image of the current one as long as the rect belongs entirely to Returns a sub image of the current one as long as the rect belongs entirely to
the image. the image.
@@ -649,7 +660,7 @@ used, which is a number between 0 and 100 (0 is terrible, 100 is very good).
Gets a user-defined option as an integer. The function is case-insensitive to {\it name}. Gets a user-defined option as an integer. The function is case-insensitive to {\it name}.
If the given option is not present, the function returns $0$. Use If the given option is not present, the function returns $0$. Use
\helpref{wxImage::HasOption}{wximagehasoption} is $0$ is a possibly valid value \helpref{wxImage::HasOption}{wximagehasoption} is $0$ is a possibly valid value
for the option. for the option.
@@ -710,7 +721,7 @@ the user.
\wxheading{See also} \wxheading{See also}
\helpref{wxImageHandler}{wximagehandler}, \helpref{wxImageHandler}{wximagehandler},
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
@@ -779,15 +790,15 @@ Loads an image from an input stream.
\docparam{mimetype}{MIME type string (for example 'image/jpeg')} \docparam{mimetype}{MIME type string (for example 'image/jpeg')}
\docparam{index}{Index of the image to load in the case that the image file contains multiple images. \docparam{index}{Index of the image to load in the case that the image file contains multiple images.
This is only used by GIF, ICO and TIFF handlers. The default value (-1) means This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
"choose the default image" and is interpreted as the first image (index=0) by "choose the default image" and is interpreted as the first image (index=0) by
the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.} the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
\wxheading{Remarks} \wxheading{Remarks}
Depending on how wxWidgets has been configured, not all formats may be available. Depending on how wxWidgets has been configured, not all formats may be available.
Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
hotspot for loaded cursor file: hotspot for loaded cursor file:
\begin{verbatim} \begin{verbatim}
int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X); int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
@@ -887,7 +898,7 @@ Replaces the colour specified by {\it r1,g1,b1} by the colour {\it r2,g2,b2}.
\func{wxImage \&}{Rescale}{\param{int}{ width}, \param{int}{ height}} \func{wxImage \&}{Rescale}{\param{int}{ width}, \param{int}{ height}}
Changes the size of the image in-place by scaling it: after a call to this function, Changes the size of the image in-place by scaling it: after a call to this function,
the image will have the given width and height. the image will have the given width and height.
Returns the (modified) image itself. Returns the (modified) image itself.
@@ -901,11 +912,11 @@ Returns the (modified) image itself.
\func{wxImage \&}{Resize}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}} \func{wxImage \&}{Resize}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
Changes the size of the image in-place without scaling it by adding either a border Changes the size of the image in-place without scaling it by adding either a border
with the given colour or cropping as necessary. The image is pasted into a new with the given colour or cropping as necessary. The image is pasted into a new
image with the given {\it size} and background colour at the position {\it pos} image with the given {\it size} and background colour at the position {\it pos}
relative to the upper left of the new image. If {\it red = green = blue = -1} relative to the upper left of the new image. If {\it red = green = blue = -1}
then use either the current mask colour if set or find, use, and set a then use either the current mask colour if set or find, use, and set a
suitable mask colour for any newly exposed areas. suitable mask colour for any newly exposed areas.
Returns the (modified) image itself. Returns the (modified) image itself.
@@ -996,8 +1007,8 @@ true if the operation succeeded, false otherwise.
Depending on how wxWidgets has been configured, not all formats may be available. Depending on how wxWidgets has been configured, not all formats may be available.
Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the
hotspot before saving an image into a cursor file (default hotspot is in hotspot before saving an image into a cursor file (default hotspot is in
the centre of the image): the centre of the image):
\begin{verbatim} \begin{verbatim}
image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotspotX); image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotspotX);
@@ -1036,7 +1047,7 @@ scaling bitmaps in general as the only other way to scale bitmaps
is to blit a wxMemoryDC into another wxMemoryDC. is to blit a wxMemoryDC into another wxMemoryDC.
It may be mentioned that the GTK port uses this function internally It may be mentioned that the GTK port uses this function internally
to scale bitmaps when using mapping modes in wxDC. to scale bitmaps when using mapping modes in wxDC.
Example: Example:
@@ -1066,11 +1077,11 @@ Example:
\constfunc{wxImage}{Size}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}} \constfunc{wxImage}{Size}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
Returns a resized version of this image without scaling it by adding either a border Returns a resized version of this image without scaling it by adding either a border
with the given colour or cropping as necessary. The image is pasted into a new with the given colour or cropping as necessary. The image is pasted into a new
image with the given {\it size} and background colour at the position {\it pos} image with the given {\it size} and background colour at the position {\it pos}
relative to the upper left of the new image. If {\it red = green = blue = -1} relative to the upper left of the new image. If {\it red = green = blue = -1}
then use either the current mask colour if set or find, use, and set a then use either the current mask colour if set or find, use, and set a
suitable mask colour for any newly exposed areas. suitable mask colour for any newly exposed areas.
\wxheading{See also} \wxheading{See also}
@@ -1085,8 +1096,8 @@ suitable mask colour for any newly exposed areas.
This function is similar to \helpref{SetData}{wximagesetdata} and has similar This function is similar to \helpref{SetData}{wximagesetdata} and has similar
restrictions. The pointer passed to it may however be {\tt NULL} in which case restrictions. The pointer passed to it may however be {\tt NULL} in which case
the function will allocate the alpha array internally -- this is useful to add the function will allocate the alpha array internally -- this is useful to add
alpha channel data to an image which doesn't have any. If the pointer is not alpha channel data to an image which doesn't have any. If the pointer is not
{\tt NULL}, it must have one byte for each image pixel and be allocated with {\tt NULL}, it must have one byte for each image pixel and be allocated with
{\tt malloc()}. wxImage takes ownership of the pointer and will free it unless {\tt malloc()}. wxImage takes ownership of the pointer and will free it unless
\arg{static\_data} parameter is set.to \true -- in this case the caller should \arg{static\_data} parameter is set.to \true -- in this case the caller should
do it. do it.
@@ -1142,13 +1153,13 @@ Sets the mask colour for this image (and tells the image to use the mask).
Sets image's mask so that the pixels that have RGB value of {\it mr,mg,mb} Sets image's mask so that the pixels that have RGB value of {\it mr,mg,mb}
in {\it mask} will be masked in the image. This is done by first finding an in {\it mask} will be masked in the image. This is done by first finding an
unused colour in the image, setting this colour as the mask colour and then unused colour in the image, setting this colour as the mask colour and then
using this colour to draw all pixels in the image who corresponding pixel using this colour to draw all pixels in the image who corresponding pixel
in {\it mask} has given RGB value. in {\it mask} has given RGB value.
\wxheading{Return value} \wxheading{Return value}
Returns false if {\it mask} does not have same dimensions as the image or if Returns false if {\it mask} does not have same dimensions as the image or if
there is no unused colour left. Returns true if the mask was successfully there is no unused colour left. Returns true if the mask was successfully
applied. applied.
\wxheading{Notes} \wxheading{Notes}
@@ -1190,7 +1201,7 @@ wxImage to wxBitmap (MSW only at present) or in file save operations (none as ye
Sets the pixel at the given coordinate. This routine performs bounds-checks Sets the pixel at the given coordinate. This routine performs bounds-checks
for the coordinate so it can be considered a safe way to manipulate the for the coordinate so it can be considered a safe way to manipulate the
data, but in some cases this might be too slow so that the data will have to data, but in some cases this might be too slow so that the data will have to
be set directly. In that case you will have to get access to the image data be set directly. In that case you will have to get access to the image data
using the \helpref{GetData}{wximagegetdata} method. using the \helpref{GetData}{wximagegetdata} method.
@@ -1277,7 +1288,7 @@ created by IJG.)
\wxheading{See also} \wxheading{See also}
\helpref{wxImage}{wximage}, \helpref{wxImage}{wximage},
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
@@ -1316,7 +1327,7 @@ Gets the file extension associated with this handler.
\func{int}{GetImageCount}{\param{wxInputStream\&}{ stream}} \func{int}{GetImageCount}{\param{wxInputStream\&}{ stream}}
If the image file contains more than one image and the image handler is capable If the image file contains more than one image and the image handler is capable
of retrieving these individually, this function will return the number of of retrieving these individually, this function will return the number of
available images. available images.
@@ -1366,8 +1377,8 @@ true if the operation succeeded, false otherwise.
\wxheading{See also} \wxheading{See also}
\helpref{wxImage::LoadFile}{wximageloadfile}, \helpref{wxImage::LoadFile}{wximageloadfile},
\helpref{wxImage::SaveFile}{wximagesavefile}, \helpref{wxImage::SaveFile}{wximagesavefile},
\helpref{wxImageHandler::SaveFile}{wximagehandlersavefile} \helpref{wxImageHandler::SaveFile}{wximagehandlersavefile}
@@ -1389,8 +1400,8 @@ true if the operation succeeded, false otherwise.
\wxheading{See also} \wxheading{See also}
\helpref{wxImage::LoadFile}{wximageloadfile}, \helpref{wxImage::LoadFile}{wximageloadfile},
\helpref{wxImage::SaveFile}{wximagesavefile}, \helpref{wxImage::SaveFile}{wximagesavefile},
\helpref{wxImageHandler::LoadFile}{wximagehandlerloadfile} \helpref{wxImageHandler::LoadFile}{wximagehandlerloadfile}
@@ -1436,4 +1447,3 @@ Sets the handler type.
\wxheading{Parameters} \wxheading{Parameters}
\docparam{name}{Handler type.} \docparam{name}{Handler type.}

View File

@@ -438,13 +438,15 @@ WXDLLIMPEXP_BASE bool wxRemoveFile(const wxString& file);
WXDLLIMPEXP_BASE bool wxRenameFile(const wxString& file1, const wxString& file2); WXDLLIMPEXP_BASE bool wxRenameFile(const wxString& file1, const wxString& file2);
// Get current working directory. // Get current working directory.
#if WXWIN_COMPATIBILITY_2_6
// If buf is NULL, allocates space using new, else // If buf is NULL, allocates space using new, else
// copies into buf. // copies into buf.
// IMPORTANT NOTE getcwd is know not to work under some releases // IMPORTANT NOTE getcwd is know not to work under some releases
// of Win32s 1.3, according to MS release notes! // of Win32s 1.3, according to MS release notes!
WXDLLIMPEXP_BASE wxChar* wxGetWorkingDirectory(wxChar *buf = (wxChar *) NULL, int sz = 1000); wxDEPRECATED( WXDLLIMPEXP_BASE wxChar* wxGetWorkingDirectory(wxChar *buf = (wxChar *) NULL, int sz = 1000) );
// new and preferred version of wxGetWorkingDirectory // new and preferred version of wxGetWorkingDirectory
// NB: can't have the same name because of overloading ambiguity // NB: can't have the same name because of overloading ambiguity
#endif // WXWIN_COMPATIBILITY_2_6
WXDLLIMPEXP_BASE wxString wxGetCwd(); WXDLLIMPEXP_BASE wxString wxGetCwd();
// Set working directory // Set working directory

View File

@@ -276,8 +276,7 @@ wxString wxPathList::FindAbsoluteValidPath (const wxString& file)
if ( f.empty() || wxIsAbsolutePath(f) ) if ( f.empty() || wxIsAbsolutePath(f) )
return f; return f;
wxString buf; wxString buf = ::wxGetCwd();
wxGetWorkingDirectory(wxStringBuffer(buf, _MAXPATHLEN), _MAXPATHLEN);
if ( !wxEndsWithPathSeparator(buf) ) if ( !wxEndsWithPathSeparator(buf) )
{ {
@@ -365,8 +364,8 @@ void wxStripExtension(wxChar *buffer)
void wxStripExtension(wxString& buffer) void wxStripExtension(wxString& buffer)
{ {
//RN: Be careful about the handling the case where //RN: Be careful about the handling the case where
//buffer.Length() == 0 //buffer.length() == 0
for(size_t i = buffer.Length() - 1; i != wxString::npos; --i) for(size_t i = buffer.length() - 1; i != wxString::npos; --i)
{ {
if (buffer.GetChar(i) == wxT('.')) if (buffer.GetChar(i) == wxT('.'))
{ {
@@ -432,28 +431,38 @@ wxChar *wxRealPath (wxChar *path)
return path; return path;
} }
wxString wxRealPath(const wxString& path)
{
wxChar *buf1=MYcopystring(path);
wxChar *buf2=wxRealPath(buf1);
wxString buf(buf2);
delete [] buf1;
return buf;
}
// Must be destroyed // Must be destroyed
wxChar *wxCopyAbsolutePath(const wxString& filename) wxChar *wxCopyAbsolutePath(const wxString& filename)
{ {
if (filename.empty()) if (filename.empty())
return (wxChar *) NULL; return (wxChar *) NULL;
if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) { if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename)))
wxChar buf[_MAXPATHLEN]; {
buf[0] = wxT('\0'); wxString buf = ::wxGetCwd();
wxGetWorkingDirectory(buf, WXSIZEOF(buf)); wxChar ch = buf.Last();
wxChar ch = buf[wxStrlen(buf) - 1];
#ifdef __WXMSW__ #ifdef __WXMSW__
if (ch != wxT('\\') && ch != wxT('/')) if (ch != wxT('\\') && ch != wxT('/'))
wxStrcat(buf, wxT("\\")); buf << wxT("\\");
#else #else
if (ch != wxT('/')) if (ch != wxT('/'))
wxStrcat(buf, wxT("/")); buf << wxT("/");
#endif #endif
wxStrcat(buf, wxFileFunctionsBuffer); buf << wxFileFunctionsBuffer;
return MYcopystring( wxRealPath(buf) ); buf = wxRealPath( buf );
} return MYcopystring( buf );
return MYcopystring( wxFileFunctionsBuffer ); }
return MYcopystring( wxFileFunctionsBuffer );
} }
/*- /*-
@@ -790,7 +799,7 @@ wxString wxPathOnly (const wxString& path)
// Local copy // Local copy
wxStrcpy (buf, WXSTRINGCAST path); wxStrcpy (buf, WXSTRINGCAST path);
int l = path.Length(); int l = path.length();
int i = l - 1; int i = l - 1;
// Search backward for a backward or forward slash // Search backward for a backward or forward slash
@@ -1331,17 +1340,21 @@ wxString wxFindNextFile()
// Get current working directory. // Get current working directory.
// If buf is NULL, allocates space using new, else // If buf is NULL, allocates space using new, else copies into buf.
// copies into buf. // wxGetWorkingDirectory() is obsolete, use wxGetCwd()
wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) // wxDoGetCwd() is their common core to be moved
// to wxGetCwd() once wxGetWorkingDirectory() will be removed.
// Do not expose wxDoGetCwd in headers!
wxChar *wxDoGetCwd(wxChar *buf, int sz)
{ {
#if defined(__WXPALMOS__) #if defined(__WXPALMOS__)
// TODO ? // TODO
if(buf && sz>0) buf[0] = _T('\0');
return NULL; return NULL;
#elif defined(__WXWINCE__) #elif defined(__WXWINCE__)
// TODO // TODO
wxUnusedVar(buf); if(buf && sz>0) buf[0] = _T('\0');
wxUnusedVar(sz);
return NULL; return NULL;
#else #else
if ( !buf ) if ( !buf )
@@ -1464,13 +1477,17 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
// __WXWINCE__ // __WXWINCE__
} }
#if WXWIN_COMPATIBILITY_2_6
wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
{
return wxDoGetCwd(buf,sz);
}
#endif // WXWIN_COMPATIBILITY_2_6
wxString wxGetCwd() wxString wxGetCwd()
{ {
wxChar *buffer = new wxChar[_MAXPATHLEN]; wxString str;
wxGetWorkingDirectory(buffer, _MAXPATHLEN); wxDoGetCwd(wxStringBuffer(str, _MAXPATHLEN), _MAXPATHLEN);
wxString str( buffer );
delete [] buffer;
return str; return str;
} }

View File

@@ -238,9 +238,7 @@ bool wxExtHelpController::LoadFile(const wxString& ifile)
file = ifile; file = ifile;
if(! wxIsAbsolutePath(file)) if(! wxIsAbsolutePath(file))
{ {
wxChar* f = wxGetWorkingDirectory(); file = wxGetCwd();
file = f;
delete[] f; // wxGetWorkingDirectory returns new memory
#ifdef __WXMAC__ #ifdef __WXMAC__
file << ifile; file << ifile;
#else #else
@@ -348,7 +346,7 @@ wxExtHelpController::DisplayContents()
file << m_MapFile << WXEXTHELP_SEPARATOR << contents; file << m_MapFile << WXEXTHELP_SEPARATOR << contents;
if(file.Contains(wxT('#'))) if(file.Contains(wxT('#')))
file = file.BeforeLast(wxT('#')); file = file.BeforeLast(wxT('#'));
if(contents.Length() && wxFileExists(file)) if(contents.length() && wxFileExists(file))
rc = DisplaySection(CONTENTS_ID); rc = DisplaySection(CONTENTS_ID);
// if not found, open homemade toc: // if not found, open homemade toc:
@@ -466,4 +464,3 @@ void wxExtHelpController::OnQuit()
#endif // wxUSE_HELP #endif // wxUSE_HELP

View File

@@ -5146,200 +5146,197 @@ bool RTFOnArgument(int macroId, int arg_no, bool start)
bool RTFGo(void) bool RTFGo(void)
{ {
if (stopRunning)
return false;
// Reset variables
indentLevel = 0;
forbidParindent = 0;
contentsLineSection = NULL;
contentsLineValue = NULL;
descriptionItemArg = NULL;
inTabular = false;
inTable = false;
inFigure = false;
startRows = false;
tableVerticalLineLeft = false;
tableVerticalLineRight = false;
noColumns = 0;
startedSections = false;
inVerbatim = false;
browseId = 0;
if (!InputFile.empty() && !OutputFile.empty())
{
// Do some RTF-specific transformations on all the strings,
// recursively
Text2RTF(GetTopLevelChunk());
Contents = wxFopen(TmpContentsName, _T("w"));
Chapters = wxFopen(_T("chapters.rtf"), _T("w"));
if (winHelp)
{
Sections = wxFopen(_T("sections.rtf"), _T("w"));
Subsections = wxFopen(_T("subsections.rtf"), _T("w"));
Subsubsections = wxFopen(_T("subsubsections.rtf"), _T("w"));
Popups = wxFopen(_T("popups.rtf"), _T("w"));
if (winHelpContents)
{
WinHelpContentsFile = wxFopen(WinHelpContentsFileName, _T("w"));
if (WinHelpContentsFile)
wxFprintf(WinHelpContentsFile, _T(":Base %s.hlp\n"), wxFileNameFromPath(FileRoot));
}
if (!Sections || !Subsections || !Subsubsections || !Popups || (winHelpContents && !WinHelpContentsFile))
{
OnError(_T("Ouch! Could not open temporary file(s) for writing."));
return false;
}
}
if (!Contents || !Chapters)
{
OnError(_T("Ouch! Could not open temporary file(s) for writing."));
return false;
}
if (winHelp)
{
wxFprintf(Chapters, _T("\n#{\\footnote Contents}\n"));
wxFprintf(Chapters, _T("${\\footnote Contents}\n"));
wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
wxFprintf(Chapters, _T("K{\\footnote {K} %s}\n"), ContentsNameString);
wxFprintf(Chapters, _T("!{\\footnote DisableButton(\"Up\")}\n"));
}
if (!winHelp)
{
wxFprintf(Chapters, _T("\\titlepg\n"));
wxFprintf(Contents, _T("\\par\\pard\\pgnrestart\\sect\\titlepg"));
}
// In WinHelp, Contents title takes font of title.
// In linear RTF, same as chapter headings.
wxFprintf(Contents, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"),
(winHelp ? titleFont : chapterFont)*2, ContentsNameString);
// By default, Swiss, 11 point.
wxFprintf(Chapters, _T("\\f2\\fs22\n"));
PushEnvironmentStyle(_T("\\f2\\fs22\\sa200"));
SetCurrentOutput(Chapters);
if (stopRunning) if (stopRunning)
return false; return false;
OnInform(_T("Converting...")); // Reset variables
indentLevel = 0;
forbidParindent = 0;
contentsLineSection = NULL;
contentsLineValue = NULL;
descriptionItemArg = NULL;
inTabular = false;
inTable = false;
inFigure = false;
startRows = false;
tableVerticalLineLeft = false;
tableVerticalLineRight = false;
noColumns = 0;
startedSections = false;
inVerbatim = false;
browseId = 0;
TraverseDocument(); if (!InputFile.empty() && !OutputFile.empty())
FILE *Header = wxFopen(_T("header.rtf"), _T("w"));
if (!Header)
{ {
OnError(_T("Ouch! Could not open temporary file header.rtf for writing.")); // Do some RTF-specific transformations on all the strings,
return false; // recursively
Text2RTF(GetTopLevelChunk());
Contents = wxFopen(TmpContentsName, _T("w"));
Chapters = wxFopen(_T("chapters.rtf"), _T("w"));
if (winHelp)
{
Sections = wxFopen(_T("sections.rtf"), _T("w"));
Subsections = wxFopen(_T("subsections.rtf"), _T("w"));
Subsubsections = wxFopen(_T("subsubsections.rtf"), _T("w"));
Popups = wxFopen(_T("popups.rtf"), _T("w"));
if (winHelpContents)
{
WinHelpContentsFile = wxFopen(WinHelpContentsFileName, _T("w"));
if (WinHelpContentsFile)
wxFprintf(WinHelpContentsFile, _T(":Base %s.hlp\n"), wxFileNameFromPath(FileRoot));
}
if (!Sections || !Subsections || !Subsubsections || !Popups || (winHelpContents && !WinHelpContentsFile))
{
OnError(_T("Ouch! Could not open temporary file(s) for writing."));
return false;
}
}
if (!Contents || !Chapters)
{
OnError(_T("Ouch! Could not open temporary file(s) for writing."));
return false;
}
if (winHelp)
{
wxFprintf(Chapters, _T("\n#{\\footnote Contents}\n"));
wxFprintf(Chapters, _T("${\\footnote Contents}\n"));
wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
wxFprintf(Chapters, _T("K{\\footnote {K} %s}\n"), ContentsNameString);
wxFprintf(Chapters, _T("!{\\footnote DisableButton(\"Up\")}\n"));
}
if (!winHelp)
{
wxFprintf(Chapters, _T("\\titlepg\n"));
wxFprintf(Contents, _T("\\par\\pard\\pgnrestart\\sect\\titlepg"));
}
// In WinHelp, Contents title takes font of title.
// In linear RTF, same as chapter headings.
wxFprintf(Contents, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"),
(winHelp ? titleFont : chapterFont)*2, ContentsNameString);
// By default, Swiss, 11 point.
wxFprintf(Chapters, _T("\\f2\\fs22\n"));
PushEnvironmentStyle(_T("\\f2\\fs22\\sa200"));
SetCurrentOutput(Chapters);
if (stopRunning)
return false;
OnInform(_T("Converting..."));
TraverseDocument();
FILE *Header = wxFopen(_T("header.rtf"), _T("w"));
if (!Header)
{
OnError(_T("Ouch! Could not open temporary file header.rtf for writing."));
return false;
}
WriteRTFHeader(Header);
fclose(Header);
PopEnvironmentStyle();
Tex2RTFYield(true);
if (winHelp)
{
// wxFprintf(Contents, _T("\\page\n"));
wxFprintf(Chapters, _T("\\page\n"));
wxFprintf(Sections, _T("\\page\n"));
wxFprintf(Subsections, _T("\\page\n"));
wxFprintf(Subsubsections, _T("\\page\n\n"));
wxFprintf(Popups, _T("\\page\n}\n"));
}
// TexOutput(_T("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n"));
if (!winHelp)
TexOutput(_T("}\n"));
fclose(Contents); Contents = NULL;
fclose(Chapters); Chapters = NULL;
if (winHelp)
{
fclose(Sections); Sections = NULL;
fclose(Subsections); Subsections = NULL;
fclose(Subsubsections); Subsubsections = NULL;
fclose(Popups); Popups = NULL;
if (winHelpContents)
{
fclose(WinHelpContentsFile); WinHelpContentsFile = NULL;
}
}
if (winHelp)
{
wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp1.rtf"), _T("sections.rtf"), _T("tmp2.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp2.rtf"), _T("subsections.rtf"), _T("tmp3.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp3.rtf"), _T("subsubsections.rtf"), _T("tmp4.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp4.rtf"), _T("popups.rtf"), OutputFile);
Tex2RTFYield(true);
wxRemoveFile(_T("tmp1.rtf"));
wxRemoveFile(_T("tmp2.rtf"));
wxRemoveFile(_T("tmp3.rtf"));
wxRemoveFile(_T("tmp4.rtf"));
}
else
{
wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
Tex2RTFYield(true);
if (wxFileExists(OutputFile))
wxRemoveFile(OutputFile);
wxString cwdStr = wxGetCwd();
wxString outputDirStr = wxPathOnly(OutputFile);
// Determine if the temp file and the output file are in the same directory,
// and if they are, then just rename the temp file rather than copying
// it, as this is much faster when working with large (multi-megabyte files)
if ((outputDirStr.empty()) || // no path specified on output file
(cwdStr != outputDirStr)) // paths do not match
{
wxRenameFile(_T("tmp1.rtf"), OutputFile);
}
else
{
wxCopyFile(_T("tmp1.rtf"), OutputFile);
}
Tex2RTFYield(true);
wxRemoveFile(_T("tmp1.rtf"));
}
if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);
if (!wxRenameFile(TmpContentsName, ContentsName))
{
wxCopyFile(TmpContentsName, ContentsName);
wxRemoveFile(TmpContentsName);
}
wxRemoveFile(_T("chapters.rtf"));
wxRemoveFile(_T("header.rtf"));
if (winHelp)
{
wxRemoveFile(_T("sections.rtf"));
wxRemoveFile(_T("subsections.rtf"));
wxRemoveFile(_T("subsubsections.rtf"));
wxRemoveFile(_T("popups.rtf"));
}
if (winHelp && generateHPJ)
WriteHPJ(OutputFile);
return true;
} }
WriteRTFHeader(Header); return false;
fclose(Header);
PopEnvironmentStyle();
Tex2RTFYield(true);
if (winHelp)
{
// wxFprintf(Contents, _T("\\page\n"));
wxFprintf(Chapters, _T("\\page\n"));
wxFprintf(Sections, _T("\\page\n"));
wxFprintf(Subsections, _T("\\page\n"));
wxFprintf(Subsubsections, _T("\\page\n\n"));
wxFprintf(Popups, _T("\\page\n}\n"));
}
// TexOutput(_T("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n"));
if (!winHelp)
TexOutput(_T("}\n"));
fclose(Contents); Contents = NULL;
fclose(Chapters); Chapters = NULL;
if (winHelp)
{
fclose(Sections); Sections = NULL;
fclose(Subsections); Subsections = NULL;
fclose(Subsubsections); Subsubsections = NULL;
fclose(Popups); Popups = NULL;
if (winHelpContents)
{
fclose(WinHelpContentsFile); WinHelpContentsFile = NULL;
}
}
if (winHelp)
{
wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp1.rtf"), _T("sections.rtf"), _T("tmp2.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp2.rtf"), _T("subsections.rtf"), _T("tmp3.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp3.rtf"), _T("subsubsections.rtf"), _T("tmp4.rtf"));
Tex2RTFYield(true);
wxConcatFiles(_T("tmp4.rtf"), _T("popups.rtf"), OutputFile);
Tex2RTFYield(true);
wxRemoveFile(_T("tmp1.rtf"));
wxRemoveFile(_T("tmp2.rtf"));
wxRemoveFile(_T("tmp3.rtf"));
wxRemoveFile(_T("tmp4.rtf"));
}
else
{
wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
Tex2RTFYield(true);
if (wxFileExists(OutputFile))
wxRemoveFile(OutputFile);
wxChar *cwdStr;
cwdStr = wxGetWorkingDirectory();
wxString outputDirStr;
outputDirStr = wxPathOnly(OutputFile);
// Determine if the temp file and the output file are in the same directory,
// and if they are, then just rename the temp file rather than copying
// it, as this is much faster when working with large (multi-megabyte files)
if ((wxStrcmp(outputDirStr.c_str(),_T("")) == 0) || // no path specified on output file
(wxStrcmp(cwdStr,outputDirStr.c_str()) == 0)) // paths do not match
{
wxRenameFile(_T("tmp1.rtf"), OutputFile);
}
else
{
wxCopyFile(_T("tmp1.rtf"), OutputFile);
}
delete [] cwdStr;
Tex2RTFYield(true);
wxRemoveFile(_T("tmp1.rtf"));
}
if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);
if (!wxRenameFile(TmpContentsName, ContentsName))
{
wxCopyFile(TmpContentsName, ContentsName);
wxRemoveFile(TmpContentsName);
}
wxRemoveFile(_T("chapters.rtf"));
wxRemoveFile(_T("header.rtf"));
if (winHelp)
{
wxRemoveFile(_T("sections.rtf"));
wxRemoveFile(_T("subsections.rtf"));
wxRemoveFile(_T("subsubsections.rtf"));
wxRemoveFile(_T("popups.rtf"));
}
if (winHelp && generateHPJ)
WriteHPJ(OutputFile);
return true;
}
return false;
} }