More Motif stuff incl. beginnings of wxToolBar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@895 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
b0f1bdde5a
commit
0d57be4594
@ -38,7 +38,7 @@ or a frame becomes inactivate resulting in all application frames being inactive
|
||||
|
||||
\membersection{wxActivateEvent::wxActivateEvent}
|
||||
|
||||
\func{}{wxActivateEvent}{\param{WXTYPE }{eventType = 0}, \param{int }{id = 0}}
|
||||
\func{}{wxActivateEvent}{\param{WXTYPE }{eventType = 0}, \param{bool}{ active = TRUE}, \param{int }{id = 0}}
|
||||
|
||||
Constructor.
|
||||
|
||||
|
@ -24,7 +24,14 @@ High Priority
|
||||
|
||||
- Colour setting in widgets.
|
||||
|
||||
- Implementation of OnEraseBackground.
|
||||
- Implementation of OnEraseBackground. How? Call OnEraseBackground
|
||||
just before OnPaint? Will duplicate Xlib's own erase of the background.
|
||||
However, this is usually OK, because the default wxWindow::OnEraseBackground
|
||||
can do nothing (SetBackgroundColour will make the background look OK).
|
||||
And if a custom OnEraseBackground uses the same colour as the window
|
||||
background, no flicker will be seen. If it does something else, such as
|
||||
painting a tiled bitmap, then a slight flicker might be seen unless
|
||||
X can be persuaded not to repaint the window background by default.
|
||||
|
||||
- wxBitmapCheckBox, wxBitmapRadioButton
|
||||
|
||||
@ -48,9 +55,11 @@ High Priority
|
||||
http://www.motifzone.com/tmd/articles/Kurt_Huhner/jun96.html.
|
||||
This article also explains how to implement tooltips.
|
||||
|
||||
- wxSystemSettings
|
||||
- Find out why modal dialogs give a grab warning.
|
||||
|
||||
- wxTimer
|
||||
- Find out why UI updates aren't working (probably an OnIdle failure).
|
||||
|
||||
- wxSystemSettings
|
||||
|
||||
- wxThread (hopefully, similar to wxGTK)
|
||||
|
||||
|
@ -198,7 +198,7 @@ public:
|
||||
inline WXDisplay* GetPixmap() const { return M_BITMAPDATA->m_pixmap; }
|
||||
virtual WXPixmap GetLabelPixmap(WXWidget w) ;
|
||||
virtual WXPixmap GetArmPixmap(WXWidget w) ;
|
||||
virtual WXPixmap GetInsensPixmap(WXWidget w) ;
|
||||
virtual WXPixmap GetInsensPixmap(WXWidget w = (WXWidget) 0) ;
|
||||
|
||||
protected:
|
||||
static wxList sm_handlers;
|
||||
|
@ -44,6 +44,11 @@ class WXDLLEXPORT wxButton: public wxControl
|
||||
|
||||
virtual void SetDefault();
|
||||
virtual void Command(wxCommandEvent& event);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -45,6 +45,11 @@ class WXDLLEXPORT wxCheckBox: public wxControl
|
||||
virtual void SetValue(bool);
|
||||
virtual bool GetValue() const ;
|
||||
virtual void Command(wxCommandEvent& event);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
};
|
||||
|
||||
class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox
|
||||
|
@ -67,6 +67,10 @@ class WXDLLEXPORT wxChoice: public wxControl
|
||||
|
||||
void SetFocus();
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetTopWidget() const { return m_formWidget; }
|
||||
WXWidget GetMainWidget() const { return m_buttonWidget; }
|
||||
|
||||
|
@ -22,6 +22,7 @@
|
||||
// Colour
|
||||
class WXDLLEXPORT wxColour : public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxColour)
|
||||
public:
|
||||
// ctors
|
||||
// default
|
||||
@ -53,10 +54,17 @@ public:
|
||||
|
||||
// accessors
|
||||
bool Ok() const {return m_isInit; }
|
||||
unsigned char Red() const { return m_red; }
|
||||
unsigned char Green() const { return m_green; }
|
||||
unsigned char Blue() const { return m_blue; }
|
||||
|
||||
int GetPixel() const { return m_pixel; };
|
||||
void SetPixel(int pixel) { m_pixel = pixel; m_isInit = TRUE; };
|
||||
|
||||
inline bool operator == (const wxColour& colour) { return (m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue); }
|
||||
|
||||
inline bool operator != (const wxColour& colour) { return (!(m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue)); }
|
||||
|
||||
// Allocate a colour, or nearest colour, using the given display.
|
||||
// If realloc is TRUE, ignore the existing pixel, otherwise just return
|
||||
// the existing one.
|
||||
@ -67,6 +75,8 @@ public:
|
||||
|
||||
int AllocColour(WXDisplay* display, bool realloc = FALSE);
|
||||
|
||||
void InitFromName(const wxString& col);
|
||||
|
||||
private:
|
||||
bool m_isInit;
|
||||
unsigned char m_red;
|
||||
|
@ -72,6 +72,11 @@ class WXDLLEXPORT wxComboBox: public wxChoice
|
||||
}
|
||||
virtual void SetSelection(long from, long to);
|
||||
virtual void SetEditable(bool editable);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -93,7 +93,10 @@ public:
|
||||
// Responds to colour changes
|
||||
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
||||
|
||||
//// Motif-specific
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
inline WXWidget GetTopWidget() const { return m_mainWidget; }
|
||||
inline WXWidget GetClientWidget() const { return m_mainWidget; }
|
||||
|
||||
|
@ -144,8 +144,10 @@ public:
|
||||
virtual void CaptureMouse();
|
||||
virtual void ReleaseMouse();
|
||||
|
||||
//// Motif-specific
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetMenuBarWidget() const ;
|
||||
inline WXWidget GetShellWidget() const { return m_frameShell; }
|
||||
inline WXWidget GetWorkAreaWidget() const { return m_workArea; }
|
||||
|
@ -60,6 +60,11 @@ class WXDLLEXPORT wxGauge: public wxControl
|
||||
|
||||
virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ;
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
|
||||
protected:
|
||||
int m_rangeMax;
|
||||
int m_gaugePos;
|
||||
|
@ -89,6 +89,10 @@ class WXDLLEXPORT wxListBox: public wxControl
|
||||
|
||||
void Command(wxCommandEvent& event);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetTopWidget() const;
|
||||
|
||||
protected:
|
||||
|
@ -69,7 +69,7 @@ public:
|
||||
// toolbar(s), don't call SetToolBar.
|
||||
void GetClientSize(int *width, int *height) const;
|
||||
|
||||
// Get the active MDI child window (Windows only)
|
||||
// Get the active MDI child window
|
||||
wxMDIChildFrame *GetActiveChild() const ;
|
||||
|
||||
// Get the client window
|
||||
@ -86,9 +86,13 @@ public:
|
||||
virtual void ActivateNext();
|
||||
virtual void ActivatePrevious();
|
||||
|
||||
// Implementation
|
||||
inline void SetActiveChild(wxMDIChildFrame* child) { m_activeChild = child; }
|
||||
|
||||
protected:
|
||||
|
||||
wxMDIClientWindow* m_clientWindow;
|
||||
wxMDIChildFrame* m_activeChild;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
@ -144,6 +148,8 @@ public:
|
||||
void BuildClientArea(WXWidget parent);
|
||||
inline WXWidget GetTopWidget() const { return m_mainWidget; };
|
||||
inline wxXsMDIWindow *GetMDIWindow() const { return m_mdiWindow; };
|
||||
virtual void OnRaise();
|
||||
virtual void OnLower();
|
||||
|
||||
protected:
|
||||
wxXsMDIWindow* m_mdiWindow ;
|
||||
|
@ -162,6 +162,11 @@ public:
|
||||
virtual void SetConstraintSizes(bool recurse = TRUE);
|
||||
virtual bool DoPhase(int nPhase);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
|
||||
protected:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
|
@ -35,6 +35,8 @@ bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Widget widget,
|
||||
bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent);
|
||||
int wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap);
|
||||
Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap );
|
||||
extern XColor g_itemColors[];
|
||||
extern int wxComputeColours (Display *display, wxColour * back, wxColour * fore);
|
||||
|
||||
#define wxNO_COLORS 0x00
|
||||
#define wxBACK_COLORS 0x01
|
||||
|
@ -68,6 +68,10 @@ public:
|
||||
inline int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; }
|
||||
inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; }
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetTopWidget() const { return m_formWidget; }
|
||||
WXWidget GetLabelWidget() const { return m_labelWidget; }
|
||||
inline WXWidget* GetRadioButtons() const { return m_radioButtons; }
|
||||
|
@ -48,6 +48,10 @@ public:
|
||||
|
||||
void Command(wxCommandEvent& event);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetTopWidget() const { return m_formWidget; }
|
||||
WXWidget GetLabelWidget() const { return m_labelWidget; }
|
||||
|
||||
|
@ -56,6 +56,11 @@ public:
|
||||
|
||||
void Command(wxCommandEvent& event);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
|
||||
protected:
|
||||
int m_pageSize;
|
||||
int m_viewSize;
|
||||
|
@ -76,6 +76,12 @@ public:
|
||||
void SetTick(int tickPos) ;
|
||||
|
||||
void Command(wxCommandEvent& event);
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
|
||||
protected:
|
||||
int m_rangeMin;
|
||||
int m_rangeMax;
|
||||
|
@ -64,6 +64,11 @@ class WXDLLEXPORT wxSpinButton: public wxControl
|
||||
|
||||
void Command(wxCommandEvent& event) { ProcessCommand(event); };
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
|
||||
protected:
|
||||
int m_min;
|
||||
int m_max;
|
||||
|
@ -56,6 +56,11 @@ class WXDLLEXPORT wxStaticBitmap: public wxControl
|
||||
// overriden base class virtuals
|
||||
virtual bool AcceptsFocus() const { return FALSE; }
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
|
||||
protected:
|
||||
wxBitmap m_messageBitmap;
|
||||
|
||||
|
@ -51,7 +51,10 @@ class WXDLLEXPORT wxStaticBox: public wxControl
|
||||
void SetLabel(const wxString& label);
|
||||
wxString GetLabel() const;
|
||||
|
||||
// Motif-specific
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetTopWidget() const { return m_formWidget; }
|
||||
WXWidget GetLabelWidget() const { return m_labelWidget; }
|
||||
|
||||
|
@ -46,6 +46,11 @@ class WXDLLEXPORT wxStaticText: public wxControl
|
||||
// operations
|
||||
virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
|
||||
virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {};
|
||||
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -124,11 +124,12 @@ public:
|
||||
void OnChar(wxKeyEvent& event);
|
||||
// void OnEraseBackground(wxEraseEvent& event);
|
||||
|
||||
// Implementation
|
||||
// --------------
|
||||
virtual void Command(wxCommandEvent& event);
|
||||
|
||||
//// Motif-specific
|
||||
// Implementation
|
||||
virtual void ChangeFont();
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
inline void SetModified(bool mod) { m_modified = mod; }
|
||||
virtual WXWidget GetTopWidget() const;
|
||||
|
||||
|
@ -22,6 +22,8 @@ class WXDLLEXPORT wxTimer: public wxObject
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxTimer)
|
||||
|
||||
friend void wxTimerCallback (wxTimer * timer);
|
||||
|
||||
public:
|
||||
wxTimer();
|
||||
~wxTimer();
|
||||
|
@ -32,7 +32,9 @@ class WXDLLEXPORT wxToolBar: public wxToolBarBase
|
||||
|
||||
inline wxToolBar(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
long style = wxNO_BORDER|wxTB_HORIZONTAL,
|
||||
const wxString& name = wxToolBarNameStr)
|
||||
const wxString& name = wxToolBarNameStr):
|
||||
m_widgets(wxKEY_INTEGER)
|
||||
|
||||
{
|
||||
Create(parent, id, pos, size, style, name);
|
||||
}
|
||||
@ -69,6 +71,8 @@ class WXDLLEXPORT wxToolBar: public wxToolBarBase
|
||||
bool Realize() { return CreateTools(); };
|
||||
|
||||
protected:
|
||||
// List of widgets in the toolbar, indexed by tool index
|
||||
wxList m_widgets;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
@ -311,11 +311,11 @@ public:
|
||||
void SetConstraints(wxLayoutConstraints *c);
|
||||
|
||||
// Set/get window background colour
|
||||
inline virtual void SetBackgroundColour(const wxColour& col);
|
||||
virtual void SetBackgroundColour(const wxColour& col);
|
||||
inline virtual wxColour GetBackgroundColour() const;
|
||||
|
||||
// Set/get window foreground colour
|
||||
inline virtual void SetForegroundColour(const wxColour& col);
|
||||
virtual void SetForegroundColour(const wxColour& col);
|
||||
inline virtual wxColour GetForegroundColour() const;
|
||||
|
||||
// Get the default button, if there is one
|
||||
@ -488,8 +488,15 @@ public:
|
||||
virtual WXRegion GetPaintRegion() const { return m_paintRegion; }
|
||||
|
||||
// Change properties
|
||||
virtual void ChangeColour(WXWidget widget);
|
||||
virtual void ChangeFont(WXWidget widget);
|
||||
virtual void ChangeFont(); // Change to the current font (often overridden)
|
||||
virtual void DoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour);
|
||||
virtual void DoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour = FALSE);
|
||||
// These to be overridden as needed (may change several widgets)
|
||||
virtual void ChangeBackgroundColour(); // Change background and foreground colour using current
|
||||
// background colour setting (Motif generates
|
||||
// foreground based on background)
|
||||
virtual void ChangeForegroundColour(); // Change foreground colour using current
|
||||
// foreground colour setting
|
||||
|
||||
// Adds the widget to the hash table and adds event handlers.
|
||||
bool AttachWidget (wxWindow* parent, WXWidget mainWidget,
|
||||
@ -595,9 +602,7 @@ inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHan
|
||||
inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; }
|
||||
inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; }
|
||||
inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; }
|
||||
inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; };
|
||||
inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; };
|
||||
inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; };
|
||||
inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; };
|
||||
|
||||
inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; }
|
||||
|
@ -12,9 +12,7 @@
|
||||
# define wxToolBar wxToolBarMSW
|
||||
# define sm_classwxToolBar sm_classwxToolBarMSW
|
||||
#elif defined(__WXMOTIF__)
|
||||
# include "wx/tbarsmpl.h"
|
||||
# define wxToolBar wxToolBarSimple
|
||||
# define sm_classwxToolBar sm_classwxToolBarSimple
|
||||
# include "wx/motif/toolbar.h"
|
||||
#elif defined(__WXGTK__)
|
||||
# include "wx/gtk/tbargtk.h"
|
||||
#elif defined(__WXQT__)
|
||||
|
@ -66,7 +66,7 @@ DECLARE_EVENT_TABLE()
|
||||
class MyCanvas: public wxScrolledWindow
|
||||
{
|
||||
public:
|
||||
MyCanvas(wxWindow* parent, int x, int y, int w, int h);
|
||||
MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h);
|
||||
virtual ~MyCanvas();
|
||||
|
||||
virtual void OnDraw(wxDC& dc);
|
||||
@ -83,6 +83,12 @@ END_EVENT_TABLE()
|
||||
#define SPLIT_VERTICAL 3
|
||||
#define SPLIT_UNSPLIT 4
|
||||
|
||||
// Window ids
|
||||
#define SPLITTER_WINDOW 100
|
||||
#define SPLITTER_FRAME 101
|
||||
#define CANVAS1 102
|
||||
#define CANVAS2 103
|
||||
|
||||
IMPLEMENT_APP(MyApp)
|
||||
|
||||
bool MyApp::OnInit(void)
|
||||
@ -110,7 +116,7 @@ END_EVENT_TABLE()
|
||||
|
||||
// My frame constructor
|
||||
MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size):
|
||||
wxFrame(frame, -1, title, pos, size)
|
||||
wxFrame(frame, SPLITTER_FRAME, title, pos, size)
|
||||
{
|
||||
// set the icon
|
||||
#ifdef __WXMSW__
|
||||
@ -131,16 +137,16 @@ MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, cons
|
||||
|
||||
SetMenuBar(menuBar);
|
||||
|
||||
splitter = new wxSplitterWindow(this, -1, wxPoint(0, 0), wxSize(400, 400),
|
||||
splitter = new wxSplitterWindow(this, SPLITTER_WINDOW, wxPoint(0, 0), wxSize(400, 400),
|
||||
// wxSP_BORDER);
|
||||
wxSP_3D);
|
||||
// wxSP_NOBORDER);
|
||||
|
||||
leftCanvas = new MyCanvas(splitter, 0, 0, 400, 400);
|
||||
leftCanvas = new MyCanvas(splitter, CANVAS1, 0, 0, 400, 400);
|
||||
leftCanvas->SetBackgroundColour(*wxRED);
|
||||
leftCanvas->SetScrollbars(20, 20, 50, 50);
|
||||
|
||||
rightCanvas = new MyCanvas(splitter, 0, 0, 400, 400);
|
||||
rightCanvas = new MyCanvas(splitter, CANVAS2, 0, 0, 400, 400);
|
||||
rightCanvas->SetBackgroundColour(*wxCYAN);
|
||||
rightCanvas->SetScrollbars(20, 20, 50, 50);
|
||||
rightCanvas->Show(FALSE);
|
||||
@ -212,8 +218,8 @@ void MyFrame::OnIdle(wxIdleEvent& event)
|
||||
wxFrame::OnIdle(event);
|
||||
}
|
||||
|
||||
MyCanvas::MyCanvas(wxWindow* parent, int x, int y, int w, int h) :
|
||||
wxScrolledWindow(parent, -1, wxPoint(x, y), wxSize(w, h))
|
||||
MyCanvas::MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h) :
|
||||
wxScrolledWindow(parent, id, wxPoint(x, y), wxSize(w, h))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -302,7 +302,7 @@ int wxApp::MainLoop()
|
||||
|
||||
XtDispatchEvent(&event);
|
||||
|
||||
DeletePendingObjects();
|
||||
ProcessIdle();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -619,8 +619,17 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long fla
|
||||
M_BITMAPHANDLERDATA->m_bitmapMask->SetPixmap((WXPixmap) mask);
|
||||
}
|
||||
|
||||
unsigned int depthRet;
|
||||
int xRet, yRet;
|
||||
unsigned int widthRet, heightRet, borderWidthRet;
|
||||
Window rootWindowRet;
|
||||
XGetGeometry(dpy, pixmap, &rootWindowRet, &xRet, &yRet,
|
||||
&widthRet, &heightRet, &borderWidthRet, &depthRet);
|
||||
|
||||
M_BITMAPHANDLERDATA->m_width = xpmAttr.width;
|
||||
M_BITMAPHANDLERDATA->m_height = xpmAttr.height;
|
||||
|
||||
/*
|
||||
if ( xpmAttr.npixels > 2 )
|
||||
{
|
||||
M_BITMAPHANDLERDATA->m_depth = 8; // TODO: next time not just a guess :-) ...
|
||||
@ -628,6 +637,9 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long fla
|
||||
{
|
||||
M_BITMAPHANDLERDATA->m_depth = 1; // mono
|
||||
}
|
||||
*/
|
||||
|
||||
M_BITMAPHANDLERDATA->m_depth = depthRet;
|
||||
|
||||
M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
|
||||
|
||||
@ -714,6 +726,15 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int widt
|
||||
// Set attributes
|
||||
M_BITMAPHANDLERDATA->m_width = xpmAttr.width;
|
||||
M_BITMAPHANDLERDATA->m_height = xpmAttr.height;
|
||||
|
||||
unsigned int depthRet;
|
||||
int xRet, yRet;
|
||||
unsigned int widthRet, heightRet, borderWidthRet;
|
||||
Window rootWindowRet;
|
||||
XGetGeometry(dpy, pixmap, &rootWindowRet, &xRet, &yRet,
|
||||
&widthRet, &heightRet, &borderWidthRet, &depthRet);
|
||||
|
||||
/*
|
||||
if ( xpmAttr.npixels > 2 )
|
||||
{
|
||||
M_BITMAPHANDLERDATA->m_depth = 8; // next time not just a guess :-) ...
|
||||
@ -721,6 +742,10 @@ bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int widt
|
||||
{
|
||||
M_BITMAPHANDLERDATA->m_depth = 1; // mono
|
||||
}
|
||||
*/
|
||||
|
||||
M_BITMAPHANDLERDATA->m_depth = depthRet;
|
||||
|
||||
M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
|
||||
XpmFreeAttributes(&xpmAttr);
|
||||
M_BITMAPHANDLERDATA->m_ok = TRUE;
|
||||
@ -846,6 +871,18 @@ WXPixmap wxBitmap::GetInsensPixmap (WXWidget w)
|
||||
{
|
||||
Display *dpy = (Display*) M_BITMAPDATA->m_display;
|
||||
|
||||
if (M_BITMAPDATA->m_insensPixmap)
|
||||
return M_BITMAPDATA->m_insensPixmap;
|
||||
|
||||
if (!w)
|
||||
{
|
||||
M_BITMAPDATA->m_insensPixmap = (WXPixmap) XCreateInsensitivePixmap(dpy, (Pixmap) M_BITMAPDATA->m_pixmap);
|
||||
if (M_BITMAPDATA->m_insensPixmap)
|
||||
return M_BITMAPDATA->m_insensPixmap;
|
||||
else
|
||||
return M_BITMAPDATA->m_pixmap;
|
||||
}
|
||||
|
||||
if (M_BITMAPDATA->m_insensImage == (WXPixmap) 0)
|
||||
return M_BITMAPDATA->m_pixmap;
|
||||
|
||||
|
@ -116,7 +116,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
|
||||
ChangeColour (m_mainWidget);
|
||||
ChangeBackgroundColour ();
|
||||
|
||||
|
||||
return TRUE;
|
||||
|
@ -38,6 +38,8 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
|
||||
SetName(name);
|
||||
SetValidator(validator);
|
||||
m_windowStyle = style;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
parent->AddChild((wxButton *)this);
|
||||
|
||||
@ -77,7 +79,7 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -132,3 +134,19 @@ void wxButtonCallback (Widget w, XtPointer clientData, XtPointer ptr)
|
||||
event.SetEventObject(item);
|
||||
item->ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxButton::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxButton::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxButton::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,8 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
|
||||
SetName(name);
|
||||
SetValidator(validator);
|
||||
m_windowStyle = style;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
@ -67,7 +69,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
|
||||
SetCanAddEventHandler(TRUE);
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
SetFont(* parent->GetFont());
|
||||
|
||||
return TRUE;
|
||||
@ -148,3 +150,19 @@ void wxCheckBoxCallback (Widget w, XtPointer clientData,
|
||||
event.SetEventObject(item);
|
||||
item->ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxCheckBox::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxCheckBox::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxCheckBox::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,9 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
||||
else
|
||||
m_windowId = id;
|
||||
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
Widget parentWidget = (Widget) parent->GetClientWidget();
|
||||
|
||||
m_formWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) name,
|
||||
@ -125,7 +128,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
|
||||
AttachWidget (parent, m_buttonWidget, m_formWidget, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -415,3 +418,18 @@ void wxChoiceCallback (Widget w, XtPointer clientData,
|
||||
}
|
||||
}
|
||||
|
||||
void wxChoice::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxChoice::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxChoice::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,8 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
||||
SetValidator(validator);
|
||||
m_noStrings = n;
|
||||
m_windowStyle = style;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
@ -85,7 +87,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -205,5 +207,20 @@ void wxComboBoxCallback (Widget w, XtPointer clientData,
|
||||
}
|
||||
}
|
||||
|
||||
void wxComboBox::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxComboBox::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxComboBox::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1855,6 +1855,8 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
|
||||
|
||||
int pixel = m_backgroundBrush.GetColour().AllocColour(m_display);
|
||||
|
||||
// XSetWindowBackground doesn't work for non-Window pixmaps
|
||||
if (!this->IsKindOf(CLASSINFO(wxMemoryDC)))
|
||||
XSetWindowBackground ((Display*) m_display, (Pixmap) m_pixmap, pixel);
|
||||
|
||||
// Necessary for ::DrawIcon, which use fg/bg pixel or the GC.
|
||||
|
@ -80,7 +80,7 @@ END_EVENT_TABLE()
|
||||
wxDialog::wxDialog()
|
||||
{
|
||||
m_modalShowing = FALSE;
|
||||
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
|
||||
}
|
||||
|
||||
bool wxDialog::Create(wxWindow *parent, wxWindowID id,
|
||||
@ -94,7 +94,9 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id,
|
||||
m_modalShowing = FALSE;
|
||||
m_dialogTitle = title;
|
||||
|
||||
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE));
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
|
||||
m_foregroundColour = *wxBLACK;
|
||||
|
||||
SetName(name);
|
||||
|
||||
if (!parent)
|
||||
@ -233,6 +235,8 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id,
|
||||
wxDialogBoxEventHandler,
|
||||
(XtPointer)this);
|
||||
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -739,3 +743,19 @@ static void wxUnmapBulletinBoard(Widget dialog, wxDialog *client,XtPointer call)
|
||||
client->m_isShown = FALSE;
|
||||
*/
|
||||
}
|
||||
|
||||
void wxDialog::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxDialog::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxDialog::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -126,7 +126,8 @@ bool wxFrame::Create(wxWindow *parent,
|
||||
m_visibleStatus = TRUE;
|
||||
m_title = "";
|
||||
|
||||
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE));
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE);
|
||||
m_foregroundColour = *wxBLACK;
|
||||
|
||||
if ( id > -1 )
|
||||
m_windowId = id;
|
||||
@ -264,6 +265,8 @@ bool wxFrame::Create(wxWindow *parent,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
ChangeBackgroundColour();
|
||||
|
||||
PreResize();
|
||||
|
||||
wxSizeEvent sizeEvent(wxSize(width, height), GetId());
|
||||
@ -1037,6 +1040,21 @@ WXWidget wxFrame::GetClientWidget() const
|
||||
return m_clientArea;
|
||||
}
|
||||
|
||||
void wxFrame::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxFrame::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxFrame::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxCloseFrameCallback(Widget widget, XtPointer client_data, XmAnyCallbackStruct *cbs)
|
||||
{
|
||||
wxFrame *frame = (wxFrame *)client_data;
|
||||
@ -1047,3 +1065,4 @@ void wxCloseFrameCallback(Widget widget, XtPointer client_data, XmAnyCallbackStr
|
||||
// May delete the frame (with delayed deletion)
|
||||
frame->GetEventHandler()->ProcessEvent(closeEvent);
|
||||
}
|
||||
|
||||
|
@ -85,6 +85,8 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id,
|
||||
SetValidator(validator);
|
||||
m_rangeMax = range;
|
||||
m_windowStyle = style;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
@ -125,7 +127,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id,
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, x, y, width, height);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -186,6 +188,21 @@ int wxGauge::GetValue() const
|
||||
// return m_gaugePos;
|
||||
}
|
||||
|
||||
void wxGauge::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxGauge::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxGauge::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
//// PRIVATE DECLARATIONS FOR XMGAUGE
|
||||
|
||||
#include <Xm/PrimitiveP.h>
|
||||
|
@ -53,6 +53,8 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
|
||||
m_windowStyle = style;
|
||||
m_noItems = n;
|
||||
m_selected = 0;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
SetName(name);
|
||||
SetValidator(validator);
|
||||
@ -107,11 +109,10 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, width, height);
|
||||
|
||||
wxSystemSettings settings;
|
||||
SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW));
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -739,3 +740,19 @@ WXWidget wxListBox::GetTopWidget() const
|
||||
{
|
||||
return (WXWidget) XtParent( (Widget) m_mainWidget );
|
||||
}
|
||||
|
||||
void wxListBox::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxListBox::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxListBox::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -127,6 +127,7 @@ LIB_CPP_SRC=\
|
||||
textctrl.cpp \
|
||||
thread.cpp \
|
||||
timer.cpp \
|
||||
toolbar.cpp \
|
||||
utils.cpp \
|
||||
utilsexc.cpp \
|
||||
wave.cpp \
|
||||
@ -157,7 +158,6 @@ LIB_CPP_SRC=\
|
||||
# listctrl.cpp \
|
||||
# imaglist.cpp \
|
||||
# statusbr.cpp \
|
||||
# toolbar.cpp \
|
||||
|
||||
LIB_C_SRC=\
|
||||
\
|
||||
|
@ -88,7 +88,7 @@ public:
|
||||
|
||||
// Generate wxSizeEvent here, I think. Maybe also restore, maximize
|
||||
// Probably don't need to generate size event here since work area
|
||||
// is used
|
||||
// is used (???)
|
||||
wxSizeEvent event(wxSize(w, h), m_childFrame->GetId());
|
||||
event.SetEventObject(m_childFrame);
|
||||
m_childFrame->ProcessEvent(event);
|
||||
@ -98,6 +98,16 @@ public:
|
||||
XsMotifWindow::close();
|
||||
m_childFrame->Close();
|
||||
}
|
||||
virtual void raise()
|
||||
{
|
||||
XsMotifWindow::raise();
|
||||
m_childFrame->OnRaise();
|
||||
}
|
||||
virtual void lower()
|
||||
{
|
||||
XsMotifWindow::lower();
|
||||
m_childFrame->OnLower();
|
||||
}
|
||||
virtual void _buildClientArea(Widget parent)
|
||||
{
|
||||
m_childFrame->BuildClientArea((WXWidget) parent);
|
||||
@ -204,7 +214,8 @@ public:
|
||||
|
||||
wxMDIParentFrame::wxMDIParentFrame()
|
||||
{
|
||||
m_clientWindow = NULL;
|
||||
m_clientWindow = (wxMDIClientWindow*) NULL;
|
||||
m_activeChild = (wxMDIChildFrame*) NULL;
|
||||
}
|
||||
|
||||
bool wxMDIParentFrame::Create(wxWindow *parent,
|
||||
@ -215,7 +226,8 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
|
||||
long style,
|
||||
const wxString& name)
|
||||
{
|
||||
m_clientWindow = NULL;
|
||||
m_clientWindow = (wxMDIClientWindow*) NULL;
|
||||
m_activeChild = (wxMDIChildFrame*) NULL;
|
||||
|
||||
bool success = wxFrame::Create(parent, id, title, pos, size, style, name);
|
||||
if (success)
|
||||
@ -273,8 +285,7 @@ void wxMDIParentFrame::OnActivate(wxActivateEvent& event)
|
||||
// Returns the active MDI child window
|
||||
wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
return m_activeChild;
|
||||
}
|
||||
|
||||
// Create the client window class (don't Create the window,
|
||||
@ -344,14 +355,32 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
|
||||
|
||||
int x = pos.x; int y = pos.y;
|
||||
int width = size.x; int height = size.y;
|
||||
if (width == -1)
|
||||
width = 200; // TODO: give reasonable default
|
||||
if (height == -1)
|
||||
height = 200; // TODO: give reasonable default
|
||||
|
||||
wxMDIClientWindow* clientWindow = parent->GetClientWindow();
|
||||
if (!clientWindow)
|
||||
return FALSE;
|
||||
|
||||
// We're deactivating the old child
|
||||
wxMDIChildFrame* oldActiveChild = parent->GetActiveChild();
|
||||
if (oldActiveChild)
|
||||
{
|
||||
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId());
|
||||
event.SetEventObject( oldActiveChild );
|
||||
oldActiveChild->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
|
||||
m_mdiWindow = new wxXsMDIWindow("mdiChildWindow", this);
|
||||
clientWindow->GetMDICanvas()->add(m_mdiWindow);
|
||||
|
||||
// This is the currently active child
|
||||
parent->SetActiveChild((wxMDIChildFrame*) this);
|
||||
|
||||
m_mdiWindow->Show();
|
||||
|
||||
#if 0
|
||||
m_mainWidget = (WXWidget) (Widget) (*m_mdiWindow);
|
||||
|
||||
@ -411,10 +440,7 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
|
||||
|
||||
PreResize();
|
||||
|
||||
wxSizeEvent sizeEvent(wxSize(width, height), GetId());
|
||||
sizeEvent.SetEventObject(this);
|
||||
|
||||
GetEventHandler()->ProcessEvent(sizeEvent);
|
||||
m_mdiWindow->setSize(width, height);
|
||||
|
||||
wxModelessWindows.Append(this);
|
||||
return TRUE;
|
||||
@ -490,11 +516,50 @@ void wxMDIChildFrame::BuildClientArea(WXWidget parent)
|
||||
|
||||
wxMDIChildFrame::~wxMDIChildFrame()
|
||||
{
|
||||
wxMDIClientWindow* clientWindow = ((wxMDIParentFrame*)GetParent())->GetClientWindow();
|
||||
wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ;
|
||||
if (parentFrame->GetActiveChild() == this)
|
||||
parentFrame->SetActiveChild((wxMDIChildFrame*) NULL);
|
||||
|
||||
wxMDIClientWindow* clientWindow = parentFrame->GetClientWindow();
|
||||
clientWindow->GetMDICanvas()->remove(m_mdiWindow);
|
||||
m_mainWidget = (WXWidget) 0;
|
||||
}
|
||||
|
||||
// Implementation: intercept and act upon raise and lower commands.
|
||||
void wxMDIChildFrame::OnRaise()
|
||||
{
|
||||
wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ;
|
||||
wxMDIChildFrame* oldActiveChild = parentFrame->GetActiveChild();
|
||||
parentFrame->SetActiveChild(this);
|
||||
|
||||
if (oldActiveChild)
|
||||
{
|
||||
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId());
|
||||
event.SetEventObject( oldActiveChild );
|
||||
oldActiveChild->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
|
||||
wxActivateEvent event(wxEVT_ACTIVATE, TRUE, this->GetId());
|
||||
event.SetEventObject( this );
|
||||
this->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
|
||||
void wxMDIChildFrame::OnLower()
|
||||
{
|
||||
wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ;
|
||||
wxMDIChildFrame* oldActiveChild = parentFrame->GetActiveChild();
|
||||
|
||||
if (oldActiveChild == this)
|
||||
{
|
||||
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId());
|
||||
event.SetEventObject( oldActiveChild );
|
||||
oldActiveChild->GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
// TODO: unfortunately we don't now know which is the top-most child,
|
||||
// so make the active child NULL.
|
||||
parentFrame->SetActiveChild((wxMDIChildFrame*) NULL);
|
||||
}
|
||||
|
||||
// Set the client size (i.e. leave the calculation of borders etc.
|
||||
// to wxWindows)
|
||||
void wxMDIChildFrame::SetClientSize(int width, int height)
|
||||
|
@ -1,4 +1,4 @@
|
||||
Copyright (c) 1996 Scott W. Sadler
|
||||
Copyright (c) 1996, 1998 Scott W. Sadler
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@ -21,9 +21,8 @@ used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization.
|
||||
|
||||
Scott W. Sadler
|
||||
Software Engineer
|
||||
International TechneGroup Incorporated
|
||||
5303 DuPont Circle
|
||||
Milford, OH 45150
|
||||
sws@iti-oh.com
|
||||
http://www.iti-oh.com/~sws
|
||||
Cisco Systems
|
||||
7025 Kit Creek Road
|
||||
P.O. Box 14987
|
||||
Research Triangle Park NC, 27709
|
||||
ssadler@cisco.com
|
||||
|
@ -37,6 +37,13 @@ CC = $(CXX)
|
||||
#define FOUND_COMPILER
|
||||
#endif
|
||||
|
||||
#ifdef i386SVR4Architecture
|
||||
CXX = CC
|
||||
CC = $(CXX)
|
||||
CCOPTIONS=
|
||||
#define COMPILER_FOUND
|
||||
#endif
|
||||
|
||||
#ifndef FOUND_COMPILER
|
||||
CXX = gcc
|
||||
CC = $(CXX)
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<HEAD>
|
||||
<TITLE>XsMDICanvas Class</TITLE>
|
||||
<LINK REV="made" HREF="mailto:sws@iti-oh.com">
|
||||
<LINK REV="made" HREF="mailto:ssadler@cisco.com">
|
||||
</HEAD>
|
||||
|
||||
<H2>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<HEAD>
|
||||
<TITLE>Motif Multi-Document Interface (MDI)</TITLE>
|
||||
<LINK REV="made" HREF="mailto:sws@iti-oh.com">
|
||||
<LINK REV="made" HREF="mailto:ssadler@cisco.com">
|
||||
</HEAD>
|
||||
|
||||
<CENTER>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<HEAD>
|
||||
<TITLE>XsMotifWindow Class</TITLE>
|
||||
<LINK REV="made" HREF="mailto:sws@iti-oh.com">
|
||||
<LINK REV="made" HREF="mailto:ssadler@cisco.com">
|
||||
</HEAD>
|
||||
|
||||
<H2>
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsComponent.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
@ -62,8 +62,8 @@ void XsComponent::show ( )
|
||||
{
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (XtIsManaged (_base))
|
||||
cout << "Re-managing a widget:" << _name << endl;
|
||||
// if (XtIsManaged (_base))
|
||||
// cout << "Re-managing a widget:" << _name << endl;
|
||||
#endif
|
||||
|
||||
// Make sure the _destroyHandler was installed
|
||||
@ -80,8 +80,8 @@ void XsComponent::hide ( )
|
||||
{
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (!XtIsManaged (_base))
|
||||
cout << "Re-unmanaging a widget:" << _name << endl;
|
||||
// if (!XtIsManaged (_base))
|
||||
// cout << "Re-unmanaging a widget:" << _name << endl;
|
||||
#endif
|
||||
|
||||
assert (_base != 0);
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsComponent.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
@ -33,9 +33,6 @@ class XsComponent {
|
||||
virtual void show ( ); // Show the component
|
||||
virtual void hide ( ); // Hide the component
|
||||
|
||||
// Added JACS 19/10/98
|
||||
inline Widget GetBase() const { return _base; }
|
||||
|
||||
// Component name
|
||||
|
||||
const char *name ( ) const;
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMDICanvas.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMDICanvas.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
@ -39,12 +39,10 @@ class XsMDICanvas : public XsComponent {
|
||||
virtual void remove (XsMDIWindow *win); // Remove an MDI window
|
||||
void removeAll ( ); // Remove all MDI windows
|
||||
|
||||
// Added JACS 19/10/98
|
||||
inline Widget GetDrawingArea() const { return _drawArea; }
|
||||
|
||||
// Utilities
|
||||
|
||||
int numWindows ( ) const; // Number of MDI windows
|
||||
Widget GetDrawingArea() const { return _drawArea; }
|
||||
|
||||
// Component methods
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMDIWindow.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMDIWindow.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMotifWindow.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
@ -2880,12 +2880,6 @@ void XsMotifWindow::restore ( )
|
||||
|
||||
setPosition (_savedX, _savedY);
|
||||
setSize (_savedWidth, _savedHeight);
|
||||
|
||||
_maximized = False;
|
||||
|
||||
// Redraw the maximize button
|
||||
|
||||
_buttons[_XsMotifButton::Maximize]->redraw ( );
|
||||
}
|
||||
}
|
||||
|
||||
@ -2972,6 +2966,17 @@ void XsMotifWindow::setSize (Dimension w, Dimension h)
|
||||
|
||||
if (_minimized == False)
|
||||
XtVaSetValues (_base, XmNwidth, w, XmNheight, h, NULL);
|
||||
|
||||
// If window was maximized, change the window state back to normal
|
||||
|
||||
if (_maximized == True)
|
||||
{
|
||||
_maximized = False;
|
||||
|
||||
// Redraw the maximize button
|
||||
|
||||
_buttons[_XsMotifButton::Maximize]->redraw ( );
|
||||
}
|
||||
}
|
||||
else
|
||||
XsMDIWindow::setSize (w, h); // Cache the points
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMotifWindow.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMoveOutline.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsMoveOutline.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsOutline.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsOutline.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsResizeOutline.C
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
XsResizeOutline.h
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
xs_motif_icon.xbm
|
||||
|
||||
History
|
||||
03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com)
|
||||
03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com)
|
||||
Created
|
||||
*/
|
||||
|
||||
|
@ -365,3 +365,18 @@ void wxNotebook::ChangePage(int nOldSel, int nSel)
|
||||
m_nSelection = nSel;
|
||||
}
|
||||
|
||||
void wxNotebook::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxNotebook::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxNotebook::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,8 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
m_labelWidget = (WXWidget) 0;
|
||||
m_radioButtons = (WXWidget*) NULL;
|
||||
m_radioButtonLabels = (wxString*) NULL;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
SetName(name);
|
||||
SetValidator(val);
|
||||
@ -176,7 +178,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
AttachWidget (parent, m_mainWidget, m_formWidget, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -389,6 +391,21 @@ void wxRadioBox::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxRadioBox::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxRadioBox::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxRadioBox::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxRadioBoxCallback (Widget w, XtPointer clientData,
|
||||
XmToggleButtonCallbackStruct * cbs)
|
||||
{
|
||||
|
@ -47,6 +47,8 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
|
||||
{
|
||||
SetName(name);
|
||||
SetValidator(validator);
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
@ -130,7 +132,7 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
|
||||
AttachWidget (parent, m_mainWidget, m_formWidget, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -154,6 +156,21 @@ void wxRadioButton::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxRadioButton::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxRadioButton::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxRadioButton::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxRadioButtonCallback (Widget w, XtPointer clientData,
|
||||
XmToggleButtonCallbackStruct * cbs)
|
||||
{
|
||||
|
@ -40,6 +40,8 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
|
||||
return FALSE;
|
||||
parent->AddChild(this);
|
||||
SetName(name);
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
SetValidator(validator);
|
||||
|
||||
m_windowStyle = style;
|
||||
@ -91,7 +93,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
SetCanAddEventHandler(TRUE);
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, x, y, width, height);
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -150,6 +152,21 @@ void wxScrollBar::Command(wxCommandEvent& event)
|
||||
ProcessCommand(event);
|
||||
}
|
||||
|
||||
void wxScrollBar::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxScrollBar::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxScrollBar::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxScrollBarCallback(Widget widget, XtPointer clientData,
|
||||
XmScaleCallbackStruct *cbs)
|
||||
{
|
||||
|
@ -54,6 +54,8 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
|
||||
{
|
||||
SetName(name);
|
||||
SetValidator(validator);
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
@ -101,7 +103,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -245,6 +247,21 @@ void wxSlider::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxSlider::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxSlider::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxSlider::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxSliderCallback (Widget widget, XtPointer clientData, XmScaleCallbackStruct * cbs)
|
||||
{
|
||||
wxSlider *slider = (wxSlider *) clientData;
|
||||
|
@ -68,6 +68,21 @@ void wxSpinButton::SetRange(int minVal, int maxVal)
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxSpinButton::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxSpinButton::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxSpinButton::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// Spin event
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent)
|
||||
|
||||
|
@ -39,6 +39,8 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id,
|
||||
{
|
||||
m_messageBitmap = bitmap;
|
||||
SetName(name);
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
if ( id == -1 )
|
||||
@ -69,7 +71,7 @@ bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
|
||||
ChangeColour (m_mainWidget);
|
||||
ChangeBackgroundColour ();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -117,3 +119,18 @@ void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap)
|
||||
}
|
||||
}
|
||||
|
||||
void wxStaticBitmap::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxStaticBitmap::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxStaticBitmap::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,8 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id,
|
||||
{
|
||||
m_formWidget = (WXWidget) 0;
|
||||
m_labelWidget = (WXWidget) 0;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
SetName(name);
|
||||
|
||||
@ -112,7 +114,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
SetCanAddEventHandler(TRUE);
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) frameWidget, pos.x, pos.y, size.x, size.y);
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -179,3 +181,18 @@ void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags)
|
||||
}
|
||||
}
|
||||
|
||||
void wxStaticBox::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxStaticBox::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxStaticBox::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -36,8 +36,8 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
|
||||
SetName(name);
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
SetBackgroundColour(parent->GetBackgroundColour()) ;
|
||||
SetForegroundColour(parent->GetForegroundColour()) ;
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
if ( id == -1 )
|
||||
m_windowId = (int)NewControlId();
|
||||
@ -69,8 +69,23 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
|
||||
ChangeColour (m_mainWidget);
|
||||
ChangeBackgroundColour ();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxStaticText::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxStaticText::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxStaticText::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
|
@ -80,6 +80,8 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
m_modified = FALSE;
|
||||
m_processedDefault = FALSE;
|
||||
m_fileName = "";
|
||||
m_backgroundColour = parent->GetBackgroundColour();
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
|
||||
SetName(name);
|
||||
SetValidator(validator);
|
||||
@ -145,7 +147,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeColour(m_mainWidget);
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -617,6 +619,21 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void wxTextCtrl::ChangeFont()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxTextCtrl::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void wxTextCtrl::ChangeForegroundColour()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
static void wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer ptr)
|
||||
{
|
||||
if (!wxGetWindowFromTable(w))
|
||||
|
@ -14,13 +14,39 @@
|
||||
#endif
|
||||
|
||||
#include "wx/timer.h"
|
||||
#include "wx/app.h"
|
||||
#include "wx/list.h"
|
||||
|
||||
#include <Xm/Xm.h>
|
||||
|
||||
#include "wx/motif/private.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
|
||||
#endif
|
||||
|
||||
static wxList wxTimerList(wxKEY_INTEGER);
|
||||
|
||||
void wxTimerCallback (wxTimer * timer)
|
||||
{
|
||||
// Check to see if it's still on
|
||||
if (!wxTimerList.Find((long)timer))
|
||||
return;
|
||||
|
||||
if (timer->m_id == 0)
|
||||
return; // Avoid to process spurious timer events
|
||||
|
||||
if (!timer->m_oneShot)
|
||||
timer->m_id = XtAppAddTimeOut ((XtAppContext) wxTheApp->GetAppContext(), timer->m_milli,
|
||||
(XtTimerCallbackProc) wxTimerCallback, (XtPointer) timer);
|
||||
else
|
||||
timer->m_id = 0;
|
||||
timer->Notify ();
|
||||
}
|
||||
|
||||
wxTimer::wxTimer()
|
||||
{
|
||||
m_id = 0;
|
||||
m_milli = 0 ;
|
||||
m_id = 0;
|
||||
m_oneShot = FALSE;
|
||||
@ -33,19 +59,32 @@ wxTimer::~wxTimer()
|
||||
|
||||
bool wxTimer::Start(int milliseconds, bool mode)
|
||||
{
|
||||
Stop();
|
||||
|
||||
m_oneShot = mode;
|
||||
if (milliseconds < 0)
|
||||
milliseconds = m_lastMilli;
|
||||
|
||||
if (milliseconds <= 0)
|
||||
return FALSE;
|
||||
|
||||
m_milli = milliseconds;
|
||||
m_lastMilli = m_milli = milliseconds;
|
||||
|
||||
// TODO: set the timer going.
|
||||
return FALSE;
|
||||
if (!wxTimerList.Find((long)this))
|
||||
wxTimerList.Append((long)this, this);
|
||||
|
||||
m_id = XtAppAddTimeOut ((XtAppContext) wxTheApp->GetAppContext(), milliseconds,
|
||||
(XtTimerCallbackProc) wxTimerCallback, (XtPointer) this);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxTimer::Stop()
|
||||
{
|
||||
if (m_id > 0)
|
||||
{
|
||||
XtRemoveTimeOut (m_id);
|
||||
m_id = 0;
|
||||
}
|
||||
m_milli = 0 ;
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,16 @@
|
||||
#endif
|
||||
|
||||
#include "wx/wx.h"
|
||||
#include "wx/toolbar.h"
|
||||
#include "wx/motif/toolbar.h"
|
||||
|
||||
#include <Xm/Xm.h>
|
||||
#include <Xm/PushBG.h>
|
||||
#include <Xm/PushB.h>
|
||||
#include <Xm/ToggleB.h>
|
||||
#include <Xm/ToggleBG.h>
|
||||
#include <Xm/Form.h>
|
||||
|
||||
#include "wx/motif/private.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase)
|
||||
@ -23,7 +32,8 @@ BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase)
|
||||
END_EVENT_TABLE()
|
||||
#endif
|
||||
|
||||
wxToolBar::wxToolBar()
|
||||
wxToolBar::wxToolBar():
|
||||
m_widgets(wxKEY_INTEGER)
|
||||
{
|
||||
m_maxWidth = -1;
|
||||
m_maxHeight = -1;
|
||||
@ -41,16 +51,32 @@ bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
|
||||
m_defaultWidth = 24;
|
||||
m_defaultHeight = 22;
|
||||
SetName(name);
|
||||
|
||||
m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
|
||||
m_foregroundColour = parent->GetForegroundColour();
|
||||
m_windowStyle = style;
|
||||
|
||||
SetParent(parent);
|
||||
|
||||
if (parent) parent->AddChild(this);
|
||||
|
||||
// TODO create toolbar
|
||||
Widget parentWidget = (Widget) parent->GetClientWidget();
|
||||
|
||||
return FALSE;
|
||||
Widget toolbar = XtVaCreateManagedWidget("toolbar",
|
||||
xmFormWidgetClass, parentWidget,
|
||||
XmNtraversalOn, False,
|
||||
XmNhorizontalSpacing, 0,
|
||||
XmNverticalSpacing, 0,
|
||||
NULL);
|
||||
|
||||
m_mainWidget = (WXWidget) toolbar;
|
||||
|
||||
SetCanAddEventHandler(TRUE);
|
||||
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
|
||||
|
||||
SetFont(* parent->GetFont());
|
||||
ChangeBackgroundColour();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
wxToolBar::~wxToolBar()
|
||||
@ -63,8 +89,150 @@ bool wxToolBar::CreateTools()
|
||||
if (m_tools.Number() == 0)
|
||||
return FALSE;
|
||||
|
||||
// TODO
|
||||
return FALSE;
|
||||
m_widgets.Clear();
|
||||
Widget prevButton = (Widget) 0;
|
||||
wxNode* node = m_tools.First();
|
||||
while (node)
|
||||
{
|
||||
wxToolBarTool *tool = (wxToolBarTool *)node->Data();
|
||||
if ((tool->m_toolStyle != wxTOOL_STYLE_SEPARATOR) && tool->m_bitmap1.Ok())
|
||||
{
|
||||
Widget button = (Widget) 0;
|
||||
|
||||
if (tool->m_isToggle)
|
||||
{
|
||||
button = XtVaCreateManagedWidget("toggleButton",
|
||||
xmToggleButtonWidgetClass, (Widget) m_mainWidget,
|
||||
XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET,
|
||||
XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton,
|
||||
XmNleftOffset, 0,
|
||||
XmNtopAttachment, XmATTACH_FORM,
|
||||
// XmNpushButtonEnabled, True,
|
||||
XmNmultiClick, XmMULTICLICK_KEEP,
|
||||
XmNlabelType, XmPIXMAP,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
button = XtVaCreateManagedWidget("button",
|
||||
xmPushButtonWidgetClass, (Widget) m_mainWidget,
|
||||
XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET,
|
||||
XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton,
|
||||
XmNleftOffset, 0,
|
||||
XmNtopAttachment, XmATTACH_FORM,
|
||||
XmNpushButtonEnabled, True,
|
||||
XmNmultiClick, XmMULTICLICK_KEEP,
|
||||
XmNlabelType, XmPIXMAP,
|
||||
NULL);
|
||||
}
|
||||
|
||||
// For each button, if there is a mask, we must create
|
||||
// a new wxBitmap that has the correct background colour
|
||||
// for the button. Otherwise the background will just be
|
||||
// e.g. black if a transparent XPM has been loaded.
|
||||
if (tool->m_bitmap1.GetMask())
|
||||
{
|
||||
wxBitmap newBitmap(tool->m_bitmap1.GetWidth(),
|
||||
tool->m_bitmap1.GetHeight(),
|
||||
tool->m_bitmap1.GetDepth());
|
||||
int backgroundPixel;
|
||||
XtVaGetValues(button, XmNbackground, &backgroundPixel,
|
||||
NULL);
|
||||
|
||||
|
||||
wxColour col;
|
||||
col.SetPixel(backgroundPixel);
|
||||
|
||||
wxMemoryDC destDC;
|
||||
wxMemoryDC srcDC;
|
||||
srcDC.SelectObject(tool->m_bitmap1);
|
||||
destDC.SelectObject(newBitmap);
|
||||
|
||||
wxBrush brush(col, wxSOLID);
|
||||
destDC.SetOptimization(FALSE);
|
||||
destDC.SetBackground(brush);
|
||||
destDC.Clear();
|
||||
destDC.Blit(0, 0, tool->m_bitmap1.GetWidth(), tool->m_bitmap1.GetHeight(), & srcDC, 0, 0, wxCOPY, TRUE);
|
||||
|
||||
tool->m_bitmap1 = newBitmap;
|
||||
}
|
||||
if (tool->m_bitmap2.Ok() && tool->m_bitmap2.GetMask())
|
||||
{
|
||||
wxBitmap newBitmap(tool->m_bitmap2.GetWidth(),
|
||||
tool->m_bitmap2.GetHeight(),
|
||||
tool->m_bitmap2.GetDepth());
|
||||
int backgroundPixel;
|
||||
XtVaGetValues(button, XmNbackground, &backgroundPixel,
|
||||
NULL);
|
||||
|
||||
|
||||
wxColour col;
|
||||
col.SetPixel(backgroundPixel);
|
||||
|
||||
wxMemoryDC destDC;
|
||||
wxMemoryDC srcDC;
|
||||
srcDC.SelectObject(tool->m_bitmap2);
|
||||
destDC.SelectObject(newBitmap);
|
||||
|
||||
wxBrush brush(col, wxSOLID);
|
||||
destDC.SetOptimization(FALSE);
|
||||
destDC.SetBackground(brush);
|
||||
destDC.Clear();
|
||||
destDC.Blit(0, 0, tool->m_bitmap2.GetWidth(), tool->m_bitmap2.GetHeight(), & srcDC, 0, 0, wxCOPY, TRUE);
|
||||
|
||||
tool->m_bitmap2 = newBitmap;
|
||||
}
|
||||
Pixmap pixmap = (Pixmap) tool->m_bitmap1.GetPixmap();
|
||||
Pixmap insensPixmap = (Pixmap) tool->m_bitmap1.GetInsensPixmap();
|
||||
|
||||
if (tool->m_isToggle)
|
||||
{
|
||||
Pixmap pixmap2 = (Pixmap) 0;
|
||||
Pixmap insensPixmap2 = (Pixmap) 0;
|
||||
|
||||
// If there's a bitmap for the toggled state, use it,
|
||||
// otherwise generate one.
|
||||
if (tool->m_bitmap2.Ok())
|
||||
{
|
||||
pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap();
|
||||
insensPixmap2 = (Pixmap) tool->m_bitmap2.GetInsensPixmap();
|
||||
}
|
||||
else
|
||||
{
|
||||
pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button);
|
||||
// This has to be both toggled and insensitive, but
|
||||
// wxBitmap doesn't yet have a member to store & destroy
|
||||
// it, so make it the same as pixmap2. Actually it's not
|
||||
// used!
|
||||
insensPixmap2 = pixmap2;
|
||||
}
|
||||
XtVaSetValues (button,
|
||||
XmNlabelPixmap, pixmap,
|
||||
XmNselectPixmap, pixmap,
|
||||
XmNlabelInsensitivePixmap, insensPixmap,
|
||||
XmNselectInsensitivePixmap, insensPixmap,
|
||||
XmNarmPixmap, pixmap2,
|
||||
XmNlabelType, XmPIXMAP,
|
||||
NULL);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
XtVaSetValues(button,
|
||||
XmNlabelPixmap, pixmap,
|
||||
XmNlabelInsensitivePixmap, insensPixmap,
|
||||
NULL);
|
||||
}
|
||||
|
||||
m_widgets.Append(tool->m_index, (wxObject*) button);
|
||||
|
||||
prevButton = button;
|
||||
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxToolBar::SetToolBitmapSize(const wxSize& size)
|
||||
@ -113,7 +281,15 @@ void wxToolBar::ToggleTool(int toolIndex, bool toggle)
|
||||
|
||||
void wxToolBar::ClearTools()
|
||||
{
|
||||
// TODO
|
||||
wxNode* node = m_widgets.First();
|
||||
while (node)
|
||||
{
|
||||
Widget button = (Widget) node->Data();
|
||||
XtDestroyWidget(button);
|
||||
node = node->Next();
|
||||
}
|
||||
m_widgets.Clear();
|
||||
|
||||
wxToolBarBase::ClearTools();
|
||||
}
|
||||
|
||||
|
@ -1280,33 +1280,6 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRectangle *rect)
|
||||
}
|
||||
}
|
||||
|
||||
void wxWindow::SetFont(const wxFont& font)
|
||||
{
|
||||
m_windowFont = font;
|
||||
|
||||
// Note that this causes the widget to be resized back
|
||||
// to its original size! We therefore have to set the size
|
||||
// back again. TODO: a better way in Motif?
|
||||
/*
|
||||
Widget w = (Widget) GetLabelWidget(); // Usually the main widget
|
||||
if (w && m_windowFont.Ok())
|
||||
{
|
||||
int width, height, width1, height1;
|
||||
GetSize(& width, & height);
|
||||
|
||||
XtVaSetValues (w,
|
||||
XmNfontList, (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(w)),
|
||||
NULL);
|
||||
|
||||
GetSize(& width1, & height1);
|
||||
if (width != width1 || height != height1)
|
||||
{
|
||||
SetSize(-1, -1, width, height);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void wxWindow::OnChar(wxKeyEvent& event)
|
||||
{
|
||||
if ( event.KeyCode() == WXK_TAB ) {
|
||||
@ -1977,23 +1950,6 @@ wxWindow *wxWindow::FindWindow(const wxString& name)
|
||||
|
||||
void wxWindow::OnIdle(wxIdleEvent& event)
|
||||
{
|
||||
/* TODO: you may need to do something like this
|
||||
* if your GUI doesn't generate enter/leave events
|
||||
|
||||
// Check if we need to send a LEAVE event
|
||||
if (m_mouseInWindow)
|
||||
{
|
||||
POINT pt;
|
||||
::GetCursorPos(&pt);
|
||||
if (::WindowFromPoint(pt) != (HWND) GetHWND())
|
||||
{
|
||||
// Generate a LEAVE event
|
||||
m_mouseInWindow = FALSE;
|
||||
MSWOnMouseLeave(pt.x, pt.y, 0);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// This calls the UI-update mechanism (querying windows for
|
||||
// menu/toolbar/control state information)
|
||||
UpdateWindowUI();
|
||||
@ -2990,11 +2946,9 @@ bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Widget widget, XEve
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// TODO From wxWin 1.68. What does it do exactly?
|
||||
#define YAllocColor XAllocColor
|
||||
|
||||
XColor itemColors[5];
|
||||
int wxComputeColors (Display *display, wxColour * back, wxColour * fore)
|
||||
XColor g_itemColors[5];
|
||||
int wxComputeColours (Display *display, wxColour * back, wxColour * fore)
|
||||
{
|
||||
int result;
|
||||
static XmColorProc colorProc;
|
||||
@ -3003,10 +2957,10 @@ int wxComputeColors (Display *display, wxColour * back, wxColour * fore)
|
||||
|
||||
if (back)
|
||||
{
|
||||
itemColors[0].red = (((long) back->Red ()) << 8);
|
||||
itemColors[0].green = (((long) back->Green ()) << 8);
|
||||
itemColors[0].blue = (((long) back->Blue ()) << 8);
|
||||
itemColors[0].flags = DoRed | DoGreen | DoBlue;
|
||||
g_itemColors[0].red = (((long) back->Red ()) << 8);
|
||||
g_itemColors[0].green = (((long) back->Green ()) << 8);
|
||||
g_itemColors[0].blue = (((long) back->Blue ()) << 8);
|
||||
g_itemColors[0].flags = DoRed | DoGreen | DoBlue;
|
||||
if (colorProc == (XmColorProc) NULL)
|
||||
{
|
||||
// Get a ptr to the actual function
|
||||
@ -3014,19 +2968,19 @@ int wxComputeColors (Display *display, wxColour * back, wxColour * fore)
|
||||
// And set it back to motif.
|
||||
XmSetColorCalculation (colorProc);
|
||||
}
|
||||
(*colorProc) (&itemColors[wxBACK_INDEX],
|
||||
&itemColors[wxFORE_INDEX],
|
||||
&itemColors[wxSELE_INDEX],
|
||||
&itemColors[wxTOPS_INDEX],
|
||||
&itemColors[wxBOTS_INDEX]);
|
||||
(*colorProc) (&g_itemColors[wxBACK_INDEX],
|
||||
&g_itemColors[wxFORE_INDEX],
|
||||
&g_itemColors[wxSELE_INDEX],
|
||||
&g_itemColors[wxTOPS_INDEX],
|
||||
&g_itemColors[wxBOTS_INDEX]);
|
||||
result = wxBACK_COLORS;
|
||||
}
|
||||
if (fore)
|
||||
{
|
||||
itemColors[wxFORE_INDEX].red = (((long) fore->Red ()) << 8);
|
||||
itemColors[wxFORE_INDEX].green = (((long) fore->Green ()) << 8);
|
||||
itemColors[wxFORE_INDEX].blue = (((long) fore->Blue ()) << 8);
|
||||
itemColors[wxFORE_INDEX].flags = DoRed | DoGreen | DoBlue;
|
||||
g_itemColors[wxFORE_INDEX].red = (((long) fore->Red ()) << 8);
|
||||
g_itemColors[wxFORE_INDEX].green = (((long) fore->Green ()) << 8);
|
||||
g_itemColors[wxFORE_INDEX].blue = (((long) fore->Blue ()) << 8);
|
||||
g_itemColors[wxFORE_INDEX].flags = DoRed | DoGreen | DoBlue;
|
||||
if (result == wxNO_COLORS)
|
||||
result = wxFORE_COLORS;
|
||||
}
|
||||
@ -3038,13 +2992,13 @@ int wxComputeColors (Display *display, wxColour * back, wxColour * fore)
|
||||
{
|
||||
/* 5 Colours to allocate */
|
||||
for (int i = 0; i < 5; i++)
|
||||
if (!YAllocColor (dpy, cmap, &itemColors[i]))
|
||||
if (!YAllocColor (dpy, cmap, &g_itemColors[i]))
|
||||
result = wxNO_COLORS;
|
||||
}
|
||||
else if (fore)
|
||||
{
|
||||
/* Only 1 colour to allocate */
|
||||
if (!YAllocColor (dpy, cmap, &itemColors[wxFORE_INDEX]))
|
||||
if (!YAllocColor (dpy, cmap, &g_itemColors[wxFORE_INDEX]))
|
||||
result = wxNO_COLORS;
|
||||
}
|
||||
|
||||
@ -3052,58 +3006,101 @@ int wxComputeColors (Display *display, wxColour * back, wxColour * fore)
|
||||
|
||||
}
|
||||
|
||||
void wxWindow::ChangeColour(WXWidget widget)
|
||||
// Changes the foreground and background colours to be derived
|
||||
// from the current background colour.
|
||||
// To change the foreground colour, you must call SetForegroundColour
|
||||
// explicitly.
|
||||
void wxWindow::ChangeBackgroundColour()
|
||||
{
|
||||
// TODO
|
||||
#if 0
|
||||
int change;
|
||||
|
||||
// TODO: how to determine whether we can change this item's colours?
|
||||
// We used to have wxUSER_COLOURS. Now perhaps we assume we always
|
||||
// can change it.
|
||||
// if (!(parent->GetWindowStyleFlag() & wxUSER_COLOURS))
|
||||
// return;
|
||||
|
||||
change = wxComputeColors (XtDisplay((Widget)widget), panel->GetBackgroundColour(),
|
||||
panel->GetLabelColour());
|
||||
if (change == wxBACK_COLORS)
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNbackground, itemColors[wxBACK_INDEX].pixel,
|
||||
XmNtopShadowColor, itemColors[wxTOPS_INDEX].pixel,
|
||||
XmNbottomShadowColor, itemColors[wxBOTS_INDEX].pixel,
|
||||
XmNforeground, itemColors[wxFORE_INDEX].pixel,
|
||||
NULL);
|
||||
else if (change == wxFORE_COLORS)
|
||||
XtVaSetValues (formWidget,
|
||||
XmNforeground, itemColors[wxFORE_INDEX].pixel,
|
||||
NULL);
|
||||
|
||||
change = wxComputeColors (XtDisplay((Widget)formWidget), GetBackgroundColour(), GetLabelColour());
|
||||
if (change == wxBACK_COLORS)
|
||||
XtVaSetValues (labelWidget,
|
||||
XmNbackground, itemColors[wxBACK_INDEX].pixel,
|
||||
XmNtopShadowColor, itemColors[wxTOPS_INDEX].pixel,
|
||||
XmNbottomShadowColor, itemColors[wxBOTS_INDEX].pixel,
|
||||
XmNarmColor, itemColors[wxSELE_INDEX].pixel,
|
||||
XmNforeground, itemColors[wxFORE_INDEX].pixel,
|
||||
NULL);
|
||||
else if (change == wxFORE_COLORS)
|
||||
XtVaSetValues (labelWidget,
|
||||
XmNforeground, itemColors[wxFORE_INDEX].pixel,
|
||||
NULL);
|
||||
#endif
|
||||
if (GetMainWidget())
|
||||
DoChangeBackgroundColour(GetMainWidget(), m_backgroundColour);
|
||||
}
|
||||
|
||||
void wxWindow::ChangeFont(WXWidget widget)
|
||||
void wxWindow::ChangeForegroundColour()
|
||||
{
|
||||
/*
|
||||
if (widget && GetFont() && GetFont()->Ok())
|
||||
if (GetMainWidget())
|
||||
DoChangeForegroundColour(GetMainWidget(), m_foregroundColour);
|
||||
}
|
||||
|
||||
// Change a widget's foreground and background colours.
|
||||
|
||||
// TODO: make this 2 functions, ChangeForegroundColour and ChangeBackgroundColour.
|
||||
|
||||
void wxWindow::DoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour)
|
||||
{
|
||||
XmFontList fontList = (XmFontList) GetFont()->GetFontList(1.0, GetXDisplay());
|
||||
if (fontList)
|
||||
// When should we specify the foreground, if it's calculated
|
||||
// by wxComputeColours?
|
||||
// Solution: say we start with the default (computed) foreground colour.
|
||||
// If we call SetForegroundColour explicitly for a control or window,
|
||||
// then the foreground is changed.
|
||||
// Therefore SetBackgroundColour computes the foreground colour, and
|
||||
// SetForegroundColour changes the foreground colour. The ordering is
|
||||
// important.
|
||||
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNfontList, fontList,
|
||||
XmNforeground, foregroundColour.AllocColour(XtDisplay((Widget) widget)),
|
||||
NULL);
|
||||
}
|
||||
|
||||
void wxWindow::DoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour)
|
||||
{
|
||||
wxComputeColours (XtDisplay((Widget) widget), & backgroundColour,
|
||||
(wxColour*) NULL);
|
||||
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNbackground, g_itemColors[wxBACK_INDEX].pixel,
|
||||
XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel,
|
||||
XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel,
|
||||
XmNforeground, g_itemColors[wxFORE_INDEX].pixel,
|
||||
NULL);
|
||||
|
||||
if (changeArmColour)
|
||||
XtVaSetValues ((Widget) widget,
|
||||
XmNarmColor, g_itemColors[wxSELE_INDEX].pixel,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void wxWindow::SetBackgroundColour(const wxColour& col)
|
||||
{
|
||||
m_backgroundColour = col;
|
||||
ChangeBackgroundColour();
|
||||
}
|
||||
|
||||
void wxWindow::SetForegroundColour(const wxColour& col)
|
||||
{
|
||||
m_foregroundColour = col;
|
||||
ChangeForegroundColour();
|
||||
}
|
||||
|
||||
void wxWindow::ChangeFont()
|
||||
{
|
||||
// Note that this causes the widget to be resized back
|
||||
// to its original size! We therefore have to set the size
|
||||
// back again. TODO: a better way in Motif?
|
||||
/*
|
||||
Widget w = (Widget) GetLabelWidget(); // Usually the main widget
|
||||
if (w && m_windowFont.Ok())
|
||||
{
|
||||
int width, height, width1, height1;
|
||||
GetSize(& width, & height);
|
||||
|
||||
XtVaSetValues (w,
|
||||
XmNfontList, (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(w)),
|
||||
NULL);
|
||||
|
||||
GetSize(& width1, & height1);
|
||||
if (width != width1 || height != height1)
|
||||
{
|
||||
SetSize(-1, -1, width, height);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void wxWindow::SetFont(const wxFont& font)
|
||||
{
|
||||
m_windowFont = font;
|
||||
ChangeFont();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user