wxPaintDC -> wxDC in wxListCtrl; fixed compile problems in wxTreeCtrl (return
types in wxCHECK_MSG); compiles again for 16-bit Windows, though dialogs don't work; added generic notebook implementation (copied from wxMotif); fixed event handler arg in wxDirDialog; added preliminary wxImage reference; removed some constructors from documentation; fixed wxIniConfig compilation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -95,7 +95,7 @@ class WXDLLEXPORT wxDirDialog: public wxDialog
|
||||
int ShowModal();
|
||||
|
||||
void OnTreeSelected( wxTreeEvent &event );
|
||||
void OnTreeKeyDown( wxKeyEvent &event );
|
||||
void OnTreeKeyDown( wxTreeEvent &event );
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnOK(wxCommandEvent& event);
|
||||
void OnCancel(wxCommandEvent& event);
|
||||
|
@@ -25,26 +25,30 @@
|
||||
#include "wx/scrolwin.h"
|
||||
#include "wx/settings.h"
|
||||
|
||||
#if wxUSE_DRAG_AND_DROP
|
||||
class WXDLLEXPORT wxDropTarget;
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// classes
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListItem;
|
||||
class wxListEvent;
|
||||
class wxListCtrl;
|
||||
class WXDLLEXPORT wxListItem;
|
||||
class WXDLLEXPORT wxListEvent;
|
||||
class WXDLLEXPORT wxListCtrl;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// internal classes
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListHeaderData;
|
||||
class wxListItemData;
|
||||
class wxListLineData;
|
||||
class WXDLLEXPORT wxListHeaderData;
|
||||
class WXDLLEXPORT wxListItemData;
|
||||
class WXDLLEXPORT wxListLineData;
|
||||
|
||||
class wxListHeaderWindow;
|
||||
class wxListMainWindow;
|
||||
class WXDLLEXPORT wxListHeaderWindow;
|
||||
class WXDLLEXPORT wxListMainWindow;
|
||||
|
||||
class wxListRenameTimer;
|
||||
class WXDLLEXPORT wxListRenameTimer;
|
||||
//class wxListTextCtrl;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -164,7 +168,7 @@ enum {
|
||||
// wxListItem
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListItem: public wxObject
|
||||
class WXDLLEXPORT wxListItem: public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListItem)
|
||||
|
||||
@@ -230,7 +234,7 @@ typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&);
|
||||
// wxListItemData (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListItemData : public wxObject
|
||||
class WXDLLEXPORT wxListItemData : public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListItemData);
|
||||
|
||||
@@ -269,7 +273,7 @@ class wxListItemData : public wxObject
|
||||
// wxListHeaderData (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListHeaderData : public wxObject
|
||||
class WXDLLEXPORT wxListHeaderData : public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListHeaderData);
|
||||
|
||||
@@ -304,7 +308,7 @@ class wxListHeaderData : public wxObject
|
||||
// wxListLineData (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListLineData : public wxObject
|
||||
class WXDLLEXPORT wxListLineData : public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListLineData);
|
||||
|
||||
@@ -320,13 +324,13 @@ class wxListLineData : public wxObject
|
||||
int m_spacing;
|
||||
wxListMainWindow *m_owner;
|
||||
|
||||
void DoDraw( wxPaintDC *dc, bool hilight, bool paintBG );
|
||||
void DoDraw( wxDC *dc, bool hilight, bool paintBG );
|
||||
|
||||
public:
|
||||
wxListLineData( void ) {};
|
||||
wxListLineData( wxListMainWindow *owner, int mode, wxBrush *hilightBrush );
|
||||
void CalculateSize( wxPaintDC *dc, int spacing );
|
||||
void SetPosition( wxPaintDC *dc, int x, int y, int window_width );
|
||||
void CalculateSize( wxDC *dc, int spacing );
|
||||
void SetPosition( wxDC *dc, int x, int y, int window_width );
|
||||
void SetColumnPosition( int index, int x );
|
||||
void GetSize( int &width, int &height );
|
||||
void GetExtent( int &x, int &y, int &width, int &height );
|
||||
@@ -341,8 +345,8 @@ class wxListLineData : public wxObject
|
||||
void GetRect( wxRectangle &rect );
|
||||
void Hilight( bool on );
|
||||
void ReverseHilight( void );
|
||||
void DrawRubberBand( wxPaintDC *dc, bool on );
|
||||
void Draw( wxPaintDC *dc );
|
||||
void DrawRubberBand( wxDC *dc, bool on );
|
||||
void Draw( wxDC *dc );
|
||||
bool IsInRect( int x, int y, const wxRectangle &rect );
|
||||
bool IsHilighted( void );
|
||||
void AssignRect( wxRectangle &dest, int x, int y, int width, int height );
|
||||
@@ -353,7 +357,7 @@ class wxListLineData : public wxObject
|
||||
// wxListHeaderWindow (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListHeaderWindow : public wxWindow
|
||||
class WXDLLEXPORT wxListHeaderWindow : public wxWindow
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListHeaderWindow)
|
||||
|
||||
@@ -372,7 +376,7 @@ class wxListHeaderWindow : public wxWindow
|
||||
wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner,
|
||||
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
|
||||
long style = 0, const wxString &name = "columntitles" );
|
||||
void DoDrawRect( wxPaintDC *dc, int x, int y, int w, int h );
|
||||
void DoDrawRect( wxDC *dc, int x, int y, int w, int h );
|
||||
void OnPaint( wxPaintEvent &event );
|
||||
void DrawCurrent();
|
||||
void OnMouse( wxMouseEvent &event );
|
||||
@@ -385,7 +389,7 @@ class wxListHeaderWindow : public wxWindow
|
||||
// wxListRenameTimer (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListRenameTimer: public wxTimer
|
||||
class WXDLLEXPORT wxListRenameTimer: public wxTimer
|
||||
{
|
||||
private:
|
||||
wxListMainWindow *m_owner;
|
||||
@@ -399,7 +403,7 @@ class wxListRenameTimer: public wxTimer
|
||||
// wxListTextCtrl (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListTextCtrl: public wxTextCtrl
|
||||
class WXDLLEXPORT wxListTextCtrl: public wxTextCtrl
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListTextCtrl);
|
||||
|
||||
@@ -426,7 +430,7 @@ class wxListTextCtrl: public wxTextCtrl
|
||||
// wxListMainWindow (internal)
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListMainWindow: public wxScrolledWindow
|
||||
class WXDLLEXPORT wxListMainWindow: public wxScrolledWindow
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListMainWindow);
|
||||
|
||||
@@ -480,7 +484,7 @@ class wxListMainWindow: public wxScrolledWindow
|
||||
void OnSetFocus( wxFocusEvent &event );
|
||||
void OnKillFocus( wxFocusEvent &event );
|
||||
void OnSize( wxSizeEvent &event );
|
||||
void DrawImage( int index, wxPaintDC *dc, int x, int y );
|
||||
void DrawImage( int index, wxDC *dc, int x, int y );
|
||||
void GetImageSize( int index, int &width, int &height );
|
||||
int GetIndexOfLine( const wxListLineData *line );
|
||||
int GetTextLength( wxString &s ); // should be const
|
||||
@@ -528,7 +532,7 @@ class wxListMainWindow: public wxScrolledWindow
|
||||
// wxListCtrl
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxListCtrl: public wxControl
|
||||
class WXDLLEXPORT wxListCtrl: public wxControl
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxListCtrl);
|
||||
|
||||
@@ -611,10 +615,13 @@ class wxListCtrl: public wxControl
|
||||
void SetForegroundColour( const wxColour &colour );
|
||||
void SetFont( const wxFont &font );
|
||||
|
||||
#if wxUSE_DRAG_AND_DROP
|
||||
void SetDropTarget( wxDropTarget *dropTarget )
|
||||
{ m_mainWin->SetDropTarget( dropTarget ); }
|
||||
wxDropTarget *GetDropTarget() const
|
||||
{ return m_mainWin->GetDropTarget(); }
|
||||
#endif
|
||||
|
||||
void SetCursor( const wxCursor &cursor )
|
||||
{ if (m_mainWin) m_mainWin->wxWindow::SetCursor( cursor); }
|
||||
wxColour GetBackgroundColour() const
|
||||
|
247
include/wx/generic/notebook.h
Normal file
247
include/wx/generic/notebook.h
Normal file
@@ -0,0 +1,247 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: notebook.h
|
||||
// Purpose: wxNotebook class (a.k.a. property sheet, tabbed dialog)
|
||||
// Author: Julian Smart
|
||||
// Modified by:
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_NOTEBOOK_H_
|
||||
#define _WX_NOTEBOOK_H_
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface "notebook.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
#include "wx/dynarray.h"
|
||||
#include "wx/event.h"
|
||||
#include "wx/control.h"
|
||||
#include "wx/generic/tabg.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// types
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// fwd declarations
|
||||
class WXDLLEXPORT wxImageList;
|
||||
class WXDLLEXPORT wxWindow;
|
||||
|
||||
// array of notebook pages
|
||||
typedef wxWindow wxNotebookPage; // so far, any window can be a page
|
||||
WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// notebook events
|
||||
// ----------------------------------------------------------------------------
|
||||
class WXDLLEXPORT wxNotebookEvent : public wxCommandEvent
|
||||
{
|
||||
public:
|
||||
wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
|
||||
int nSel = -1, int nOldSel = -1)
|
||||
: wxCommandEvent(commandType, id) { m_nSel = nSel; m_nOldSel = nOldSel; }
|
||||
|
||||
// accessors
|
||||
int GetSelection() const { return m_nSel; }
|
||||
int GetOldSelection() const { return m_nOldSel; }
|
||||
|
||||
void SetSelection(int sel) { m_nSel = sel; }
|
||||
void SetOldSelection(int oldSel) { m_nOldSel = oldSel; }
|
||||
|
||||
private:
|
||||
int m_nSel, // currently selected page
|
||||
m_nOldSel; // previously selected page
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxNotebookEvent)
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNotebook
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxNotebook;
|
||||
|
||||
// This reuses wxTabView to draw the tabs.
|
||||
class WXDLLEXPORT wxNotebookTabView: public wxTabView
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxNotebookTabView)
|
||||
public:
|
||||
wxNotebookTabView(wxNotebook* notebook, long style = wxTAB_STYLE_DRAW_BOX | wxTAB_STYLE_COLOUR_INTERIOR);
|
||||
~wxNotebookTabView(void);
|
||||
|
||||
// Called when a tab is activated
|
||||
virtual void OnTabActivate(int activateId, int deactivateId);
|
||||
|
||||
protected:
|
||||
wxNotebook* m_notebook;
|
||||
};
|
||||
|
||||
class wxNotebook : public wxControl
|
||||
{
|
||||
public:
|
||||
// ctors
|
||||
// -----
|
||||
// default for dynamic class
|
||||
wxNotebook();
|
||||
// the same arguments as for wxControl (@@@ any special styles?)
|
||||
wxNotebook(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = 0,
|
||||
const wxString& name = "notebook");
|
||||
// Create() function
|
||||
bool Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = 0,
|
||||
const wxString& name = "notebook");
|
||||
// dtor
|
||||
~wxNotebook();
|
||||
|
||||
// accessors
|
||||
// ---------
|
||||
// get number of pages in the dialog
|
||||
int GetPageCount() const;
|
||||
|
||||
// Find the position of the wxNotebookPage, -1 if not found.
|
||||
int FindPagePosition(wxNotebookPage* page) const;
|
||||
|
||||
// set the currently selected page, return the index of the previously
|
||||
// selected one (or -1 on error)
|
||||
// NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events
|
||||
int SetSelection(int nPage);
|
||||
// cycle thru the tabs
|
||||
void AdvanceSelection(bool bForward = TRUE);
|
||||
// get the currently selected page
|
||||
int GetSelection() const { return m_nSelection; }
|
||||
|
||||
// set/get the title of a page
|
||||
bool SetPageText(int nPage, const wxString& strText);
|
||||
wxString GetPageText(int nPage) const;
|
||||
|
||||
// image list stuff: each page may have an image associated with it. All
|
||||
// the images belong to an image list, so you have to
|
||||
// 1) create an image list
|
||||
// 2) associate it with the notebook
|
||||
// 3) set for each page it's image
|
||||
// associate image list with a control
|
||||
void SetImageList(wxImageList* imageList);
|
||||
// get pointer (may be NULL) to the associated image list
|
||||
wxImageList* GetImageList() const { return m_pImageList; }
|
||||
|
||||
// sets/returns item's image index in the current image list
|
||||
int GetPageImage(int nPage) const;
|
||||
bool SetPageImage(int nPage, int nImage);
|
||||
|
||||
// currently it's always 1 because wxGTK doesn't support multi-row
|
||||
// tab controls
|
||||
int GetRowCount() const;
|
||||
|
||||
// control the appearance of the notebook pages
|
||||
// set the size (the same for all pages)
|
||||
void SetPageSize(const wxSize& size);
|
||||
// set the padding between tabs (in pixels)
|
||||
void SetPadding(const wxSize& padding);
|
||||
|
||||
// operations
|
||||
// ----------
|
||||
// remove one page from the notebook, and delete the page.
|
||||
bool DeletePage(int nPage);
|
||||
bool DeletePage(wxNotebookPage* page);
|
||||
// remove one page from the notebook, without deleting the page.
|
||||
bool RemovePage(int nPage);
|
||||
bool RemovePage(wxNotebookPage* page);
|
||||
// remove all pages
|
||||
bool DeleteAllPages();
|
||||
// adds a new page to the notebook (it will be deleted ny the notebook,
|
||||
// don't delete it yourself). If bSelect, this page becomes active.
|
||||
bool AddPage(wxNotebookPage *pPage,
|
||||
const wxString& strText,
|
||||
bool bSelect = FALSE,
|
||||
int imageId = -1);
|
||||
// the same as AddPage(), but adds it at the specified position
|
||||
bool InsertPage(int nPage,
|
||||
wxNotebookPage *pPage,
|
||||
const wxString& strText,
|
||||
bool bSelect = FALSE,
|
||||
int imageId = -1);
|
||||
// get the panel which represents the given page
|
||||
wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; }
|
||||
|
||||
// callbacks
|
||||
// ---------
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnIdle(wxIdleEvent& event);
|
||||
void OnSelChange(wxNotebookEvent& event);
|
||||
void OnSetFocus(wxFocusEvent& event);
|
||||
void OnNavigationKey(wxNavigationKeyEvent& event);
|
||||
|
||||
// base class virtuals
|
||||
// -------------------
|
||||
virtual void Command(wxCommandEvent& event);
|
||||
virtual void SetConstraintSizes(bool recurse = TRUE);
|
||||
virtual bool DoPhase(int nPhase);
|
||||
|
||||
// Implementation
|
||||
|
||||
// wxNotebook on Motif uses a generic wxTabView to implement itself.
|
||||
inline wxTabView *GetTabView() const { return m_tabView; }
|
||||
inline void SetTabView(wxTabView *v) { m_tabView = v; }
|
||||
|
||||
void OnMouseEvent(wxMouseEvent& event);
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
|
||||
virtual wxRect GetAvailableClientSize();
|
||||
|
||||
// Implementation: calculate the layout of the view rect
|
||||
// and resize the children if required
|
||||
bool RefreshLayout(bool force = TRUE);
|
||||
|
||||
protected:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
|
||||
// helper functions
|
||||
void ChangePage(int nOldSel, int nSel); // change pages
|
||||
|
||||
wxImageList *m_pImageList; // we can have an associated image list
|
||||
wxArrayPages m_aPages; // array of pages
|
||||
|
||||
int m_nSelection; // the current selection (-1 if none)
|
||||
|
||||
wxTabView* m_tabView;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxNotebook)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// event macros
|
||||
// ----------------------------------------------------------------------------
|
||||
typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&);
|
||||
|
||||
#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \
|
||||
{ \
|
||||
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \
|
||||
id, \
|
||||
-1, \
|
||||
(wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \
|
||||
NULL \
|
||||
},
|
||||
|
||||
#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \
|
||||
{ \
|
||||
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ \
|
||||
id, \
|
||||
-1, \
|
||||
(wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \
|
||||
NULL \
|
||||
},
|
||||
|
||||
#endif // _WX_NOTEBOOK_H_
|
Reference in New Issue
Block a user