Compare commits
1 Commits
CPPUNIT_1_
...
b4_mousewh
Author | SHA1 | Date | |
---|---|---|---|
|
236c7dd7b2 |
@@ -1,80 +0,0 @@
|
|||||||
dnl
|
|
||||||
dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
|
|
||||||
dnl
|
|
||||||
AC_DEFUN(AM_PATH_CPPUNIT,
|
|
||||||
[
|
|
||||||
|
|
||||||
AC_ARG_WITH(cppunit-prefix,[ --with-cppunit-prefix=PFX Prefix where CppUnit is installed (optional)],
|
|
||||||
cppunit_config_prefix="$withval", cppunit_config_prefix="")
|
|
||||||
AC_ARG_WITH(cppunit-exec-prefix,[ --with-cppunit-exec-prefix=PFX Exec prefix where CppUnit is installed (optional)],
|
|
||||||
cppunit_config_exec_prefix="$withval", cppunit_config_exec_prefix="")
|
|
||||||
|
|
||||||
if test x$cppunit_config_exec_prefix != x ; then
|
|
||||||
cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix"
|
|
||||||
if test x${CPPUNIT_CONFIG+set} != xset ; then
|
|
||||||
CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test x$cppunit_config_prefix != x ; then
|
|
||||||
cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix"
|
|
||||||
if test x${CPPUNIT_CONFIG+set} != xset ; then
|
|
||||||
CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no)
|
|
||||||
cppunit_version_min=$1
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min)
|
|
||||||
no_cppunit=""
|
|
||||||
if test "$CPPUNIT_CONFIG" = "no" ; then
|
|
||||||
no_cppunit=yes
|
|
||||||
else
|
|
||||||
CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
|
|
||||||
CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
|
|
||||||
cppunit_version=`$CPPUNIT_CONFIG --version`
|
|
||||||
|
|
||||||
cppunit_major_version=`echo $cppunit_version | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
|
||||||
cppunit_minor_version=`echo $cppunit_version | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
|
||||||
cppunit_micro_version=`echo $cppunit_version | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
|
||||||
|
|
||||||
cppunit_major_min=`echo $cppunit_version_min | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
|
||||||
cppunit_minor_min=`echo $cppunit_version_min | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
|
||||||
cppunit_micro_min=`echo $cppunit_version_min | \
|
|
||||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
|
||||||
|
|
||||||
cppunit_version_proper=`expr \
|
|
||||||
$cppunit_major_version \> $cppunit_major_min \| \
|
|
||||||
$cppunit_major_version \= $cppunit_major_min \& \
|
|
||||||
$cppunit_minor_version \> $cppunit_minor_min \| \
|
|
||||||
$cppunit_major_version \= $cppunit_major_min \& \
|
|
||||||
$cppunit_minor_version \= $cppunit_minor_min \& \
|
|
||||||
$cppunit_micro_version \>= $cppunit_micro_min `
|
|
||||||
|
|
||||||
if test "$cppunit_version_proper" = "1" ; then
|
|
||||||
AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
no_cppunit=yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$no_cppunit" = x ; then
|
|
||||||
ifelse([$2], , :, [$2])
|
|
||||||
else
|
|
||||||
CPPUNIT_CFLAGS=""
|
|
||||||
CPPUNIT_LIBS=""
|
|
||||||
ifelse([$3], , :, [$3])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(CPPUNIT_CFLAGS)
|
|
||||||
AC_SUBST(CPPUNIT_LIBS)
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
347
docs/latex/wx/mouseevt.tex
Normal file
347
docs/latex/wx/mouseevt.tex
Normal file
@@ -0,0 +1,347 @@
|
|||||||
|
\section{\class{wxMouseEvent}}\label{wxmouseevent}
|
||||||
|
|
||||||
|
This event class contains information about mouse events.
|
||||||
|
See \helpref{wxWindow::OnMouseEvent}{wxwindowonmouseevent}.
|
||||||
|
|
||||||
|
{\bf NB: } Note that under Windows mouse enter and leave events are not natively supported
|
||||||
|
by the system but are generated by wxWindows itself. This has several
|
||||||
|
drawbacks: the LEAVE\_WINDOW event might be received some time after the mouse
|
||||||
|
left the window and the state variables for it may have changed during this
|
||||||
|
time.
|
||||||
|
|
||||||
|
{\bf NB: } Note the difference between methods like
|
||||||
|
\helpref{LeftDown}{wxmouseeventleftdown} and
|
||||||
|
\helpref{LeftIsDown}{wxmouseeventleftisdown}: the formet returns {\tt TRUE}
|
||||||
|
when the event corresponds to the left mouse button click while the latter
|
||||||
|
returns {\tt TRUE} if the left mouse button is currently being pressed. For
|
||||||
|
example, when the user is dragging the mouse you can use
|
||||||
|
\helpref{LeftIsDown}{wxmouseeventleftisdown} to test
|
||||||
|
whether the left mouse button is (still) depressed. Also, by convention, if
|
||||||
|
\helpref{LeftDown}{wxmouseeventleftdown} returns {\tt TRUE},
|
||||||
|
\helpref{LeftIsDown}{wxmouseeventleftisdown} will also return {\tt TRUE} in
|
||||||
|
wxWindows whatever the underlying GUI behaviour is (which is
|
||||||
|
platform-dependent). The same applies, of course, to other mouse buttons as
|
||||||
|
well.
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxEvent}{wxevent}
|
||||||
|
|
||||||
|
\wxheading{Include files}
|
||||||
|
|
||||||
|
<wx/event.h>
|
||||||
|
|
||||||
|
\wxheading{Event table macros}
|
||||||
|
|
||||||
|
To process a mouse event, use these event handler macros to direct input to member
|
||||||
|
functions that take a wxMouseEvent argument.
|
||||||
|
|
||||||
|
\twocolwidtha{7cm}
|
||||||
|
\begin{twocollist}\itemsep=0pt
|
||||||
|
\twocolitem{{\bf EVT\_LEFT\_DOWN(func)}}{Process a wxEVT\_LEFT\_DOWN event.}
|
||||||
|
\twocolitem{{\bf EVT\_LEFT\_UP(func)}}{Process a wxEVT\_LEFT\_UP event.}
|
||||||
|
\twocolitem{{\bf EVT\_LEFT\_DCLICK(func)}}{Process a wxEVT\_LEFT\_DCLICK event.}
|
||||||
|
\twocolitem{{\bf EVT\_MIDDLE\_DOWN(func)}}{Process a wxEVT\_MIDDLE\_DOWN event.}
|
||||||
|
\twocolitem{{\bf EVT\_MIDDLE\_UP(func)}}{Process a wxEVT\_MIDDLE\_UP event.}
|
||||||
|
\twocolitem{{\bf EVT\_MIDDLE\_DCLICK(func)}}{Process a wxEVT\_MIDDLE\_DCLICK event.}
|
||||||
|
\twocolitem{{\bf EVT\_RIGHT\_DOWN(func)}}{Process a wxEVT\_RIGHT\_DOWN event.}
|
||||||
|
\twocolitem{{\bf EVT\_RIGHT\_UP(func)}}{Process a wxEVT\_RIGHT\_UP event.}
|
||||||
|
\twocolitem{{\bf EVT\_RIGHT\_DCLICK(func)}}{Process a wxEVT\_RIGHT\_DCLICK event.}
|
||||||
|
\twocolitem{{\bf EVT\_MOTION(func)}}{Process a wxEVT\_MOTION event.}
|
||||||
|
\twocolitem{{\bf EVT\_ENTER\_WINDOW(func)}}{Process a wxEVT\_ENTER\_WINDOW event.}
|
||||||
|
\twocolitem{{\bf EVT\_LEAVE\_WINDOW(func)}}{Process a wxEVT\_LEAVE\_WINDOW event.}
|
||||||
|
\twocolitem{{\bf EVT\_MOUSE\_EVENTS(func)}}{Process all mouse events.}
|
||||||
|
\end{twocollist}%
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_altDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_altDown}
|
||||||
|
|
||||||
|
TRUE if the Alt key is pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_controlDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_controlDown}
|
||||||
|
|
||||||
|
TRUE if control key is pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_leftDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_leftDown}
|
||||||
|
|
||||||
|
TRUE if the left mouse button is currently pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_middleDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_middleDown}
|
||||||
|
|
||||||
|
TRUE if the middle mouse button is currently pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_rightDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_rightDown}
|
||||||
|
|
||||||
|
TRUE if the right mouse button is currently pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_leftDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_leftDown}
|
||||||
|
|
||||||
|
TRUE if the left mouse button is currently pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_metaDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_metaDown}
|
||||||
|
|
||||||
|
TRUE if the Meta key is pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_shiftDown}
|
||||||
|
|
||||||
|
\member{bool}{m\_shiftDown}
|
||||||
|
|
||||||
|
TRUE if shift is pressed down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_x}
|
||||||
|
|
||||||
|
\member{long}{m\_x}
|
||||||
|
|
||||||
|
X-coordinate of the event.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::m\_y}
|
||||||
|
|
||||||
|
\member{long}{m\_y}
|
||||||
|
|
||||||
|
Y-coordinate of the event.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::wxMouseEvent}
|
||||||
|
|
||||||
|
\func{}{wxMouseEvent}{\param{WXTYPE}{ mouseEventType = 0}, \param{int}{ id = 0}}
|
||||||
|
|
||||||
|
Constructor. Valid event types are:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\itemsep=0pt
|
||||||
|
\item {\bf wxEVT\_ENTER\_WINDOW}
|
||||||
|
\item {\bf wxEVT\_LEAVE\_WINDOW}
|
||||||
|
\item {\bf wxEVT\_LEFT\_DOWN}
|
||||||
|
\item {\bf wxEVT\_LEFT\_UP}
|
||||||
|
\item {\bf wxEVT\_LEFT\_DCLICK}
|
||||||
|
\item {\bf wxEVT\_MIDDLE\_DOWN}
|
||||||
|
\item {\bf wxEVT\_MIDDLE\_UP}
|
||||||
|
\item {\bf wxEVT\_MIDDLE\_DCLICK}
|
||||||
|
\item {\bf wxEVT\_RIGHT\_DOWN}
|
||||||
|
\item {\bf wxEVT\_RIGHT\_UP}
|
||||||
|
\item {\bf wxEVT\_RIGHT\_DCLICK}
|
||||||
|
\item {\bf wxEVT\_MOTION}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::AltDown}
|
||||||
|
|
||||||
|
\func{bool}{AltDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the Alt key was down at the time of the event.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::Button}
|
||||||
|
|
||||||
|
\func{bool}{Button}{\param{int}{ button}}
|
||||||
|
|
||||||
|
Returns TRUE if the identified mouse button is changing state. Valid
|
||||||
|
values of {\it button} are 1, 2 or 3 for left, middle and right
|
||||||
|
buttons respectively.
|
||||||
|
|
||||||
|
Not all mice have middle buttons so a portable application should avoid
|
||||||
|
this one.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::ButtonDClick}\label{buttondclick}
|
||||||
|
|
||||||
|
\func{bool}{ButtonDClick}{\param{int}{ but = -1}}
|
||||||
|
|
||||||
|
If the argument is omitted, this returns TRUE if the event was a mouse
|
||||||
|
double click event. Otherwise the argument specifies which double click event
|
||||||
|
was generated (1, 2 or 3 for left, middle and right buttons respectively).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::ButtonDown}
|
||||||
|
|
||||||
|
\func{bool}{ButtonDown}{\param{int}{ but = -1}}
|
||||||
|
|
||||||
|
If the argument is omitted, this returns TRUE if the event was a mouse
|
||||||
|
button down event. Otherwise the argument specifies which button-down event
|
||||||
|
was generated (1, 2 or 3 for left, middle and right buttons respectively).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::ButtonUp}
|
||||||
|
|
||||||
|
\func{bool}{ButtonUp}{\param{int}{ but = -1}}
|
||||||
|
|
||||||
|
If the argument is omitted, this returns TRUE if the event was a mouse
|
||||||
|
button up event. Otherwise the argument specifies which button-up event
|
||||||
|
was generated (1, 2 or 3 for left, middle and right buttons respectively).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::ControlDown}
|
||||||
|
|
||||||
|
\func{bool}{ControlDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the control key was down at the time of the event.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::Dragging}
|
||||||
|
|
||||||
|
\func{bool}{Dragging}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if this was a dragging event (motion while a button is depressed).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::Entering}\label{wxmouseevententering}
|
||||||
|
|
||||||
|
\func{bool}{Entering}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the mouse was entering the window.
|
||||||
|
|
||||||
|
See also \helpref{wxMouseEvent::Leaving}{wxmouseeventleaving}.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::GetPosition}\label{wxmouseeventgetposition}
|
||||||
|
|
||||||
|
\constfunc{wxPoint}{GetPosition}{\void}
|
||||||
|
|
||||||
|
\constfunc{void}{GetPosition}{\param{wxCoord*}{ x}, \param{wxCoord*}{ y}}
|
||||||
|
|
||||||
|
\constfunc{void}{GetPosition}{\param{long*}{ x}, \param{long*}{ y}}
|
||||||
|
|
||||||
|
Sets *x and *y to the position at which the event occurred.
|
||||||
|
|
||||||
|
Returns the physical mouse position in pixels.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::GetLogicalPosition}\label{wxmouseeventgetlogicalposition}
|
||||||
|
|
||||||
|
\constfunc{wxPoint}{GetLogicalPosition}{\param{const wxDC\&}{ dc}}
|
||||||
|
|
||||||
|
Returns the logical mouse position in pixels (i.e. translated according to the
|
||||||
|
translation set for the DC, which usually indicates that the window has been scrolled).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::GetX}\label{wxmouseeventgetx}
|
||||||
|
|
||||||
|
\constfunc{long}{GetX}{\void}
|
||||||
|
|
||||||
|
Returns X coordinate of the physical mouse event position.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::GetY}\label{wxmouseeventgety}
|
||||||
|
|
||||||
|
\func{long}{GetY}{\void}
|
||||||
|
|
||||||
|
Returns Y coordinate of the physical mouse event position.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::IsButton}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsButton}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the event was a mouse button event (not necessarily a button down event -
|
||||||
|
that may be tested using {\it ButtonDown}).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::Leaving}\label{wxmouseeventleaving}
|
||||||
|
|
||||||
|
\constfunc{bool}{Leaving}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the mouse was leaving the window.
|
||||||
|
|
||||||
|
See also \helpref{wxMouseEvent::Entering}{wxmouseevententering}.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::LeftDClick}
|
||||||
|
|
||||||
|
\constfunc{bool}{LeftDClick}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the event was a left double click.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::LeftDown}\label{wxmouseeventleftdown}
|
||||||
|
|
||||||
|
\constfunc{bool}{LeftDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the left mouse button changed to down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::LeftIsDown}\label{wxmouseeventleftisdown}
|
||||||
|
|
||||||
|
\constfunc{bool}{LeftIsDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the left mouse button is currently down, independent
|
||||||
|
of the current event type.
|
||||||
|
|
||||||
|
Please notice that it is {\bf not} the same as
|
||||||
|
\helpref{LeftDown}{wxmouseeventleftdown} which returns TRUE if the left mouse
|
||||||
|
button was just pressed. Rather, it describes the state of the mouse button
|
||||||
|
before the event happened.
|
||||||
|
|
||||||
|
This event is usually used in the mouse event handlers which process "move
|
||||||
|
mouse" messages to determine whether the user is (still) dragging the mouse.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::LeftUp}
|
||||||
|
|
||||||
|
\constfunc{bool}{LeftUp}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the left mouse button changed to up.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::MetaDown}
|
||||||
|
|
||||||
|
\constfunc{bool}{MetaDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the Meta key was down at the time of the event.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::MiddleDClick}
|
||||||
|
|
||||||
|
\constfunc{bool}{MiddleDClick}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the event was a middle double click.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::MiddleDown}
|
||||||
|
|
||||||
|
\constfunc{bool}{MiddleDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the middle mouse button changed to down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::MiddleIsDown}\label{wxmouseeventmiddleisdown}
|
||||||
|
|
||||||
|
\constfunc{bool}{MiddleIsDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the middle mouse button is currently down, independent
|
||||||
|
of the current event type.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::MiddleUp}
|
||||||
|
|
||||||
|
\constfunc{bool}{MiddleUp}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the middle mouse button changed to up.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::Moving}
|
||||||
|
|
||||||
|
\constfunc{bool}{Moving}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if this was a motion event (no buttons depressed).
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::RightDClick}
|
||||||
|
|
||||||
|
\constfunc{bool}{RightDClick}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the event was a right double click.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::RightDown}
|
||||||
|
|
||||||
|
\constfunc{bool}{RightDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the right mouse button changed to down.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::RightIsDown}\label{wxmouseeventrightisdown}
|
||||||
|
|
||||||
|
\constfunc{bool}{RightIsDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the right mouse button is currently down, independent
|
||||||
|
of the current event type.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::RightUp}
|
||||||
|
|
||||||
|
\constfunc{bool}{RightUp}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the right mouse button changed to up.
|
||||||
|
|
||||||
|
\membersection{wxMouseEvent::ShiftDown}
|
||||||
|
|
||||||
|
\constfunc{bool}{ShiftDown}{\void}
|
||||||
|
|
||||||
|
Returns TRUE if the shift key was down at the time of the event.
|
||||||
|
|
1936
include/wx/event.h
Normal file
1936
include/wx/event.h
Normal file
File diff suppressed because it is too large
Load Diff
154
include/wx/generic/scrolwin.h
Normal file
154
include/wx/generic/scrolwin.h
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/generic/scrolwin.h
|
||||||
|
// Purpose: wxScrolledWindow class
|
||||||
|
// Author: Julian Smart
|
||||||
|
// Modified by:
|
||||||
|
// Created: 01/02/97
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Julian Smart and Markus Holzem
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_GENERIC_SCROLLWIN_H_
|
||||||
|
#define _WX_GENERIC_SCROLLWIN_H_
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "scrolwin.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers and constants
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "wx/window.h"
|
||||||
|
#include "wx/panel.h"
|
||||||
|
|
||||||
|
WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr;
|
||||||
|
|
||||||
|
// default scrolled window style
|
||||||
|
#ifndef wxScrolledWindowStyle
|
||||||
|
#define wxScrolledWindowStyle (wxHSCROLL | wxVSCROLL)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxGenericScrolledWindow
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxGenericScrolledWindow : public wxPanel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxGenericScrolledWindow();
|
||||||
|
wxGenericScrolledWindow(wxWindow *parent,
|
||||||
|
wxWindowID id = -1,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxScrolledWindowStyle,
|
||||||
|
const wxString& name = wxPanelNameStr)
|
||||||
|
{
|
||||||
|
Create(parent, id, pos, size, style, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
~wxGenericScrolledWindow();
|
||||||
|
|
||||||
|
bool Create(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxScrolledWindowStyle,
|
||||||
|
const wxString& name = wxPanelNameStr);
|
||||||
|
|
||||||
|
// Normally the wxGenericScrolledWindow will scroll itself, but in
|
||||||
|
// some rare occasions you might want it to scroll another
|
||||||
|
// window (e.g. a child of it in order to scroll only a portion
|
||||||
|
// the area between the scrollbars (spreadsheet: only cell area
|
||||||
|
// will move).
|
||||||
|
virtual void SetTargetWindow( wxWindow *target );
|
||||||
|
virtual wxWindow *GetTargetWindow();
|
||||||
|
|
||||||
|
// Number of pixels per user unit (0 or -1 for no scrollbar)
|
||||||
|
// Length of virtual canvas in user units
|
||||||
|
// Length of page in user units
|
||||||
|
virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY,
|
||||||
|
int noUnitsX, int noUnitsY,
|
||||||
|
int xPos = 0, int yPos = 0,
|
||||||
|
bool noRefresh = FALSE );
|
||||||
|
|
||||||
|
// Physically scroll the window
|
||||||
|
virtual void Scroll(int x_pos, int y_pos);
|
||||||
|
|
||||||
|
#if WXWIN_COMPATIBILITY
|
||||||
|
virtual void GetScrollUnitsPerPage(int *x_page, int *y_page) const;
|
||||||
|
virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int GetScrollPageSize(int orient) const;
|
||||||
|
void SetScrollPageSize(int orient, int pageSize);
|
||||||
|
|
||||||
|
virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const;
|
||||||
|
|
||||||
|
// Enable/disable Windows scrolling in either direction.
|
||||||
|
// If TRUE, wxWindows scrolls the canvas and only a bit of
|
||||||
|
// the canvas is invalidated; no Clear() is necessary.
|
||||||
|
// If FALSE, the whole canvas is invalidated and a Clear() is
|
||||||
|
// necessary. Disable for when the scroll increment is used
|
||||||
|
// to actually scroll a non-constant distance
|
||||||
|
virtual void EnableScrolling(bool x_scrolling, bool y_scrolling);
|
||||||
|
|
||||||
|
// Get the view start
|
||||||
|
virtual void GetViewStart(int *x, int *y) const;
|
||||||
|
// Compatibility
|
||||||
|
void ViewStart(int *x, int *y) const
|
||||||
|
{ GetViewStart( x, y ); }
|
||||||
|
|
||||||
|
// Actual size in pixels when scrolling is taken into account
|
||||||
|
virtual void GetVirtualSize(int *x, int *y) const;
|
||||||
|
|
||||||
|
// Set the scale factor, used in PrepareDC
|
||||||
|
void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; }
|
||||||
|
double GetScaleX() const { return m_scaleX; }
|
||||||
|
double GetScaleY() const { return m_scaleY; }
|
||||||
|
|
||||||
|
virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const;
|
||||||
|
virtual void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const;
|
||||||
|
|
||||||
|
// Adjust the scrollbars
|
||||||
|
virtual void AdjustScrollbars(void);
|
||||||
|
|
||||||
|
// Override this function to draw the graphic (or just process EVT_PAINT)
|
||||||
|
virtual void OnDraw(wxDC& WXUNUSED(dc)) {};
|
||||||
|
|
||||||
|
// Override this function if you don't want to have wxGenericScrolledWindow
|
||||||
|
// automatically change the origin according to the scroll position.
|
||||||
|
virtual void PrepareDC(wxDC& dc);
|
||||||
|
|
||||||
|
// implementation from now on
|
||||||
|
void OnScroll(wxScrollWinEvent& event);
|
||||||
|
void OnSize(wxSizeEvent& event);
|
||||||
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
void OnChar(wxKeyEvent& event);
|
||||||
|
|
||||||
|
// Calculate scroll increment
|
||||||
|
virtual int CalcScrollInc(wxScrollWinEvent& event);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxWindow *m_targetWindow;
|
||||||
|
int m_xScrollPixelsPerLine;
|
||||||
|
int m_yScrollPixelsPerLine;
|
||||||
|
bool m_xScrollingEnabled;
|
||||||
|
bool m_yScrollingEnabled;
|
||||||
|
int m_xScrollPosition;
|
||||||
|
int m_yScrollPosition;
|
||||||
|
int m_xScrollLines;
|
||||||
|
int m_yScrollLines;
|
||||||
|
int m_xScrollLinesPerPage;
|
||||||
|
int m_yScrollLinesPerPage;
|
||||||
|
double m_scaleX;
|
||||||
|
double m_scaleY;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxGenericScrolledWindow)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// _WX_GENERIC_SCROLLWIN_H_
|
936
include/wx/msw/setup0.h
Normal file
936
include/wx/msw/setup0.h
Normal file
@@ -0,0 +1,936 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/msw/setup.h
|
||||||
|
// Purpose: Configuration for the library
|
||||||
|
// Author: Julian Smart
|
||||||
|
// Modified by:
|
||||||
|
// Created: 01/02/97
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Julian Smart
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_SETUP_H_
|
||||||
|
#define _WX_SETUP_H_
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// global settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// define this to 0 when building wxBase library - this can also be done from
|
||||||
|
// makefile/project file overriding the value here
|
||||||
|
#ifndef wxUSE_GUI
|
||||||
|
#define wxUSE_GUI 1
|
||||||
|
#endif // wxUSE_GUI
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// compatibility settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// This setting determines the compatibility with 1.68 API:
|
||||||
|
// Level 0: no backward compatibility, all new features
|
||||||
|
// Level 1: some extra methods are defined for compatibility.
|
||||||
|
//
|
||||||
|
// Default is 0.
|
||||||
|
//
|
||||||
|
// Recommended setting: 0 (in fact the compatibility code is now very minimal
|
||||||
|
// so there is little advantage to setting it to 1.
|
||||||
|
#define WXWIN_COMPATIBILITY 0
|
||||||
|
|
||||||
|
// in wxMSW version 2.1.11 and earlier, wxIcon always derives from wxBitmap,
|
||||||
|
// but this is very dangerous because you can mistakenly pass an icon instead
|
||||||
|
// of a bitmap to a function taking "const wxBitmap&" - which will *not* work
|
||||||
|
// because an icon is not a valid bitmap
|
||||||
|
//
|
||||||
|
// Starting from 2.1.12, you have the choice under this backwards compatible
|
||||||
|
// behaviour (your code will still compile, but probably won't behave as
|
||||||
|
// expected!) and not deriving wxIcon class from wxBitmap, but providing a
|
||||||
|
// conversion ctor wxBitmap(const wxIcon&) instead.
|
||||||
|
//
|
||||||
|
// Recommended setting: 0
|
||||||
|
#define wxICON_IS_BITMAP 0
|
||||||
|
|
||||||
|
// Define as 1 for font size to be backward compatible to 1.63 and earlier.
|
||||||
|
// 1.64 and later define point sizes to be compatible with Windows.
|
||||||
|
//
|
||||||
|
// Default is 0
|
||||||
|
//
|
||||||
|
// Recommended setting: 0
|
||||||
|
#define wxFONT_SIZE_COMPATIBILITY 0
|
||||||
|
|
||||||
|
// Set to 0 for accurate dialog units, else 1 to be as per 2.1.16 and before.
|
||||||
|
// If migrating between versions, your dialogs may seem to shrink.
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 0 (the new calculations are more correct!)
|
||||||
|
#define wxDIALOG_UNIT_COMPATIBILITY 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// debugging settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Generic comment about debugging settings: they are very useful if you don't
|
||||||
|
// use any other memory leak detection tools such as Purify/BoundsChecker, but
|
||||||
|
// are probably redundant otherwise. Also, Visual C++ CRT has the same features
|
||||||
|
// as wxWindows memory debugging subsystem built in since version 5.0 and you
|
||||||
|
// may prefer to use it instead of built in memory debugging code because it is
|
||||||
|
// faster and more fool proof.
|
||||||
|
//
|
||||||
|
// Using VC++ CRT memory debugging is enabled by default in debug mode
|
||||||
|
// (__WXDEBUG__) if wxUSE_GLOBAL_MEMORY_OPERATORS is *not* enabled (i.e. is 0)
|
||||||
|
// and if __NO_VC_CRTDBG__ is not defined.
|
||||||
|
|
||||||
|
// If 1, enables wxDebugContext, for writing error messages to file, etc. If
|
||||||
|
// __WXDEBUG__ is not defined, will still use normal memory operators. It's
|
||||||
|
// recommended to set this to 1, since you may well need to output an error log
|
||||||
|
// in a production version (or non-debugging beta).
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 but see comment above
|
||||||
|
#define wxUSE_DEBUG_CONTEXT 1
|
||||||
|
|
||||||
|
// If 1, enables debugging versions of wxObject::new and wxObject::delete *IF*
|
||||||
|
// __WXDEBUG__ is also defined.
|
||||||
|
//
|
||||||
|
// WARNING: this code may not work with all architectures, especially if
|
||||||
|
// alignment is an issue. This switch is currently ignored for mingw / cygwin
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 but see comment in the beginning of this section
|
||||||
|
#define wxUSE_MEMORY_TRACING 1
|
||||||
|
|
||||||
|
// In debug mode, cause new and delete to be redefined globally.
|
||||||
|
// If this causes problems (e.g. link errors), set this to 0.
|
||||||
|
// This switch is currently ignored for mingw / cygwin
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 but see comment in the beginning of this section
|
||||||
|
#define wxUSE_GLOBAL_MEMORY_OPERATORS 1
|
||||||
|
|
||||||
|
// In debug mode, causes new to be defined to be WXDEBUG_NEW (see object.h). If
|
||||||
|
// this causes problems (e.g. link errors), set this to 0. You may need to set
|
||||||
|
// this to 0 if using templates (at least for VC++). This switch is currently
|
||||||
|
// ignored for mingw / cygwin
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 but see comment in the beginning of this section
|
||||||
|
#define wxUSE_DEBUG_NEW_ALWAYS 1
|
||||||
|
|
||||||
|
// wxHandleFatalExceptions() may be used to catch the program faults at run
|
||||||
|
// time and, instead of terminating the program with a usual GPF message box,
|
||||||
|
// call the user-defined wxApp::OnFatalException() function. If you set
|
||||||
|
// wxUSE_ON_FATAL_EXCEPTION to 0, wxHandleFatalExceptions() will not work.
|
||||||
|
//
|
||||||
|
// This setting is for Win32 only and can only be enabled if your compiler
|
||||||
|
// supports Win32 structured exception handling (currently only VC++ does)
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 if your compiler supports it.
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define wxUSE_ON_FATAL_EXCEPTION 1
|
||||||
|
#else
|
||||||
|
#define wxUSE_ON_FATAL_EXCEPTION 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Unicode support
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Set wxUSE_UNICODE to 1 to compile wxWindows in Unicode mode: wxChar will be
|
||||||
|
// defined as wchar_t, wxString will use Unicode internally. If you set this
|
||||||
|
// to 1, you must use wxT() macro for all literal strings in the program.
|
||||||
|
//
|
||||||
|
// Unicode is currently only fully supported under Windows NT/2000 (Windows 9x
|
||||||
|
// doesn't support it and the programs compiled in Unicode mode will not run
|
||||||
|
// under 9x).
|
||||||
|
//
|
||||||
|
// Default is 0
|
||||||
|
//
|
||||||
|
// Recommended setting: 0 (unless you only plan to use Windows NT/2000)
|
||||||
|
#define wxUSE_UNICODE 0
|
||||||
|
|
||||||
|
// Setting wxUSE_WCHAR_T to 1 gives you some degree of Unicode support without
|
||||||
|
// compiling the program in Unicode mode. More precisely, it will be possible
|
||||||
|
// to construct wxString from a wide (Unicode) string and convert any wxString
|
||||||
|
// to Unicode.
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_WCHAR_T 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// global features
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Support for message/error logging. This includes wxLogXXX() functions and
|
||||||
|
// wxLog and derived classes. Don't set this to 0 unless you really know what
|
||||||
|
// you are doing.
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 (always)
|
||||||
|
#define wxUSE_LOG 1
|
||||||
|
|
||||||
|
// Support for multithreaded applications: if 1, compile in thread classes
|
||||||
|
// (thread.h) and make the library a bit more thread safe. Although thread
|
||||||
|
// support is quite stable by now, you may still consider recompiling the
|
||||||
|
// library without it if you have no use for it - this will result in a
|
||||||
|
// somewhat smaller and faster operation.
|
||||||
|
//
|
||||||
|
// This is ignored under Win16, threads are only supported under Win32.
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 0 unless you do plan to develop MT applications
|
||||||
|
#define wxUSE_THREADS 1
|
||||||
|
|
||||||
|
// If enabled (1), compiles wxWindows streams classes
|
||||||
|
#define wxUSE_STREAMS 1
|
||||||
|
|
||||||
|
// Use standard C++ streams if 1. If 0, use wxWin streams implementation.
|
||||||
|
#define wxUSE_STD_IOSTREAM 0
|
||||||
|
|
||||||
|
// Use serialization (requires utils/serialize)
|
||||||
|
#define wxUSE_SERIAL 0
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// non GUI features selection
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Set wxUSE_LONGLONG to 1 to compile the wxLongLong class. This is a 64 bit
|
||||||
|
// integer which is implemented in terms of native 64 bit integers if any or
|
||||||
|
// uses emulation otherwise.
|
||||||
|
//
|
||||||
|
// This class is required by wxDateTime and so you should enable it if you want
|
||||||
|
// to use wxDateTime. For most modern platforms, it will use the native 64 bit
|
||||||
|
// integers in which case (almost) all of its functions are inline and it
|
||||||
|
// almost does not take any space, so there should be no reason to switch it
|
||||||
|
// off.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_LONGLONG 1
|
||||||
|
|
||||||
|
// Set wxUSE_TIMEDATE to 1 to compile the wxDateTime and related classes which
|
||||||
|
// allow to manipulate dates, times and time intervals. wxDateTime replaces the
|
||||||
|
// old wxTime and wxDate classes which are still provided for backwards
|
||||||
|
// compatibility (and implemented in terms of wxDateTime).
|
||||||
|
//
|
||||||
|
// Note that this class is relatively new and is still officially in alpha
|
||||||
|
// stage because some features are not yet (fully) implemented. It is already
|
||||||
|
// quite useful though and should only be disabled if you are aiming at
|
||||||
|
// absolutely minimal version of the library.
|
||||||
|
//
|
||||||
|
// Requires: wxUSE_LONGLONG
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_TIMEDATE 1
|
||||||
|
|
||||||
|
// Setting wxUSE_CONFIG to 1 enables the use of wxConfig and related classes
|
||||||
|
// which allow the application to store its settings in the persistent
|
||||||
|
// storage. Setting this to 1 will also enable on-demand creation of the
|
||||||
|
// global config object in wxApp.
|
||||||
|
//
|
||||||
|
// See also wxUSE_CONFIG_NATIVE below.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_CONFIG 1
|
||||||
|
|
||||||
|
// If wxUSE_CONFIG is 1, you may choose to use either the native config
|
||||||
|
// classes under Windows (using .INI files under Win16 and the registry under
|
||||||
|
// Win32) or the portable text file format used by the config classes under
|
||||||
|
// Unix.
|
||||||
|
//
|
||||||
|
// Default is 1 to use native classes. Note that you may still use
|
||||||
|
// wxFileConfig even if you set this to 1 - just the config object created by
|
||||||
|
// default for the applications needs will be a wxRegConfig or wxIniConfig and
|
||||||
|
// not wxFileConfig.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_CONFIG_NATIVE 1
|
||||||
|
|
||||||
|
// If wxUSE_DIALUP_MANAGER is 1, compile in wxDialUpManager class which allows
|
||||||
|
// to connect/disconnect from the network and be notified whenever the dial-up
|
||||||
|
// network connection is established/terminated. Requires wxUSE_DYNLIB_CLASS.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_DIALUP_MANAGER 1
|
||||||
|
|
||||||
|
// Compile in wxLibrary class for run-time DLL loading and function calling.
|
||||||
|
// Required by wxUSE_DIALUP_MANAGER.
|
||||||
|
//
|
||||||
|
// This setting is for Win32 only
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_DYNLIB_CLASS 1
|
||||||
|
|
||||||
|
// Set to 1 to use socket classes
|
||||||
|
#define wxUSE_SOCKETS 1
|
||||||
|
|
||||||
|
// Set to 1 to enable virtual file systems (required by wxHTML)
|
||||||
|
#define wxUSE_FILESYSTEM 1
|
||||||
|
|
||||||
|
// Set to 1 to enable virtual ZIP filesystem (requires wxUSE_FILESYSTEM)
|
||||||
|
#define wxUSE_FS_ZIP 1
|
||||||
|
|
||||||
|
// Set to 1 to enable virtual Internet filesystem (requires wxUSE_FILESYSTEM)
|
||||||
|
#define wxUSE_FS_INET 1
|
||||||
|
|
||||||
|
// Set to 1 to compile wxZipInput/OutputStream classes.
|
||||||
|
#define wxUSE_ZIPSTREAM 1
|
||||||
|
|
||||||
|
// Set to 1 to compile wxZlibInput/OutputStream classes. Also required by
|
||||||
|
// wxUSE_LIBPNG.
|
||||||
|
#define wxUSE_ZLIB 1
|
||||||
|
|
||||||
|
// If enabled, the code written by Apple will be used to write, in a portable
|
||||||
|
// way, float on the disk. See extended.c for the license which is different
|
||||||
|
// from wxWindows one.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 unless you don't like the license terms (unlikely)
|
||||||
|
#define wxUSE_APPLE_IEEE 1
|
||||||
|
|
||||||
|
// Use wxFile class.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 (highly recommended, required i18n code, wxConfig...)
|
||||||
|
#define wxUSE_FILE 1
|
||||||
|
|
||||||
|
// use wxTextFile class: requires wxFile, required by wxFileConfig
|
||||||
|
#define wxUSE_TEXTFILE 1
|
||||||
|
|
||||||
|
// i18n support: _() macro, wxLocale class. Requires wxTextFile.
|
||||||
|
#define wxUSE_INTL 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Optional controls
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// wxToolBar related settings: if wxUSE_TOOLBAR is 0, don't compile any toolbar
|
||||||
|
// classes at all. Otherwise, use the native toolbar class unless
|
||||||
|
// wxUSE_TOOLBAR_NATIVE is 0. Additionally, the generic toolbar class which
|
||||||
|
// supports some features which might not be supported by the native wxToolBar
|
||||||
|
// class may be compiled in if wxUSE_TOOLBAR_SIMPLE is 1.
|
||||||
|
//
|
||||||
|
// Default is 1 for all settings.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 for wxUSE_TOOLBAR and wxUSE_TOOLBAR_NATIVE and 0 for
|
||||||
|
// wxUSE_TOOLBAR_SIMPLE (the default is 1 mainly for backwards compatibility).
|
||||||
|
#define wxUSE_TOOLBAR 1
|
||||||
|
#define wxUSE_TOOLBAR_NATIVE 1
|
||||||
|
#define wxUSE_TOOLBAR_SIMPLE 1
|
||||||
|
|
||||||
|
// wxNotebook is a control with several "tabs" located on one of its sides. It
|
||||||
|
// may be used ot logically organise the data presented to the user instead of
|
||||||
|
// putting everything in one huge dialog. It replaces wxTabControl and related
|
||||||
|
// classes of wxWin 1.6x.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_NOTEBOOK 1
|
||||||
|
|
||||||
|
// The corresponding controls will be compiled in if wxUSE_<CONTROL> is set to
|
||||||
|
// 1 and not compiled into the library otherwise.
|
||||||
|
//
|
||||||
|
// Default is 1 for everything.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 (library might fail to compile for some combinations
|
||||||
|
// of disabled controls)
|
||||||
|
#define wxUSE_CARET 1
|
||||||
|
#define wxUSE_CHECKBOX 1
|
||||||
|
#define wxUSE_CHECKLISTBOX 1 // requires wxUSE_OWNER_DRAWN
|
||||||
|
#define wxUSE_CHOICE 1
|
||||||
|
#define wxUSE_COMBOBOX 1
|
||||||
|
#define wxUSE_GAUGE 1
|
||||||
|
#define wxUSE_LISTBOX 1
|
||||||
|
#define wxUSE_RADIOBOX 1
|
||||||
|
#define wxUSE_RADIOBTN 1
|
||||||
|
#define wxUSE_SASH 1 // wxSashWindow
|
||||||
|
#define wxUSE_SCROLLBAR 1
|
||||||
|
#define wxUSE_SLIDER 1
|
||||||
|
#define wxUSE_SPINBTN 1
|
||||||
|
#define wxUSE_SPINCTRL 1
|
||||||
|
#define wxUSE_STATLINE 1
|
||||||
|
#define wxUSE_STATUSBAR 1
|
||||||
|
#define wxUSE_TOGGLEBTN 1 // requires wxButton
|
||||||
|
#define wxUSE_TOOLTIPS 1 // wxToolTip and wxWindow::SetToolTip()
|
||||||
|
|
||||||
|
// Two status bar implementations are available under Win32: the generic one
|
||||||
|
// or the wrapper around native control. For native look and feel the native
|
||||||
|
// version should be used.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_NATIVE_STATUSBAR 1
|
||||||
|
|
||||||
|
// this setting is obsolete, value is ignored
|
||||||
|
#define wxUSE_BUTTONBAR 1
|
||||||
|
|
||||||
|
// wxGrid class comes in two flavours: the original (pre wxWin 2.2) one and
|
||||||
|
// the new, much imporved and enhanced version. The new version is backwards
|
||||||
|
// compatible with the old one and should be used whenever possible, i.e. if
|
||||||
|
// you set wxUSE_GRID to 1, set wxUSE_NEW_GRID to 1 too.
|
||||||
|
//
|
||||||
|
// Default is 1 for both options.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 for wxUSE_NEW_GRID, 0 if you have an old code using
|
||||||
|
// wxGrid and 100% backwards compatibality (with all old wxGrid quirks) is
|
||||||
|
// essential.
|
||||||
|
//
|
||||||
|
// WIN16/BC++ resets wxUSE_NEW_GRID to 0 because it exceeds the data limit.
|
||||||
|
#define wxUSE_GRID 1
|
||||||
|
#define wxUSE_NEW_GRID 1
|
||||||
|
|
||||||
|
// wxValidator class and related methods
|
||||||
|
#define wxUSE_VALIDATORS 1
|
||||||
|
|
||||||
|
// wxAcceleratorTable/Entry classes and support for them in wxMenu(Bar)
|
||||||
|
#define wxUSE_ACCEL 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// common dialogs
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Define 1 to use generic dialogs in Windows, even though they duplicate
|
||||||
|
// native common dialog (e.g. wxColourDialog). This is mainly useful for
|
||||||
|
// testing.
|
||||||
|
//
|
||||||
|
// Default is 0
|
||||||
|
//
|
||||||
|
// Recommended setting: 0
|
||||||
|
#define wxUSE_GENERIC_DIALOGS_IN_MSW 0
|
||||||
|
|
||||||
|
// On rare occasions (e.g. using DJGPP) may want to omit common dialogs (e.g.
|
||||||
|
// file selector, printer dialog). Switching this off also switches off the
|
||||||
|
// printing architecture and interactive wxPrinterDC.
|
||||||
|
//
|
||||||
|
// Default is 1
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 (unless it really doesn't work)
|
||||||
|
#define wxUSE_COMMON_DIALOGS 1
|
||||||
|
|
||||||
|
// text entry dialog and wxGetTextFromUser function
|
||||||
|
#define wxUSE_TEXTDLG 1
|
||||||
|
|
||||||
|
// progress dialog class for lengthy operations
|
||||||
|
#define wxUSE_PROGRESSDLG 1
|
||||||
|
|
||||||
|
// wxBusyInfo displays window with message when app is busy. Works in same way
|
||||||
|
// as wxBusyCursor
|
||||||
|
#define wxUSE_BUSYINFO 1
|
||||||
|
|
||||||
|
// wxDirDlg class for getting a directory name from user
|
||||||
|
#define wxUSE_DIRDLG 1
|
||||||
|
|
||||||
|
// support for startup tips (wxShowTip &c)
|
||||||
|
#define wxUSE_STARTUP_TIPS 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Metafiles support
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Windows supports the graphics format known as metafile which is, though not
|
||||||
|
// portable, is widely used under Windows and so is supported by wxWin (under
|
||||||
|
// Windows only, of course). Win16 (Win3.1) used the so-called "Window
|
||||||
|
// MetaFiles" or WMFs which were replaced with "Enhanced MetaFiles" or EMFs in
|
||||||
|
// Win32 (Win9x, NT, 2000). Both of these are supported in wxWin and, by
|
||||||
|
// default, WMFs will be used under Win16 and EMFs under Win32. This may be
|
||||||
|
// changed by setting wxUSE_WIN_METAFILES_ALWAYS to 1 and/or setting
|
||||||
|
// wxUSE_ENH_METAFILE to 0. You may also set wxUSE_METAFILE to 0 to not compile
|
||||||
|
// in any metafile related classes at all.
|
||||||
|
//
|
||||||
|
// Default is 1 for wxUSE_ENH_METAFILE and 0 for wxUSE_WIN_METAFILES_ALWAYS.
|
||||||
|
//
|
||||||
|
// Recommended setting: default or 0 for everything for portable programs.
|
||||||
|
#define wxUSE_METAFILE 1
|
||||||
|
#define wxUSE_ENH_METAFILE 1
|
||||||
|
#define wxUSE_WIN_METAFILES_ALWAYS 0
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Big GUI components
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Set to 0 to disable document/view architecture
|
||||||
|
#define wxUSE_DOC_VIEW_ARCHITECTURE 1
|
||||||
|
|
||||||
|
// Set to 0 to disable MDI document/view architecture
|
||||||
|
#define wxUSE_MDI_ARCHITECTURE 1
|
||||||
|
|
||||||
|
// Set to 0 to disable print/preview architecture code
|
||||||
|
#define wxUSE_PRINTING_ARCHITECTURE 1
|
||||||
|
|
||||||
|
// wxHTML sublibrary allows to display HTML in wxWindow programs and much,
|
||||||
|
// much more.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 (wxHTML is great!), set to 0 if you want compile a
|
||||||
|
// smaller library.
|
||||||
|
#define wxUSE_HTML 1
|
||||||
|
|
||||||
|
// wxPlot is a class to display functions plots in wxWindow.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_PLOT 1
|
||||||
|
|
||||||
|
// OpenGL canvas
|
||||||
|
#define wxUSE_GLCANVAS 0
|
||||||
|
|
||||||
|
// wxTreeLayout class
|
||||||
|
#define wxUSE_TREELAYOUT 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// miscellaneous settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define wxUSE_IPC 1
|
||||||
|
// 0 for no interprocess comms
|
||||||
|
#define wxUSE_HELP 1
|
||||||
|
// 0 for no help facility
|
||||||
|
#define wxUSE_MS_HTML_HELP 0
|
||||||
|
// 0 for no MS HTML Help
|
||||||
|
#define wxUSE_RESOURCES 1
|
||||||
|
// 0 for no wxGetResource/wxWriteResource
|
||||||
|
#define wxUSE_CONSTRAINTS 1
|
||||||
|
// 0 for no window layout constraint system
|
||||||
|
|
||||||
|
#define wxUSE_CLIPBOARD 1
|
||||||
|
// 0 for no clipboard functions
|
||||||
|
|
||||||
|
#define wxUSE_SPLINES 1
|
||||||
|
// 0 for no splines
|
||||||
|
|
||||||
|
#define wxUSE_DRAG_AND_DROP 1
|
||||||
|
// 0 for no drag and drop
|
||||||
|
|
||||||
|
#define wxUSE_XPM_IN_MSW 1
|
||||||
|
// 0 for no XPM support in wxBitmap.
|
||||||
|
// Default is 1, as XPM is now fully
|
||||||
|
// supported this makes easier the issue
|
||||||
|
// of portable icons and bitmaps.
|
||||||
|
#define wxUSE_IMAGE_LOADING_IN_MSW 1
|
||||||
|
// Use dynamic DIB loading/saving code in utils/dib under MSW.
|
||||||
|
#define wxUSE_RESOURCE_LOADING_IN_MSW 1
|
||||||
|
// Use dynamic icon/cursor loading/saving code
|
||||||
|
// under MSW.
|
||||||
|
#define wxUSE_WX_RESOURCES 1
|
||||||
|
// Use .wxr resource mechanism (requires PrologIO library)
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// postscript support settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Set to 1 for PostScript device context.
|
||||||
|
#define wxUSE_POSTSCRIPT 0
|
||||||
|
|
||||||
|
// Set to 1 to use font metric files in GetTextExtent
|
||||||
|
#define wxUSE_AFM_FOR_POSTSCRIPT 0
|
||||||
|
|
||||||
|
// Set to 0 to disable PostScript print/preview architecture code under Windows
|
||||||
|
// (just use Windows printing).
|
||||||
|
#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// database classes
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Define 1 to use ODBC classes
|
||||||
|
#define wxUSE_ODBC 0
|
||||||
|
|
||||||
|
// For backward compatibility reasons, this parameter now only controls the
|
||||||
|
// default scrolling method used by cursors. This default behavior can be
|
||||||
|
// overriden by setting the second param of wxDB::wxDbGetConnection() or
|
||||||
|
// wxDb() constructor to indicate whether the connection (and any wxDbTable()s
|
||||||
|
// that use the connection) should support forward only scrolling of cursors,
|
||||||
|
// or both forward and backward support for backward scrolling cursors is
|
||||||
|
// dependent on the data source as well as the ODBC driver being used.
|
||||||
|
#define wxODBC_FWD_ONLY_CURSORS 1
|
||||||
|
|
||||||
|
// Default is 0. Set to 1 to use the deprecated classes, enum types, function,
|
||||||
|
// member variables. With a setting of 1, full backward compatability with the
|
||||||
|
// 2.0.x release is possible. It is STRONGLY recommended that this be set to 0,
|
||||||
|
// as future development will be done only on the non-deprecated
|
||||||
|
// functions/classes/member variables/etc.
|
||||||
|
#define wxODBC_BACKWARD_COMPATABILITY 0
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// other compiler (mis)features
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Set this to 0 if your compiler can't cope with omission of prototype
|
||||||
|
// parameters.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1 (should never need to set this to 0)
|
||||||
|
#define REMOVE_UNUSED_ARG 1
|
||||||
|
|
||||||
|
// VC++ 4.2 and above allows <iostream> and <iostream.h> but you can't mix
|
||||||
|
// them. Set to 1 for <iostream.h>, 0 for <iostream>
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: whatever your compiler likes more
|
||||||
|
#define wxUSE_IOSTREAMH 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// image format support
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// wxImage supports many different image formats which can be configured at
|
||||||
|
// compile-time. BMP is always supported, others are optional and can be safely
|
||||||
|
// disabled if you don't plan to use images in such format sometimes saving
|
||||||
|
// substantial amount of code in the final library.
|
||||||
|
//
|
||||||
|
// Some formats require an extra library which is included in wxWin sources
|
||||||
|
// which is mentioned if it is the case.
|
||||||
|
|
||||||
|
// Set to 1 for wxImage support (recommended).
|
||||||
|
#define wxUSE_IMAGE 1
|
||||||
|
|
||||||
|
// Set to 1 for PNG format support (requires libpng). Also requires wxUSE_ZLIB.
|
||||||
|
#define wxUSE_LIBPNG 1
|
||||||
|
|
||||||
|
// Set to 1 for JPEG format support (requires libjpeg)
|
||||||
|
#define wxUSE_LIBJPEG 1
|
||||||
|
|
||||||
|
// Set to 1 for TIFF format support (requires libtiff)
|
||||||
|
#define wxUSE_LIBTIFF 1
|
||||||
|
|
||||||
|
// Set to 1 for GIF format support
|
||||||
|
#define wxUSE_GIF 1
|
||||||
|
|
||||||
|
// Set to 1 for PNM format support
|
||||||
|
#define wxUSE_PNM 1
|
||||||
|
|
||||||
|
// Set to 1 for PCX format support
|
||||||
|
#define wxUSE_PCX 1
|
||||||
|
|
||||||
|
// Set to 1 for XPM format support
|
||||||
|
#define wxUSE_XPM 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// Windows-only settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Set this to 1 if you want to use wxWindows and MFC in the same program. This
|
||||||
|
// will override some other settings (see below)
|
||||||
|
//
|
||||||
|
// Default is 0.
|
||||||
|
//
|
||||||
|
// Recommended setting: 0 unless you really have to use MFC
|
||||||
|
#define wxUSE_MFC 0
|
||||||
|
|
||||||
|
// Set this to 1 for generic OLE support: this is required for drag-and-drop,
|
||||||
|
// clipboard, OLE Automation. Only set it to 0 if your compiler is very old and
|
||||||
|
// can't compile/doesn't have the OLE headers.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1
|
||||||
|
#define wxUSE_OLE 1
|
||||||
|
|
||||||
|
// Set this to 1 to use Microsoft CTL3D library for "3D-look" under Win16 or NT
|
||||||
|
// 3.x. This setting is ignored under Win9x and NT 4.0+.
|
||||||
|
//
|
||||||
|
// Default is 0 for (most) Win32 (systems), 1 for Win16
|
||||||
|
//
|
||||||
|
// Recommended setting: same as default
|
||||||
|
#if defined(__WIN95__)
|
||||||
|
#define wxUSE_CTL3D 0
|
||||||
|
#else
|
||||||
|
#define wxUSE_CTL3D 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Define as 1 to use Microsoft's ItsyBitsy small title bar library, for
|
||||||
|
// wxMiniFrame. This setting is only used for Win3.1; Win9x and NT use native
|
||||||
|
// miniframes support instead.
|
||||||
|
//
|
||||||
|
// Default is 0 for (most) Win32 (systems), 1 for Win16
|
||||||
|
//
|
||||||
|
// Recommended setting: same as default
|
||||||
|
#if defined(__WIN95__)
|
||||||
|
#define wxUSE_ITSY_BITSY 0
|
||||||
|
#else
|
||||||
|
#define wxUSE_ITSY_BITSY 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Set this to 1 to use RICHEDIT controls for wxTextCtrl with style wxTE_RICH
|
||||||
|
// which allows to put more than ~32Kb of text in it even under Win9x (NT
|
||||||
|
// doesn't have such limitation).
|
||||||
|
//
|
||||||
|
// Default is 1 for compilers which support it
|
||||||
|
//
|
||||||
|
// Recommended setting: 1, only set it to 0 if your compiler doesn't have
|
||||||
|
// or can't compile <richedit.h>
|
||||||
|
#if defined(__WIN95__) && !defined(__TWIN32__) && !defined(__GNUWIN32_OLD__)
|
||||||
|
#define wxUSE_RICHEDIT 1
|
||||||
|
#else
|
||||||
|
#define wxUSE_RICHEDIT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Set this to 1 to enable support for the owner-drawn menu and listboxes. This
|
||||||
|
// is required by wxUSE_CHECKLISTBOX.
|
||||||
|
//
|
||||||
|
// Default is 1.
|
||||||
|
//
|
||||||
|
// Recommended setting: 1, set to 0 for a small library size reduction
|
||||||
|
#define wxUSE_OWNER_DRAWN 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// obsolete settings
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// NB: all settings in this section are obsolete and should not be used/changed
|
||||||
|
// at all, they will disappear
|
||||||
|
|
||||||
|
// Set to 1 to use PenWindows
|
||||||
|
#define wxUSE_PENWINDOWS 0
|
||||||
|
|
||||||
|
// Define 1 to use bitmap messages.
|
||||||
|
#define wxUSE_BITMAP_MESSAGE 1
|
||||||
|
|
||||||
|
// If 1, enables provision of run-time type information.
|
||||||
|
// NOW MANDATORY: don't change.
|
||||||
|
#define wxUSE_DYNAMIC_CLASSES 1
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// disable the settings which don't work for some compilers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef wxUSE_NORLANDER_HEADERS
|
||||||
|
#if (defined(__MINGW32__) || defined(__CYGWIN__)) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95)))
|
||||||
|
# define wxUSE_NORLANDER_HEADERS 1
|
||||||
|
#else
|
||||||
|
# define wxUSE_NORLANDER_HEADERS 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUWIN32__)
|
||||||
|
// These don't work as expected for mingw32 and cygwin32
|
||||||
|
#undef wxUSE_MEMORY_TRACING
|
||||||
|
#define wxUSE_MEMORY_TRACING 0
|
||||||
|
|
||||||
|
#undef wxUSE_GLOBAL_MEMORY_OPERATORS
|
||||||
|
#define wxUSE_GLOBAL_MEMORY_OPERATORS 0
|
||||||
|
|
||||||
|
#undef wxUSE_DEBUG_NEW_ALWAYS
|
||||||
|
#define wxUSE_DEBUG_NEW_ALWAYS 0
|
||||||
|
|
||||||
|
#undef wxUSE_MS_HTML_HELP
|
||||||
|
#define wxUSE_MS_HTML_HELP 0
|
||||||
|
|
||||||
|
// Cygwin betas don't have wcslen
|
||||||
|
#if defined(__CYGWIN__) || defined(__CYGWIN32__)
|
||||||
|
# if ! ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95)))
|
||||||
|
# undef wxUSE_WCHAR_T
|
||||||
|
# define wxUSE_WCHAR_T 0
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // __GNUWIN32__
|
||||||
|
|
||||||
|
// MFC duplicates these operators
|
||||||
|
#if wxUSE_MFC
|
||||||
|
#undef wxUSE_GLOBAL_MEMORY_OPERATORS
|
||||||
|
#define wxUSE_GLOBAL_MEMORY_OPERATORS 0
|
||||||
|
|
||||||
|
#undef wxUSE_DEBUG_NEW_ALWAYS
|
||||||
|
#define wxUSE_DEBUG_NEW_ALWAYS 0
|
||||||
|
#endif // wxUSE_MFC
|
||||||
|
|
||||||
|
// ODBC classes aren't Unicode-compatible yet
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
#undef wxUSE_ODBC
|
||||||
|
#define wxUSE_ODBC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (!defined(WIN32) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS)
|
||||||
|
// Can't use OLE drag and drop in Windows 3.1 because we don't know how
|
||||||
|
// to implement UUIDs
|
||||||
|
// GnuWin32 doesn't have appropriate headers for e.g. IUnknown.
|
||||||
|
#undef wxUSE_DRAG_AND_DROP
|
||||||
|
#define wxUSE_DRAG_AND_DROP 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Only WIN32 supports wxStatusBar95
|
||||||
|
#if !defined(__WIN32__) && wxUSE_NATIVE_STATUSBAR
|
||||||
|
#undef wxUSE_NATIVE_STATUSBAR
|
||||||
|
#define wxUSE_NATIVE_STATUSBAR 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !wxUSE_OWNER_DRAWN
|
||||||
|
#undef wxUSE_CHECKLISTBOX
|
||||||
|
#define wxUSE_CHECKLISTBOX 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Salford C++ doesn't like some of the memory operator definitions
|
||||||
|
#ifdef __SALFORDC__
|
||||||
|
#undef wxUSE_MEMORY_TRACING
|
||||||
|
#define wxUSE_MEMORY_TRACING 0
|
||||||
|
|
||||||
|
#undef wxUSE_GLOBAL_MEMORY_OPERATORS
|
||||||
|
#define wxUSE_GLOBAL_MEMORY_OPERATORS 0
|
||||||
|
|
||||||
|
#undef wxUSE_DEBUG_NEW_ALWAYS
|
||||||
|
#define wxUSE_DEBUG_NEW_ALWAYS 0
|
||||||
|
|
||||||
|
#undef wxUSE_THREADS
|
||||||
|
#define wxUSE_THREADS 0
|
||||||
|
|
||||||
|
#undef wxUSE_OWNER_DRAWN
|
||||||
|
#define wxUSE_OWNER_DRAWN 0
|
||||||
|
#endif // __SALFORDC__
|
||||||
|
|
||||||
|
#ifdef __TWIN32__
|
||||||
|
|
||||||
|
#undef wxUSE_THREADS
|
||||||
|
#define wxUSE_THREADS 0
|
||||||
|
|
||||||
|
#undef wxUSE_ODBC
|
||||||
|
#define wxUSE_ODBC 0
|
||||||
|
|
||||||
|
#endif // __TWIN32__
|
||||||
|
|
||||||
|
// BC++/Win16 can't cope with the amount of data in resource.cpp
|
||||||
|
#if defined(__WIN16__) && defined(__BORLANDC__)
|
||||||
|
#undef wxUSE_WX_RESOURCES
|
||||||
|
#define wxUSE_WX_RESOURCES 0
|
||||||
|
|
||||||
|
#undef wxUSE_ODBC
|
||||||
|
#define wxUSE_ODBC 0
|
||||||
|
|
||||||
|
#undef wxUSE_NEW_GRID
|
||||||
|
#define wxUSE_NEW_GRID 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
|
||||||
|
// BC++ 4.0 can't compile JPEG library
|
||||||
|
#undef wxUSE_LIBJPEG
|
||||||
|
#define wxUSE_LIBJPEG 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__BORLANDC__)
|
||||||
|
// Need a BC++-specific htmlhelp.lib before we can enable this
|
||||||
|
#undef wxUSE_MS_HTML_HELP
|
||||||
|
#define wxUSE_MS_HTML_HELP 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// wxUSE_DEBUG_NEW_ALWAYS = 1 not compatible with BC++ in DLL mode
|
||||||
|
#if defined(__BORLANDC__) && (defined(WXMAKINGDLL) || defined(WXUSINGDLL))
|
||||||
|
#undef wxUSE_DEBUG_NEW_ALWAYS
|
||||||
|
#define wxUSE_DEBUG_NEW_ALWAYS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__WXMSW__) && defined(__WATCOMC__)
|
||||||
|
/*
|
||||||
|
#undef wxUSE_GLCANVAS
|
||||||
|
#define wxUSE_GLCANVAS 0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#undef wxUSE_MS_HTML_HELP
|
||||||
|
#define wxUSE_MS_HTML_HELP 0
|
||||||
|
|
||||||
|
#undef wxUSE_WCHAR_T
|
||||||
|
#define wxUSE_WCHAR_T 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__WXMSW__) && !defined(__WIN32__)
|
||||||
|
|
||||||
|
#undef wxUSE_SOCKETS
|
||||||
|
#define wxUSE_SOCKETS 0
|
||||||
|
|
||||||
|
#undef wxUSE_THREADS
|
||||||
|
#define wxUSE_THREADS 0
|
||||||
|
|
||||||
|
#undef wxUSE_TOOLTIPS
|
||||||
|
#define wxUSE_TOOLTIPS 0
|
||||||
|
|
||||||
|
#undef wxUSE_SPINCTRL
|
||||||
|
#define wxUSE_SPINCTRL 0
|
||||||
|
|
||||||
|
#undef wxUSE_SPINBTN
|
||||||
|
#define wxUSE_SPINBTN 0
|
||||||
|
|
||||||
|
#undef wxUSE_LIBPNG
|
||||||
|
#define wxUSE_LIBPNG 0
|
||||||
|
|
||||||
|
#undef wxUSE_LIBJPEG
|
||||||
|
#define wxUSE_LIBJPEG 0
|
||||||
|
|
||||||
|
#undef wxUSE_LIBTIFF
|
||||||
|
#define wxUSE_LIBTIFF 0
|
||||||
|
|
||||||
|
#undef wxUSE_GIF
|
||||||
|
#define wxUSE_GIF 0
|
||||||
|
|
||||||
|
#undef wxUSE_PNM
|
||||||
|
#define wxUSE_PNM 0
|
||||||
|
|
||||||
|
#undef wxUSE_PCX
|
||||||
|
#define wxUSE_PCX 0
|
||||||
|
|
||||||
|
#undef wxUSE_GLCANVAS
|
||||||
|
#define wxUSE_GLCANVAS 0
|
||||||
|
|
||||||
|
#undef wxUSE_MS_HTML_HELP
|
||||||
|
#define wxUSE_MS_HTML_HELP 0
|
||||||
|
|
||||||
|
#undef wxUSE_WCHAR_T
|
||||||
|
#define wxUSE_WCHAR_T 0
|
||||||
|
|
||||||
|
#endif // Win16
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// undef the things which don't make sense for wxBase build
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if !wxUSE_GUI
|
||||||
|
|
||||||
|
#undef wxUSE_HTML
|
||||||
|
#define wxUSE_HTML 0
|
||||||
|
|
||||||
|
#endif // !wxUSE_GUI
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// check the settings consistency: do it here to abort compilation immediately
|
||||||
|
// and not almost in the very end when the relevant file fails to compile and
|
||||||
|
// you need to modify setup.h and rebuild everything
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if wxUSE_TIMEDATE && !wxUSE_LONGLONG
|
||||||
|
#error wxDateTime requires wxLongLong
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_TEXTFILE && !wxUSE_FILE
|
||||||
|
#error You cannot compile wxTextFile without wxFile
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_FILESYSTEM && !wxUSE_STREAMS
|
||||||
|
#error You cannot compile virtual file systems without wxUSE_STREAMS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_HTML && !wxUSE_FILESYSTEM
|
||||||
|
#error You cannot compile wxHTML without virtual file systems
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// add more tests here...
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// _WX_SETUP_H_
|
451
include/wx/msw/window.h
Normal file
451
include/wx/msw/window.h
Normal file
@@ -0,0 +1,451 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: window.h
|
||||||
|
// Purpose: wxWindow class
|
||||||
|
// Author: Julian Smart
|
||||||
|
// Modified by:
|
||||||
|
// Created: 01/02/97
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Julian Smart and Markus Holzem
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_WINDOW_H_
|
||||||
|
#define _WX_WINDOW_H_
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "window.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// #include "wx/msw/winundef.h"
|
||||||
|
|
||||||
|
// VZ: apparently some version of Windows send extra mouse move messages after
|
||||||
|
// a mouse click. My tests under NT 4.0 and 95 didn't show it so I'm
|
||||||
|
// tempted to think that it was just an effect of a poor mouse and so the
|
||||||
|
// code to work around this is currently disabled - just define this as 1
|
||||||
|
// to reenable it
|
||||||
|
#define wxUSE_MOUSEEVENT_HACK 0
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// forward declarations
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxButton;
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// constants
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// FIXME does anybody use those? they're unused by wxWindows...
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
wxKEY_SHIFT = 1,
|
||||||
|
wxKEY_CTRL = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// wxWindow declaration for MSW
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLEXPORT wxWindow : public wxWindowBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxWindow() { Init(); }
|
||||||
|
|
||||||
|
wxWindow(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = 0,
|
||||||
|
const wxString& name = wxPanelNameStr)
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
Create(parent, id, pos, size, style, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~wxWindow();
|
||||||
|
|
||||||
|
bool Create(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = 0,
|
||||||
|
const wxString& name = wxPanelNameStr);
|
||||||
|
|
||||||
|
// implement base class pure virtuals
|
||||||
|
virtual void SetTitle( const wxString& title);
|
||||||
|
virtual wxString GetTitle() const;
|
||||||
|
|
||||||
|
virtual void Raise();
|
||||||
|
virtual void Lower();
|
||||||
|
|
||||||
|
virtual bool Show( bool show = TRUE );
|
||||||
|
virtual bool Enable( bool enable = TRUE );
|
||||||
|
|
||||||
|
virtual void SetFocus();
|
||||||
|
|
||||||
|
virtual bool Reparent( wxWindowBase *newParent );
|
||||||
|
|
||||||
|
virtual void WarpPointer(int x, int y);
|
||||||
|
virtual void CaptureMouse();
|
||||||
|
virtual void ReleaseMouse();
|
||||||
|
|
||||||
|
virtual void Refresh( bool eraseBackground = TRUE,
|
||||||
|
const wxRect *rect = (const wxRect *) NULL );
|
||||||
|
virtual void Clear();
|
||||||
|
|
||||||
|
virtual bool SetCursor( const wxCursor &cursor );
|
||||||
|
virtual bool SetFont( const wxFont &font );
|
||||||
|
|
||||||
|
virtual int GetCharHeight() const;
|
||||||
|
virtual int GetCharWidth() const;
|
||||||
|
virtual void GetTextExtent(const wxString& string,
|
||||||
|
int *x, int *y,
|
||||||
|
int *descent = (int *) NULL,
|
||||||
|
int *externalLeading = (int *) NULL,
|
||||||
|
const wxFont *theFont = (const wxFont *) NULL)
|
||||||
|
const;
|
||||||
|
|
||||||
|
virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
|
||||||
|
|
||||||
|
virtual void SetScrollbar( int orient, int pos, int thumbVisible,
|
||||||
|
int range, bool refresh = TRUE );
|
||||||
|
virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
|
||||||
|
virtual int GetScrollPos( int orient ) const;
|
||||||
|
virtual int GetScrollThumb( int orient ) const;
|
||||||
|
virtual int GetScrollRange( int orient ) const;
|
||||||
|
virtual void ScrollWindow( int dx, int dy,
|
||||||
|
const wxRect* rect = (wxRect *) NULL );
|
||||||
|
|
||||||
|
#if wxUSE_DRAG_AND_DROP
|
||||||
|
virtual void SetDropTarget( wxDropTarget *dropTarget );
|
||||||
|
#endif // wxUSE_DRAG_AND_DROP
|
||||||
|
|
||||||
|
// Accept files for dragging
|
||||||
|
virtual void DragAcceptFiles(bool accept);
|
||||||
|
|
||||||
|
#if WXWIN_COMPATIBILITY
|
||||||
|
// Set/get scroll attributes
|
||||||
|
virtual void SetScrollRange(int orient, int range, bool refresh = TRUE);
|
||||||
|
virtual void SetScrollPage(int orient, int page, bool refresh = TRUE);
|
||||||
|
virtual int OldGetScrollRange(int orient) const;
|
||||||
|
virtual int GetScrollPage(int orient) const;
|
||||||
|
|
||||||
|
// event handlers
|
||||||
|
// Handle a control command
|
||||||
|
virtual void OnCommand(wxWindow& win, wxCommandEvent& event);
|
||||||
|
|
||||||
|
// Override to define new behaviour for default action (e.g. double
|
||||||
|
// clicking on a listbox)
|
||||||
|
virtual void OnDefaultAction(wxControl * WXUNUSED(initiatingItem)) { }
|
||||||
|
#endif // WXWIN_COMPATIBILITY
|
||||||
|
|
||||||
|
#if wxUSE_CARET && WXWIN_COMPATIBILITY
|
||||||
|
// caret manipulation (old MSW only functions, see wxCaret class for the
|
||||||
|
// new API)
|
||||||
|
void CreateCaret(int w, int h);
|
||||||
|
void CreateCaret(const wxBitmap *bitmap);
|
||||||
|
void DestroyCaret();
|
||||||
|
void ShowCaret(bool show);
|
||||||
|
void SetCaretPos(int x, int y);
|
||||||
|
void GetCaretPos(int *x, int *y) const;
|
||||||
|
#endif // wxUSE_CARET
|
||||||
|
|
||||||
|
// Native resource loading (implemented in src/msw/nativdlg.cpp)
|
||||||
|
// FIXME: should they really be all virtual?
|
||||||
|
virtual bool LoadNativeDialog(wxWindow* parent, wxWindowID& id);
|
||||||
|
virtual bool LoadNativeDialog(wxWindow* parent, const wxString& name);
|
||||||
|
wxWindow* GetWindowChild1(wxWindowID id);
|
||||||
|
wxWindow* GetWindowChild(wxWindowID id);
|
||||||
|
|
||||||
|
// a MSW only function which sends a size event to the window using its
|
||||||
|
// current size - this has an effect of refreshing the window layout
|
||||||
|
/*
|
||||||
|
FUNCTION IS NOW A MEMBER OF wxFrame - gt
|
||||||
|
void SendSizeEvent();
|
||||||
|
*/
|
||||||
|
|
||||||
|
// implementation from now on
|
||||||
|
// --------------------------
|
||||||
|
|
||||||
|
// simple accessors
|
||||||
|
// ----------------
|
||||||
|
|
||||||
|
WXHWND GetHWND() const { return m_hWnd; }
|
||||||
|
void SetHWND(WXHWND hWnd) { m_hWnd = hWnd; }
|
||||||
|
virtual WXWidget GetHandle() const { return GetHWND(); }
|
||||||
|
|
||||||
|
bool GetUseCtl3D() const { return m_useCtl3D; }
|
||||||
|
bool GetTransparentBackground() const { return m_backgroundTransparent; }
|
||||||
|
void SetTransparent(bool t = TRUE) { m_backgroundTransparent = t; }
|
||||||
|
|
||||||
|
// event handlers
|
||||||
|
// --------------
|
||||||
|
|
||||||
|
void OnSetFocus(wxFocusEvent& event);
|
||||||
|
void OnEraseBackground(wxEraseEvent& event);
|
||||||
|
void OnIdle(wxIdleEvent& event);
|
||||||
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// For implementation purposes - sometimes decorations make the client area
|
||||||
|
// smaller
|
||||||
|
virtual wxPoint GetClientAreaOrigin() const;
|
||||||
|
|
||||||
|
// Makes an adjustment to the window position (for example, a frame that has
|
||||||
|
// a toolbar that it manages itself).
|
||||||
|
virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags);
|
||||||
|
|
||||||
|
// Windows subclassing
|
||||||
|
void SubclassWin(WXHWND hWnd);
|
||||||
|
void UnsubclassWin();
|
||||||
|
|
||||||
|
WXFARPROC MSWGetOldWndProc() const { return m_oldWndProc; }
|
||||||
|
void MSWSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; }
|
||||||
|
|
||||||
|
wxWindow *FindItem(long id) const;
|
||||||
|
wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const;
|
||||||
|
|
||||||
|
// Make a Windows extended style from the given wxWindows window style
|
||||||
|
static WXDWORD MakeExtendedStyle(long style,
|
||||||
|
bool eliminateBorders = FALSE);
|
||||||
|
// Determine whether 3D effects are wanted
|
||||||
|
WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) const;
|
||||||
|
|
||||||
|
// MSW only: TRUE if this control is part of the main control
|
||||||
|
virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; };
|
||||||
|
|
||||||
|
// returns TRUE if the window has been created
|
||||||
|
bool MSWCreate(int id,
|
||||||
|
wxWindow *parent,
|
||||||
|
const wxChar *wclass,
|
||||||
|
wxWindow *wx_win,
|
||||||
|
const wxChar *title,
|
||||||
|
int x, int y, int width, int height,
|
||||||
|
WXDWORD style,
|
||||||
|
const wxChar *dialog_template = NULL,
|
||||||
|
WXDWORD exendedStyle = 0);
|
||||||
|
virtual bool MSWCommand(WXUINT param, WXWORD id);
|
||||||
|
|
||||||
|
#if WXWIN_COMPATIBILITY
|
||||||
|
wxObject *GetChild(int number) const;
|
||||||
|
virtual void MSWDeviceToLogical(float *x, float *y) const;
|
||||||
|
#endif // WXWIN_COMPATIBILITY
|
||||||
|
|
||||||
|
// Create an appropriate wxWindow from a HWND
|
||||||
|
virtual wxWindow* CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd);
|
||||||
|
|
||||||
|
// Make sure the window style reflects the HWND style (roughly)
|
||||||
|
virtual void AdoptAttributesFromHWND();
|
||||||
|
|
||||||
|
// Setup background and foreground colours correctly
|
||||||
|
virtual void SetupColours();
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// helpers for message handlers: these perform the same function as the
|
||||||
|
// message crackers from <windowsx.h> - they unpack WPARAM and LPARAM into
|
||||||
|
// the correct parameters
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void UnpackCommand(WXWPARAM wParam, WXLPARAM lParam,
|
||||||
|
WXWORD *id, WXHWND *hwnd, WXWORD *cmd);
|
||||||
|
void UnpackActivate(WXWPARAM wParam, WXLPARAM lParam,
|
||||||
|
WXWORD *state, WXWORD *minimized, WXHWND *hwnd);
|
||||||
|
void UnpackScroll(WXWPARAM wParam, WXLPARAM lParam,
|
||||||
|
WXWORD *code, WXWORD *pos, WXHWND *hwnd);
|
||||||
|
void UnpackCtlColor(WXWPARAM wParam, WXLPARAM lParam,
|
||||||
|
WXWORD *nCtlColor, WXHDC *hdc, WXHWND *hwnd);
|
||||||
|
void UnpackMenuSelect(WXWPARAM wParam, WXLPARAM lParam,
|
||||||
|
WXWORD *item, WXWORD *flags, WXHMENU *hmenu);
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
// internal handlers for MSW messages: all handlers return a boolean value:
|
||||||
|
// TRUE means that the handler processed the event and FALSE that it didn't
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// there are several cases where we have virtual functions for Windows
|
||||||
|
// message processing: this is because these messages often require to be
|
||||||
|
// processed in a different manner in the derived classes. For all other
|
||||||
|
// messages, however, we do *not* have corresponding MSWOnXXX() function
|
||||||
|
// and if the derived class wants to process them, it should override
|
||||||
|
// MSWWindowProc() directly.
|
||||||
|
|
||||||
|
// scroll event (both horizontal and vertical)
|
||||||
|
virtual bool MSWOnScroll(int orientation, WXWORD nSBCode,
|
||||||
|
WXWORD pos, WXHWND control);
|
||||||
|
|
||||||
|
// child control notifications
|
||||||
|
#ifdef __WIN95__
|
||||||
|
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
|
||||||
|
#endif // __WIN95__
|
||||||
|
|
||||||
|
// owner-drawn controls need to process these messages
|
||||||
|
virtual bool MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *item);
|
||||||
|
virtual bool MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *item);
|
||||||
|
|
||||||
|
// the rest are not virtual
|
||||||
|
bool HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate);
|
||||||
|
bool HandleInitDialog(WXHWND hWndFocus);
|
||||||
|
bool HandleDestroy();
|
||||||
|
|
||||||
|
bool HandlePaint();
|
||||||
|
bool HandleEraseBkgnd(WXHDC pDC);
|
||||||
|
|
||||||
|
bool HandleMinimize();
|
||||||
|
bool HandleMaximize();
|
||||||
|
bool HandleSize(int x, int y, WXUINT flag);
|
||||||
|
bool HandleGetMinMaxInfo(void *mmInfo);
|
||||||
|
|
||||||
|
bool HandleShow(bool show, int status);
|
||||||
|
bool HandleActivate(int flag, bool minimized, WXHWND activate);
|
||||||
|
|
||||||
|
bool HandleCommand(WXWORD id, WXWORD cmd, WXHWND control);
|
||||||
|
bool HandleSysCommand(WXWPARAM wParam, WXLPARAM lParam);
|
||||||
|
|
||||||
|
bool HandleCtlColor(WXHBRUSH *hBrush,
|
||||||
|
WXHDC hdc,
|
||||||
|
WXHWND hWnd,
|
||||||
|
WXUINT nCtlColor,
|
||||||
|
WXUINT message,
|
||||||
|
WXWPARAM wParam,
|
||||||
|
WXLPARAM lParam);
|
||||||
|
|
||||||
|
bool HandlePaletteChanged(WXHWND hWndPalChange);
|
||||||
|
bool HandleQueryNewPalette();
|
||||||
|
bool HandleSysColorChange();
|
||||||
|
|
||||||
|
bool HandleQueryEndSession(long logOff, bool *mayEnd);
|
||||||
|
bool HandleEndSession(bool endSession, long logOff);
|
||||||
|
|
||||||
|
bool HandleSetFocus(WXHWND wnd);
|
||||||
|
bool HandleKillFocus(WXHWND wnd);
|
||||||
|
|
||||||
|
bool HandleDropFiles(WXWPARAM wParam);
|
||||||
|
|
||||||
|
bool HandleMouseEvent(WXUINT msg, int x, int y, WXUINT flags);
|
||||||
|
bool HandleMouseMove(int x, int y, WXUINT flags);
|
||||||
|
|
||||||
|
bool HandleChar(WXWPARAM wParam, WXLPARAM lParam, bool isASCII = FALSE);
|
||||||
|
bool HandleKeyDown(WXWPARAM wParam, WXLPARAM lParam);
|
||||||
|
bool HandleKeyUp(WXWPARAM wParam, WXLPARAM lParam);
|
||||||
|
|
||||||
|
bool HandleQueryDragIcon(WXHICON *hIcon);
|
||||||
|
|
||||||
|
bool HandleSetCursor(WXHWND hWnd, short nHitTest, int mouseMsg);
|
||||||
|
|
||||||
|
// Window procedure
|
||||||
|
virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
|
||||||
|
|
||||||
|
// Calls an appropriate default window procedure
|
||||||
|
virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
|
||||||
|
virtual bool MSWProcessMessage(WXMSG* pMsg);
|
||||||
|
virtual bool MSWTranslateMessage(WXMSG* pMsg);
|
||||||
|
virtual void MSWDestroyWindow();
|
||||||
|
|
||||||
|
// Detach "Window" menu from menu bar so it doesn't get deleted
|
||||||
|
void MSWDetachWindowMenu();
|
||||||
|
|
||||||
|
// this function should return the brush to paint the window background
|
||||||
|
// with or 0 for the default brush
|
||||||
|
virtual WXHBRUSH OnCtlColor(WXHDC hDC,
|
||||||
|
WXHWND hWnd,
|
||||||
|
WXUINT nCtlColor,
|
||||||
|
WXUINT message,
|
||||||
|
WXWPARAM wParam,
|
||||||
|
WXLPARAM lParam);
|
||||||
|
|
||||||
|
#if WXWIN_COMPATIBILITY
|
||||||
|
void SetShowing(bool show) { (void)Show(show); }
|
||||||
|
bool IsUserEnabled() const { return IsEnabled(); }
|
||||||
|
#endif // WXWIN_COMPATIBILITY
|
||||||
|
|
||||||
|
// Responds to colour changes: passes event on to children.
|
||||||
|
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
||||||
|
|
||||||
|
// initialize various fields of wxMouseEvent (common part of MSWOnMouseXXX)
|
||||||
|
void InitMouseEvent(wxMouseEvent& event, int x, int y, WXUINT flags);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// the window handle
|
||||||
|
WXHWND m_hWnd;
|
||||||
|
|
||||||
|
// the old window proc (we subclass all windows)
|
||||||
|
WXFARPROC m_oldWndProc;
|
||||||
|
|
||||||
|
// additional (MSW specific) flags
|
||||||
|
bool m_useCtl3D:1; // Using CTL3D for this control
|
||||||
|
bool m_backgroundTransparent:1;
|
||||||
|
bool m_mouseInWindow:1;
|
||||||
|
bool m_doubleClickAllowed:1;
|
||||||
|
bool m_winCaptured:1;
|
||||||
|
|
||||||
|
// the size of one page for scrolling
|
||||||
|
int m_xThumbSize;
|
||||||
|
int m_yThumbSize;
|
||||||
|
|
||||||
|
#if wxUSE_MOUSEEVENT_HACK
|
||||||
|
// the coordinates of the last mouse event and the type of it
|
||||||
|
long m_lastMouseX,
|
||||||
|
m_lastMouseY;
|
||||||
|
int m_lastMouseEvent;
|
||||||
|
#endif // wxUSE_MOUSEEVENT_HACK
|
||||||
|
|
||||||
|
WXHMENU m_hMenu; // Menu, if any
|
||||||
|
|
||||||
|
// the return value of WM_GETDLGCODE handler
|
||||||
|
long m_lDlgCode;
|
||||||
|
|
||||||
|
// implement the base class pure virtuals
|
||||||
|
virtual void DoClientToScreen( int *x, int *y ) const;
|
||||||
|
virtual void DoScreenToClient( int *x, int *y ) const;
|
||||||
|
virtual void DoGetPosition( int *x, int *y ) const;
|
||||||
|
virtual void DoGetSize( int *width, int *height ) const;
|
||||||
|
virtual void DoGetClientSize( int *width, int *height ) const;
|
||||||
|
virtual void DoSetSize(int x, int y,
|
||||||
|
int width, int height,
|
||||||
|
int sizeFlags = wxSIZE_AUTO);
|
||||||
|
virtual void DoSetClientSize(int width, int height);
|
||||||
|
|
||||||
|
// move the window to the specified location and resize it: this is called
|
||||||
|
// from both DoSetSize() and DoSetClientSize() and would usually just call
|
||||||
|
// ::MoveWindow() except for composite controls which will want to arrange
|
||||||
|
// themselves inside the given rectangle
|
||||||
|
virtual void DoMoveWindow(int x, int y, int width, int height);
|
||||||
|
|
||||||
|
#if wxUSE_TOOLTIPS
|
||||||
|
virtual void DoSetToolTip( wxToolTip *tip );
|
||||||
|
#endif // wxUSE_TOOLTIPS
|
||||||
|
|
||||||
|
private:
|
||||||
|
// common part of all ctors
|
||||||
|
void Init();
|
||||||
|
|
||||||
|
// the (non-virtual) handlers for the events
|
||||||
|
bool HandleMove(int x, int y);
|
||||||
|
bool HandleJoystickEvent(WXUINT msg, int x, int y, WXUINT flags);
|
||||||
|
|
||||||
|
#ifdef __WIN95__
|
||||||
|
bool HandleNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
|
||||||
|
#endif // __WIN95__
|
||||||
|
|
||||||
|
// the helper functions used by HandleChar/KeyXXX methods
|
||||||
|
wxKeyEvent CreateKeyEvent(wxEventType evType, int id, WXLPARAM lp) const;
|
||||||
|
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxWindow);
|
||||||
|
DECLARE_NO_COPY_CLASS(wxWindow);
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// global functions
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// kbd code translation
|
||||||
|
WXDLLEXPORT int wxCharCodeMSWToWX(int keySym);
|
||||||
|
WXDLLEXPORT int wxCharCodeWXToMSW(int id, bool *IsVirtual);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// _WX_WINDOW_H_
|
1145
src/common/event.cpp
Normal file
1145
src/common/event.cpp
Normal file
File diff suppressed because it is too large
Load Diff
8538
src/generic/grid.cpp
Normal file
8538
src/generic/grid.cpp
Normal file
File diff suppressed because it is too large
Load Diff
704
src/generic/scrolwin.cpp
Normal file
704
src/generic/scrolwin.cpp
Normal file
@@ -0,0 +1,704 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: generic/scrolwin.cpp
|
||||||
|
// Purpose: wxGenericScrolledWindow implementation
|
||||||
|
// Author: Julian Smart
|
||||||
|
// Modified by:
|
||||||
|
// Created: 01/02/97
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Julian Smart and Markus Holzem
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// declarations
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma implementation "scrolwin.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __VMS
|
||||||
|
#define XtDisplay XTDISPLAY
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
#pragma hdrstop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/utils.h"
|
||||||
|
#include "wx/dcclient.h"
|
||||||
|
|
||||||
|
#include "wx/generic/scrolwin.h"
|
||||||
|
#include "wx/panel.h"
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
#include "windows.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __WXMOTIF__
|
||||||
|
// For wxRETAINED implementation
|
||||||
|
#ifdef __VMS__ //VMS's Xm.h is not (yet) compatible with C++
|
||||||
|
//This code switches off the compiler warnings
|
||||||
|
# pragma message disable nosimpint
|
||||||
|
#endif
|
||||||
|
#include <Xm/Xm.h>
|
||||||
|
#ifdef __VMS__
|
||||||
|
# pragma message enable nosimpint
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __WXGTK__
|
||||||
|
#include "wx/scrolwin.h"
|
||||||
|
IMPLEMENT_CLASS(wxScrolledWindow, wxGenericScrolledWindow)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// event tables
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(wxGenericScrolledWindow, wxPanel)
|
||||||
|
EVT_SCROLLWIN(wxGenericScrolledWindow::OnScroll)
|
||||||
|
EVT_SIZE(wxGenericScrolledWindow::OnSize)
|
||||||
|
EVT_PAINT(wxGenericScrolledWindow::OnPaint)
|
||||||
|
EVT_CHAR(wxGenericScrolledWindow::OnChar)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxGenericScrolledWindow, wxPanel)
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// implementation
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxGenericScrolledWindow creation
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
wxGenericScrolledWindow::wxGenericScrolledWindow()
|
||||||
|
{
|
||||||
|
m_xScrollPixelsPerLine = 0;
|
||||||
|
m_yScrollPixelsPerLine = 0;
|
||||||
|
m_xScrollingEnabled = TRUE;
|
||||||
|
m_yScrollingEnabled = TRUE;
|
||||||
|
m_xScrollPosition = 0;
|
||||||
|
m_yScrollPosition = 0;
|
||||||
|
m_xScrollLines = 0;
|
||||||
|
m_yScrollLines = 0;
|
||||||
|
m_xScrollLinesPerPage = 0;
|
||||||
|
m_yScrollLinesPerPage = 0;
|
||||||
|
m_scaleX = 1.0;
|
||||||
|
m_scaleY = 1.0;
|
||||||
|
m_targetWindow = (wxWindow*) NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxGenericScrolledWindow::Create(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
|
const wxPoint& pos,
|
||||||
|
const wxSize& size,
|
||||||
|
long style,
|
||||||
|
const wxString& name)
|
||||||
|
{
|
||||||
|
m_xScrollPixelsPerLine = 0;
|
||||||
|
m_yScrollPixelsPerLine = 0;
|
||||||
|
m_xScrollingEnabled = TRUE;
|
||||||
|
m_yScrollingEnabled = TRUE;
|
||||||
|
m_xScrollPosition = 0;
|
||||||
|
m_yScrollPosition = 0;
|
||||||
|
m_xScrollLines = 0;
|
||||||
|
m_yScrollLines = 0;
|
||||||
|
m_xScrollLinesPerPage = 0;
|
||||||
|
m_yScrollLinesPerPage = 0;
|
||||||
|
m_scaleX = 1.0;
|
||||||
|
m_scaleY = 1.0;
|
||||||
|
|
||||||
|
m_targetWindow = this;
|
||||||
|
|
||||||
|
bool ok = wxPanel::Create(parent, id, pos, size, style, name);
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
// we need to process arrows ourselves for scrolling
|
||||||
|
m_lDlgCode |= DLGC_WANTARROWS;
|
||||||
|
#endif // __WXMSW__
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxGenericScrolledWindow::~wxGenericScrolledWindow()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// setting scrolling parameters
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/*
|
||||||
|
* pixelsPerUnitX/pixelsPerUnitY: number of pixels per unit (e.g. pixels per text line)
|
||||||
|
* noUnitsX/noUnitsY: : no. units per scrollbar
|
||||||
|
*/
|
||||||
|
void wxGenericScrolledWindow::SetScrollbars (int pixelsPerUnitX, int pixelsPerUnitY,
|
||||||
|
int noUnitsX, int noUnitsY,
|
||||||
|
int xPos, int yPos, bool noRefresh )
|
||||||
|
{
|
||||||
|
int xpos, ypos;
|
||||||
|
|
||||||
|
CalcUnscrolledPosition(xPos, yPos, &xpos, &ypos);
|
||||||
|
bool do_refresh =
|
||||||
|
(
|
||||||
|
(noUnitsX != 0 && m_xScrollLines == 0) ||
|
||||||
|
(noUnitsX < m_xScrollLines && xpos > pixelsPerUnitX*noUnitsX) ||
|
||||||
|
|
||||||
|
(noUnitsY != 0 && m_yScrollLines == 0) ||
|
||||||
|
(noUnitsY < m_yScrollLines && ypos > pixelsPerUnitY*noUnitsY) ||
|
||||||
|
(xPos != m_xScrollPosition) ||
|
||||||
|
(yPos != m_yScrollPosition)
|
||||||
|
// (pixelsPerUnitX != m_xScrollPixelsPerLine) ||
|
||||||
|
// (pixelsPerUnitY != m_yScrollPixelsPerLine)
|
||||||
|
);
|
||||||
|
|
||||||
|
m_xScrollPixelsPerLine = pixelsPerUnitX;
|
||||||
|
m_yScrollPixelsPerLine = pixelsPerUnitY;
|
||||||
|
m_xScrollPosition = xPos;
|
||||||
|
m_yScrollPosition = yPos;
|
||||||
|
m_xScrollLines = noUnitsX;
|
||||||
|
m_yScrollLines = noUnitsY;
|
||||||
|
|
||||||
|
#ifdef __WXMOTIF__
|
||||||
|
// Sorry, some Motif-specific code to implement a backing pixmap
|
||||||
|
// for the wxRETAINED style. Implementing a backing store can't
|
||||||
|
// be entirely generic because it relies on the wxWindowDC implementation
|
||||||
|
// to duplicate X drawing calls for the backing pixmap.
|
||||||
|
|
||||||
|
if ((m_windowStyle & wxRETAINED) == wxRETAINED)
|
||||||
|
{
|
||||||
|
Display* dpy = XtDisplay((Widget) GetMainWidget());
|
||||||
|
|
||||||
|
int totalPixelWidth = m_xScrollLines * m_xScrollPixelsPerLine;
|
||||||
|
int totalPixelHeight = m_yScrollLines * m_yScrollPixelsPerLine;
|
||||||
|
if (m_backingPixmap &&
|
||||||
|
!((m_pixmapWidth == totalPixelWidth) &&
|
||||||
|
(m_pixmapHeight == totalPixelHeight)))
|
||||||
|
{
|
||||||
|
XFreePixmap (dpy, (Pixmap) m_backingPixmap);
|
||||||
|
m_backingPixmap = (WXPixmap) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_backingPixmap &&
|
||||||
|
(noUnitsX != 0) && (noUnitsY != 0))
|
||||||
|
{
|
||||||
|
int depth = wxDisplayDepth();
|
||||||
|
m_pixmapWidth = totalPixelWidth;
|
||||||
|
m_pixmapHeight = totalPixelHeight;
|
||||||
|
m_backingPixmap = (WXPixmap) XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)),
|
||||||
|
m_pixmapWidth, m_pixmapHeight, depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif // Motif
|
||||||
|
|
||||||
|
AdjustScrollbars();
|
||||||
|
|
||||||
|
if (do_refresh && !noRefresh)
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
// GRG: if this turns out to be really necessary, we could
|
||||||
|
// at least move it to the above if { ... } so that it is
|
||||||
|
// only done if noRefresh = FALSE (the default). OTOH, if
|
||||||
|
// this doesn't break anything, which seems to be the
|
||||||
|
// case, we could just leave it out.
|
||||||
|
|
||||||
|
// Necessary?
|
||||||
|
// UpdateWindow ((HWND) m_targetWindow->GetHWND());
|
||||||
|
#endif
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
m_targetWindow->MacUpdateImmediately() ;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// target window handling
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::SetTargetWindow( wxWindow *target )
|
||||||
|
{
|
||||||
|
wxASSERT_MSG( target, wxT("target window must not be NULL") );
|
||||||
|
m_targetWindow = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxWindow *wxGenericScrolledWindow::GetTargetWindow()
|
||||||
|
{
|
||||||
|
return m_targetWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// scrolling implementation itself
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::OnScroll(wxScrollWinEvent& event)
|
||||||
|
{
|
||||||
|
int orient = event.GetOrientation();
|
||||||
|
|
||||||
|
int nScrollInc = CalcScrollInc(event);
|
||||||
|
if (nScrollInc == 0) return;
|
||||||
|
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
{
|
||||||
|
int newPos = m_xScrollPosition + nScrollInc;
|
||||||
|
SetScrollPos(wxHORIZONTAL, newPos, TRUE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int newPos = m_yScrollPosition + nScrollInc;
|
||||||
|
SetScrollPos(wxVERTICAL, newPos, TRUE );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
{
|
||||||
|
m_xScrollPosition += nScrollInc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_yScrollPosition += nScrollInc;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
{
|
||||||
|
if (m_xScrollingEnabled)
|
||||||
|
m_targetWindow->ScrollWindow(-m_xScrollPixelsPerLine * nScrollInc, 0, (const wxRect *) NULL);
|
||||||
|
else
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_yScrollingEnabled)
|
||||||
|
m_targetWindow->ScrollWindow(0, -m_yScrollPixelsPerLine * nScrollInc, (const wxRect *) NULL);
|
||||||
|
else
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
}
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
m_targetWindow->MacUpdateImmediately() ;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxGenericScrolledWindow::CalcScrollInc(wxScrollWinEvent& event)
|
||||||
|
{
|
||||||
|
int pos = event.GetPosition();
|
||||||
|
int orient = event.GetOrientation();
|
||||||
|
|
||||||
|
int nScrollInc = 0;
|
||||||
|
if (event.GetEventType() == wxEVT_SCROLLWIN_TOP)
|
||||||
|
{
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
nScrollInc = - m_xScrollPosition;
|
||||||
|
else
|
||||||
|
nScrollInc = - m_yScrollPosition;
|
||||||
|
} else
|
||||||
|
if (event.GetEventType() == wxEVT_SCROLLWIN_BOTTOM)
|
||||||
|
{
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
nScrollInc = m_xScrollLines - m_xScrollPosition;
|
||||||
|
else
|
||||||
|
nScrollInc = m_yScrollLines - m_yScrollPosition;
|
||||||
|
} else
|
||||||
|
if (event.GetEventType() == wxEVT_SCROLLWIN_LINEUP)
|
||||||
|
{
|
||||||
|
nScrollInc = -1;
|
||||||
|
} else
|
||||||
|
if (event.GetEventType() == wxEVT_SCROLLWIN_LINEDOWN)
|
||||||
|
{
|
||||||
|
nScrollInc = 1;
|
||||||
|
} else
|
||||||
|
if (event.GetEventType() == wxEVT_SCROLLWIN_PAGEUP)
|
||||||
|
{
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
nScrollInc = -GetScrollPageSize(wxHORIZONTAL);
|
||||||
|
else
|
||||||
|
nScrollInc = -GetScrollPageSize(wxVERTICAL);
|
||||||
|
} else
|
||||||
|
if (event.GetEventType() == wxEVT_SCROLLWIN_PAGEDOWN)
|
||||||
|
{
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
nScrollInc = GetScrollPageSize(wxHORIZONTAL);
|
||||||
|
else
|
||||||
|
nScrollInc = GetScrollPageSize(wxVERTICAL);
|
||||||
|
} else
|
||||||
|
if ((event.GetEventType() == wxEVT_SCROLLWIN_THUMBTRACK) ||
|
||||||
|
(event.GetEventType() == wxEVT_SCROLLWIN_THUMBRELEASE))
|
||||||
|
{
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
nScrollInc = pos - m_xScrollPosition;
|
||||||
|
else
|
||||||
|
nScrollInc = pos - m_yScrollPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (orient == wxHORIZONTAL)
|
||||||
|
{
|
||||||
|
if (m_xScrollPixelsPerLine > 0)
|
||||||
|
{
|
||||||
|
int w, h;
|
||||||
|
m_targetWindow->GetClientSize(&w, &h);
|
||||||
|
|
||||||
|
int nMaxWidth = m_xScrollLines*m_xScrollPixelsPerLine;
|
||||||
|
int noPositions = (int) ( ((nMaxWidth - w)/(double)m_xScrollPixelsPerLine) + 0.5 );
|
||||||
|
if (noPositions < 0)
|
||||||
|
noPositions = 0;
|
||||||
|
|
||||||
|
if ( (m_xScrollPosition + nScrollInc) < 0 )
|
||||||
|
nScrollInc = -m_xScrollPosition; // As -ve as we can go
|
||||||
|
else if ( (m_xScrollPosition + nScrollInc) > noPositions )
|
||||||
|
nScrollInc = noPositions - m_xScrollPosition; // As +ve as we can go
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_yScrollPixelsPerLine > 0)
|
||||||
|
{
|
||||||
|
int w, h;
|
||||||
|
m_targetWindow->GetClientSize(&w, &h);
|
||||||
|
|
||||||
|
int nMaxHeight = m_yScrollLines*m_yScrollPixelsPerLine;
|
||||||
|
int noPositions = (int) ( ((nMaxHeight - h)/(double)m_yScrollPixelsPerLine) + 0.5 );
|
||||||
|
if (noPositions < 0)
|
||||||
|
noPositions = 0;
|
||||||
|
|
||||||
|
if ( (m_yScrollPosition + nScrollInc) < 0 )
|
||||||
|
nScrollInc = -m_yScrollPosition; // As -ve as we can go
|
||||||
|
else if ( (m_yScrollPosition + nScrollInc) > noPositions )
|
||||||
|
nScrollInc = noPositions - m_yScrollPosition; // As +ve as we can go
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
return nScrollInc;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust the scrollbars - new version.
|
||||||
|
void wxGenericScrolledWindow::AdjustScrollbars()
|
||||||
|
{
|
||||||
|
int w, h;
|
||||||
|
m_targetWindow->GetClientSize(&w, &h);
|
||||||
|
|
||||||
|
int oldXScroll = m_xScrollPosition;
|
||||||
|
int oldYScroll = m_yScrollPosition;
|
||||||
|
|
||||||
|
if (m_xScrollLines > 0)
|
||||||
|
{
|
||||||
|
// Calculate page size i.e. number of scroll units you get on the
|
||||||
|
// current client window
|
||||||
|
int noPagePositions = (int) ( (w/(double)m_xScrollPixelsPerLine) + 0.5 );
|
||||||
|
if (noPagePositions < 1) noPagePositions = 1;
|
||||||
|
|
||||||
|
// Correct position if greater than extent of canvas minus
|
||||||
|
// the visible portion of it or if below zero
|
||||||
|
m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition);
|
||||||
|
m_xScrollPosition = wxMax( 0, m_xScrollPosition );
|
||||||
|
|
||||||
|
SetScrollbar(wxHORIZONTAL, m_xScrollPosition, noPagePositions, m_xScrollLines);
|
||||||
|
// The amount by which we scroll when paging
|
||||||
|
SetScrollPageSize(wxHORIZONTAL, noPagePositions);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_xScrollPosition = 0;
|
||||||
|
SetScrollbar (wxHORIZONTAL, 0, 0, 0, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_yScrollLines > 0)
|
||||||
|
{
|
||||||
|
// Calculate page size i.e. number of scroll units you get on the
|
||||||
|
// current client window
|
||||||
|
int noPagePositions = (int) ( (h/(double)m_yScrollPixelsPerLine) + 0.5 );
|
||||||
|
if (noPagePositions < 1) noPagePositions = 1;
|
||||||
|
|
||||||
|
// Correct position if greater than extent of canvas minus
|
||||||
|
// the visible portion of it or if below zero
|
||||||
|
m_yScrollPosition = wxMin( m_yScrollLines-noPagePositions, m_yScrollPosition );
|
||||||
|
m_yScrollPosition = wxMax( 0, m_yScrollPosition );
|
||||||
|
|
||||||
|
SetScrollbar(wxVERTICAL, m_yScrollPosition, noPagePositions, m_yScrollLines);
|
||||||
|
// The amount by which we scroll when paging
|
||||||
|
SetScrollPageSize(wxVERTICAL, noPagePositions);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_yScrollPosition = 0;
|
||||||
|
SetScrollbar (wxVERTICAL, 0, 0, 0, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldXScroll != m_xScrollPosition)
|
||||||
|
{
|
||||||
|
if (m_xScrollingEnabled)
|
||||||
|
m_targetWindow->ScrollWindow( m_xScrollPixelsPerLine * (oldXScroll-m_xScrollPosition), 0, (const wxRect *) NULL );
|
||||||
|
else
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldYScroll != m_yScrollPosition)
|
||||||
|
{
|
||||||
|
if (m_yScrollingEnabled)
|
||||||
|
m_targetWindow->ScrollWindow( 0, m_yScrollPixelsPerLine * (oldYScroll-m_yScrollPosition), (const wxRect *) NULL );
|
||||||
|
else
|
||||||
|
m_targetWindow->Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override this function if you don't want to have wxGenericScrolledWindow
|
||||||
|
// automatically change the origin according to the scroll position.
|
||||||
|
void wxGenericScrolledWindow::PrepareDC(wxDC& dc)
|
||||||
|
{
|
||||||
|
dc.SetDeviceOrigin( -m_xScrollPosition * m_xScrollPixelsPerLine,
|
||||||
|
-m_yScrollPosition * m_yScrollPixelsPerLine );
|
||||||
|
dc.SetUserScale( m_scaleX, m_scaleY );
|
||||||
|
}
|
||||||
|
|
||||||
|
#if WXWIN_COMPATIBILITY
|
||||||
|
void wxGenericScrolledWindow::GetScrollUnitsPerPage (int *x_page, int *y_page) const
|
||||||
|
{
|
||||||
|
*x_page = GetScrollPageSize(wxHORIZONTAL);
|
||||||
|
*y_page = GetScrollPageSize(wxVERTICAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const
|
||||||
|
{
|
||||||
|
if ( xx )
|
||||||
|
*xx = (float)(x + m_xScrollPosition * m_xScrollPixelsPerLine);
|
||||||
|
if ( yy )
|
||||||
|
*yy = (float)(y + m_yScrollPosition * m_yScrollPixelsPerLine);
|
||||||
|
}
|
||||||
|
#endif // WXWIN_COMPATIBILITY
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::GetScrollPixelsPerUnit (int *x_unit, int *y_unit) const
|
||||||
|
{
|
||||||
|
if ( x_unit )
|
||||||
|
*x_unit = m_xScrollPixelsPerLine;
|
||||||
|
if ( y_unit )
|
||||||
|
*y_unit = m_yScrollPixelsPerLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wxGenericScrolledWindow::GetScrollPageSize(int orient) const
|
||||||
|
{
|
||||||
|
if ( orient == wxHORIZONTAL )
|
||||||
|
return m_xScrollLinesPerPage;
|
||||||
|
else
|
||||||
|
return m_yScrollLinesPerPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::SetScrollPageSize(int orient, int pageSize)
|
||||||
|
{
|
||||||
|
if ( orient == wxHORIZONTAL )
|
||||||
|
m_xScrollLinesPerPage = pageSize;
|
||||||
|
else
|
||||||
|
m_yScrollLinesPerPage = pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Scroll to given position (scroll position, not pixel position)
|
||||||
|
*/
|
||||||
|
void wxGenericScrolledWindow::Scroll( int x_pos, int y_pos )
|
||||||
|
{
|
||||||
|
if (!m_targetWindow)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (((x_pos == -1) || (x_pos == m_xScrollPosition)) &&
|
||||||
|
((y_pos == -1) || (y_pos == m_yScrollPosition))) return;
|
||||||
|
|
||||||
|
int w, h;
|
||||||
|
m_targetWindow->GetClientSize(&w, &h);
|
||||||
|
|
||||||
|
if ((x_pos != -1) && (m_xScrollPixelsPerLine))
|
||||||
|
{
|
||||||
|
int old_x = m_xScrollPosition;
|
||||||
|
m_xScrollPosition = x_pos;
|
||||||
|
|
||||||
|
// Calculate page size i.e. number of scroll units you get on the
|
||||||
|
// current client window
|
||||||
|
int noPagePositions = (int) ( (w/(double)m_xScrollPixelsPerLine) + 0.5 );
|
||||||
|
if (noPagePositions < 1) noPagePositions = 1;
|
||||||
|
|
||||||
|
// Correct position if greater than extent of canvas minus
|
||||||
|
// the visible portion of it or if below zero
|
||||||
|
m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition );
|
||||||
|
m_xScrollPosition = wxMax( 0, m_xScrollPosition );
|
||||||
|
|
||||||
|
if (old_x != m_xScrollPosition) {
|
||||||
|
m_targetWindow->SetScrollPos( wxHORIZONTAL, m_xScrollPosition, TRUE );
|
||||||
|
m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((y_pos != -1) && (m_yScrollPixelsPerLine))
|
||||||
|
{
|
||||||
|
int old_y = m_yScrollPosition;
|
||||||
|
m_yScrollPosition = y_pos;
|
||||||
|
|
||||||
|
// Calculate page size i.e. number of scroll units you get on the
|
||||||
|
// current client window
|
||||||
|
int noPagePositions = (int) ( (h/(double)m_yScrollPixelsPerLine) + 0.5 );
|
||||||
|
if (noPagePositions < 1) noPagePositions = 1;
|
||||||
|
|
||||||
|
// Correct position if greater than extent of canvas minus
|
||||||
|
// the visible portion of it or if below zero
|
||||||
|
m_yScrollPosition = wxMin( m_yScrollLines-noPagePositions, m_yScrollPosition );
|
||||||
|
m_yScrollPosition = wxMax( 0, m_yScrollPosition );
|
||||||
|
|
||||||
|
if (old_y != m_yScrollPosition) {
|
||||||
|
m_targetWindow->SetScrollPos( wxVERTICAL, m_yScrollPosition, TRUE );
|
||||||
|
m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
m_targetWindow->MacUpdateImmediately();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::EnableScrolling (bool x_scroll, bool y_scroll)
|
||||||
|
{
|
||||||
|
m_xScrollingEnabled = x_scroll;
|
||||||
|
m_yScrollingEnabled = y_scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::GetVirtualSize (int *x, int *y) const
|
||||||
|
{
|
||||||
|
if ( x )
|
||||||
|
*x = m_xScrollPixelsPerLine * m_xScrollLines;
|
||||||
|
if ( y )
|
||||||
|
*y = m_yScrollPixelsPerLine * m_yScrollLines;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Where the current view starts from
|
||||||
|
void wxGenericScrolledWindow::GetViewStart (int *x, int *y) const
|
||||||
|
{
|
||||||
|
if ( x )
|
||||||
|
*x = m_xScrollPosition;
|
||||||
|
if ( y )
|
||||||
|
*y = m_yScrollPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::CalcScrolledPosition(int x, int y, int *xx, int *yy) const
|
||||||
|
{
|
||||||
|
if ( xx )
|
||||||
|
*xx = x - m_xScrollPosition * m_xScrollPixelsPerLine;
|
||||||
|
if ( yy )
|
||||||
|
*yy = y - m_yScrollPosition * m_yScrollPixelsPerLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxGenericScrolledWindow::CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const
|
||||||
|
{
|
||||||
|
if ( xx )
|
||||||
|
*xx = x + m_xScrollPosition * m_xScrollPixelsPerLine;
|
||||||
|
if ( yy )
|
||||||
|
*yy = y + m_yScrollPosition * m_yScrollPixelsPerLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// event handlers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Default OnSize resets scrollbars, if any
|
||||||
|
void wxGenericScrolledWindow::OnSize(wxSizeEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
#if wxUSE_CONSTRAINTS
|
||||||
|
if (GetAutoLayout())
|
||||||
|
Layout();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
AdjustScrollbars();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This calls OnDraw, having adjusted the origin according to the current
|
||||||
|
// scroll position
|
||||||
|
void wxGenericScrolledWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxPaintDC dc(this);
|
||||||
|
PrepareDC(dc);
|
||||||
|
|
||||||
|
OnDraw(dc);
|
||||||
|
}
|
||||||
|
|
||||||
|
// kbd handling: notice that we use OnChar() and not OnKeyDown() for
|
||||||
|
// compatibility here - if we used OnKeyDown(), the programs which process
|
||||||
|
// arrows themselves in their OnChar() would never get the message and like
|
||||||
|
// this they always have the priority
|
||||||
|
void wxGenericScrolledWindow::OnChar(wxKeyEvent& event)
|
||||||
|
{
|
||||||
|
int stx, sty, // view origin
|
||||||
|
szx, szy, // view size (total)
|
||||||
|
clix, cliy; // view size (on screen)
|
||||||
|
|
||||||
|
ViewStart(&stx, &sty);
|
||||||
|
GetClientSize(&clix, &cliy);
|
||||||
|
GetVirtualSize(&szx, &szy);
|
||||||
|
|
||||||
|
if( m_xScrollPixelsPerLine )
|
||||||
|
{
|
||||||
|
clix /= m_xScrollPixelsPerLine;
|
||||||
|
szx /= m_xScrollPixelsPerLine;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clix = 0;
|
||||||
|
szx = -1;
|
||||||
|
}
|
||||||
|
if( m_yScrollPixelsPerLine )
|
||||||
|
{
|
||||||
|
cliy /= m_yScrollPixelsPerLine;
|
||||||
|
szy /= m_yScrollPixelsPerLine;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cliy = 0;
|
||||||
|
szy = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dsty;
|
||||||
|
switch ( event.KeyCode() )
|
||||||
|
{
|
||||||
|
case WXK_PAGEUP:
|
||||||
|
case WXK_PRIOR:
|
||||||
|
dsty = sty - (5 * cliy / 6);
|
||||||
|
Scroll(-1, (dsty == -1) ? 0 : dsty);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_PAGEDOWN:
|
||||||
|
case WXK_NEXT:
|
||||||
|
Scroll(-1, sty + (5 * cliy / 6));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_HOME:
|
||||||
|
Scroll(0, event.ControlDown() ? 0 : -1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_END:
|
||||||
|
Scroll(szx - clix, event.ControlDown() ? szy - cliy : -1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_UP:
|
||||||
|
Scroll(-1, sty - 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_DOWN:
|
||||||
|
Scroll(-1, sty + 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_LEFT:
|
||||||
|
Scroll(stx - 1, -1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WXK_RIGHT:
|
||||||
|
Scroll(stx + 1, -1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// not for us
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
}
|
4473
src/msw/window.cpp
Normal file
4473
src/msw/window.cpp
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user