From ce045aed585af0f00b72f1cdba893b47ac2e0e55 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Mon, 7 Nov 2005 13:27:09 +0000 Subject: [PATCH] wxGetWorkingDirectory() deprecated. Fixed #1338966. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + docs/latex/wx/function.tex | 34 ++-- docs/latex/wx/image.tex | 108 ++++++----- include/wx/filefn.h | 4 +- src/common/filefn.cpp | 79 +++++--- src/generic/helpext.cpp | 7 +- utils/tex2rtf/src/rtfutils.cpp | 343 ++++++++++++++++----------------- 7 files changed, 305 insertions(+), 271 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 7ab2fe790b..8ee50ea1a7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -8,6 +8,7 @@ wxWidgets Change Log - For more verbose changes, see the manual All: - wxLaunchDefaultBrowser() now supports wxBROWSER_NEW_WINDOW flag +- wxGetWorkingDirectory() deprecated. Use wxGetCwd() instead. All (GUI): diff --git a/docs/latex/wx/function.tex b/docs/latex/wx/function.tex index 29398496a8..a60ff273fe 100644 --- a/docs/latex/wx/function.tex +++ b/docs/latex/wx/function.tex @@ -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} \setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% \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}} -{\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 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 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 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 plural form. If no message catalog is found \arg{str} is returned if `n == 1', 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 see the \helpref{wxPLURAL()}{wxplural} macro. Both versions call \helpref{wxLocale::GetString}{wxlocalegetstring}. 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 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. @@ -1596,12 +1607,12 @@ no substring matching is done. \param{const wxString\& }{delims = wxDEFAULT\_DELIMITERS},\\ \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 found in the given \arg{str} in an array. -Please see -\helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer} +Please see +\helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer} 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\_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. \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$}} -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 (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 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 -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}. Example: @@ -4472,4 +4483,3 @@ Removes the variable {\it var} from the environment. function. Returns \true on success. - diff --git a/docs/latex/wx/image.tex b/docs/latex/wx/image.tex index ccec15b3e8..181a074db6 100644 --- a/docs/latex/wx/image.tex +++ b/docs/latex/wx/image.tex @@ -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} 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 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 -the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor. +the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor. This bitmap can then 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$ 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 an alpha channel with \helpref{HasAlpha}{wximagehasalpha}. Note that currently only 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 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}. \twocolwidtha{5cm}% @@ -70,7 +81,7 @@ PNM format, {\bf wxPNMHandler} will always save as raw RGB. \wxheading{See also} -\helpref{wxBitmap}{wxbitmap}, +\helpref{wxBitmap}{wxbitmap}, \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} \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}} -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 image data in its destructor, otherwise it will free it by calling {\it free()}. @@ -152,8 +163,8 @@ Creates an image from XPM data. \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. -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 +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 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.} @@ -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. 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}. -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: \begin{verbatim} 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}} -Computes the histogram of the image. {\it histogram} is a reference to -wxImageHistogram object. wxImageHistogram is a specialization of +Computes the histogram of the image. {\it histogram} is a reference to +wxImageHistogram object. wxImageHistogram is a specialization of \helpref{wxHashMap}{wxhashmap} "template" and is defined as follows: \begin{verbatim} @@ -282,7 +293,7 @@ ConvertAlphaToMask does nothing. \wxheading{Return value} -\false if FindFirstUnusedColour returns \false, \true otherwise. +\false if FindFirstUnusedColour returns \false, \true otherwise. \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}} 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. @@ -410,7 +421,7 @@ It is usually a good idea to prepend a description before passing the result to Example: \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} \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}} -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 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}} -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. @@ -574,7 +585,7 @@ Returns the red intensity at the given coordinate. \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. @@ -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}. -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 for the option. @@ -710,7 +721,7 @@ the user. \wxheading{See also} -\helpref{wxImageHandler}{wximagehandler}, +\helpref{wxImageHandler}{wximagehandler}, \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} @@ -779,15 +790,15 @@ Loads an image from an input stream. \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. -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 +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 the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.} \wxheading{Remarks} 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: \begin{verbatim} 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}} -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. 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}} -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 -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} -then use either the current mask colour if set or find, use, and set a +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 +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} +then use either the current mask colour if set or find, use, and set a suitable mask colour for any newly exposed areas. 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. -Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the -hotspot before saving an image into a cursor file (default hotspot is in +Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the +hotspot before saving an image into a cursor file (default hotspot is in the centre of the image): \begin{verbatim} 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. 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: @@ -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}} -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 -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} -then use either the current mask colour if set or find, use, and set a +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 +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} +then use either the current mask colour if set or find, use, and set a suitable mask colour for any newly exposed areas. \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 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 -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 +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 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 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} 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 -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. \wxheading{Return value} 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. \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 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 -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. @@ -1277,7 +1288,7 @@ created by IJG.) \wxheading{See also} -\helpref{wxImage}{wximage}, +\helpref{wxImage}{wximage}, \helpref{wxInitAllImageHandlers}{wxinitallimagehandlers} \latexignore{\rtfignore{\wxheading{Members}}} @@ -1316,7 +1327,7 @@ Gets the file extension associated with this handler. \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 available images. @@ -1366,8 +1377,8 @@ true if the operation succeeded, false otherwise. \wxheading{See also} -\helpref{wxImage::LoadFile}{wximageloadfile}, -\helpref{wxImage::SaveFile}{wximagesavefile}, +\helpref{wxImage::LoadFile}{wximageloadfile}, +\helpref{wxImage::SaveFile}{wximagesavefile}, \helpref{wxImageHandler::SaveFile}{wximagehandlersavefile} @@ -1389,8 +1400,8 @@ true if the operation succeeded, false otherwise. \wxheading{See also} -\helpref{wxImage::LoadFile}{wximageloadfile}, -\helpref{wxImage::SaveFile}{wximagesavefile}, +\helpref{wxImage::LoadFile}{wximageloadfile}, +\helpref{wxImage::SaveFile}{wximagesavefile}, \helpref{wxImageHandler::LoadFile}{wximagehandlerloadfile} @@ -1436,4 +1447,3 @@ Sets the handler type. \wxheading{Parameters} \docparam{name}{Handler type.} - diff --git a/include/wx/filefn.h b/include/wx/filefn.h index 71f1ca14a6..8995c44d1c 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -438,13 +438,15 @@ WXDLLIMPEXP_BASE bool wxRemoveFile(const wxString& file); WXDLLIMPEXP_BASE bool wxRenameFile(const wxString& file1, const wxString& file2); // Get current working directory. +#if WXWIN_COMPATIBILITY_2_6 // If buf is NULL, allocates space using new, else // copies into buf. // IMPORTANT NOTE getcwd is know not to work under some releases // 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 // NB: can't have the same name because of overloading ambiguity +#endif // WXWIN_COMPATIBILITY_2_6 WXDLLIMPEXP_BASE wxString wxGetCwd(); // Set working directory diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp index 0a52525ad6..cb433eb7e4 100644 --- a/src/common/filefn.cpp +++ b/src/common/filefn.cpp @@ -276,8 +276,7 @@ wxString wxPathList::FindAbsoluteValidPath (const wxString& file) if ( f.empty() || wxIsAbsolutePath(f) ) return f; - wxString buf; - wxGetWorkingDirectory(wxStringBuffer(buf, _MAXPATHLEN), _MAXPATHLEN); + wxString buf = ::wxGetCwd(); if ( !wxEndsWithPathSeparator(buf) ) { @@ -365,8 +364,8 @@ void wxStripExtension(wxChar *buffer) void wxStripExtension(wxString& buffer) { //RN: Be careful about the handling the case where - //buffer.Length() == 0 - for(size_t i = buffer.Length() - 1; i != wxString::npos; --i) + //buffer.length() == 0 + for(size_t i = buffer.length() - 1; i != wxString::npos; --i) { if (buffer.GetChar(i) == wxT('.')) { @@ -432,28 +431,38 @@ wxChar *wxRealPath (wxChar *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 wxChar *wxCopyAbsolutePath(const wxString& filename) { - if (filename.empty()) - return (wxChar *) NULL; + if (filename.empty()) + return (wxChar *) NULL; - if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) { - wxChar buf[_MAXPATHLEN]; - buf[0] = wxT('\0'); - wxGetWorkingDirectory(buf, WXSIZEOF(buf)); - wxChar ch = buf[wxStrlen(buf) - 1]; + if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) + { + wxString buf = ::wxGetCwd(); + wxChar ch = buf.Last(); #ifdef __WXMSW__ - if (ch != wxT('\\') && ch != wxT('/')) - wxStrcat(buf, wxT("\\")); + if (ch != wxT('\\') && ch != wxT('/')) + buf << wxT("\\"); #else - if (ch != wxT('/')) - wxStrcat(buf, wxT("/")); + if (ch != wxT('/')) + buf << wxT("/"); #endif - wxStrcat(buf, wxFileFunctionsBuffer); - return MYcopystring( wxRealPath(buf) ); - } - return MYcopystring( wxFileFunctionsBuffer ); + buf << wxFileFunctionsBuffer; + buf = wxRealPath( buf ); + return MYcopystring( buf ); + } + return MYcopystring( wxFileFunctionsBuffer ); } /*- @@ -790,7 +799,7 @@ wxString wxPathOnly (const wxString& path) // Local copy wxStrcpy (buf, WXSTRINGCAST path); - int l = path.Length(); + int l = path.length(); int i = l - 1; // Search backward for a backward or forward slash @@ -1331,17 +1340,21 @@ wxString wxFindNextFile() // Get current working directory. -// If buf is NULL, allocates space using new, else -// copies into buf. -wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) +// If buf is NULL, allocates space using new, else copies into buf. +// wxGetWorkingDirectory() is obsolete, use wxGetCwd() +// 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__) - // TODO ? + // TODO + if(buf && sz>0) buf[0] = _T('\0'); return NULL; #elif defined(__WXWINCE__) // TODO - wxUnusedVar(buf); - wxUnusedVar(sz); + if(buf && sz>0) buf[0] = _T('\0'); return NULL; #else if ( !buf ) @@ -1464,13 +1477,17 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) // __WXWINCE__ } -wxString wxGetCwd() +#if WXWIN_COMPATIBILITY_2_6 +wxChar *wxGetWorkingDirectory(wxChar *buf, int sz) { - wxChar *buffer = new wxChar[_MAXPATHLEN]; - wxGetWorkingDirectory(buffer, _MAXPATHLEN); - wxString str( buffer ); - delete [] buffer; + return wxDoGetCwd(buf,sz); +} +#endif // WXWIN_COMPATIBILITY_2_6 +wxString wxGetCwd() +{ + wxString str; + wxDoGetCwd(wxStringBuffer(str, _MAXPATHLEN), _MAXPATHLEN); return str; } diff --git a/src/generic/helpext.cpp b/src/generic/helpext.cpp index 85f001ff41..39c9f93735 100644 --- a/src/generic/helpext.cpp +++ b/src/generic/helpext.cpp @@ -238,9 +238,7 @@ bool wxExtHelpController::LoadFile(const wxString& ifile) file = ifile; if(! wxIsAbsolutePath(file)) { - wxChar* f = wxGetWorkingDirectory(); - file = f; - delete[] f; // wxGetWorkingDirectory returns new memory + file = wxGetCwd(); #ifdef __WXMAC__ file << ifile; #else @@ -348,7 +346,7 @@ wxExtHelpController::DisplayContents() file << m_MapFile << WXEXTHELP_SEPARATOR << contents; if(file.Contains(wxT('#'))) file = file.BeforeLast(wxT('#')); - if(contents.Length() && wxFileExists(file)) + if(contents.length() && wxFileExists(file)) rc = DisplaySection(CONTENTS_ID); // if not found, open homemade toc: @@ -466,4 +464,3 @@ void wxExtHelpController::OnQuit() #endif // wxUSE_HELP - diff --git a/utils/tex2rtf/src/rtfutils.cpp b/utils/tex2rtf/src/rtfutils.cpp index 5b0b638651..6dc426cdba 100644 --- a/utils/tex2rtf/src/rtfutils.cpp +++ b/utils/tex2rtf/src/rtfutils.cpp @@ -5146,200 +5146,197 @@ bool RTFOnArgument(int macroId, int arg_no, bool start) bool RTFGo(void) { - if (stopRunning) - return false; + 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)); - } + // 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 (!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")); - } + 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); + // 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")); + // By default, Swiss, 11 point. + wxFprintf(Chapters, _T("\\f2\\fs22\n")); - PushEnvironmentStyle(_T("\\f2\\fs22\\sa200")); + PushEnvironmentStyle(_T("\\f2\\fs22\\sa200")); - SetCurrentOutput(Chapters); + SetCurrentOutput(Chapters); - if (stopRunning) - return false; + if (stopRunning) + return false; - OnInform(_T("Converting...")); + OnInform(_T("Converting...")); - TraverseDocument(); + 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); + 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(); + 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")); - } + 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; - } - } +// 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); + 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 cwdStr = wxGetCwd(); - wxString outputDirStr; - outputDirStr = wxPathOnly(OutputFile); + 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 ((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")); - } + // 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 (wxFileExists(ContentsName)) wxRemoveFile(ContentsName); - if (!wxRenameFile(TmpContentsName, ContentsName)) - { - wxCopyFile(TmpContentsName, ContentsName); - wxRemoveFile(TmpContentsName); - } + if (!wxRenameFile(TmpContentsName, ContentsName)) + { + wxCopyFile(TmpContentsName, ContentsName); + wxRemoveFile(TmpContentsName); + } - wxRemoveFile(_T("chapters.rtf")); - wxRemoveFile(_T("header.rtf")); + 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) + { + wxRemoveFile(_T("sections.rtf")); + wxRemoveFile(_T("subsections.rtf")); + wxRemoveFile(_T("subsubsections.rtf")); + wxRemoveFile(_T("popups.rtf")); + } + if (winHelp && generateHPJ) + WriteHPJ(OutputFile); + return true; } - if (winHelp && generateHPJ) - WriteHPJ(OutputFile); - return true; - } - return false; + return false; } -- 2.45.2