\helpref{wxApp::SetClassName}{wxappsetclassname}
-\membersection{wxApp::GetExitOnDelete}\label{wxappgetexitondelete}
+\membersection{wxApp::GetExitOnFrameDelete}\label{wxappgetexitonframedelete}
-\constfunc{bool}{GetExitOnDelete}{\void}
+\constfunc{bool}{GetExitFrameOnDelete}{\void}
Returns TRUE if the application will exit when the top-level window is deleted, FALSE
otherwise.
\wxheading{See also}
-\helpref{wxApp::SetExitOnDelete}{wxappsetexitondelete}
+\helpref{wxApp::SetExitOnFrameDelete}{wxappsetexitonframedelete}
\membersection{wxApp::GetTopWindow}\label{wxappgettopwindow}
\func{bool}{Pending}{\void}
-Returns TRUE if unprocessed events are in the window system event queue
-(MS Windows and Motif).
+Returns TRUE if unprocessed events are in the window system event queue.
\wxheading{See also}
\helpref{wxApp::GetClassName}{wxappgetclassname}
-\membersection{wxApp::SetExitOnDelete}\label{wxappsetexitondelete}
+\membersection{wxApp::SetExitOnFrameDelete}\label{wxappsetexitonframedelete}
-\func{void}{SetExitOnDelete}{\param{bool}{ flag}}
+\func{void}{SetExitOnFrameDelete}{\param{bool}{ flag}}
Allows the programmer to specify whether the application will exit when the
top-level frame is deleted.
\docparam{flag}{If TRUE (the default), the application will exit when the top-level frame is
deleted. If FALSE, the application will continue to run.}
-\wxheading{Remarks}
-
-Currently, setting this to FALSE only has an effect under Windows.
-
\membersection{wxApp::SetTopWindow}\label{wxappsettopwindow}
\func{void}{SetTopWindow}{\param{wxWindow* }{window}}
Please note that the easiest way to use drag and drop and the clipboard with
multiple formats is by using wxDataObjectComposite, but it is not the most
efficient one as each wxDataObjectSimple would contain the whole data in its
-respective formars. Now imagine that you want to paste 200 pages of text in
+respective formats. Now imagine that you want to paste 200 pages of text in
your proprietary format, as well as Word, RTF, HTML, Unicode and plain text to
the clipboard and even today's computers are in trouble. For this case, you
will have to derive from wxDataObject directly and make it enumerate its
formats and provide the data in the requested format on demand.
Note that neither the GTK data transfer mechanisms for the clipboard and
-drag and drop, neither does the OLE data transfer copy any data until another application
+drag and drop, nor the OLE data transfer copy any data until another application
actually requests the data. This is in contrast to the 'feel' offered to the
user of a program who would normally think that the data resides in the
clipboard after having pressed 'Copy' - in reality it is only declared to be
\wxheading{Derived from}
-\helpref{wxObject}{wxobject}
+None
\wxheading{Include files}
{\small\begin{verbatim}
enum wxDragResult
- {
+{
wxDragError, // error prevented the d&d operation from completing
wxDragNone, // drag target didn't accept the data
wxDragCopy, // the data was successfully copied
wxDragMove, // the data was successfully moved
wxDragCancel // the operation was cancelled by user (not an error)
- };
-\end{verbatim}%
+};
+\end{verbatim}
}
\wxheading{See also}
\func{}{wxDropSource}{\param{wxWindow*}{ win = NULL}}
Default/wxGTK-specific constructor. If you use the default constructor you must
-call \helpref{wxDropSource::SetData}{wxdropsourcesetdata} later.
+call \helpref{SetData}{wxdropsourcesetdata} later.
-{\it win} is required by wxGTK and therefore should always be set.
+Note that {\it win} is required by the GTK port and therefore should always be set.
\membersection{wxDropSource::\destruct{wxDropSource}}\label{wxdropsourcedtor}
\func{void}{SetData}{\param{wxDataObject\&}{ data}}
-Sets the data \helpref{data object}{wxdataobject} associated with the drop source.
+Sets the data \helpref{wxDataObject}{wxdataobject} associated with the
+drop source. This will not delete any previously associated data.
\membersection{wxDropSource::DoDragDrop}\label{wxdropsourcedodragdrop}
\overview{Overview}{wxdndoverview}
-This class represents a target for a drag and drop operation.
+This class represents a target for a drag and drop operation. A \helpref{wxDataObject}{wxdataobject}
+can be associated with it and by default, this object will be filled with the data from the
+drag source, if the data formats supported by the data object match the drag source data
+format.
+
+There are various virtual handler functions defined in this class which may be overridden
+to give visual feedback or react in a more fine-tuned way, e.g. by not accepting data on
+the whole window area, but only a small portion of it. The normal sequence of calls is
+\helpref{OnEnter}{wxdroptargetonenter}, possibly many times \helpref{OnDragOver}{wxdroptargetondragover},
+\helpref{OnDrop}{wxdroptargetondrop} and finally \helpref{OnData}{wxdroptargetondata}.
\wxheading{Derived from}
-\helpref{wxObject}{wxobject}
+None
\wxheading{Include files}
<wx/dnd.h>
+\wxheading{Types}
+
+\index{wxDragResult}wxDragResult is defined as follows:
+
+{\small\begin{verbatim}
+enum wxDragResult
+{
+ wxDragError, // error prevented the d&d operation from completing
+ wxDragNone, // drag target didn't accept the data
+ wxDragCopy, // the data was successfully copied
+ wxDragMove, // the data was successfully moved
+ wxDragCancel // the operation was cancelled by user (not an error)
+};
+\end{verbatim}
+}
+
\wxheading{See also}
\helpref{Drag and drop overview}{wxdndoverview}, \helpref{wxDropSource}{wxdropsource},
-\helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget}
+\helpref{wxTextDropTarget}{wxtextdroptarget}, \helpref{wxFileDropTarget}{wxfiledroptarget},
+\helpref{wxDataFormat}{wxdataformat}, \helpref{wxDataObject}{wxdataobject}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxDropTarget::wxDropTarget}\label{wxdroptargetwxdroptarget}
-\func{}{wxDropTarget}{\void}
+\func{}{wxDropTarget}{\param{wxDataObject*}{ data = NULL}}
-Constructor.
+Constructor. {\it data} is the data to be associated with the drop target.
\membersection{wxDropTarget::\destruct{wxDropTarget}}\label{wxdroptargetdtor}
\func{}{\destruct{wxDropTarget}}{\void}
-Destructor.
-
-\membersection{wxDropTarget::GetFormatCount}\label{wxdroptargetgetformatcount}
+Destructor. Deletes the associated data object, if any.
-\constfunc{virtual size\_t}{GetFormatCount}{\void}
+\membersection{wxDropTarget::GetData}\label{wxdroptargetgetdata}
-Override this to indicate how many formats you support.
+\func{virtual void}{GetData}{\void}
-\membersection{wxDropTarget::GetFormat}\label{wxdroptargetgetformat}
-
-\constfunc{virtual wxDataFormat}{GetFormat}{\param{size\_t }{n}}
-
-Override this to indicate what kind of data you support.
+This method may only be called from within \helpref{OnData}{wxdroptargetondata}.
+By default, this method copies the data from the drop source to the
+\helpref{wxDataObject}{wxdataobject} associated with this drop target,
+calling its \helpref{wxDataObject::SetData}{wxdataobjectsetdata} method.
\membersection{wxDropTarget::OnData}\label{wxdroptargetondata}
\func{virtual wxDragResult}{OnData}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxDragResult}{ def}}
-Called after OnDrop() returns TRUE: you will usually just call
-GetData() from here and, probably, also refresh something to update the
-new data and, finally, return the code indicating how did the operation
-complete (returning default value in case of success and wxDragError on
-failure is usually ok).
+Called after \helpref{OnDrop}{wxdroptargetondrop} returns TRUE. By default this
+will usually \helpref{GetData}{wxdroptargetgetdata} and will return the suggested
+default value {\it def}.
\membersection{wxDropTarget::OnDrop}\label{wxdroptargetondrop}
-\func{virtual bool}{OnDrop}{\param{long }{x}, \param{long }{y}, \param{const void* }{data}, \param{size\_t }{size}}
+\func{virtual bool}{OnDrop}{\param{wxCoord }{x}, \param{wxCoord }{y}}
Called when the user drops a data object on the target. Return FALSE to veto the operation.
\docparam{y}{The y coordinate of the mouse.}
-\docparam{data}{The data being dropped.}
-
-\docparam{size}{The size of the data being dropped.}
-
\wxheading{Return value}
Return TRUE to accept the data, FALSE to veto the operation.
\membersection{wxDropTarget::OnEnter}\label{wxdroptargetonenter}
-\func{virtual void}{OnEnter}{\void}
+\func{virtual wxDragResult}{OnEnter}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxDragResult}{ def}}
+
+Called when the mouse enters the drop target. By default, this calls \helpref{OnDragOver}{wxdroptargetondragover}.
+
+\wxheading{Parameters}
+
+\docparam{x}{The x coordinate of the mouse.}
+
+\docparam{y}{The y coordinate of the mouse.}
+
+\docparam{def}{Suggested default for return value. Determined by SHIFT or CONTROL key states.}
-Called when the mouse enters the drop target.
+\wxheading{Return value}
+
+Returns the desired operation or {\tt wxDragNone}. This is used for optical feedback
+from the side of the drop source, typically in form of changing the icon.
+
+\membersection{wxDropTarget::OnDragOver}\label{wxdroptargetondragover}
+
+\func{virtual wxDragResult}{OnDragOver}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxDragResult}{ def}}
+
+Called when the mouse is being dragged over the drop target. By default,
+this calls functions return the suggested return value {\it def}.
+
+\wxheading{Parameters}
+
+\docparam{x}{The x coordinate of the mouse.}
+
+\docparam{y}{The y coordinate of the mouse.}
+
+\docparam{def}{Suggested value for return value. Determined by SHIFT or CONTROL key states.}
+
+\wxheading{Return value}
+
+Returns the desired operation or {\tt wxDragNone}. This is used for optical feedback
+from the side of the drop source, typically in form of changing the icon.
\membersection{wxDropTarget::OnLeave}\label{wxdroptargetonleave}
Called when the mouse leaves the drop target.
+\membersection{wxDropTarget::SetDataObject}\label{wxdroptargetsetdataobject}
+
+\func{void}{SetDataObject}{\param{wxDataObject*}{ data}}
+
+Sets the data \helpref{wxDataObject}{wxdataobject} associated with the
+drop target and deletes any previously associated data object.
no default filename will be supplied. The wildcard determines what files
are displayed in the file selector, and file extension supplies a type
extension for the required filename. Flags may be a combination of wxOPEN,
-wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxMULTIPLE or 0.
+wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
Both the X and Windows versions implement a wildcard filter. Typing a
filename containing wildcards (*, ?) in the filename text item, and
\param{int}{ x = -1}, \param{int}{ y = -1}}
Pops up a file selector box. In Windows, this is the common file selector
-dialog. In X, this is a file selector box with somewhat less functionality.
+dialog. In X, this is a file selector box with the same functionality.
The path and filename are distinct elements of a full file pathname.
If path is empty, the current directory will be used. If filename is empty,
no default filename will be supplied. The wildcard determines what files
are displayed in the file selector, and file extension supplies a type
extension for the required filename. Flags may be a combination of wxOPEN,
-wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxMULTIPLE or 0.
+wxSAVE, wxOVERWRITE\_PROMPT, wxHIDE\_READONLY, wxFILE\_MUST\_EXIST, wxMULTIPLE or 0.
Both the Unix and Windows versions implement a wildcard filter. Typing a
filename containing wildcards (*, ?) in the filename text item, and
\wxheading{See also}
-\helpref{wxStreamBuffer}{wxstreamBuffer}, \helpref{wxInputStream}{wxinputstream}
+\helpref{wxInputStream}{wxinputstream}
% -----------------------------------------------------------------------------
% wxZlibOutputStream
\wxheading{See also}
-\helpref{wxStreamBuffer}{wxstreamBuffer}, \helpref{wxOutputStream}{wxoutputstream}
+\helpref{wxOutputStream}{wxoutputstream}
m_dialogStyle |= wxOPEN;
m_dir = defaultDir;
- if (m_dir.IsEmpty())
+ if ((m_dir.IsEmpty()) || (m_dir == wxT(".")))
{
char buf[200];
m_dir = getcwd( buf, sizeof(buf) );
wxTheApp->SetTopWindow( (wxWindow*) NULL );
}
- if (wxTopLevelWindows.Number() == 0)
+ if ((wxTopLevelWindows.Number() == 0) &&
+ (wxTheApp->GetExitOnFrameDelete()))
{
wxTheApp->ExitMainLoop();
}
if (wxTheApp->GetTopWindow() == this)
wxTheApp->SetTopWindow( (wxWindow*) NULL );
- if (wxTopLevelWindows.Number() == 0)
+ if ((wxTopLevelWindows.Number() == 0) &&
+ (wxTheApp->GetExitOnFrameDelete()))
+ {
wxTheApp->ExitMainLoop();
+ }
}
// ----------------------------------------------------------------------------
wxTheApp->SetTopWindow( (wxWindow*) NULL );
}
- if (wxTopLevelWindows.Number() == 0)
+ if ((wxTopLevelWindows.Number() == 0) &&
+ (wxTheApp->GetExitOnFrameDelete()))
{
wxTheApp->ExitMainLoop();
}
if (wxTheApp->GetTopWindow() == this)
wxTheApp->SetTopWindow( (wxWindow*) NULL );
- if (wxTopLevelWindows.Number() == 0)
+ if ((wxTopLevelWindows.Number() == 0) &&
+ (wxTheApp->GetExitOnFrameDelete()))
+ {
wxTheApp->ExitMainLoop();
+ }
}
// ----------------------------------------------------------------------------