minor Configure / makefiles updates
Removed mor (egcs) warnings Updated version to 2.0.1 in version.h Several corrections for strict compilers OpenGL updates new wxApp::InitVisual() for overriding in order to set non-default visual (unportable, of course) Added makefiles for DialogEd and Tex2Rtf made wxGTK compile with Tex2Rtf Added BEGIN_DRAG event to tree ctrl Added missing #include to lexel.l (unistd.h) (MSW?) new wxGTK.spec turned one or two more #ifdef into #if git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
ed38ec7e34
commit
bbe0af5b15
@ -976,6 +976,7 @@ typedef void* gpointer;
|
||||
|
||||
/* Stand-ins for GDK types */
|
||||
typedef gulong GdkAtom;
|
||||
typedef struct _GdkVisual GdkVisual;
|
||||
typedef struct _GdkColor GdkColor;
|
||||
typedef struct _GdkColormap GdkColormap;
|
||||
typedef struct _GdkFont GdkFont;
|
||||
@ -994,9 +995,7 @@ typedef struct _GtkList GtkList;
|
||||
typedef struct _GtkToolbar GtkToolbar;
|
||||
typedef struct _GtkNotebook GtkNotebook;
|
||||
typedef struct _GtkNotebookPage GtkNotebookPage;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
// _WX_DEFS_H_
|
||||
|
@ -456,6 +456,7 @@ protected:
|
||||
wxBrush *m_hilightBrush;
|
||||
wxImageList *m_imageListNormal,
|
||||
*m_imageListState;
|
||||
int m_dragCount;
|
||||
|
||||
// the common part of all ctors
|
||||
void Init();
|
||||
|
@ -31,6 +31,9 @@ class wxLog;
|
||||
|
||||
extern wxApp *wxTheApp;
|
||||
|
||||
extern GdkVisual *wxVisualSetByExternal;
|
||||
extern GdkColormap *wxColormapSetByExternal;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -55,48 +58,56 @@ class wxApp: public wxEvtHandler
|
||||
|
||||
public:
|
||||
|
||||
wxApp(void);
|
||||
~wxApp(void);
|
||||
wxApp();
|
||||
~wxApp();
|
||||
|
||||
static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; }
|
||||
static wxAppInitializerFunction GetInitializerFunction(void) { return m_appInitFn; }
|
||||
static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; }
|
||||
|
||||
virtual bool OnInit(void);
|
||||
virtual bool OnInitGui(void);
|
||||
virtual int OnRun(void);
|
||||
virtual int OnExit(void);
|
||||
/* this may have to be overwritten when special, non-default visuals have
|
||||
to be set. it is also platform dependent as only X knows about displays
|
||||
and visuals. by standard, this routine looks at wxVisualSetByExternal
|
||||
which might have been set in the wxModule code of the OpenGL canvas */
|
||||
virtual bool InitVisual();
|
||||
|
||||
wxWindow *GetTopWindow(void);
|
||||
virtual bool OnInit();
|
||||
virtual bool OnInitGui();
|
||||
virtual int OnRun();
|
||||
virtual int OnExit();
|
||||
|
||||
wxWindow *GetTopWindow();
|
||||
void SetTopWindow( wxWindow *win );
|
||||
virtual int MainLoop(void);
|
||||
void ExitMainLoop(void);
|
||||
bool Initialized(void);
|
||||
virtual bool Pending(void);
|
||||
virtual void Dispatch(void);
|
||||
virtual int MainLoop();
|
||||
void ExitMainLoop();
|
||||
bool Initialized();
|
||||
virtual bool Pending();
|
||||
virtual void Dispatch();
|
||||
|
||||
inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; }
|
||||
inline bool GetWantDebugOutput(void) { return m_wantDebugOutput; }
|
||||
inline bool GetWantDebugOutput() { return m_wantDebugOutput; }
|
||||
|
||||
void OnIdle( wxIdleEvent &event );
|
||||
bool SendIdleEvents(void);
|
||||
bool SendIdleEvents();
|
||||
bool SendIdleEvents( wxWindow* win );
|
||||
|
||||
inline wxString GetAppName(void) const {
|
||||
inline wxString GetAppName() const
|
||||
{
|
||||
if (m_appName != "")
|
||||
return m_appName;
|
||||
else return m_className;
|
||||
}
|
||||
|
||||
inline void SetAppName(const wxString& name) { m_appName = name; };
|
||||
inline wxString GetClassName(void) const { return m_className; }
|
||||
inline wxString GetClassName() const { return m_className; }
|
||||
inline void SetClassName(const wxString& name) { m_className = name; }
|
||||
const wxString& GetVendorName() const { return m_vendorName; }
|
||||
void SetVendorName(const wxString& name) { m_vendorName = name; }
|
||||
|
||||
inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; }
|
||||
inline bool GetExitOnFrameDelete(void) const { return m_exitOnFrameDelete; }
|
||||
inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; }
|
||||
|
||||
void SetPrintMode(int WXUNUSED(mode) ) {};
|
||||
int GetPrintMode(void) const { return wxPRINT_POSTSCRIPT; };
|
||||
int GetPrintMode() const { return wxPRINT_POSTSCRIPT; };
|
||||
|
||||
// override this function to create default log target of arbitrary
|
||||
// user-defined classv (default implementation creates a wxLogGui object)
|
||||
@ -104,11 +115,11 @@ class wxApp: public wxEvtHandler
|
||||
|
||||
// GTK implementation
|
||||
|
||||
static void CommonInit(void);
|
||||
static void CommonCleanUp(void);
|
||||
static void CommonInit();
|
||||
static void CommonCleanUp();
|
||||
|
||||
bool ProcessIdle(void);
|
||||
void DeletePendingObjects(void);
|
||||
bool ProcessIdle();
|
||||
void DeletePendingObjects();
|
||||
|
||||
bool m_initialized;
|
||||
bool m_exitOnFrameDelete;
|
||||
|
@ -58,6 +58,13 @@ public:
|
||||
bool Enabled( int id ) const;
|
||||
inline bool IsEnabled(int Id) const { return Enabled(Id); };
|
||||
inline bool IsChecked(int Id) const { return Checked(Id); };
|
||||
|
||||
wxString GetLabel( int id ) const;
|
||||
void SetLabel( int id, const wxString &label );
|
||||
|
||||
void EnableTop( int pos, bool flag );
|
||||
void SetLabelTop( int pos, const wxString& label );
|
||||
wxString GetLabelTop( int pos ) const;
|
||||
|
||||
int GetMenuCount() const { return m_menus.Number(); }
|
||||
wxMenu *GetMenu(int n) const { return (wxMenu *)m_menus.Nth(n)->Data(); }
|
||||
@ -102,7 +109,7 @@ public:
|
||||
bool IsChecked( int id ) const;
|
||||
|
||||
void SetLabel( int id, const wxString &label );
|
||||
wxString GetLabel(int id) const;
|
||||
wxString GetLabel( int id ) const;
|
||||
|
||||
// helpstring
|
||||
virtual void SetHelpString(int id, const wxString& helpString);
|
||||
|
@ -24,6 +24,22 @@
|
||||
|
||||
class wxTimer;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/* Timer functions (milliseconds) */
|
||||
void wxStartTimer();
|
||||
|
||||
/* Gets time since last wxStartTimer or wxGetElapsedTime */
|
||||
long wxGetElapsedTime(bool resetTimer = TRUE);
|
||||
|
||||
/* EXPERIMENTAL: comment this out if it doesn't compile. */
|
||||
bool wxGetLocalTime(long *timeZone, int *dstObserved);
|
||||
|
||||
/* Get number of seconds since 00:00:00 GMT, Jan 1st 1970. */
|
||||
long wxGetCurrentTime();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxTimer
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -32,6 +32,12 @@
|
||||
extern const char *wxFrameNameStr;
|
||||
extern wxList wxTopLevelWindows;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global function
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
wxWindow* wxGetActiveWindow();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// classes
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -31,6 +31,9 @@ class wxLog;
|
||||
|
||||
extern wxApp *wxTheApp;
|
||||
|
||||
extern GdkVisual *wxVisualSetByExternal;
|
||||
extern GdkColormap *wxColormapSetByExternal;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -55,48 +58,56 @@ class wxApp: public wxEvtHandler
|
||||
|
||||
public:
|
||||
|
||||
wxApp(void);
|
||||
~wxApp(void);
|
||||
wxApp();
|
||||
~wxApp();
|
||||
|
||||
static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; }
|
||||
static wxAppInitializerFunction GetInitializerFunction(void) { return m_appInitFn; }
|
||||
static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; }
|
||||
|
||||
virtual bool OnInit(void);
|
||||
virtual bool OnInitGui(void);
|
||||
virtual int OnRun(void);
|
||||
virtual int OnExit(void);
|
||||
/* this may have to be overwritten when special, non-default visuals have
|
||||
to be set. it is also platform dependent as only X knows about displays
|
||||
and visuals. by standard, this routine looks at wxVisualSetByExternal
|
||||
which might have been set in the wxModule code of the OpenGL canvas */
|
||||
virtual bool InitVisual();
|
||||
|
||||
wxWindow *GetTopWindow(void);
|
||||
virtual bool OnInit();
|
||||
virtual bool OnInitGui();
|
||||
virtual int OnRun();
|
||||
virtual int OnExit();
|
||||
|
||||
wxWindow *GetTopWindow();
|
||||
void SetTopWindow( wxWindow *win );
|
||||
virtual int MainLoop(void);
|
||||
void ExitMainLoop(void);
|
||||
bool Initialized(void);
|
||||
virtual bool Pending(void);
|
||||
virtual void Dispatch(void);
|
||||
virtual int MainLoop();
|
||||
void ExitMainLoop();
|
||||
bool Initialized();
|
||||
virtual bool Pending();
|
||||
virtual void Dispatch();
|
||||
|
||||
inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; }
|
||||
inline bool GetWantDebugOutput(void) { return m_wantDebugOutput; }
|
||||
inline bool GetWantDebugOutput() { return m_wantDebugOutput; }
|
||||
|
||||
void OnIdle( wxIdleEvent &event );
|
||||
bool SendIdleEvents(void);
|
||||
bool SendIdleEvents();
|
||||
bool SendIdleEvents( wxWindow* win );
|
||||
|
||||
inline wxString GetAppName(void) const {
|
||||
inline wxString GetAppName() const
|
||||
{
|
||||
if (m_appName != "")
|
||||
return m_appName;
|
||||
else return m_className;
|
||||
}
|
||||
|
||||
inline void SetAppName(const wxString& name) { m_appName = name; };
|
||||
inline wxString GetClassName(void) const { return m_className; }
|
||||
inline wxString GetClassName() const { return m_className; }
|
||||
inline void SetClassName(const wxString& name) { m_className = name; }
|
||||
const wxString& GetVendorName() const { return m_vendorName; }
|
||||
void SetVendorName(const wxString& name) { m_vendorName = name; }
|
||||
|
||||
inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; }
|
||||
inline bool GetExitOnFrameDelete(void) const { return m_exitOnFrameDelete; }
|
||||
inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; }
|
||||
|
||||
void SetPrintMode(int WXUNUSED(mode) ) {};
|
||||
int GetPrintMode(void) const { return wxPRINT_POSTSCRIPT; };
|
||||
int GetPrintMode() const { return wxPRINT_POSTSCRIPT; };
|
||||
|
||||
// override this function to create default log target of arbitrary
|
||||
// user-defined classv (default implementation creates a wxLogGui object)
|
||||
@ -104,11 +115,11 @@ class wxApp: public wxEvtHandler
|
||||
|
||||
// GTK implementation
|
||||
|
||||
static void CommonInit(void);
|
||||
static void CommonCleanUp(void);
|
||||
static void CommonInit();
|
||||
static void CommonCleanUp();
|
||||
|
||||
bool ProcessIdle(void);
|
||||
void DeletePendingObjects(void);
|
||||
bool ProcessIdle();
|
||||
void DeletePendingObjects();
|
||||
|
||||
bool m_initialized;
|
||||
bool m_exitOnFrameDelete;
|
||||
|
@ -58,6 +58,13 @@ public:
|
||||
bool Enabled( int id ) const;
|
||||
inline bool IsEnabled(int Id) const { return Enabled(Id); };
|
||||
inline bool IsChecked(int Id) const { return Checked(Id); };
|
||||
|
||||
wxString GetLabel( int id ) const;
|
||||
void SetLabel( int id, const wxString &label );
|
||||
|
||||
void EnableTop( int pos, bool flag );
|
||||
void SetLabelTop( int pos, const wxString& label );
|
||||
wxString GetLabelTop( int pos ) const;
|
||||
|
||||
int GetMenuCount() const { return m_menus.Number(); }
|
||||
wxMenu *GetMenu(int n) const { return (wxMenu *)m_menus.Nth(n)->Data(); }
|
||||
@ -102,7 +109,7 @@ public:
|
||||
bool IsChecked( int id ) const;
|
||||
|
||||
void SetLabel( int id, const wxString &label );
|
||||
wxString GetLabel(int id) const;
|
||||
wxString GetLabel( int id ) const;
|
||||
|
||||
// helpstring
|
||||
virtual void SetHelpString(int id, const wxString& helpString);
|
||||
|
@ -24,6 +24,22 @@
|
||||
|
||||
class wxTimer;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/* Timer functions (milliseconds) */
|
||||
void wxStartTimer();
|
||||
|
||||
/* Gets time since last wxStartTimer or wxGetElapsedTime */
|
||||
long wxGetElapsedTime(bool resetTimer = TRUE);
|
||||
|
||||
/* EXPERIMENTAL: comment this out if it doesn't compile. */
|
||||
bool wxGetLocalTime(long *timeZone, int *dstObserved);
|
||||
|
||||
/* Get number of seconds since 00:00:00 GMT, Jan 1st 1970. */
|
||||
long wxGetCurrentTime();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxTimer
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -32,6 +32,12 @@
|
||||
extern const char *wxFrameNameStr;
|
||||
extern wxList wxTopLevelWindows;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global function
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
wxWindow* wxGetActiveWindow();
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// classes
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -83,7 +83,7 @@ class WXDLLEXPORT wxDatabase: public wxObject
|
||||
bool err_occured;
|
||||
|
||||
wxList recordSets; // Record sets: Added by JACS
|
||||
|
||||
|
||||
public:
|
||||
wxDatabase(void);
|
||||
~wxDatabase(void);
|
||||
|
@ -15,8 +15,8 @@
|
||||
/* Bump-up with each new version */
|
||||
#define wxMAJOR_VERSION 2
|
||||
#define wxMINOR_VERSION 0
|
||||
#define wxRELEASE_NUMBER 0
|
||||
#define wxVERSION_STRING "wxWindows 2.0"
|
||||
#define wxRELEASE_NUMBER 1
|
||||
#define wxVERSION_STRING "wxWindows 2.0.1"
|
||||
#define wxVERSION_NUMBER (wxMAJOR_VERSION * 1000) + (wxMINOR_VERSION * 100) + wxRELEASE_NUMBER
|
||||
#define wxBETA_NUMBER 17
|
||||
#define wxVERSION_FLOAT wxMAJOR_VERSION + (wxMINOR_VERSION/10.0) + (wxRELEASE_NUMBER/100.0) + (wxBETA_NUMBER/10000.0)
|
||||
|
@ -40,7 +40,11 @@ enum Language {langENGLISH, langFRENCH, langGERMAN, langSPANISH, langOTHER};
|
||||
class CeditorDlg;
|
||||
class CparameterDlg;
|
||||
|
||||
#ifdef __WXGTK__
|
||||
const char paramFilename[] = "../database.cfg";
|
||||
#else
|
||||
const char paramFilename[] = "database.cfg";
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
@ -854,7 +854,7 @@ bool wxBMPHandler::LoadFile( wxImage *image, const wxString& name )
|
||||
}
|
||||
|
||||
/*
|
||||
* REading the image data
|
||||
* Reading the image data
|
||||
*/
|
||||
fseek(file, offset, SEEK_SET);
|
||||
data = ptr;
|
||||
|
@ -12,6 +12,7 @@ WORDCHAR [^'\\]
|
||||
* either lex and flex.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* +++steve162e: added, otherwise, PROIO_input will be undefined (at least under LINUX)
|
||||
please check, if this is also TRUE under other UNIXes.
|
||||
|
@ -510,8 +510,12 @@ void wxSocketBase::Discard()
|
||||
// If what? Who seems to need unsigned int?
|
||||
// BTW uint isn't even defined on wxMSW for VC++ for some reason. Even if it
|
||||
// were, getpeername/getsockname don't take unsigned int*, they take int*.
|
||||
#if 0
|
||||
#define wxSOCKET_INT unsigned int
|
||||
//
|
||||
// Under glibc 2.0.7, socketbits.h declares socklen_t to be unsigned int
|
||||
// and it uses *socklen_t as the 3rd parameter. Robert.
|
||||
|
||||
#ifdef __LINUX__
|
||||
#define wxSOCKET_INT socklen_t
|
||||
#else
|
||||
#define wxSOCKET_INT int
|
||||
#endif
|
||||
|
@ -157,7 +157,9 @@ char *wxStreamBuffer::AllocSpaceWBack(size_t needed_size)
|
||||
if (!temp_b)
|
||||
return NULL;
|
||||
m_wback = temp_b;
|
||||
printf("Buffer(0x%x)->Write: 0x%x, %d\n", this, m_wback, m_wbacksize);
|
||||
|
||||
/* printf("Buffer(0x%x)->Write: 0x%x, %d\n", this, m_wback, m_wbacksize); */
|
||||
|
||||
return (char *)(m_wback+(m_wbacksize-needed_size));
|
||||
}
|
||||
|
||||
@ -165,7 +167,8 @@ size_t wxStreamBuffer::GetWBack(char *buf, size_t bsize)
|
||||
{
|
||||
size_t s_toget = m_wbacksize-m_wbackcur;
|
||||
|
||||
printf("Buffer(0x%x): 0x%x, %d\n", this, m_wback, m_wbacksize);
|
||||
/* printf("Buffer(0x%x): 0x%x, %d\n", this, m_wback, m_wbacksize); */
|
||||
|
||||
if (bsize < s_toget)
|
||||
s_toget = bsize;
|
||||
|
||||
|
@ -335,16 +335,20 @@ void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
if (!m_useEvents) return;
|
||||
|
||||
int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection());
|
||||
int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection());
|
||||
int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->GetStringSelection());
|
||||
int fontFamily = 0; /* shut up buggy egcs warnings */
|
||||
fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection());
|
||||
int fontWeight = 0;
|
||||
fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection());
|
||||
int fontStyle = 0;
|
||||
fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->GetStringSelection());
|
||||
int fontSize = atoi(pointSizeChoice->GetStringSelection());
|
||||
int fontUnderline = underLineCheckBox->GetValue();
|
||||
|
||||
dialogFont = wxFont(fontSize, fontFamily, fontStyle, fontWeight, (fontUnderline != 0));
|
||||
if (colourChoice->GetStringSelection() != "")
|
||||
{
|
||||
wxColour *col = wxTheColourDatabase->FindColour(colourChoice->GetStringSelection());
|
||||
wxColour *col = (wxColour*) NULL;
|
||||
col = wxTheColourDatabase->FindColour(colourChoice->GetStringSelection());
|
||||
if (col)
|
||||
{
|
||||
fontData.fontColour = *col;
|
||||
|
@ -49,7 +49,7 @@ IMPLEMENT_CLASS(wxExtHelpController, wxHelpControllerBase)
|
||||
|
||||
wxExtHelpController::wxExtHelpController(void)
|
||||
{
|
||||
m_MapList = NULL;
|
||||
m_MapList = (wxList*) NULL;
|
||||
m_BrowserName = WXEXTHELP_DEFAULTBROWSER;
|
||||
m_BrowserIsNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE;
|
||||
m_NumOfEntries = 0;
|
||||
@ -76,7 +76,7 @@ wxExtHelpController::DeleteList(void)
|
||||
node = m_MapList->First();
|
||||
}
|
||||
delete m_MapList;
|
||||
m_MapList = NULL;
|
||||
m_MapList = (wxList*) NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -359,6 +359,8 @@ void wxTreeCtrl::Init()
|
||||
|
||||
m_imageListNormal =
|
||||
m_imageListState = (wxImageList *) NULL;
|
||||
|
||||
m_dragCount = 0;
|
||||
}
|
||||
|
||||
bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||
@ -926,15 +928,15 @@ void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item)
|
||||
|
||||
void wxTreeCtrl::ScrollTo(const wxTreeItemId& WXUNUSED(item))
|
||||
{
|
||||
wxFAIL_MSG("not implemented");
|
||||
wxFAIL_MSG("not implemented");
|
||||
}
|
||||
|
||||
wxTextCtrl *wxTreeCtrl::EditLabel( const wxTreeItemId& WXUNUSED(item),
|
||||
wxClassInfo* WXUNUSED(textCtrlClass) )
|
||||
{
|
||||
wxFAIL_MSG("not implemented");
|
||||
wxFAIL_MSG("not implemented");
|
||||
|
||||
return (wxTextCtrl*)NULL;
|
||||
return (wxTextCtrl*)NULL;
|
||||
}
|
||||
|
||||
wxTextCtrl *wxTreeCtrl::GetEditControl() const
|
||||
@ -1031,160 +1033,160 @@ void wxTreeCtrl::AdjustMyScrollbars()
|
||||
|
||||
void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
||||
{
|
||||
// render bold items in bold
|
||||
wxFont fontOld;
|
||||
wxFont fontNew;
|
||||
/* render bold items in bold */
|
||||
wxFont fontOld;
|
||||
wxFont fontNew;
|
||||
|
||||
if ( item->IsBold() )
|
||||
{
|
||||
fontOld = dc.GetFont();
|
||||
if (fontOld.Ok())
|
||||
{
|
||||
// @@ is there any better way to make a bold variant of old font?
|
||||
fontNew = wxFont( fontOld.GetPointSize(),
|
||||
fontOld.GetFamily(),
|
||||
fontOld.GetStyle(),
|
||||
wxBOLD,
|
||||
fontOld.GetUnderlined());
|
||||
dc.SetFont(fontNew);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG("wxDC::GetFont() failed!");
|
||||
}
|
||||
}
|
||||
if (item->IsBold())
|
||||
{
|
||||
fontOld = dc.GetFont();
|
||||
if (fontOld.Ok())
|
||||
{
|
||||
/* @@ is there any better way to make a bold variant of old font? */
|
||||
fontNew = wxFont( fontOld.GetPointSize(),
|
||||
fontOld.GetFamily(),
|
||||
fontOld.GetStyle(),
|
||||
wxBOLD,
|
||||
fontOld.GetUnderlined());
|
||||
dc.SetFont(fontNew);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxFAIL_MSG("wxDC::GetFont() failed!");
|
||||
}
|
||||
}
|
||||
|
||||
long text_w = 0;
|
||||
long text_h = 0;
|
||||
dc.GetTextExtent( item->GetText(), &text_w, &text_h );
|
||||
long text_w = 0;
|
||||
long text_h = 0;
|
||||
dc.GetTextExtent( item->GetText(), &text_w, &text_h );
|
||||
|
||||
int image_h = 0;
|
||||
int image_w = 0;
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetSelectedImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
int image_h = 0;
|
||||
int image_w = 0;
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetSelectedImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
|
||||
dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 );
|
||||
dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 );
|
||||
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
{
|
||||
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
|
||||
m_imageListNormal->Draw( item->GetSelectedImage(), dc,
|
||||
item->GetX(), item->GetY()-1,
|
||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
|
||||
m_imageListNormal->Draw( item->GetImage(), dc,
|
||||
item->GetX(), item->GetY()-1,
|
||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
{
|
||||
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
|
||||
m_imageListNormal->Draw( item->GetSelectedImage(), dc,
|
||||
item->GetX(), item->GetY()-1,
|
||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h );
|
||||
m_imageListNormal->Draw( item->GetImage(), dc,
|
||||
item->GetX(), item->GetY()-1,
|
||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
|
||||
dc.SetBackgroundMode(wxTRANSPARENT);
|
||||
dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY() );
|
||||
dc.SetBackgroundMode(wxTRANSPARENT);
|
||||
dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY() );
|
||||
|
||||
// restore normal font for bold items
|
||||
if (fontOld.Ok())
|
||||
{
|
||||
dc.SetFont( fontOld);
|
||||
}
|
||||
/* restore normal font for bold items */
|
||||
if (fontOld.Ok())
|
||||
{
|
||||
dc.SetFont( fontOld);
|
||||
}
|
||||
}
|
||||
|
||||
void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y )
|
||||
{
|
||||
int horizX = level*m_indent;
|
||||
int horizX = level*m_indent;
|
||||
|
||||
item->SetX( horizX+33 );
|
||||
item->SetY( y-m_lineHeight/3 );
|
||||
item->SetHeight( m_lineHeight );
|
||||
item->SetX( horizX+33 );
|
||||
item->SetY( y-m_lineHeight/3 );
|
||||
item->SetHeight( m_lineHeight );
|
||||
|
||||
item->SetCross( horizX+15, y );
|
||||
item->SetCross( horizX+15, y );
|
||||
|
||||
int oldY = y;
|
||||
int oldY = y;
|
||||
|
||||
int exposed_x = dc.LogicalToDeviceX( 0 );
|
||||
int exposed_y = dc.LogicalToDeviceY( item->GetY()-2 );
|
||||
int exposed_x = dc.LogicalToDeviceX( 0 );
|
||||
int exposed_y = dc.LogicalToDeviceY( item->GetY()-2 );
|
||||
|
||||
if (IsExposed( exposed_x, exposed_y, 10000, m_lineHeight+4 )) // 10000 = very much
|
||||
{
|
||||
int startX = horizX;
|
||||
int endX = horizX + 10;
|
||||
|
||||
if (!item->HasChildren()) endX += 20;
|
||||
|
||||
dc.DrawLine( startX, y, endX, y );
|
||||
|
||||
if (item->HasPlus())
|
||||
if (IsExposed( exposed_x, exposed_y, 10000, m_lineHeight+4 )) // 10000 = very much
|
||||
{
|
||||
dc.DrawLine( horizX+20, y, horizX+30, y );
|
||||
dc.SetPen( *wxGREY_PEN );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.DrawRectangle( horizX+10, y-4, 11, 9 );
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
dc.DrawLine( horizX+13, y, horizX+18, y );
|
||||
int startX = horizX;
|
||||
int endX = horizX + 10;
|
||||
|
||||
if (!item->IsExpanded())
|
||||
dc.DrawLine( horizX+15, y-2, horizX+15, y+3 );
|
||||
if (!item->HasChildren()) endX += 20;
|
||||
|
||||
dc.DrawLine( startX, y, endX, y );
|
||||
|
||||
if (item->HasPlus())
|
||||
{
|
||||
dc.DrawLine( horizX+20, y, horizX+30, y );
|
||||
dc.SetPen( *wxGREY_PEN );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.DrawRectangle( horizX+10, y-4, 11, 9 );
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
dc.DrawLine( horizX+13, y, horizX+18, y );
|
||||
|
||||
if (!item->IsExpanded())
|
||||
{
|
||||
dc.DrawLine( horizX+15, y-2, horizX+15, y+3 );
|
||||
}
|
||||
}
|
||||
|
||||
if (item->HasHilight())
|
||||
{
|
||||
dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
|
||||
|
||||
dc.SetBrush( *m_hilightBrush );
|
||||
|
||||
if (m_hasFocus)
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
else
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
|
||||
PaintItem(item, dc);
|
||||
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
dc.SetTextForeground( *wxBLACK );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
|
||||
PaintItem(item, dc);
|
||||
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
}
|
||||
}
|
||||
|
||||
if (item->HasHilight())
|
||||
if (item->IsExpanded())
|
||||
{
|
||||
dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
|
||||
int semiOldY = y;
|
||||
|
||||
dc.SetBrush( *m_hilightBrush );
|
||||
wxArrayTreeItems& children = item->GetChildren();
|
||||
size_t count = children.Count();
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
y += m_lineHeight;
|
||||
semiOldY = y;
|
||||
PaintLevel( children[n], dc, level+1, y );
|
||||
}
|
||||
|
||||
if (m_hasFocus)
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
else
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
|
||||
PaintItem(item, dc);
|
||||
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
dc.SetTextForeground( *wxBLACK );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
/* it may happen that the item is expanded but has no items (when you
|
||||
* delete all its children for example) - don't draw the vertical line
|
||||
* in this case */
|
||||
if (count > 0) dc.DrawLine( horizX+15, oldY+5, horizX+15, semiOldY );
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||
|
||||
PaintItem(item, dc);
|
||||
|
||||
dc.SetPen( *wxBLACK_PEN );
|
||||
}
|
||||
}
|
||||
|
||||
if ( item->IsExpanded() )
|
||||
{
|
||||
int semiOldY = y;
|
||||
|
||||
wxArrayTreeItems& children = item->GetChildren();
|
||||
size_t count = children.Count();
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
y += m_lineHeight;
|
||||
semiOldY = y;
|
||||
|
||||
PaintLevel( children[n], dc, level+1, y );
|
||||
}
|
||||
|
||||
// it may happen that the item is expanded but has no items (when you
|
||||
// delete all its children for example) - don't draw the vertical line
|
||||
// in this case
|
||||
if ( count > 0 )
|
||||
dc.DrawLine( horizX+15, oldY+5, horizX+15, semiOldY );
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -1211,15 +1213,15 @@ void wxTreeCtrl::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
||||
void wxTreeCtrl::OnSetFocus( wxFocusEvent &WXUNUSED(event) )
|
||||
{
|
||||
m_hasFocus = TRUE;
|
||||
if ( m_current )
|
||||
RefreshLine( m_current );
|
||||
|
||||
if (m_current) RefreshLine( m_current );
|
||||
}
|
||||
|
||||
void wxTreeCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) )
|
||||
{
|
||||
m_hasFocus = FALSE;
|
||||
if ( m_current )
|
||||
RefreshLine( m_current );
|
||||
|
||||
if (m_current) RefreshLine( m_current );
|
||||
}
|
||||
|
||||
void wxTreeCtrl::OnChar( wxKeyEvent &event )
|
||||
@ -1363,130 +1365,149 @@ void wxTreeCtrl::OnChar( wxKeyEvent &event )
|
||||
|
||||
wxTreeItemId wxTreeCtrl::HitTest(const wxPoint& point, int& WXUNUSED(flags))
|
||||
{
|
||||
bool onButton = FALSE;
|
||||
return m_anchor->HitTest( point, onButton );
|
||||
bool onButton = FALSE;
|
||||
return m_anchor->HitTest( point, onButton );
|
||||
}
|
||||
|
||||
void wxTreeCtrl::OnMouse( wxMouseEvent &event )
|
||||
{
|
||||
if ( !(event.LeftDown() || event.LeftDClick()) )
|
||||
return;
|
||||
if (!event.LeftIsDown()) m_dragCount = 0;
|
||||
|
||||
if ( !m_anchor )
|
||||
return;
|
||||
if ( !(event.LeftDown() || event.LeftDClick() || event.Dragging()) ) return;
|
||||
|
||||
wxClientDC dc(this);
|
||||
PrepareDC(dc);
|
||||
long x = dc.DeviceToLogicalX( (long)event.GetX() );
|
||||
long y = dc.DeviceToLogicalY( (long)event.GetY() );
|
||||
if ( !m_anchor ) return;
|
||||
|
||||
wxClientDC dc(this);
|
||||
PrepareDC(dc);
|
||||
long x = dc.DeviceToLogicalX( (long)event.GetX() );
|
||||
long y = dc.DeviceToLogicalY( (long)event.GetY() );
|
||||
|
||||
bool onButton = FALSE;
|
||||
wxGenericTreeItem *item = m_anchor->HitTest( wxPoint(x,y), onButton );
|
||||
if ( item == NULL )
|
||||
return;
|
||||
bool onButton = FALSE;
|
||||
wxGenericTreeItem *item = m_anchor->HitTest( wxPoint(x,y), onButton );
|
||||
|
||||
if (item == NULL) return; /* we hit the blank area */
|
||||
|
||||
if (!IsSelected(item)) SelectItem(item);
|
||||
if (event.Dragging())
|
||||
{
|
||||
if (m_dragCount == 2) /* small drag latency (3?) */
|
||||
{
|
||||
m_dragCount = 0;
|
||||
|
||||
wxTreeEvent nevent(wxEVT_COMMAND_TREE_BEGIN_DRAG, GetId());
|
||||
nevent.m_item = m_current;
|
||||
nevent.SetEventObject(this);
|
||||
GetEventHandler()->ProcessEvent(nevent);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dragCount++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsSelected(item)) SelectItem(item); /* we dont support multiple selections, BTW */
|
||||
|
||||
if ( event.LeftDClick() )
|
||||
{
|
||||
wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, GetId() );
|
||||
event.m_item = item;
|
||||
event.m_code = 0;
|
||||
event.SetEventObject( this );
|
||||
GetEventHandler()->ProcessEvent( event );
|
||||
}
|
||||
if (event.LeftDClick())
|
||||
{
|
||||
wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, GetId() );
|
||||
event.m_item = item;
|
||||
event.m_code = 0;
|
||||
event.SetEventObject( this );
|
||||
GetEventHandler()->ProcessEvent( event );
|
||||
}
|
||||
|
||||
if ( onButton )
|
||||
{
|
||||
Toggle( item );
|
||||
}
|
||||
if (onButton)
|
||||
{
|
||||
Toggle( item );
|
||||
}
|
||||
}
|
||||
|
||||
void wxTreeCtrl::OnIdle( wxIdleEvent &WXUNUSED(event) )
|
||||
{
|
||||
if (!m_dirty) return;
|
||||
/* after all changes have been done to the tree control,
|
||||
* we actually redraw the tree when everything is over */
|
||||
|
||||
m_dirty = FALSE;
|
||||
if (!m_dirty) return;
|
||||
|
||||
CalculatePositions();
|
||||
m_dirty = FALSE;
|
||||
|
||||
AdjustMyScrollbars();
|
||||
CalculatePositions();
|
||||
|
||||
AdjustMyScrollbars();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item,
|
||||
wxDC &dc,
|
||||
int level,
|
||||
int &y )
|
||||
|
||||
void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y )
|
||||
{
|
||||
int horizX = level*m_indent;
|
||||
int horizX = level*m_indent;
|
||||
|
||||
item->SetX( horizX+33 );
|
||||
item->SetY( y-m_lineHeight/3-2 );
|
||||
item->SetHeight( m_lineHeight );
|
||||
item->SetX( horizX+33 );
|
||||
item->SetY( y-m_lineHeight/3-2 );
|
||||
item->SetHeight( m_lineHeight );
|
||||
|
||||
// if ( item->IsExpanded() )
|
||||
// return;
|
||||
if ( !item->IsExpanded() ) // Surely this is correct? JACS
|
||||
return;
|
||||
if ( !item->IsExpanded() )
|
||||
{
|
||||
/* we dont need to calculate collapsed branches */
|
||||
return;
|
||||
}
|
||||
|
||||
wxArrayTreeItems& children = item->GetChildren();
|
||||
size_t count = children.Count();
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
y += m_lineHeight;
|
||||
CalculateLevel( children[n], dc, level+1, y );
|
||||
}
|
||||
wxArrayTreeItems& children = item->GetChildren();
|
||||
size_t count = children.Count();
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
y += m_lineHeight;
|
||||
CalculateLevel( children[n], dc, level+1, y ); /* recurse */
|
||||
}
|
||||
}
|
||||
|
||||
void wxTreeCtrl::CalculatePositions()
|
||||
{
|
||||
if ( !m_anchor )
|
||||
return;
|
||||
if ( !m_anchor ) return;
|
||||
|
||||
wxClientDC dc(this);
|
||||
PrepareDC( dc );
|
||||
wxClientDC dc(this);
|
||||
PrepareDC( dc );
|
||||
|
||||
dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) );
|
||||
dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) );
|
||||
|
||||
dc.SetPen( m_dottedPen );
|
||||
m_lineHeight = (int)(dc.GetCharHeight() + 4);
|
||||
dc.SetPen( m_dottedPen );
|
||||
m_lineHeight = (int)(dc.GetCharHeight() + 4);
|
||||
|
||||
int y = m_lineHeight / 2 + 2;
|
||||
CalculateLevel( m_anchor, dc, 0, y );
|
||||
int y = m_lineHeight / 2 + 2;
|
||||
CalculateLevel( m_anchor, dc, 0, y ); /* start recursion */
|
||||
}
|
||||
|
||||
void wxTreeCtrl::RefreshSubtree(wxGenericTreeItem *item)
|
||||
{
|
||||
wxClientDC dc(this);
|
||||
PrepareDC(dc);
|
||||
wxClientDC dc(this);
|
||||
PrepareDC(dc);
|
||||
|
||||
int cw = 0;
|
||||
int ch = 0;
|
||||
GetClientSize( &cw, &ch );
|
||||
int cw = 0;
|
||||
int ch = 0;
|
||||
GetClientSize( &cw, &ch );
|
||||
|
||||
wxRect rect;
|
||||
rect.x = dc.LogicalToDeviceX( 0 );
|
||||
rect.width = cw;
|
||||
rect.y = dc.LogicalToDeviceY( item->GetY() );
|
||||
rect.height = ch;
|
||||
wxRect rect;
|
||||
rect.x = dc.LogicalToDeviceX( 0 );
|
||||
rect.width = cw;
|
||||
rect.y = dc.LogicalToDeviceY( item->GetY() );
|
||||
rect.height = ch;
|
||||
|
||||
Refresh( TRUE, &rect );
|
||||
Refresh( TRUE, &rect );
|
||||
|
||||
AdjustMyScrollbars();
|
||||
AdjustMyScrollbars();
|
||||
}
|
||||
|
||||
void wxTreeCtrl::RefreshLine( wxGenericTreeItem *item )
|
||||
{
|
||||
wxClientDC dc(this);
|
||||
PrepareDC( dc );
|
||||
wxClientDC dc(this);
|
||||
PrepareDC( dc );
|
||||
|
||||
wxRect rect;
|
||||
rect.x = dc.LogicalToDeviceX( item->GetX() - 2 );
|
||||
rect.y = dc.LogicalToDeviceY( item->GetY() - 2 );
|
||||
rect.width = 1000;
|
||||
rect.height = dc.GetCharHeight() + 6;
|
||||
Refresh( TRUE, &rect );
|
||||
wxRect rect;
|
||||
rect.x = dc.LogicalToDeviceX( item->GetX() - 2 );
|
||||
rect.y = dc.LogicalToDeviceY( item->GetY() - 2 );
|
||||
rect.width = 1000;
|
||||
rect.height = dc.GetCharHeight() + 6;
|
||||
|
||||
Refresh( TRUE, &rect );
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,13 @@
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
#ifdef NULL
|
||||
#undef NULL
|
||||
#endif
|
||||
#define NULL ((void*)0L)
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxAcceleratorTable
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -44,6 +44,9 @@ wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
|
||||
extern wxList wxPendingDelete;
|
||||
extern wxResourceCache *wxTheResourceCache;
|
||||
|
||||
GdkVisual *wxVisualSetByExternal = (GdkVisual*) NULL;
|
||||
GdkColormap *wxColormapSetByExternal = (GdkColormap*) NULL;
|
||||
|
||||
unsigned char g_palette[64*3] =
|
||||
{
|
||||
0x0, 0x0, 0x0,
|
||||
@ -169,14 +172,60 @@ wxApp::~wxApp(void)
|
||||
gtk_idle_remove( m_idleTag );
|
||||
}
|
||||
|
||||
bool wxApp::OnInit(void)
|
||||
bool wxApp::InitVisual()
|
||||
{
|
||||
if (wxVisualSetByExternal)
|
||||
{
|
||||
/* this happens in the wxModule code of the OpenGl canvas.
|
||||
it chooses the best display for OpenGl and stores it
|
||||
in wxDisplaySetByExternal. we then have to make it the
|
||||
default for the system */
|
||||
|
||||
gtk_widget_set_default_visual( wxVisualSetByExternal );
|
||||
}
|
||||
|
||||
if (wxColormapSetByExternal)
|
||||
{
|
||||
/* OpenGl also gives us a colormap */
|
||||
|
||||
gtk_widget_set_default_colormap( wxColormapSetByExternal );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* this initiates the standard palette as defined by GdkImlib
|
||||
in the GNOME libraries. it ensures that all GNOME applications
|
||||
use the same 64 colormap entries on 8-bit displays so you
|
||||
can use several rather graphics-heavy applications at the
|
||||
same time */
|
||||
|
||||
GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE );
|
||||
|
||||
for (int i = 0; i < 64; i++)
|
||||
{
|
||||
GdkColor col;
|
||||
col.red = g_palette[i*3 + 0] << 8;
|
||||
col.green = g_palette[i*3 + 1] << 8;
|
||||
col.blue = g_palette[i*3 + 2] << 8;
|
||||
col.pixel = 0;
|
||||
|
||||
gdk_color_alloc( cmap, &col );
|
||||
}
|
||||
|
||||
gtk_widget_set_default_colormap( cmap );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxApp::OnInitGui(void)
|
||||
{
|
||||
m_idleTag = gtk_idle_add( wxapp_idle_callback, NULL );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxApp::OnInit(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -320,12 +369,6 @@ void wxApp::SetTopWindow( wxWindow *win )
|
||||
|
||||
void wxApp::CommonInit(void)
|
||||
{
|
||||
|
||||
/*
|
||||
#if wxUSE_RESOURCES
|
||||
(void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion);
|
||||
#endif
|
||||
*/
|
||||
wxSystemSettings::Init();
|
||||
|
||||
wxTheFontNameDirectory = new wxFontNameDirectory;
|
||||
@ -350,14 +393,19 @@ void wxApp::CommonInit(void)
|
||||
|
||||
void wxApp::CommonCleanUp(void)
|
||||
{
|
||||
wxDELETE(wxTheColourDatabase);
|
||||
wxDELETE(wxTheFontNameDirectory);
|
||||
if (wxTheColourDatabase) delete wxTheColourDatabase;
|
||||
wxTheColourDatabase = (wxColourDatabase*) NULL;
|
||||
|
||||
if (wxTheFontNameDirectory) delete wxTheFontNameDirectory;
|
||||
wxTheFontNameDirectory = (wxFontNameDirectory*) NULL;
|
||||
|
||||
wxDeleteStockObjects();
|
||||
|
||||
#if wxUSE_WX_RESOURCES
|
||||
wxFlushResources();
|
||||
|
||||
wxDELETE(wxTheResourceCache);
|
||||
if (wxTheResourceCache) delete wxTheResourceCache;
|
||||
wxTheResourceCache = (wxResourceCache*) NULL;
|
||||
|
||||
wxCleanUpResourceSystem();
|
||||
#endif
|
||||
@ -419,29 +467,14 @@ int wxEntry( int argc, char *argv[] )
|
||||
|
||||
gtk_init( &argc, &argv );
|
||||
|
||||
GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE );
|
||||
|
||||
for (int i = 0; i < 64; i++)
|
||||
{
|
||||
GdkColor col;
|
||||
col.red = g_palette[i*3 + 0] << 8;
|
||||
col.green = g_palette[i*3 + 1] << 8;
|
||||
col.blue = g_palette[i*3 + 2] << 8;
|
||||
col.pixel = 0;
|
||||
|
||||
gdk_color_alloc( cmap, &col );
|
||||
}
|
||||
|
||||
gtk_widget_push_colormap( cmap );
|
||||
|
||||
gtk_widget_set_default_colormap( cmap );
|
||||
wxModule::RegisterModules();
|
||||
if (!wxModule::InitializeModules()) return FALSE;
|
||||
|
||||
if (!wxTheApp->InitVisual()) return 0;
|
||||
|
||||
wxApp::CommonInit();
|
||||
|
||||
wxModule::RegisterModules();
|
||||
if (!wxModule::InitializeModules()) return FALSE;
|
||||
|
||||
wxTheApp->OnInitGui();
|
||||
if (!wxTheApp->OnInitGui()) return 0;
|
||||
|
||||
// Here frames insert themselves automatically
|
||||
// into wxTopLevelWindows by getting created
|
||||
@ -481,11 +514,9 @@ int wxEntry( int argc, char *argv[] )
|
||||
|
||||
#endif
|
||||
|
||||
wxLog *oldLog = wxLog::SetActiveTarget( NULL );
|
||||
wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL );
|
||||
if (oldLog) delete oldLog;
|
||||
|
||||
return retValue;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
@ -27,14 +27,15 @@ wxCheckListBox::wxCheckListBox() :
|
||||
{
|
||||
m_hasCheckBoxes = TRUE;
|
||||
}
|
||||
|
||||
wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
int nStrings = 0,
|
||||
const wxString choices[] = NULL,
|
||||
long style = 0,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxListBoxNameStr)
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
int nStrings,
|
||||
const wxString choices[],
|
||||
long style,
|
||||
const wxValidator& validator,
|
||||
const wxString& name )
|
||||
{
|
||||
m_hasCheckBoxes = TRUE;
|
||||
wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name );
|
||||
|
@ -255,7 +255,7 @@ void wxComboBox::Delete( int n )
|
||||
return;
|
||||
}
|
||||
|
||||
GList *list = g_list_append( NULL, child->data );
|
||||
GList *list = g_list_append( (GList*) NULL, child->data );
|
||||
gtk_list_remove_items( listbox, list );
|
||||
g_list_free( list );
|
||||
|
||||
|
@ -14,7 +14,6 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_POSTSCRIPT
|
||||
|
@ -733,8 +733,8 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
|
||||
|
||||
if (!m_data) return (wxDragResult) wxDragNone;
|
||||
|
||||
static GtkWidget *drag_icon = NULL;
|
||||
static GtkWidget *drop_icon = NULL;
|
||||
static GtkWidget *drag_icon = (GtkWidget*) NULL;
|
||||
static GtkWidget *drop_icon = (GtkWidget*) NULL;
|
||||
|
||||
GdkPoint hotspot_1 = {0,-5 };
|
||||
|
||||
@ -872,7 +872,7 @@ void wxDropSource::UnregisterWindow(void)
|
||||
/*
|
||||
* Shaped Windows
|
||||
*/
|
||||
static GdkWindow *root_win = NULL;
|
||||
static GdkWindow *root_win = (GdkWindow*) NULL;
|
||||
|
||||
typedef struct _cursoroffset {gint x,y;} CursorOffset;
|
||||
|
||||
@ -895,7 +895,8 @@ shape_pressed (GtkWidget *widget, GdkEventButton *event)
|
||||
(GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_BUTTON_MOTION_MASK |
|
||||
GDK_POINTER_MOTION_HINT_MASK),
|
||||
NULL, NULL, 0);
|
||||
(GdkWindow*)NULL,
|
||||
(GdkCursor*) NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -423,7 +423,7 @@ void wxListBox::Delete( int n )
|
||||
|
||||
wxCHECK_RET( child, "wrong listbox index" );
|
||||
|
||||
GList *list = g_list_append( NULL, child->data );
|
||||
GList *list = g_list_append( (GList*) NULL, child->data );
|
||||
gtk_list_remove_items( m_list, list );
|
||||
g_list_free( list );
|
||||
|
||||
|
@ -155,14 +155,38 @@ bool wxMenuBar::Enabled( int id ) const
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
wxString wxMenuBar::GetLabel( int id ) const
|
||||
{
|
||||
wxMenuItem* item = FindMenuItemById( id );
|
||||
if (item) return item->GetText();
|
||||
return "";
|
||||
}
|
||||
|
||||
void wxMenuBar::SetLabel( int id, const wxString &label )
|
||||
{
|
||||
wxMenuItem* item = FindMenuItemById( id );
|
||||
if (item) return item->SetText( label );
|
||||
}
|
||||
|
||||
void wxMenuBar::EnableTop( int WXUNUSED(pos), bool WXUNUSED(flag) )
|
||||
{
|
||||
}
|
||||
|
||||
wxString wxMenuBar::GetLabelTop( int WXUNUSED(pos) ) const
|
||||
{
|
||||
return "menu";
|
||||
}
|
||||
|
||||
void wxMenuBar::SetLabelTop( int WXUNUSED(pos), const wxString& WXUNUSED(label) )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "activate"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
|
||||
{
|
||||
wxYield();
|
||||
|
||||
int id = menu->FindMenuIdByMenuItem(widget);
|
||||
|
||||
/* should find it for normal (not popup) menu */
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "gtk/gtk.h"
|
||||
#include "wx/gtk/win_gtk.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "clicked"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -429,7 +429,7 @@ bool wxNotebook::SetPageImage( int page, int image )
|
||||
if (image == -1 && nb_page->m_image == -1)
|
||||
return TRUE; /* Case 1): Nothing to do. */
|
||||
|
||||
GtkWidget *pixmapwid = NULL;
|
||||
GtkWidget *pixmapwid = (GtkWidget*) NULL;
|
||||
|
||||
if (nb_page->m_image != -1)
|
||||
{
|
||||
|
@ -7,7 +7,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "radiobox.h"
|
||||
#endif
|
||||
@ -148,8 +147,8 @@ void wxRadioBox::OnSize( wxSizeEvent &event )
|
||||
|
||||
wxSize wxRadioBox::LayoutItems()
|
||||
{
|
||||
int x = m_x+7;
|
||||
int y = m_y+15;
|
||||
int x = 7;
|
||||
int y = 15;
|
||||
|
||||
int num_per_major = (m_boxes.GetCount() - 1) / m_majorDim +1;
|
||||
|
||||
@ -160,7 +159,7 @@ wxSize wxRadioBox::LayoutItems()
|
||||
|
||||
for (int j = 0; j < m_majorDim; j++)
|
||||
{
|
||||
y = m_y+15;
|
||||
y = 15;
|
||||
|
||||
int max_len = 0;
|
||||
wxNode *node = m_boxes.Nth( j*num_per_major );
|
||||
@ -169,10 +168,10 @@ wxSize wxRadioBox::LayoutItems()
|
||||
GtkWidget *button = GTK_WIDGET( node->Data() );
|
||||
GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child );
|
||||
GdkFont *font = m_widget->style->font;
|
||||
int len = 27+gdk_string_measure( font, label->label );
|
||||
int len = 22+gdk_string_measure( font, label->label );
|
||||
if (len > max_len) max_len = len;
|
||||
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y );
|
||||
y += 22;
|
||||
|
||||
node = node->Next();
|
||||
@ -197,8 +196,8 @@ wxSize wxRadioBox::LayoutItems()
|
||||
x += max_len + 2;
|
||||
}
|
||||
|
||||
res.y -= 3;
|
||||
res.x = x-2;
|
||||
res.x = x+4;
|
||||
res.y += 9;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -211,7 +210,7 @@ wxSize wxRadioBox::LayoutItems()
|
||||
GtkLabel *label = GTK_LABEL( button->child );
|
||||
|
||||
GdkFont *font = m_widget->style->font;
|
||||
int len = 27+gdk_string_measure( font, label->label );
|
||||
int len = 22+gdk_string_measure( font, label->label );
|
||||
if (len > max) max = len;
|
||||
|
||||
node = node->Next();
|
||||
@ -222,13 +221,13 @@ wxSize wxRadioBox::LayoutItems()
|
||||
{
|
||||
GtkWidget *button = GTK_WIDGET( node->Data() );
|
||||
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y );
|
||||
x += max;
|
||||
gtk_widget_set_usize( button, max, 20 );
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
res.x = x-2;
|
||||
res.x = x+4;
|
||||
res.y = 42;
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "region.h"
|
||||
#endif
|
||||
@ -17,6 +16,13 @@
|
||||
#include "gdk/gdk.h"
|
||||
#include "gtk/gtk.h"
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
#ifdef NULL
|
||||
#undef NULL
|
||||
#endif
|
||||
#define NULL ((void*)0L)
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxRegion
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -36,20 +42,20 @@ class wxRegionRefData: public wxObjectRefData
|
||||
|
||||
wxRegionRefData::wxRegionRefData(void)
|
||||
{
|
||||
m_region = (GdkRegion *) NULL;
|
||||
m_region = (GdkRegion *) NULL;
|
||||
}
|
||||
|
||||
wxRegionRefData::~wxRegionRefData(void)
|
||||
{
|
||||
if (m_region) gdk_region_destroy( m_region );
|
||||
if (m_region) gdk_region_destroy( m_region );
|
||||
|
||||
wxNode *node = m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
delete r;
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
delete r;
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -60,57 +66,57 @@ IMPLEMENT_DYNAMIC_CLASS(wxRegion,wxGDIObject);
|
||||
|
||||
wxRegion::wxRegion( long x, long y, long w, long h )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,w,h) );
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,w,h) );
|
||||
}
|
||||
|
||||
wxRegion::wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = topLeft.x;
|
||||
rect.y = topLeft.y;
|
||||
rect.width = bottomRight.x - rect.x;
|
||||
rect.height = bottomRight.y - rect.y;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(topLeft,bottomRight) );
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = topLeft.x;
|
||||
rect.y = topLeft.y;
|
||||
rect.width = bottomRight.x - rect.x;
|
||||
rect.height = bottomRight.y - rect.y;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(topLeft,bottomRight) );
|
||||
}
|
||||
|
||||
wxRegion::wxRegion( const wxRect& rect )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &g_rect );
|
||||
gdk_region_destroy( reg );
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &g_rect );
|
||||
gdk_region_destroy( reg );
|
||||
|
||||
wxNode *node = M_REGIONDATA->m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = M_REGIONDATA->m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
|
||||
wxRegion::wxRegion(void)
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
}
|
||||
|
||||
wxRegion::~wxRegion(void)
|
||||
@ -119,241 +125,241 @@ wxRegion::~wxRegion(void)
|
||||
|
||||
bool wxRegion::operator == ( const wxRegion& region )
|
||||
{
|
||||
return m_refData == region.m_refData;
|
||||
return m_refData == region.m_refData;
|
||||
}
|
||||
|
||||
bool wxRegion::operator != ( const wxRegion& region )
|
||||
{
|
||||
return m_refData != region.m_refData;
|
||||
return m_refData != region.m_refData;
|
||||
}
|
||||
|
||||
void wxRegion::Clear(void)
|
||||
{
|
||||
UnRef();
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
UnRef();
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
}
|
||||
|
||||
bool wxRegion::Union( long x, long y, long width, long height )
|
||||
{
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) );
|
||||
return TRUE;
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Union( const wxRect& rect )
|
||||
{
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &g_rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(rect.x,rect.y,rect.width,rect.height) );
|
||||
return TRUE;
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &g_rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(rect.x,rect.y,rect.width,rect.height) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Union( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Intersect( long x, long y, long width, long height )
|
||||
{
|
||||
wxRegion reg( x, y, width, height );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( x, y, width, height );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Intersect( const wxRect& rect )
|
||||
{
|
||||
wxRegion reg( rect );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( rect );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Intersect( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Subtract( long x, long y, long width, long height )
|
||||
{
|
||||
wxRegion reg( x, y, width, height );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( x, y, width, height );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Subtract( const wxRect& rect )
|
||||
{
|
||||
wxRegion reg( rect );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( rect );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Subtract( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Xor( long x, long y, long width, long height )
|
||||
{
|
||||
wxRegion reg( x, y, width, height );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( x, y, width, height );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Xor( const wxRect& rect )
|
||||
{
|
||||
wxRegion reg( rect );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( rect );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Xor( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxRegion::GetBox( long& x, long& y, long&w, long &h ) const
|
||||
{
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = -1;
|
||||
h = -1;
|
||||
wxNode *node = GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
if (node == GetRectList()->First())
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = -1;
|
||||
h = -1;
|
||||
wxNode *node = GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
x = r->x;
|
||||
y = r->y;
|
||||
w = r->width;
|
||||
h = r->height;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
if (node == GetRectList()->First())
|
||||
{
|
||||
x = r->x;
|
||||
y = r->y;
|
||||
w = r->width;
|
||||
h = r->height;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r->x < x)
|
||||
{
|
||||
x = r->x;
|
||||
w += x - r->x;
|
||||
}
|
||||
if (r->y < y)
|
||||
{
|
||||
y = r->y;
|
||||
h += y - r->y;
|
||||
}
|
||||
if (r->width+r->x > x+w)
|
||||
{
|
||||
w = r->x + r->width - x;
|
||||
}
|
||||
if (r->height+r->y > y+h)
|
||||
{
|
||||
h = r->y + r->height - y;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r->x < x)
|
||||
{
|
||||
x = r->x;
|
||||
w += x - r->x;
|
||||
}
|
||||
if (r->y < y)
|
||||
{
|
||||
y = r->y;
|
||||
h += y - r->y;
|
||||
}
|
||||
if (r->width+r->x > x+w)
|
||||
{
|
||||
w = r->x + r->width - x;
|
||||
}
|
||||
if (r->height+r->y > y+h)
|
||||
{
|
||||
h = r->y + r->height - y;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
|
||||
wxRect wxRegion::GetBox(void) const
|
||||
{
|
||||
long x = 0;
|
||||
long y = 0;
|
||||
long w = -1;
|
||||
long h = -1;
|
||||
GetBox( x, y, w, h );
|
||||
return wxRect( x, y, w, h );
|
||||
long x = 0;
|
||||
long y = 0;
|
||||
long w = -1;
|
||||
long h = -1;
|
||||
GetBox( x, y, w, h );
|
||||
return wxRect( x, y, w, h );
|
||||
}
|
||||
|
||||
bool wxRegion::Empty(void) const
|
||||
{
|
||||
return gdk_region_empty( M_REGIONDATA->m_region );
|
||||
return gdk_region_empty( M_REGIONDATA->m_region );
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains( long x, long y ) const
|
||||
{
|
||||
if (gdk_region_point_in( M_REGIONDATA->m_region, x, y ))
|
||||
return wxInRegion;
|
||||
else
|
||||
return wxOutRegion;
|
||||
if (gdk_region_point_in( M_REGIONDATA->m_region, x, y ))
|
||||
return wxInRegion;
|
||||
else
|
||||
return wxOutRegion;
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains( long x, long y, long w, long h ) const
|
||||
{
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
GdkOverlapType res = gdk_region_rect_in( M_REGIONDATA->m_region, &rect );
|
||||
switch (res)
|
||||
{
|
||||
case GDK_OVERLAP_RECTANGLE_IN: return wxInRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_OUT: return wxOutRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_PART: return wxPartRegion;
|
||||
}
|
||||
return wxOutRegion;
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
GdkOverlapType res = gdk_region_rect_in( M_REGIONDATA->m_region, &rect );
|
||||
switch (res)
|
||||
{
|
||||
case GDK_OVERLAP_RECTANGLE_IN: return wxInRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_OUT: return wxOutRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_PART: return wxPartRegion;
|
||||
}
|
||||
return wxOutRegion;
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains(const wxPoint& pt) const
|
||||
{
|
||||
return Contains( pt.x, pt.y );
|
||||
return Contains( pt.x, pt.y );
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains(const wxRect& rect) const
|
||||
{
|
||||
return Contains( rect.x, rect.y, rect.width, rect.height );
|
||||
return Contains( rect.x, rect.y, rect.width, rect.height );
|
||||
}
|
||||
|
||||
GdkRegion *wxRegion::GetRegion(void) const
|
||||
{
|
||||
return M_REGIONDATA->m_region;
|
||||
return M_REGIONDATA->m_region;
|
||||
}
|
||||
|
||||
wxList *wxRegion::GetRectList() const
|
||||
{
|
||||
return &(M_REGIONDATA->m_rects);
|
||||
return &(M_REGIONDATA->m_rects);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -364,71 +370,71 @@ IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator,wxObject);
|
||||
|
||||
wxRegionIterator::wxRegionIterator(void)
|
||||
{
|
||||
m_current = 0;
|
||||
m_current = 0;
|
||||
}
|
||||
|
||||
wxRegionIterator::wxRegionIterator( const wxRegion& region )
|
||||
{
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
}
|
||||
|
||||
void wxRegionIterator::Reset( const wxRegion& region )
|
||||
{
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
}
|
||||
|
||||
wxRegionIterator::operator bool (void) const
|
||||
{
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
}
|
||||
|
||||
bool wxRegionIterator::HaveRects(void) const
|
||||
{
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
}
|
||||
|
||||
void wxRegionIterator::operator ++ (void)
|
||||
{
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
}
|
||||
|
||||
void wxRegionIterator::operator ++ (int)
|
||||
{
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetX(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->x;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->x;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetY(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->y;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->y;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetW(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->width;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->width;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetH(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->height;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->height;
|
||||
}
|
||||
|
||||
|
||||
|
@ -303,7 +303,7 @@ bool wxTextCtrl::LoadFile( const wxString &file )
|
||||
|
||||
Clear();
|
||||
|
||||
FILE *fp = NULL;
|
||||
FILE *fp = (FILE*) NULL;
|
||||
struct stat statb;
|
||||
|
||||
if ((stat ((char*) (const char*) file, &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG ||
|
||||
@ -358,7 +358,7 @@ bool wxTextCtrl::SaveFile( const wxString &file )
|
||||
}
|
||||
else
|
||||
{
|
||||
char *text = NULL;
|
||||
char *text = (char*) NULL;
|
||||
gint len = 0;
|
||||
|
||||
if (m_windowStyle & wxTE_MULTILINE)
|
||||
|
@ -64,7 +64,7 @@ public:
|
||||
wxMutex::wxMutex()
|
||||
{
|
||||
p_internal = new wxMutexInternal;
|
||||
pthread_mutex_init(&(p_internal->p_mutex), NULL);
|
||||
pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL );
|
||||
m_locked = 0;
|
||||
}
|
||||
|
||||
@ -73,46 +73,54 @@ wxMutex::~wxMutex()
|
||||
if (m_locked > 0)
|
||||
wxLogDebug( "wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked );
|
||||
|
||||
pthread_mutex_destroy(&(p_internal->p_mutex));
|
||||
pthread_mutex_destroy( &(p_internal->p_mutex) );
|
||||
delete p_internal;
|
||||
}
|
||||
|
||||
wxMutexError wxMutex::Lock()
|
||||
{
|
||||
int err;
|
||||
|
||||
err = pthread_mutex_lock(&(p_internal->p_mutex));
|
||||
int err = pthread_mutex_lock( &(p_internal->p_mutex) );
|
||||
if (err == EDEADLK)
|
||||
{
|
||||
return wxMUTEX_DEAD_LOCK;
|
||||
}
|
||||
|
||||
m_locked++;
|
||||
|
||||
return wxMUTEX_NO_ERROR;
|
||||
}
|
||||
|
||||
wxMutexError wxMutex::TryLock()
|
||||
{
|
||||
int err;
|
||||
|
||||
if (m_locked)
|
||||
{
|
||||
return wxMUTEX_BUSY;
|
||||
}
|
||||
|
||||
err = pthread_mutex_trylock(&(p_internal->p_mutex));
|
||||
int err = pthread_mutex_trylock( &(p_internal->p_mutex) );
|
||||
switch (err)
|
||||
{
|
||||
case EBUSY: return wxMUTEX_BUSY;
|
||||
}
|
||||
|
||||
m_locked++;
|
||||
|
||||
return wxMUTEX_NO_ERROR;
|
||||
}
|
||||
|
||||
wxMutexError wxMutex::Unlock()
|
||||
{
|
||||
if (m_locked > 0)
|
||||
{
|
||||
m_locked--;
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxMUTEX_UNLOCKED;
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&(p_internal->p_mutex));
|
||||
pthread_mutex_unlock( &(p_internal->p_mutex) );
|
||||
|
||||
return wxMUTEX_NO_ERROR;
|
||||
}
|
||||
|
||||
@ -129,37 +137,38 @@ public:
|
||||
wxCondition::wxCondition()
|
||||
{
|
||||
p_internal = new wxConditionInternal;
|
||||
pthread_cond_init(&(p_internal->p_condition), NULL);
|
||||
pthread_cond_init( &(p_internal->p_condition), (const pthread_condattr_t *) NULL );
|
||||
}
|
||||
|
||||
wxCondition::~wxCondition()
|
||||
{
|
||||
pthread_cond_destroy(&(p_internal->p_condition));
|
||||
pthread_cond_destroy( &(p_internal->p_condition) );
|
||||
|
||||
delete p_internal;
|
||||
}
|
||||
|
||||
void wxCondition::Wait(wxMutex& mutex)
|
||||
{
|
||||
pthread_cond_wait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex));
|
||||
pthread_cond_wait( &(p_internal->p_condition), &(mutex.p_internal->p_mutex) );
|
||||
}
|
||||
|
||||
bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec)
|
||||
{
|
||||
struct timespec tspec;
|
||||
|
||||
tspec.tv_sec = time(NULL)+sec;
|
||||
tspec.tv_sec = time(0L)+sec;
|
||||
tspec.tv_nsec = nsec;
|
||||
return (pthread_cond_timedwait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex), &tspec) != ETIMEDOUT);
|
||||
}
|
||||
|
||||
void wxCondition::Signal()
|
||||
{
|
||||
pthread_cond_signal(&(p_internal->p_condition));
|
||||
pthread_cond_signal( &(p_internal->p_condition) );
|
||||
}
|
||||
|
||||
void wxCondition::Broadcast()
|
||||
{
|
||||
pthread_cond_broadcast(&(p_internal->p_condition));
|
||||
pthread_cond_broadcast( &(p_internal->p_condition) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
@ -183,7 +192,7 @@ void *wxThreadInternal::PthreadStart(void *ptr)
|
||||
wxThread *thread = (wxThread *)ptr;
|
||||
|
||||
/* Call the main entry */
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
|
||||
pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS, (int*) NULL );
|
||||
void* status = thread->Entry();
|
||||
|
||||
thread->Exit(status);
|
||||
@ -246,9 +255,9 @@ int wxThread::GetPriority() const
|
||||
void wxThread::DeferDestroy(bool on)
|
||||
{
|
||||
if (on)
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, (int*) NULL);
|
||||
else
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, (int*) NULL);
|
||||
}
|
||||
|
||||
wxThreadError wxThread::Destroy()
|
||||
|
@ -15,6 +15,51 @@
|
||||
#include "wx/timer.h"
|
||||
|
||||
#include "gtk/gtk.h"
|
||||
/*
|
||||
#include "glib.h"
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
static GTimer *g_timer = (GTimer*) NULL;
|
||||
|
||||
void wxStartTimer()
|
||||
{
|
||||
if (g_timer)
|
||||
{
|
||||
g_timer_rest( g_timer );
|
||||
}
|
||||
else
|
||||
{
|
||||
g_timer = g_timer_new();
|
||||
g_timer_start( g_timer );
|
||||
}
|
||||
}
|
||||
|
||||
long wxGetElapsedTime( bool resetTimer )
|
||||
{
|
||||
gulong res = 0;
|
||||
if (g_timer)
|
||||
{
|
||||
g_timer_elapsed( g_timer, &res );
|
||||
if (resetTimer) g_timer_reset( g_timer );
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
bool wxGetLocalTime( long *timeZone, int *dstObserved )
|
||||
{
|
||||
}
|
||||
|
||||
long wxGetCurrentTime()
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxTimer
|
||||
|
@ -30,13 +30,10 @@
|
||||
#include <netdb.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xresource.h>
|
||||
|
||||
#include "glib.h"
|
||||
#include "gdk/gdk.h"
|
||||
#include "gtk/gtk.h"
|
||||
#include "gtk/gtkfeatures.h"
|
||||
#include "gdk/gdkx.h"
|
||||
|
||||
#ifdef __SVR4__
|
||||
@ -79,12 +76,7 @@ void wxDisplaySize( int *width, int *height )
|
||||
|
||||
void wxGetMousePosition( int* x, int* y )
|
||||
{
|
||||
Window dumw;
|
||||
int dumi;
|
||||
unsigned int dumu;
|
||||
|
||||
XQueryPointer( GDK_DISPLAY(),GDK_ROOT_WINDOW(),
|
||||
&dumw,&dumw,x,y,&dumi,&dumi,&dumu );
|
||||
gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL );
|
||||
}
|
||||
|
||||
bool wxColourDisplay(void)
|
||||
@ -97,6 +89,14 @@ int wxDisplayDepth(void)
|
||||
return gdk_window_get_visual( (GdkWindow*) &gdk_root_parent )->depth;
|
||||
}
|
||||
|
||||
int wxGetOsVersion(int *majorVsn, int *minorVsn)
|
||||
{
|
||||
if (majorVsn) *majorVsn = GTK_MAJOR_VERSION;
|
||||
if (minorVsn) *minorVsn = GTK_MINOR_VERSION;
|
||||
|
||||
return wxGTK;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// user and home routines
|
||||
//------------------------------------------------------------------------
|
||||
@ -124,7 +124,8 @@ char *wxGetUserHome( const wxString &user )
|
||||
{
|
||||
who = getpwnam(ptr);
|
||||
}
|
||||
// We now make sure the the user exists!
|
||||
|
||||
/* We now make sure the the user exists! */
|
||||
if (who == NULL)
|
||||
{
|
||||
who = getpwuid(getuid());
|
||||
@ -250,37 +251,37 @@ bool wxDirExists( const wxString& dir )
|
||||
|
||||
struct wxEndProcessData
|
||||
{
|
||||
gint pid, tag;
|
||||
wxProcess *process;
|
||||
gint pid, tag;
|
||||
wxProcess *process;
|
||||
};
|
||||
|
||||
static void GTK_EndProcessDetector(gpointer data, gint source,
|
||||
GdkInputCondition WXUNUSED(condition) )
|
||||
{
|
||||
wxEndProcessData *proc_data = (wxEndProcessData *)data;
|
||||
int pid;
|
||||
wxEndProcessData *proc_data = (wxEndProcessData *)data;
|
||||
int pid;
|
||||
|
||||
pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid);
|
||||
pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid);
|
||||
|
||||
/* wait4 is not part of any standard, use at own risk
|
||||
* not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-)
|
||||
* --- offer@sgi.com */
|
||||
/* wait4 is not part of any standard, use at own risk
|
||||
* not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-)
|
||||
* --- offer@sgi.com */
|
||||
#if !defined(__sgi)
|
||||
wait4(proc_data->pid, NULL, 0, NULL);
|
||||
wait4(proc_data->pid, (int*) NULL, 0, (rusage *) NULL);
|
||||
#else
|
||||
wait3((int *) NULL, 0, (rusage *) NULL);
|
||||
wait3((int *) NULL, 0, (rusage *) NULL);
|
||||
#endif
|
||||
|
||||
close(source);
|
||||
gdk_input_remove(proc_data->tag);
|
||||
close(source);
|
||||
gdk_input_remove(proc_data->tag);
|
||||
|
||||
if (proc_data->process)
|
||||
proc_data->process->OnTerminate(proc_data->pid);
|
||||
if (proc_data->process)
|
||||
proc_data->process->OnTerminate(proc_data->pid);
|
||||
|
||||
if (proc_data->pid > 0)
|
||||
delete proc_data;
|
||||
else
|
||||
proc_data->pid = 0;
|
||||
if (proc_data->pid > 0)
|
||||
delete proc_data;
|
||||
else
|
||||
proc_data->pid = 0;
|
||||
}
|
||||
|
||||
long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
@ -291,8 +292,9 @@ long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
wxCHECK_MSG( *argv, 0, "can't exec empty command" );
|
||||
|
||||
/* Create pipes */
|
||||
if (pipe(end_proc_detect) == -1) {
|
||||
wxLogSysError(_("Pipe creation failed"));
|
||||
if (pipe(end_proc_detect) == -1)
|
||||
{
|
||||
wxLogSysError( "Pipe creation failed" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -302,12 +304,13 @@ long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
#else
|
||||
pid_t pid = fork();
|
||||
#endif
|
||||
if (pid == -1) {
|
||||
// error
|
||||
wxLogSysError(_("Fork failed"));
|
||||
if (pid == -1)
|
||||
{
|
||||
wxLogSysError( "Fork failed" );
|
||||
return 0;
|
||||
}
|
||||
else if (pid == 0) {
|
||||
else if (pid == 0)
|
||||
{
|
||||
// we're in child
|
||||
close(end_proc_detect[0]); // close reading side
|
||||
// These three lines close the open file descriptors to
|
||||
@ -325,20 +328,23 @@ long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
execvp (*argv, argv);
|
||||
#endif
|
||||
// there is no return after successful exec()
|
||||
wxLogSysError(_("Can't execute '%s'"), *argv);
|
||||
wxLogSysError( "Can't execute '%s'", *argv);
|
||||
|
||||
_exit(-1);
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
// we're in parent
|
||||
close(end_proc_detect[1]); // close writing side
|
||||
data->tag = gdk_input_add(end_proc_detect[0], GDK_INPUT_READ,
|
||||
GTK_EndProcessDetector, (gpointer)data);
|
||||
data->pid = pid;
|
||||
if (!sync) {
|
||||
if (!sync)
|
||||
{
|
||||
data->process = process;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
data->process = (wxProcess *) NULL;
|
||||
data->pid = -(data->pid);
|
||||
|
||||
|
@ -255,10 +255,14 @@ bool wxGetResource(const wxString& section, const wxString& entry, char **value,
|
||||
// home directory instead of current directory -- JACS
|
||||
(void)GetIniFile(buffer, file);
|
||||
|
||||
wxNode *node = wxTheResourceCache->Find(buffer);
|
||||
wxNode *node = (wxNode*) NULL; /* suppress egcs warning */
|
||||
node = wxTheResourceCache->Find(buffer);
|
||||
if (node)
|
||||
{
|
||||
database = (XrmDatabase)node->Data();
|
||||
else {
|
||||
}
|
||||
else
|
||||
{
|
||||
database = XrmGetFileDatabase(buffer);
|
||||
wxLogTrace(wxTraceResAlloc, "Get: Number = %d", wxTheResourceCache->Number());
|
||||
wxTheResourceCache->Append(buffer, (wxObject *)database);
|
||||
|
121
src/gtk/wave.cpp
121
src/gtk/wave.cpp
@ -33,6 +33,9 @@
|
||||
#include "wx/file.h"
|
||||
#include "wx/wave.h"
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// wxWave
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
wxWave::wxWave()
|
||||
: m_waveLength(0), m_isResource(FALSE), m_waveData(NULL)
|
||||
@ -42,101 +45,106 @@ wxWave::wxWave()
|
||||
wxWave::wxWave(const wxString& sFileName, bool isResource)
|
||||
: m_waveLength(0), m_isResource(isResource), m_waveData(NULL)
|
||||
{
|
||||
Create(sFileName, isResource);
|
||||
Create(sFileName, isResource);
|
||||
}
|
||||
|
||||
wxWave::wxWave(int size, const byte* data)
|
||||
: m_waveLength(0), m_isResource(FALSE), m_waveData(NULL)
|
||||
{
|
||||
Create(size, data);
|
||||
Create(size, data);
|
||||
}
|
||||
|
||||
wxWave::~wxWave()
|
||||
{
|
||||
Free();
|
||||
Free();
|
||||
}
|
||||
|
||||
bool wxWave::Create(const wxString& fileName, bool isResource)
|
||||
{
|
||||
Free();
|
||||
Free();
|
||||
|
||||
if (isResource)
|
||||
{
|
||||
// todo
|
||||
if (isResource)
|
||||
{
|
||||
// todo
|
||||
return (m_waveData ? TRUE : FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_isResource = FALSE;
|
||||
|
||||
return (m_waveData ? TRUE : FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_isResource = FALSE;
|
||||
wxFile fileWave;
|
||||
if (!fileWave.Open(fileName, wxFile::read))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
wxFile fileWave;
|
||||
if (!fileWave.Open(fileName, wxFile::read))
|
||||
return FALSE;
|
||||
|
||||
m_waveLength = (int) fileWave.Length();
|
||||
m_waveLength = (int) fileWave.Length();
|
||||
|
||||
m_waveData = new byte[m_waveLength];
|
||||
if (!m_waveData)
|
||||
return FALSE;
|
||||
m_waveData = new byte[m_waveLength];
|
||||
if (!m_waveData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fileWave.Read(m_waveData, m_waveLength);
|
||||
fileWave.Read(m_waveData, m_waveLength);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool wxWave::Create(int size, const byte* data)
|
||||
{
|
||||
Free();
|
||||
m_isResource = FALSE;
|
||||
m_waveLength=size;
|
||||
m_waveData = new byte[size];
|
||||
if (!m_waveData)
|
||||
return FALSE;
|
||||
Free();
|
||||
m_isResource = FALSE;
|
||||
m_waveLength=size;
|
||||
m_waveData = new byte[size];
|
||||
if (!m_waveData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (int i=0; i<size; i++) m_waveData[i] = data[i];
|
||||
return TRUE;
|
||||
for (int i=0; i<size; i++) m_waveData[i] = data[i];
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxWave::Play(bool async, bool looped)
|
||||
{
|
||||
if (!IsOk())
|
||||
return FALSE;
|
||||
if (!IsOk()) return FALSE;
|
||||
|
||||
int dev=OpenDSP();
|
||||
if(dev<0)
|
||||
return FALSE;
|
||||
int dev = OpenDSP();
|
||||
|
||||
if (dev<0) return FALSE;
|
||||
|
||||
ioctl(dev,SNDCTL_DSP_SYNC,0);
|
||||
ioctl(dev,SNDCTL_DSP_SYNC,0);
|
||||
|
||||
bool play=TRUE;
|
||||
int i,l=0;
|
||||
do
|
||||
bool play=TRUE;
|
||||
int i,l=0;
|
||||
do
|
||||
{
|
||||
i= (int)((l+m_DSPblkSize) < m_sizeData ? m_DSPblkSize : (m_sizeData-l));
|
||||
if ( write(dev,&m_data[l],i) != i )
|
||||
play=FALSE;
|
||||
l +=i;
|
||||
}while(play == TRUE && l<m_sizeData);
|
||||
i= (int)((l+m_DSPblkSize) < m_sizeData ? m_DSPblkSize : (m_sizeData-l));
|
||||
if ( write(dev,&m_data[l],i) != i )
|
||||
{
|
||||
play=FALSE;
|
||||
}
|
||||
l +=i;
|
||||
} while (play == TRUE && l<m_sizeData);
|
||||
|
||||
|
||||
close(dev);
|
||||
return TRUE;
|
||||
|
||||
close(dev);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxWave::Free()
|
||||
{
|
||||
if (m_waveData)
|
||||
if (m_waveData)
|
||||
{
|
||||
delete[] m_waveData;
|
||||
m_waveData = NULL;
|
||||
m_waveLength = 0;
|
||||
return TRUE;
|
||||
delete[] m_waveData;
|
||||
m_waveData = NULL;
|
||||
m_waveLength = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
@ -148,8 +156,7 @@ typedef struct
|
||||
unsigned long ulAvgBytesPerSec;
|
||||
unsigned short uiBlockAlign;
|
||||
unsigned short uiBitsPerSample;
|
||||
}WAVEFORMAT;
|
||||
|
||||
} WAVEFORMAT;
|
||||
|
||||
#define MONO 1 // and stereo is 2 by wav format
|
||||
#define WAVE_FORMAT_PCM 1
|
||||
|
@ -1106,6 +1106,15 @@ static void wxInsertChildInWindow( wxWindow* parent, wxWindow* child )
|
||||
child->m_height );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
wxWindow* wxGetActiveWindow()
|
||||
{
|
||||
return g_focusWindow;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxWindow
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -15,6 +15,13 @@
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
#ifdef NULL
|
||||
#undef NULL
|
||||
#endif
|
||||
#define NULL ((void*)0L)
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxAcceleratorTable
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -44,6 +44,9 @@ wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL;
|
||||
extern wxList wxPendingDelete;
|
||||
extern wxResourceCache *wxTheResourceCache;
|
||||
|
||||
GdkVisual *wxVisualSetByExternal = (GdkVisual*) NULL;
|
||||
GdkColormap *wxColormapSetByExternal = (GdkColormap*) NULL;
|
||||
|
||||
unsigned char g_palette[64*3] =
|
||||
{
|
||||
0x0, 0x0, 0x0,
|
||||
@ -169,14 +172,60 @@ wxApp::~wxApp(void)
|
||||
gtk_idle_remove( m_idleTag );
|
||||
}
|
||||
|
||||
bool wxApp::OnInit(void)
|
||||
bool wxApp::InitVisual()
|
||||
{
|
||||
if (wxVisualSetByExternal)
|
||||
{
|
||||
/* this happens in the wxModule code of the OpenGl canvas.
|
||||
it chooses the best display for OpenGl and stores it
|
||||
in wxDisplaySetByExternal. we then have to make it the
|
||||
default for the system */
|
||||
|
||||
gtk_widget_set_default_visual( wxVisualSetByExternal );
|
||||
}
|
||||
|
||||
if (wxColormapSetByExternal)
|
||||
{
|
||||
/* OpenGl also gives us a colormap */
|
||||
|
||||
gtk_widget_set_default_colormap( wxColormapSetByExternal );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* this initiates the standard palette as defined by GdkImlib
|
||||
in the GNOME libraries. it ensures that all GNOME applications
|
||||
use the same 64 colormap entries on 8-bit displays so you
|
||||
can use several rather graphics-heavy applications at the
|
||||
same time */
|
||||
|
||||
GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE );
|
||||
|
||||
for (int i = 0; i < 64; i++)
|
||||
{
|
||||
GdkColor col;
|
||||
col.red = g_palette[i*3 + 0] << 8;
|
||||
col.green = g_palette[i*3 + 1] << 8;
|
||||
col.blue = g_palette[i*3 + 2] << 8;
|
||||
col.pixel = 0;
|
||||
|
||||
gdk_color_alloc( cmap, &col );
|
||||
}
|
||||
|
||||
gtk_widget_set_default_colormap( cmap );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxApp::OnInitGui(void)
|
||||
{
|
||||
m_idleTag = gtk_idle_add( wxapp_idle_callback, NULL );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxApp::OnInit(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -320,12 +369,6 @@ void wxApp::SetTopWindow( wxWindow *win )
|
||||
|
||||
void wxApp::CommonInit(void)
|
||||
{
|
||||
|
||||
/*
|
||||
#if wxUSE_RESOURCES
|
||||
(void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion);
|
||||
#endif
|
||||
*/
|
||||
wxSystemSettings::Init();
|
||||
|
||||
wxTheFontNameDirectory = new wxFontNameDirectory;
|
||||
@ -350,14 +393,19 @@ void wxApp::CommonInit(void)
|
||||
|
||||
void wxApp::CommonCleanUp(void)
|
||||
{
|
||||
wxDELETE(wxTheColourDatabase);
|
||||
wxDELETE(wxTheFontNameDirectory);
|
||||
if (wxTheColourDatabase) delete wxTheColourDatabase;
|
||||
wxTheColourDatabase = (wxColourDatabase*) NULL;
|
||||
|
||||
if (wxTheFontNameDirectory) delete wxTheFontNameDirectory;
|
||||
wxTheFontNameDirectory = (wxFontNameDirectory*) NULL;
|
||||
|
||||
wxDeleteStockObjects();
|
||||
|
||||
#if wxUSE_WX_RESOURCES
|
||||
wxFlushResources();
|
||||
|
||||
wxDELETE(wxTheResourceCache);
|
||||
if (wxTheResourceCache) delete wxTheResourceCache;
|
||||
wxTheResourceCache = (wxResourceCache*) NULL;
|
||||
|
||||
wxCleanUpResourceSystem();
|
||||
#endif
|
||||
@ -419,29 +467,14 @@ int wxEntry( int argc, char *argv[] )
|
||||
|
||||
gtk_init( &argc, &argv );
|
||||
|
||||
GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE );
|
||||
|
||||
for (int i = 0; i < 64; i++)
|
||||
{
|
||||
GdkColor col;
|
||||
col.red = g_palette[i*3 + 0] << 8;
|
||||
col.green = g_palette[i*3 + 1] << 8;
|
||||
col.blue = g_palette[i*3 + 2] << 8;
|
||||
col.pixel = 0;
|
||||
|
||||
gdk_color_alloc( cmap, &col );
|
||||
}
|
||||
|
||||
gtk_widget_push_colormap( cmap );
|
||||
|
||||
gtk_widget_set_default_colormap( cmap );
|
||||
wxModule::RegisterModules();
|
||||
if (!wxModule::InitializeModules()) return FALSE;
|
||||
|
||||
if (!wxTheApp->InitVisual()) return 0;
|
||||
|
||||
wxApp::CommonInit();
|
||||
|
||||
wxModule::RegisterModules();
|
||||
if (!wxModule::InitializeModules()) return FALSE;
|
||||
|
||||
wxTheApp->OnInitGui();
|
||||
if (!wxTheApp->OnInitGui()) return 0;
|
||||
|
||||
// Here frames insert themselves automatically
|
||||
// into wxTopLevelWindows by getting created
|
||||
@ -481,11 +514,9 @@ int wxEntry( int argc, char *argv[] )
|
||||
|
||||
#endif
|
||||
|
||||
wxLog *oldLog = wxLog::SetActiveTarget( NULL );
|
||||
wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL );
|
||||
if (oldLog) delete oldLog;
|
||||
|
||||
return retValue;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
@ -27,14 +27,15 @@ wxCheckListBox::wxCheckListBox() :
|
||||
{
|
||||
m_hasCheckBoxes = TRUE;
|
||||
}
|
||||
|
||||
wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
int nStrings = 0,
|
||||
const wxString choices[] = NULL,
|
||||
long style = 0,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxListBoxNameStr)
|
||||
const wxPoint& pos,
|
||||
const wxSize& size,
|
||||
int nStrings,
|
||||
const wxString choices[],
|
||||
long style,
|
||||
const wxValidator& validator,
|
||||
const wxString& name )
|
||||
{
|
||||
m_hasCheckBoxes = TRUE;
|
||||
wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name );
|
||||
|
@ -255,7 +255,7 @@ void wxComboBox::Delete( int n )
|
||||
return;
|
||||
}
|
||||
|
||||
GList *list = g_list_append( NULL, child->data );
|
||||
GList *list = g_list_append( (GList*) NULL, child->data );
|
||||
gtk_list_remove_items( listbox, list );
|
||||
g_list_free( list );
|
||||
|
||||
|
@ -14,7 +14,6 @@
|
||||
#pragma interface
|
||||
#endif
|
||||
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_POSTSCRIPT
|
||||
|
@ -733,8 +733,8 @@ wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
|
||||
|
||||
if (!m_data) return (wxDragResult) wxDragNone;
|
||||
|
||||
static GtkWidget *drag_icon = NULL;
|
||||
static GtkWidget *drop_icon = NULL;
|
||||
static GtkWidget *drag_icon = (GtkWidget*) NULL;
|
||||
static GtkWidget *drop_icon = (GtkWidget*) NULL;
|
||||
|
||||
GdkPoint hotspot_1 = {0,-5 };
|
||||
|
||||
@ -872,7 +872,7 @@ void wxDropSource::UnregisterWindow(void)
|
||||
/*
|
||||
* Shaped Windows
|
||||
*/
|
||||
static GdkWindow *root_win = NULL;
|
||||
static GdkWindow *root_win = (GdkWindow*) NULL;
|
||||
|
||||
typedef struct _cursoroffset {gint x,y;} CursorOffset;
|
||||
|
||||
@ -895,7 +895,8 @@ shape_pressed (GtkWidget *widget, GdkEventButton *event)
|
||||
(GDK_BUTTON_RELEASE_MASK |
|
||||
GDK_BUTTON_MOTION_MASK |
|
||||
GDK_POINTER_MOTION_HINT_MASK),
|
||||
NULL, NULL, 0);
|
||||
(GdkWindow*)NULL,
|
||||
(GdkCursor*) NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -423,7 +423,7 @@ void wxListBox::Delete( int n )
|
||||
|
||||
wxCHECK_RET( child, "wrong listbox index" );
|
||||
|
||||
GList *list = g_list_append( NULL, child->data );
|
||||
GList *list = g_list_append( (GList*) NULL, child->data );
|
||||
gtk_list_remove_items( m_list, list );
|
||||
g_list_free( list );
|
||||
|
||||
|
@ -155,14 +155,38 @@ bool wxMenuBar::Enabled( int id ) const
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
wxString wxMenuBar::GetLabel( int id ) const
|
||||
{
|
||||
wxMenuItem* item = FindMenuItemById( id );
|
||||
if (item) return item->GetText();
|
||||
return "";
|
||||
}
|
||||
|
||||
void wxMenuBar::SetLabel( int id, const wxString &label )
|
||||
{
|
||||
wxMenuItem* item = FindMenuItemById( id );
|
||||
if (item) return item->SetText( label );
|
||||
}
|
||||
|
||||
void wxMenuBar::EnableTop( int WXUNUSED(pos), bool WXUNUSED(flag) )
|
||||
{
|
||||
}
|
||||
|
||||
wxString wxMenuBar::GetLabelTop( int WXUNUSED(pos) ) const
|
||||
{
|
||||
return "menu";
|
||||
}
|
||||
|
||||
void wxMenuBar::SetLabelTop( int WXUNUSED(pos), const wxString& WXUNUSED(label) )
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "activate"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu )
|
||||
{
|
||||
wxYield();
|
||||
|
||||
int id = menu->FindMenuIdByMenuItem(widget);
|
||||
|
||||
/* should find it for normal (not popup) menu */
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "gtk/gtk.h"
|
||||
#include "wx/gtk/win_gtk.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "clicked"
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -429,7 +429,7 @@ bool wxNotebook::SetPageImage( int page, int image )
|
||||
if (image == -1 && nb_page->m_image == -1)
|
||||
return TRUE; /* Case 1): Nothing to do. */
|
||||
|
||||
GtkWidget *pixmapwid = NULL;
|
||||
GtkWidget *pixmapwid = (GtkWidget*) NULL;
|
||||
|
||||
if (nb_page->m_image != -1)
|
||||
{
|
||||
|
@ -7,7 +7,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "radiobox.h"
|
||||
#endif
|
||||
@ -148,8 +147,8 @@ void wxRadioBox::OnSize( wxSizeEvent &event )
|
||||
|
||||
wxSize wxRadioBox::LayoutItems()
|
||||
{
|
||||
int x = m_x+7;
|
||||
int y = m_y+15;
|
||||
int x = 7;
|
||||
int y = 15;
|
||||
|
||||
int num_per_major = (m_boxes.GetCount() - 1) / m_majorDim +1;
|
||||
|
||||
@ -160,7 +159,7 @@ wxSize wxRadioBox::LayoutItems()
|
||||
|
||||
for (int j = 0; j < m_majorDim; j++)
|
||||
{
|
||||
y = m_y+15;
|
||||
y = 15;
|
||||
|
||||
int max_len = 0;
|
||||
wxNode *node = m_boxes.Nth( j*num_per_major );
|
||||
@ -169,10 +168,10 @@ wxSize wxRadioBox::LayoutItems()
|
||||
GtkWidget *button = GTK_WIDGET( node->Data() );
|
||||
GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child );
|
||||
GdkFont *font = m_widget->style->font;
|
||||
int len = 27+gdk_string_measure( font, label->label );
|
||||
int len = 22+gdk_string_measure( font, label->label );
|
||||
if (len > max_len) max_len = len;
|
||||
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y );
|
||||
y += 22;
|
||||
|
||||
node = node->Next();
|
||||
@ -197,8 +196,8 @@ wxSize wxRadioBox::LayoutItems()
|
||||
x += max_len + 2;
|
||||
}
|
||||
|
||||
res.y -= 3;
|
||||
res.x = x-2;
|
||||
res.x = x+4;
|
||||
res.y += 9;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -211,7 +210,7 @@ wxSize wxRadioBox::LayoutItems()
|
||||
GtkLabel *label = GTK_LABEL( button->child );
|
||||
|
||||
GdkFont *font = m_widget->style->font;
|
||||
int len = 27+gdk_string_measure( font, label->label );
|
||||
int len = 22+gdk_string_measure( font, label->label );
|
||||
if (len > max) max = len;
|
||||
|
||||
node = node->Next();
|
||||
@ -222,13 +221,13 @@ wxSize wxRadioBox::LayoutItems()
|
||||
{
|
||||
GtkWidget *button = GTK_WIDGET( node->Data() );
|
||||
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
|
||||
gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y );
|
||||
x += max;
|
||||
gtk_widget_set_usize( button, max, 20 );
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
res.x = x-2;
|
||||
res.x = x+4;
|
||||
res.y = 42;
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "region.h"
|
||||
#endif
|
||||
@ -17,6 +16,13 @@
|
||||
#include "gdk/gdk.h"
|
||||
#include "gtk/gtk.h"
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
#ifdef NULL
|
||||
#undef NULL
|
||||
#endif
|
||||
#define NULL ((void*)0L)
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxRegion
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -36,20 +42,20 @@ class wxRegionRefData: public wxObjectRefData
|
||||
|
||||
wxRegionRefData::wxRegionRefData(void)
|
||||
{
|
||||
m_region = (GdkRegion *) NULL;
|
||||
m_region = (GdkRegion *) NULL;
|
||||
}
|
||||
|
||||
wxRegionRefData::~wxRegionRefData(void)
|
||||
{
|
||||
if (m_region) gdk_region_destroy( m_region );
|
||||
if (m_region) gdk_region_destroy( m_region );
|
||||
|
||||
wxNode *node = m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
delete r;
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
delete r;
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -60,57 +66,57 @@ IMPLEMENT_DYNAMIC_CLASS(wxRegion,wxGDIObject);
|
||||
|
||||
wxRegion::wxRegion( long x, long y, long w, long h )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,w,h) );
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,w,h) );
|
||||
}
|
||||
|
||||
wxRegion::wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = topLeft.x;
|
||||
rect.y = topLeft.y;
|
||||
rect.width = bottomRight.x - rect.x;
|
||||
rect.height = bottomRight.y - rect.y;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(topLeft,bottomRight) );
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle rect;
|
||||
rect.x = topLeft.x;
|
||||
rect.y = topLeft.y;
|
||||
rect.width = bottomRight.x - rect.x;
|
||||
rect.height = bottomRight.y - rect.y;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect );
|
||||
gdk_region_destroy( reg );
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(topLeft,bottomRight) );
|
||||
}
|
||||
|
||||
wxRegion::wxRegion( const wxRect& rect )
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &g_rect );
|
||||
gdk_region_destroy( reg );
|
||||
m_refData = new wxRegionRefData();
|
||||
GdkRegion *reg = gdk_region_new();
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &g_rect );
|
||||
gdk_region_destroy( reg );
|
||||
|
||||
wxNode *node = M_REGIONDATA->m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = M_REGIONDATA->m_rects.First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
|
||||
wxRegion::wxRegion(void)
|
||||
{
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
}
|
||||
|
||||
wxRegion::~wxRegion(void)
|
||||
@ -119,241 +125,241 @@ wxRegion::~wxRegion(void)
|
||||
|
||||
bool wxRegion::operator == ( const wxRegion& region )
|
||||
{
|
||||
return m_refData == region.m_refData;
|
||||
return m_refData == region.m_refData;
|
||||
}
|
||||
|
||||
bool wxRegion::operator != ( const wxRegion& region )
|
||||
{
|
||||
return m_refData != region.m_refData;
|
||||
return m_refData != region.m_refData;
|
||||
}
|
||||
|
||||
void wxRegion::Clear(void)
|
||||
{
|
||||
UnRef();
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
UnRef();
|
||||
m_refData = new wxRegionRefData();
|
||||
M_REGIONDATA->m_region = gdk_region_new();
|
||||
}
|
||||
|
||||
bool wxRegion::Union( long x, long y, long width, long height )
|
||||
{
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) );
|
||||
return TRUE;
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = width;
|
||||
rect.height = height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Union( const wxRect& rect )
|
||||
{
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &g_rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(rect.x,rect.y,rect.width,rect.height) );
|
||||
return TRUE;
|
||||
GdkRectangle g_rect;
|
||||
g_rect.x = rect.x;
|
||||
g_rect.y = rect.y;
|
||||
g_rect.width = rect.width;
|
||||
g_rect.height = rect.height;
|
||||
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &g_rect );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(rect.x,rect.y,rect.width,rect.height) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Union( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Intersect( long x, long y, long width, long height )
|
||||
{
|
||||
wxRegion reg( x, y, width, height );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( x, y, width, height );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Intersect( const wxRect& rect )
|
||||
{
|
||||
wxRegion reg( rect );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( rect );
|
||||
Intersect( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Intersect( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Subtract( long x, long y, long width, long height )
|
||||
{
|
||||
wxRegion reg( x, y, width, height );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( x, y, width, height );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Subtract( const wxRect& rect )
|
||||
{
|
||||
wxRegion reg( rect );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( rect );
|
||||
Subtract( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Subtract( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Xor( long x, long y, long width, long height )
|
||||
{
|
||||
wxRegion reg( x, y, width, height );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( x, y, width, height );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Xor( const wxRect& rect )
|
||||
{
|
||||
wxRegion reg( rect );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
wxRegion reg( rect );
|
||||
Xor( reg );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxRegion::Xor( const wxRegion& region )
|
||||
{
|
||||
GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() );
|
||||
gdk_region_destroy( M_REGIONDATA->m_region );
|
||||
M_REGIONDATA->m_region = reg;
|
||||
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
wxNode *node = region.GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) );
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxRegion::GetBox( long& x, long& y, long&w, long &h ) const
|
||||
{
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = -1;
|
||||
h = -1;
|
||||
wxNode *node = GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
if (node == GetRectList()->First())
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = -1;
|
||||
h = -1;
|
||||
wxNode *node = GetRectList()->First();
|
||||
while (node)
|
||||
{
|
||||
x = r->x;
|
||||
y = r->y;
|
||||
w = r->width;
|
||||
h = r->height;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
if (node == GetRectList()->First())
|
||||
{
|
||||
x = r->x;
|
||||
y = r->y;
|
||||
w = r->width;
|
||||
h = r->height;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r->x < x)
|
||||
{
|
||||
x = r->x;
|
||||
w += x - r->x;
|
||||
}
|
||||
if (r->y < y)
|
||||
{
|
||||
y = r->y;
|
||||
h += y - r->y;
|
||||
}
|
||||
if (r->width+r->x > x+w)
|
||||
{
|
||||
w = r->x + r->width - x;
|
||||
}
|
||||
if (r->height+r->y > y+h)
|
||||
{
|
||||
h = r->y + r->height - y;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r->x < x)
|
||||
{
|
||||
x = r->x;
|
||||
w += x - r->x;
|
||||
}
|
||||
if (r->y < y)
|
||||
{
|
||||
y = r->y;
|
||||
h += y - r->y;
|
||||
}
|
||||
if (r->width+r->x > x+w)
|
||||
{
|
||||
w = r->x + r->width - x;
|
||||
}
|
||||
if (r->height+r->y > y+h)
|
||||
{
|
||||
h = r->y + r->height - y;
|
||||
}
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
}
|
||||
|
||||
wxRect wxRegion::GetBox(void) const
|
||||
{
|
||||
long x = 0;
|
||||
long y = 0;
|
||||
long w = -1;
|
||||
long h = -1;
|
||||
GetBox( x, y, w, h );
|
||||
return wxRect( x, y, w, h );
|
||||
long x = 0;
|
||||
long y = 0;
|
||||
long w = -1;
|
||||
long h = -1;
|
||||
GetBox( x, y, w, h );
|
||||
return wxRect( x, y, w, h );
|
||||
}
|
||||
|
||||
bool wxRegion::Empty(void) const
|
||||
{
|
||||
return gdk_region_empty( M_REGIONDATA->m_region );
|
||||
return gdk_region_empty( M_REGIONDATA->m_region );
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains( long x, long y ) const
|
||||
{
|
||||
if (gdk_region_point_in( M_REGIONDATA->m_region, x, y ))
|
||||
return wxInRegion;
|
||||
else
|
||||
return wxOutRegion;
|
||||
if (gdk_region_point_in( M_REGIONDATA->m_region, x, y ))
|
||||
return wxInRegion;
|
||||
else
|
||||
return wxOutRegion;
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains( long x, long y, long w, long h ) const
|
||||
{
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
GdkOverlapType res = gdk_region_rect_in( M_REGIONDATA->m_region, &rect );
|
||||
switch (res)
|
||||
{
|
||||
case GDK_OVERLAP_RECTANGLE_IN: return wxInRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_OUT: return wxOutRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_PART: return wxPartRegion;
|
||||
}
|
||||
return wxOutRegion;
|
||||
GdkRectangle rect;
|
||||
rect.x = x;
|
||||
rect.y = y;
|
||||
rect.width = w;
|
||||
rect.height = h;
|
||||
GdkOverlapType res = gdk_region_rect_in( M_REGIONDATA->m_region, &rect );
|
||||
switch (res)
|
||||
{
|
||||
case GDK_OVERLAP_RECTANGLE_IN: return wxInRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_OUT: return wxOutRegion;
|
||||
case GDK_OVERLAP_RECTANGLE_PART: return wxPartRegion;
|
||||
}
|
||||
return wxOutRegion;
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains(const wxPoint& pt) const
|
||||
{
|
||||
return Contains( pt.x, pt.y );
|
||||
return Contains( pt.x, pt.y );
|
||||
}
|
||||
|
||||
wxRegionContain wxRegion::Contains(const wxRect& rect) const
|
||||
{
|
||||
return Contains( rect.x, rect.y, rect.width, rect.height );
|
||||
return Contains( rect.x, rect.y, rect.width, rect.height );
|
||||
}
|
||||
|
||||
GdkRegion *wxRegion::GetRegion(void) const
|
||||
{
|
||||
return M_REGIONDATA->m_region;
|
||||
return M_REGIONDATA->m_region;
|
||||
}
|
||||
|
||||
wxList *wxRegion::GetRectList() const
|
||||
{
|
||||
return &(M_REGIONDATA->m_rects);
|
||||
return &(M_REGIONDATA->m_rects);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -364,71 +370,71 @@ IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator,wxObject);
|
||||
|
||||
wxRegionIterator::wxRegionIterator(void)
|
||||
{
|
||||
m_current = 0;
|
||||
m_current = 0;
|
||||
}
|
||||
|
||||
wxRegionIterator::wxRegionIterator( const wxRegion& region )
|
||||
{
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
}
|
||||
|
||||
void wxRegionIterator::Reset( const wxRegion& region )
|
||||
{
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
m_region = region;
|
||||
m_current = 0;
|
||||
}
|
||||
|
||||
wxRegionIterator::operator bool (void) const
|
||||
{
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
}
|
||||
|
||||
bool wxRegionIterator::HaveRects(void) const
|
||||
{
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
return m_current < m_region.GetRectList()->Number();
|
||||
}
|
||||
|
||||
void wxRegionIterator::operator ++ (void)
|
||||
{
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
}
|
||||
|
||||
void wxRegionIterator::operator ++ (int)
|
||||
{
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
if (m_current < m_region.GetRectList()->Number()) ++m_current;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetX(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->x;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->x;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetY(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->y;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->y;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetW(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->width;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->width;
|
||||
}
|
||||
|
||||
long wxRegionIterator::GetH(void) const
|
||||
{
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->height;
|
||||
wxNode *node = m_region.GetRectList()->Nth( m_current );
|
||||
if (!node) return 0;
|
||||
wxRect *r = (wxRect*)node->Data();
|
||||
return r->height;
|
||||
}
|
||||
|
||||
|
||||
|
@ -303,7 +303,7 @@ bool wxTextCtrl::LoadFile( const wxString &file )
|
||||
|
||||
Clear();
|
||||
|
||||
FILE *fp = NULL;
|
||||
FILE *fp = (FILE*) NULL;
|
||||
struct stat statb;
|
||||
|
||||
if ((stat ((char*) (const char*) file, &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG ||
|
||||
@ -358,7 +358,7 @@ bool wxTextCtrl::SaveFile( const wxString &file )
|
||||
}
|
||||
else
|
||||
{
|
||||
char *text = NULL;
|
||||
char *text = (char*) NULL;
|
||||
gint len = 0;
|
||||
|
||||
if (m_windowStyle & wxTE_MULTILINE)
|
||||
|
@ -64,7 +64,7 @@ public:
|
||||
wxMutex::wxMutex()
|
||||
{
|
||||
p_internal = new wxMutexInternal;
|
||||
pthread_mutex_init(&(p_internal->p_mutex), NULL);
|
||||
pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL );
|
||||
m_locked = 0;
|
||||
}
|
||||
|
||||
@ -73,46 +73,54 @@ wxMutex::~wxMutex()
|
||||
if (m_locked > 0)
|
||||
wxLogDebug( "wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked );
|
||||
|
||||
pthread_mutex_destroy(&(p_internal->p_mutex));
|
||||
pthread_mutex_destroy( &(p_internal->p_mutex) );
|
||||
delete p_internal;
|
||||
}
|
||||
|
||||
wxMutexError wxMutex::Lock()
|
||||
{
|
||||
int err;
|
||||
|
||||
err = pthread_mutex_lock(&(p_internal->p_mutex));
|
||||
int err = pthread_mutex_lock( &(p_internal->p_mutex) );
|
||||
if (err == EDEADLK)
|
||||
{
|
||||
return wxMUTEX_DEAD_LOCK;
|
||||
}
|
||||
|
||||
m_locked++;
|
||||
|
||||
return wxMUTEX_NO_ERROR;
|
||||
}
|
||||
|
||||
wxMutexError wxMutex::TryLock()
|
||||
{
|
||||
int err;
|
||||
|
||||
if (m_locked)
|
||||
{
|
||||
return wxMUTEX_BUSY;
|
||||
}
|
||||
|
||||
err = pthread_mutex_trylock(&(p_internal->p_mutex));
|
||||
int err = pthread_mutex_trylock( &(p_internal->p_mutex) );
|
||||
switch (err)
|
||||
{
|
||||
case EBUSY: return wxMUTEX_BUSY;
|
||||
}
|
||||
|
||||
m_locked++;
|
||||
|
||||
return wxMUTEX_NO_ERROR;
|
||||
}
|
||||
|
||||
wxMutexError wxMutex::Unlock()
|
||||
{
|
||||
if (m_locked > 0)
|
||||
{
|
||||
m_locked--;
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxMUTEX_UNLOCKED;
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&(p_internal->p_mutex));
|
||||
pthread_mutex_unlock( &(p_internal->p_mutex) );
|
||||
|
||||
return wxMUTEX_NO_ERROR;
|
||||
}
|
||||
|
||||
@ -129,37 +137,38 @@ public:
|
||||
wxCondition::wxCondition()
|
||||
{
|
||||
p_internal = new wxConditionInternal;
|
||||
pthread_cond_init(&(p_internal->p_condition), NULL);
|
||||
pthread_cond_init( &(p_internal->p_condition), (const pthread_condattr_t *) NULL );
|
||||
}
|
||||
|
||||
wxCondition::~wxCondition()
|
||||
{
|
||||
pthread_cond_destroy(&(p_internal->p_condition));
|
||||
pthread_cond_destroy( &(p_internal->p_condition) );
|
||||
|
||||
delete p_internal;
|
||||
}
|
||||
|
||||
void wxCondition::Wait(wxMutex& mutex)
|
||||
{
|
||||
pthread_cond_wait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex));
|
||||
pthread_cond_wait( &(p_internal->p_condition), &(mutex.p_internal->p_mutex) );
|
||||
}
|
||||
|
||||
bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec)
|
||||
{
|
||||
struct timespec tspec;
|
||||
|
||||
tspec.tv_sec = time(NULL)+sec;
|
||||
tspec.tv_sec = time(0L)+sec;
|
||||
tspec.tv_nsec = nsec;
|
||||
return (pthread_cond_timedwait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex), &tspec) != ETIMEDOUT);
|
||||
}
|
||||
|
||||
void wxCondition::Signal()
|
||||
{
|
||||
pthread_cond_signal(&(p_internal->p_condition));
|
||||
pthread_cond_signal( &(p_internal->p_condition) );
|
||||
}
|
||||
|
||||
void wxCondition::Broadcast()
|
||||
{
|
||||
pthread_cond_broadcast(&(p_internal->p_condition));
|
||||
pthread_cond_broadcast( &(p_internal->p_condition) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
@ -183,7 +192,7 @@ void *wxThreadInternal::PthreadStart(void *ptr)
|
||||
wxThread *thread = (wxThread *)ptr;
|
||||
|
||||
/* Call the main entry */
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
|
||||
pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS, (int*) NULL );
|
||||
void* status = thread->Entry();
|
||||
|
||||
thread->Exit(status);
|
||||
@ -246,9 +255,9 @@ int wxThread::GetPriority() const
|
||||
void wxThread::DeferDestroy(bool on)
|
||||
{
|
||||
if (on)
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, (int*) NULL);
|
||||
else
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
|
||||
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, (int*) NULL);
|
||||
}
|
||||
|
||||
wxThreadError wxThread::Destroy()
|
||||
|
@ -15,6 +15,51 @@
|
||||
#include "wx/timer.h"
|
||||
|
||||
#include "gtk/gtk.h"
|
||||
/*
|
||||
#include "glib.h"
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/*
|
||||
static GTimer *g_timer = (GTimer*) NULL;
|
||||
|
||||
void wxStartTimer()
|
||||
{
|
||||
if (g_timer)
|
||||
{
|
||||
g_timer_rest( g_timer );
|
||||
}
|
||||
else
|
||||
{
|
||||
g_timer = g_timer_new();
|
||||
g_timer_start( g_timer );
|
||||
}
|
||||
}
|
||||
|
||||
long wxGetElapsedTime( bool resetTimer )
|
||||
{
|
||||
gulong res = 0;
|
||||
if (g_timer)
|
||||
{
|
||||
g_timer_elapsed( g_timer, &res );
|
||||
if (resetTimer) g_timer_reset( g_timer );
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
bool wxGetLocalTime( long *timeZone, int *dstObserved )
|
||||
{
|
||||
}
|
||||
|
||||
long wxGetCurrentTime()
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxTimer
|
||||
|
@ -30,13 +30,10 @@
|
||||
#include <netdb.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xresource.h>
|
||||
|
||||
#include "glib.h"
|
||||
#include "gdk/gdk.h"
|
||||
#include "gtk/gtk.h"
|
||||
#include "gtk/gtkfeatures.h"
|
||||
#include "gdk/gdkx.h"
|
||||
|
||||
#ifdef __SVR4__
|
||||
@ -79,12 +76,7 @@ void wxDisplaySize( int *width, int *height )
|
||||
|
||||
void wxGetMousePosition( int* x, int* y )
|
||||
{
|
||||
Window dumw;
|
||||
int dumi;
|
||||
unsigned int dumu;
|
||||
|
||||
XQueryPointer( GDK_DISPLAY(),GDK_ROOT_WINDOW(),
|
||||
&dumw,&dumw,x,y,&dumi,&dumi,&dumu );
|
||||
gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL );
|
||||
}
|
||||
|
||||
bool wxColourDisplay(void)
|
||||
@ -97,6 +89,14 @@ int wxDisplayDepth(void)
|
||||
return gdk_window_get_visual( (GdkWindow*) &gdk_root_parent )->depth;
|
||||
}
|
||||
|
||||
int wxGetOsVersion(int *majorVsn, int *minorVsn)
|
||||
{
|
||||
if (majorVsn) *majorVsn = GTK_MAJOR_VERSION;
|
||||
if (minorVsn) *minorVsn = GTK_MINOR_VERSION;
|
||||
|
||||
return wxGTK;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// user and home routines
|
||||
//------------------------------------------------------------------------
|
||||
@ -124,7 +124,8 @@ char *wxGetUserHome( const wxString &user )
|
||||
{
|
||||
who = getpwnam(ptr);
|
||||
}
|
||||
// We now make sure the the user exists!
|
||||
|
||||
/* We now make sure the the user exists! */
|
||||
if (who == NULL)
|
||||
{
|
||||
who = getpwuid(getuid());
|
||||
@ -250,37 +251,37 @@ bool wxDirExists( const wxString& dir )
|
||||
|
||||
struct wxEndProcessData
|
||||
{
|
||||
gint pid, tag;
|
||||
wxProcess *process;
|
||||
gint pid, tag;
|
||||
wxProcess *process;
|
||||
};
|
||||
|
||||
static void GTK_EndProcessDetector(gpointer data, gint source,
|
||||
GdkInputCondition WXUNUSED(condition) )
|
||||
{
|
||||
wxEndProcessData *proc_data = (wxEndProcessData *)data;
|
||||
int pid;
|
||||
wxEndProcessData *proc_data = (wxEndProcessData *)data;
|
||||
int pid;
|
||||
|
||||
pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid);
|
||||
pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid);
|
||||
|
||||
/* wait4 is not part of any standard, use at own risk
|
||||
* not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-)
|
||||
* --- offer@sgi.com */
|
||||
/* wait4 is not part of any standard, use at own risk
|
||||
* not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-)
|
||||
* --- offer@sgi.com */
|
||||
#if !defined(__sgi)
|
||||
wait4(proc_data->pid, NULL, 0, NULL);
|
||||
wait4(proc_data->pid, (int*) NULL, 0, (rusage *) NULL);
|
||||
#else
|
||||
wait3((int *) NULL, 0, (rusage *) NULL);
|
||||
wait3((int *) NULL, 0, (rusage *) NULL);
|
||||
#endif
|
||||
|
||||
close(source);
|
||||
gdk_input_remove(proc_data->tag);
|
||||
close(source);
|
||||
gdk_input_remove(proc_data->tag);
|
||||
|
||||
if (proc_data->process)
|
||||
proc_data->process->OnTerminate(proc_data->pid);
|
||||
if (proc_data->process)
|
||||
proc_data->process->OnTerminate(proc_data->pid);
|
||||
|
||||
if (proc_data->pid > 0)
|
||||
delete proc_data;
|
||||
else
|
||||
proc_data->pid = 0;
|
||||
if (proc_data->pid > 0)
|
||||
delete proc_data;
|
||||
else
|
||||
proc_data->pid = 0;
|
||||
}
|
||||
|
||||
long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
@ -291,8 +292,9 @@ long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
wxCHECK_MSG( *argv, 0, "can't exec empty command" );
|
||||
|
||||
/* Create pipes */
|
||||
if (pipe(end_proc_detect) == -1) {
|
||||
wxLogSysError(_("Pipe creation failed"));
|
||||
if (pipe(end_proc_detect) == -1)
|
||||
{
|
||||
wxLogSysError( "Pipe creation failed" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -302,12 +304,13 @@ long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
#else
|
||||
pid_t pid = fork();
|
||||
#endif
|
||||
if (pid == -1) {
|
||||
// error
|
||||
wxLogSysError(_("Fork failed"));
|
||||
if (pid == -1)
|
||||
{
|
||||
wxLogSysError( "Fork failed" );
|
||||
return 0;
|
||||
}
|
||||
else if (pid == 0) {
|
||||
else if (pid == 0)
|
||||
{
|
||||
// we're in child
|
||||
close(end_proc_detect[0]); // close reading side
|
||||
// These three lines close the open file descriptors to
|
||||
@ -325,20 +328,23 @@ long wxExecute( char **argv, bool sync, wxProcess *process )
|
||||
execvp (*argv, argv);
|
||||
#endif
|
||||
// there is no return after successful exec()
|
||||
wxLogSysError(_("Can't execute '%s'"), *argv);
|
||||
wxLogSysError( "Can't execute '%s'", *argv);
|
||||
|
||||
_exit(-1);
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
// we're in parent
|
||||
close(end_proc_detect[1]); // close writing side
|
||||
data->tag = gdk_input_add(end_proc_detect[0], GDK_INPUT_READ,
|
||||
GTK_EndProcessDetector, (gpointer)data);
|
||||
data->pid = pid;
|
||||
if (!sync) {
|
||||
if (!sync)
|
||||
{
|
||||
data->process = process;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
data->process = (wxProcess *) NULL;
|
||||
data->pid = -(data->pid);
|
||||
|
||||
|
@ -255,10 +255,14 @@ bool wxGetResource(const wxString& section, const wxString& entry, char **value,
|
||||
// home directory instead of current directory -- JACS
|
||||
(void)GetIniFile(buffer, file);
|
||||
|
||||
wxNode *node = wxTheResourceCache->Find(buffer);
|
||||
wxNode *node = (wxNode*) NULL; /* suppress egcs warning */
|
||||
node = wxTheResourceCache->Find(buffer);
|
||||
if (node)
|
||||
{
|
||||
database = (XrmDatabase)node->Data();
|
||||
else {
|
||||
}
|
||||
else
|
||||
{
|
||||
database = XrmGetFileDatabase(buffer);
|
||||
wxLogTrace(wxTraceResAlloc, "Get: Number = %d", wxTheResourceCache->Number());
|
||||
wxTheResourceCache->Append(buffer, (wxObject *)database);
|
||||
|
@ -33,6 +33,9 @@
|
||||
#include "wx/file.h"
|
||||
#include "wx/wave.h"
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
// wxWave
|
||||
//-----------------------------------------------------------------
|
||||
|
||||
wxWave::wxWave()
|
||||
: m_waveLength(0), m_isResource(FALSE), m_waveData(NULL)
|
||||
@ -42,101 +45,106 @@ wxWave::wxWave()
|
||||
wxWave::wxWave(const wxString& sFileName, bool isResource)
|
||||
: m_waveLength(0), m_isResource(isResource), m_waveData(NULL)
|
||||
{
|
||||
Create(sFileName, isResource);
|
||||
Create(sFileName, isResource);
|
||||
}
|
||||
|
||||
wxWave::wxWave(int size, const byte* data)
|
||||
: m_waveLength(0), m_isResource(FALSE), m_waveData(NULL)
|
||||
{
|
||||
Create(size, data);
|
||||
Create(size, data);
|
||||
}
|
||||
|
||||
wxWave::~wxWave()
|
||||
{
|
||||
Free();
|
||||
Free();
|
||||
}
|
||||
|
||||
bool wxWave::Create(const wxString& fileName, bool isResource)
|
||||
{
|
||||
Free();
|
||||
Free();
|
||||
|
||||
if (isResource)
|
||||
{
|
||||
// todo
|
||||
if (isResource)
|
||||
{
|
||||
// todo
|
||||
return (m_waveData ? TRUE : FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_isResource = FALSE;
|
||||
|
||||
return (m_waveData ? TRUE : FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_isResource = FALSE;
|
||||
wxFile fileWave;
|
||||
if (!fileWave.Open(fileName, wxFile::read))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
wxFile fileWave;
|
||||
if (!fileWave.Open(fileName, wxFile::read))
|
||||
return FALSE;
|
||||
|
||||
m_waveLength = (int) fileWave.Length();
|
||||
m_waveLength = (int) fileWave.Length();
|
||||
|
||||
m_waveData = new byte[m_waveLength];
|
||||
if (!m_waveData)
|
||||
return FALSE;
|
||||
m_waveData = new byte[m_waveLength];
|
||||
if (!m_waveData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fileWave.Read(m_waveData, m_waveLength);
|
||||
fileWave.Read(m_waveData, m_waveLength);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool wxWave::Create(int size, const byte* data)
|
||||
{
|
||||
Free();
|
||||
m_isResource = FALSE;
|
||||
m_waveLength=size;
|
||||
m_waveData = new byte[size];
|
||||
if (!m_waveData)
|
||||
return FALSE;
|
||||
Free();
|
||||
m_isResource = FALSE;
|
||||
m_waveLength=size;
|
||||
m_waveData = new byte[size];
|
||||
if (!m_waveData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (int i=0; i<size; i++) m_waveData[i] = data[i];
|
||||
return TRUE;
|
||||
for (int i=0; i<size; i++) m_waveData[i] = data[i];
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxWave::Play(bool async, bool looped)
|
||||
{
|
||||
if (!IsOk())
|
||||
return FALSE;
|
||||
if (!IsOk()) return FALSE;
|
||||
|
||||
int dev=OpenDSP();
|
||||
if(dev<0)
|
||||
return FALSE;
|
||||
int dev = OpenDSP();
|
||||
|
||||
if (dev<0) return FALSE;
|
||||
|
||||
ioctl(dev,SNDCTL_DSP_SYNC,0);
|
||||
ioctl(dev,SNDCTL_DSP_SYNC,0);
|
||||
|
||||
bool play=TRUE;
|
||||
int i,l=0;
|
||||
do
|
||||
bool play=TRUE;
|
||||
int i,l=0;
|
||||
do
|
||||
{
|
||||
i= (int)((l+m_DSPblkSize) < m_sizeData ? m_DSPblkSize : (m_sizeData-l));
|
||||
if ( write(dev,&m_data[l],i) != i )
|
||||
play=FALSE;
|
||||
l +=i;
|
||||
}while(play == TRUE && l<m_sizeData);
|
||||
i= (int)((l+m_DSPblkSize) < m_sizeData ? m_DSPblkSize : (m_sizeData-l));
|
||||
if ( write(dev,&m_data[l],i) != i )
|
||||
{
|
||||
play=FALSE;
|
||||
}
|
||||
l +=i;
|
||||
} while (play == TRUE && l<m_sizeData);
|
||||
|
||||
|
||||
close(dev);
|
||||
return TRUE;
|
||||
|
||||
close(dev);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxWave::Free()
|
||||
{
|
||||
if (m_waveData)
|
||||
if (m_waveData)
|
||||
{
|
||||
delete[] m_waveData;
|
||||
m_waveData = NULL;
|
||||
m_waveLength = 0;
|
||||
return TRUE;
|
||||
delete[] m_waveData;
|
||||
m_waveData = NULL;
|
||||
m_waveLength = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
@ -148,8 +156,7 @@ typedef struct
|
||||
unsigned long ulAvgBytesPerSec;
|
||||
unsigned short uiBlockAlign;
|
||||
unsigned short uiBitsPerSample;
|
||||
}WAVEFORMAT;
|
||||
|
||||
} WAVEFORMAT;
|
||||
|
||||
#define MONO 1 // and stereo is 2 by wav format
|
||||
#define WAVE_FORMAT_PCM 1
|
||||
|
@ -1106,6 +1106,15 @@ static void wxInsertChildInWindow( wxWindow* parent, wxWindow* child )
|
||||
child->m_height );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
wxWindow* wxGetActiveWindow()
|
||||
{
|
||||
return g_focusWindow;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxWindow
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -14,73 +14,73 @@ static struct {
|
||||
char* symbol;
|
||||
} odbcapi_symtab[] = {
|
||||
#if (ODBCVER >= 0x0300)
|
||||
en_AllocHandle CLI_NAME_PREFIX "AllocHandle",
|
||||
en_FreeHandle CLI_NAME_PREFIX "FreeHandle",
|
||||
{ en_AllocHandle CLI_NAME_PREFIX "AllocHandle" },
|
||||
{ en_FreeHandle CLI_NAME_PREFIX "FreeHandle" },
|
||||
#endif
|
||||
en_AllocEnv, CLI_NAME_PREFIX "AllocEnv",
|
||||
en_AllocConnect, CLI_NAME_PREFIX "AllocConnect",
|
||||
en_Connect, CLI_NAME_PREFIX "Connect",
|
||||
en_DriverConnect, CLI_NAME_PREFIX "DriverConnect",
|
||||
en_BrowseConnect, CLI_NAME_PREFIX "BrowseConnect",
|
||||
{ en_AllocEnv, CLI_NAME_PREFIX "AllocEnv" },
|
||||
{ en_AllocConnect, CLI_NAME_PREFIX "AllocConnect" },
|
||||
{ en_Connect, CLI_NAME_PREFIX "Connect" },
|
||||
{ en_DriverConnect, CLI_NAME_PREFIX "DriverConnect" },
|
||||
{ en_BrowseConnect, CLI_NAME_PREFIX "BrowseConnect" },
|
||||
|
||||
en_DataSources, CLI_NAME_PREFIX "DataSources",
|
||||
en_Drivers, CLI_NAME_PREFIX "Driver",
|
||||
en_GetInfo, CLI_NAME_PREFIX "GetInfo",
|
||||
en_GetFunctions, CLI_NAME_PREFIX "GetFunctions",
|
||||
en_GetTypeInfo, CLI_NAME_PREFIX "GetTypeInfo",
|
||||
{ en_DataSources, CLI_NAME_PREFIX "DataSources" },
|
||||
{ en_Drivers, CLI_NAME_PREFIX "Driver" },
|
||||
{ en_GetInfo, CLI_NAME_PREFIX "GetInfo" },
|
||||
{ en_GetFunctions, CLI_NAME_PREFIX "GetFunctions" },
|
||||
{ en_GetTypeInfo, CLI_NAME_PREFIX "GetTypeInfo" },
|
||||
|
||||
en_SetConnectOption, CLI_NAME_PREFIX "SetConnectOption",
|
||||
en_GetConnectOption, CLI_NAME_PREFIX "GetConnectOption",
|
||||
en_SetStmtOption, CLI_NAME_PREFIX "SetStmtOption",
|
||||
en_GetStmtOption, CLI_NAME_PREFIX "GetStmtOption",
|
||||
{ en_SetConnectOption, CLI_NAME_PREFIX "SetConnectOption" },
|
||||
{ en_GetConnectOption, CLI_NAME_PREFIX "GetConnectOption" },
|
||||
{ en_SetStmtOption, CLI_NAME_PREFIX "SetStmtOption" },
|
||||
{ en_GetStmtOption, CLI_NAME_PREFIX "GetStmtOption" },
|
||||
|
||||
en_AllocStmt, CLI_NAME_PREFIX "AllocStmt",
|
||||
en_Prepare, CLI_NAME_PREFIX "Prepare",
|
||||
en_BindParameter, CLI_NAME_PREFIX "BindParameter",
|
||||
en_ParamOptions, CLI_NAME_PREFIX "ParamOptions",
|
||||
en_GetCursorName, CLI_NAME_PREFIX "GetCursorName",
|
||||
en_SetCursorName, CLI_NAME_PREFIX "SetCursorName",
|
||||
en_SetScrollOptions, CLI_NAME_PREFIX "SetScrollOptions",
|
||||
en_SetParam, CLI_NAME_PREFIX "SetParam",
|
||||
{ en_AllocStmt, CLI_NAME_PREFIX "AllocStmt" },
|
||||
{ en_Prepare, CLI_NAME_PREFIX "Prepare" },
|
||||
{ en_BindParameter, CLI_NAME_PREFIX "BindParameter" },
|
||||
{ en_ParamOptions, CLI_NAME_PREFIX "ParamOptions" },
|
||||
{ en_GetCursorName, CLI_NAME_PREFIX "GetCursorName" },
|
||||
{ en_SetCursorName, CLI_NAME_PREFIX "SetCursorName" },
|
||||
{ en_SetScrollOptions, CLI_NAME_PREFIX "SetScrollOptions" },
|
||||
{ en_SetParam, CLI_NAME_PREFIX "SetParam" },
|
||||
|
||||
en_Execute, CLI_NAME_PREFIX "Execute",
|
||||
en_ExecDirect, CLI_NAME_PREFIX "ExecDirect",
|
||||
en_NativeSql, CLI_NAME_PREFIX "NativeSql",
|
||||
en_DescribeParam, CLI_NAME_PREFIX "DescribeParam",
|
||||
en_NumParams, CLI_NAME_PREFIX "NumParams",
|
||||
en_ParamData, CLI_NAME_PREFIX "ParamData",
|
||||
en_PutData, CLI_NAME_PREFIX "PutData",
|
||||
{ en_Execute, CLI_NAME_PREFIX "Execute" },
|
||||
{ en_ExecDirect, CLI_NAME_PREFIX "ExecDirect" },
|
||||
{ en_NativeSql, CLI_NAME_PREFIX "NativeSql" },
|
||||
{ en_DescribeParam, CLI_NAME_PREFIX "DescribeParam" },
|
||||
{ en_NumParams, CLI_NAME_PREFIX "NumParams" },
|
||||
{ en_ParamData, CLI_NAME_PREFIX "ParamData" },
|
||||
{ en_PutData, CLI_NAME_PREFIX "PutData" },
|
||||
|
||||
en_RowCount, CLI_NAME_PREFIX "RowCount",
|
||||
en_NumResultCols, CLI_NAME_PREFIX "NumResultCols",
|
||||
en_DescribeCol, CLI_NAME_PREFIX "DescribeCol",
|
||||
en_ColAttributes, CLI_NAME_PREFIX "ColAttributes",
|
||||
en_BindCol, CLI_NAME_PREFIX "BindCol",
|
||||
en_Fetch, CLI_NAME_PREFIX "Fetch",
|
||||
en_ExtendedFetch, CLI_NAME_PREFIX "ExtendedFetch",
|
||||
en_GetData, CLI_NAME_PREFIX "GetData",
|
||||
en_SetPos, CLI_NAME_PREFIX "SetPos",
|
||||
en_MoreResults, CLI_NAME_PREFIX "MoreResults",
|
||||
en_Error, CLI_NAME_PREFIX "Error",
|
||||
{ en_RowCount, CLI_NAME_PREFIX "RowCount" },
|
||||
{ en_NumResultCols, CLI_NAME_PREFIX "NumResultCols" },
|
||||
{ en_DescribeCol, CLI_NAME_PREFIX "DescribeCol" },
|
||||
{ en_ColAttributes, CLI_NAME_PREFIX "ColAttributes" },
|
||||
{ en_BindCol, CLI_NAME_PREFIX "BindCol" },
|
||||
{ en_Fetch, CLI_NAME_PREFIX "Fetch" },
|
||||
{ en_ExtendedFetch, CLI_NAME_PREFIX "ExtendedFetch" },
|
||||
{ en_GetData, CLI_NAME_PREFIX "GetData" },
|
||||
{ en_SetPos, CLI_NAME_PREFIX "SetPos" },
|
||||
{ en_MoreResults, CLI_NAME_PREFIX "MoreResults" },
|
||||
{ en_Error, CLI_NAME_PREFIX "Error" },
|
||||
|
||||
en_ColumnPrivileges, CLI_NAME_PREFIX "ColumnPrivileges",
|
||||
en_Columns, CLI_NAME_PREFIX "Columns",
|
||||
en_ForeignKeys, CLI_NAME_PREFIX "ForeignKeys",
|
||||
en_PrimaryKeys, CLI_NAME_PREFIX "PrimaryKeys",
|
||||
en_ProcedureColumns, CLI_NAME_PREFIX "ProcedureColumns",
|
||||
en_Procedures, CLI_NAME_PREFIX "Procedures",
|
||||
en_SpecialColumns, CLI_NAME_PREFIX "SpecialColumns",
|
||||
en_Statistics, CLI_NAME_PREFIX "Statistics",
|
||||
en_TablePrivileges, CLI_NAME_PREFIX "TablePrivileges",
|
||||
en_Tables, CLI_NAME_PREFIX "Tables",
|
||||
{ en_ColumnPrivileges, CLI_NAME_PREFIX "ColumnPrivileges" },
|
||||
{ en_Columns, CLI_NAME_PREFIX "Columns" },
|
||||
{ en_ForeignKeys, CLI_NAME_PREFIX "ForeignKeys" },
|
||||
{ en_PrimaryKeys, CLI_NAME_PREFIX "PrimaryKeys" },
|
||||
{ en_ProcedureColumns, CLI_NAME_PREFIX "ProcedureColumns" },
|
||||
{ en_Procedures, CLI_NAME_PREFIX "Procedures" },
|
||||
{ en_SpecialColumns, CLI_NAME_PREFIX "SpecialColumns" },
|
||||
{ en_Statistics, CLI_NAME_PREFIX "Statistics" },
|
||||
{ en_TablePrivileges, CLI_NAME_PREFIX "TablePrivileges" },
|
||||
{ en_Tables, CLI_NAME_PREFIX "Tables" },
|
||||
|
||||
en_FreeStmt, CLI_NAME_PREFIX "FreeStmt",
|
||||
en_Cancel, CLI_NAME_PREFIX "Cancel",
|
||||
en_Transact, CLI_NAME_PREFIX "Transact",
|
||||
{ en_FreeStmt, CLI_NAME_PREFIX "FreeStmt" },
|
||||
{ en_Cancel, CLI_NAME_PREFIX "Cancel" },
|
||||
{ en_Transact, CLI_NAME_PREFIX "Transact" },
|
||||
|
||||
en_Disconnect, CLI_NAME_PREFIX "Disconnect",
|
||||
en_FreeConnect, CLI_NAME_PREFIX "FreeConnect",
|
||||
en_FreeEnv, CLI_NAME_PREFIX "FreeEnv",
|
||||
{ en_Disconnect, CLI_NAME_PREFIX "Disconnect" },
|
||||
{ en_FreeConnect, CLI_NAME_PREFIX "FreeConnect" },
|
||||
{ en_FreeEnv, CLI_NAME_PREFIX "FreeEnv" },
|
||||
|
||||
en_NullProc, NULL
|
||||
{ en_NullProc, NULL }
|
||||
};
|
||||
|
@ -1,98 +1,98 @@
|
||||
static const sqlerrmsg_t sqlerrmsg_tab[] =
|
||||
{
|
||||
en_00000, "00000", "",
|
||||
en_01000, "01000", "General warning",
|
||||
en_01002, "01002", "Disconnect error",
|
||||
en_01004, "01004", "Data truncated",
|
||||
en_01006, "01006", "Privilege not revoked",
|
||||
en_01S00, "01S00", "Invalid connection string attribute",
|
||||
en_01S01, "01S01", "Error in row",
|
||||
en_01S02, "01S02", "Optional value changed",
|
||||
en_01S03, "01S03", "No rows updated or deleted",
|
||||
en_01S04, "01S04", "More than one row updated or deleted",
|
||||
en_07001, "07001", "Wrong number of parameters",
|
||||
en_07006, "07006", "Restricted data type attribute violation",
|
||||
en_08001, "08001", "Unable to connect to data source",
|
||||
en_08002, "08002", "Connection in use",
|
||||
en_08003, "08003", "Connect not open",
|
||||
en_08004, "08004", "Data source rejected establishment of connection",
|
||||
en_08007, "08007", "Connection failure during transaction",
|
||||
en_08S01, "08S01", "Communication link failure",
|
||||
en_21S01, "21S01", "Insert value list does not match",
|
||||
en_21S02, "21S02", "Degree of derived table does not match column list",
|
||||
en_22001, "22001", "String data right truncation",
|
||||
en_22003, "22003", "Numeric value out of range",
|
||||
en_22005, "22005", "Error in assignment",
|
||||
en_22008, "22008", "Datetime field overflow",
|
||||
en_22012, "22012", "Division by zero",
|
||||
en_22026, "22026", "String data, length mismatch",
|
||||
en_23000, "23000", "Integrity constraint violation",
|
||||
en_24000, "24000", "Invalid cursor state",
|
||||
en_25000, "25000", "Invalid transaction state",
|
||||
en_28000, "28000", "Invalid authorization specification",
|
||||
en_34000, "34000", "Invalid cursor name",
|
||||
en_37000, "37000", "Syntex error or access violation",
|
||||
en_3C000, "3C000", "Duplicate cursor name",
|
||||
en_40001, "40001", "Serialization failure",
|
||||
en_42000, "42000", "Syntax error or access violation",
|
||||
en_70100, "70100", "Operation aborted",
|
||||
en_IM001, "IM001", "Driver does not support this function",
|
||||
en_IM002, "IM002", "Data source name not found and no default "
|
||||
"driver specified. Driver could not be loaded",
|
||||
en_IM003, "IM003", "Specified driver could not be loaded",
|
||||
en_IM004, "IM004", "Driver's SQLAllocEnv() failed",
|
||||
en_IM005, "IM005", "Driver's SQLAllocConnect() failed",
|
||||
en_IM006, "IM006", "Driver's SQLSetConnectOption failed",
|
||||
en_IM007, "IM007", "No data source or driver specified, dialog prohibited",
|
||||
en_IM008, "IM008", "Dialog failed",
|
||||
en_IM009, "IM009", "Unable to load translation DLL",
|
||||
en_IM010, "IM010", "Data source name too long",
|
||||
en_IM011, "IM011", "Driver name too long",
|
||||
en_IM012, "IM012", "DRIVER keyword syntax error",
|
||||
en_IM013, "IM013", "Trace file error",
|
||||
en_IM014, "IM014", "Try to change tracing file while tracing is on",
|
||||
en_S0001, "S0001", "Base table or view already exists",
|
||||
en_S0002, "S0002", "Base table not found",
|
||||
en_S0011, "S0011", "Index already exists",
|
||||
en_S0012, "S0012", "Index not found",
|
||||
en_S0021, "S0021", "Column already exists",
|
||||
en_S0022, "S0022", "Column not found",
|
||||
en_S0023, "S0023", "No default for column",
|
||||
en_S1000, "S1000", "General error",
|
||||
en_S1001, "S1001", "Memory allocation failure",
|
||||
en_S1002, "S1002", "Invalid column number",
|
||||
en_S1003, "S1003", "Program type out of range",
|
||||
en_S1004, "S1004", "SQL data type out of range",
|
||||
en_S1008, "S1008", "Operation canceled",
|
||||
en_S1009, "S1009", "Invalid argument value",
|
||||
en_S1010, "S1010", "Function sequence error",
|
||||
en_S1011, "S1011", "Operation invalid at this time",
|
||||
en_S1012, "S1012", "Invalid transaction operation code specified",
|
||||
en_S1015, "S1015", "No cursor name available",
|
||||
en_S1090, "S1090", "Invalid string or buffer length",
|
||||
en_S1091, "S1091", "Descriptor type out of range",
|
||||
en_S1092, "S1092", "Option type out of range",
|
||||
en_S1093, "S1093", "Invalid parameter",
|
||||
en_S1094, "S1094", "Invalid scale value",
|
||||
en_S1095, "S1095", "Function type out of range",
|
||||
en_S1096, "S1096", "Information type out of range",
|
||||
en_S1097, "S1097", "Column type out of range",
|
||||
en_S1098, "S1098", "Scope type out of range",
|
||||
en_S1099, "S1099", "Nullable type out of range",
|
||||
en_S1100, "S1100", "Uniquenss option type out of range",
|
||||
en_S1101, "S1101", "Accuracy option type out of range",
|
||||
en_S1103, "S1103", "Direction option out of range",
|
||||
en_S1104, "S1104", "Invalid precision value",
|
||||
en_S1105, "S1105", "Invalid parameter type",
|
||||
en_S1106, "S1106", "Fetch type out of range",
|
||||
en_S1107, "S1107", "Row value out of range",
|
||||
en_S1108, "S1108", "Concurrency option out of range",
|
||||
en_S1109, "S1109", "Invalid cursor position",
|
||||
en_S1110, "S1110", "Invalid driver completion",
|
||||
en_S1111, "S1111", "Invalid bookmark value",
|
||||
en_S1C00, "S1C00", "Driver not capable",
|
||||
en_S1T00, "S1T00", "Timeout expired",
|
||||
en_sqlstat_total, NULL, NULL
|
||||
{ en_00000, "00000", "" },
|
||||
{ en_01000, "01000", "General warning" },
|
||||
{ en_01002, "01002", "Disconnect error" },
|
||||
{ en_01004, "01004", "Data truncated" },
|
||||
{ en_01006, "01006", "Privilege not revoked" },
|
||||
{ en_01S00, "01S00", "Invalid connection string attribute" },
|
||||
{ en_01S01, "01S01", "Error in row" },
|
||||
{ en_01S02, "01S02", "Optional value changed" },
|
||||
{ en_01S03, "01S03", "No rows updated or deleted" },
|
||||
{ en_01S04, "01S04", "More than one row updated or deleted" },
|
||||
{ en_07001, "07001", "Wrong number of parameters" },
|
||||
{ en_07006, "07006", "Restricted data type attribute violation" },
|
||||
{ en_08001, "08001", "Unable to connect to data source" },
|
||||
{ en_08002, "08002", "Connection in use" },
|
||||
{ en_08003, "08003", "Connect not open" },
|
||||
{ en_08004, "08004", "Data source rejected establishment of connection" },
|
||||
{ en_08007, "08007", "Connection failure during transaction" },
|
||||
{ en_08S01, "08S01", "Communication link failure" },
|
||||
{ en_21S01, "21S01", "Insert value list does not match" },
|
||||
{ en_21S02, "21S02", "Degree of derived table does not match column list" },
|
||||
{ en_22001, "22001", "String data right truncation" },
|
||||
{ en_22003, "22003", "Numeric value out of range" },
|
||||
{ en_22005, "22005", "Error in assignment" },
|
||||
{ en_22008, "22008", "Datetime field overflow" },
|
||||
{ en_22012, "22012", "Division by zero" },
|
||||
{ en_22026, "22026", "String data, length mismatch" },
|
||||
{ en_23000, "23000", "Integrity constraint violation" },
|
||||
{ en_24000, "24000", "Invalid cursor state" },
|
||||
{ en_25000, "25000", "Invalid transaction state" },
|
||||
{ en_28000, "28000", "Invalid authorization specification" },
|
||||
{ en_34000, "34000", "Invalid cursor name" },
|
||||
{ en_37000, "37000", "Syntex error or access violation" },
|
||||
{ en_3C000, "3C000", "Duplicate cursor name" },
|
||||
{ en_40001, "40001", "Serialization failure" },
|
||||
{ en_42000, "42000", "Syntax error or access violation" },
|
||||
{ en_70100, "70100", "Operation aborted" },
|
||||
{ en_IM001, "IM001", "Driver does not support this function" },
|
||||
{ en_IM002, "IM002", "Data source name not found and no default "
|
||||
"driver specified. Driver could not be loaded" },
|
||||
{ en_IM003, "IM003", "Specified driver could not be loaded" },
|
||||
{ en_IM004, "IM004", "Driver's SQLAllocEnv() failed" },
|
||||
{ en_IM005, "IM005", "Driver's SQLAllocConnect() failed" },
|
||||
{ en_IM006, "IM006", "Driver's SQLSetConnectOption failed" },
|
||||
{ en_IM007, "IM007", "No data source or driver specified, dialog prohibited" },
|
||||
{ en_IM008, "IM008", "Dialog failed" },
|
||||
{ en_IM009, "IM009", "Unable to load translation DLL" },
|
||||
{ en_IM010, "IM010", "Data source name too long" },
|
||||
{ en_IM011, "IM011", "Driver name too long" },
|
||||
{ en_IM012, "IM012", "DRIVER keyword syntax error" },
|
||||
{ en_IM013, "IM013", "Trace file error" },
|
||||
{ en_IM014, "IM014", "Try to change tracing file while tracing is on" },
|
||||
{ en_S0001, "S0001", "Base table or view already exists" },
|
||||
{ en_S0002, "S0002", "Base table not found" },
|
||||
{ en_S0011, "S0011", "Index already exists" },
|
||||
{ en_S0012, "S0012", "Index not found" },
|
||||
{ en_S0021, "S0021", "Column already exists" },
|
||||
{ en_S0022, "S0022", "Column not found" },
|
||||
{ en_S0023, "S0023", "No default for column" },
|
||||
{ en_S1000, "S1000", "General error" },
|
||||
{ en_S1001, "S1001", "Memory allocation failure" },
|
||||
{ en_S1002, "S1002", "Invalid column number" },
|
||||
{ en_S1003, "S1003", "Program type out of range" },
|
||||
{ en_S1004, "S1004", "SQL data type out of range" },
|
||||
{ en_S1008, "S1008", "Operation canceled" },
|
||||
{ en_S1009, "S1009", "Invalid argument value" },
|
||||
{ en_S1010, "S1010", "Function sequence error" },
|
||||
{ en_S1011, "S1011", "Operation invalid at this time" },
|
||||
{ en_S1012, "S1012", "Invalid transaction operation code specified" },
|
||||
{ en_S1015, "S1015", "No cursor name available" },
|
||||
{ en_S1090, "S1090", "Invalid string or buffer length" },
|
||||
{ en_S1091, "S1091", "Descriptor type out of range" },
|
||||
{ en_S1092, "S1092", "Option type out of range" },
|
||||
{ en_S1093, "S1093", "Invalid parameter" },
|
||||
{ en_S1094, "S1094", "Invalid scale value" },
|
||||
{ en_S1095, "S1095", "Function type out of range" },
|
||||
{ en_S1096, "S1096", "Information type out of range" },
|
||||
{ en_S1097, "S1097", "Column type out of range" },
|
||||
{ en_S1098, "S1098", "Scope type out of range" },
|
||||
{ en_S1099, "S1099", "Nullable type out of range" },
|
||||
{ en_S1100, "S1100", "Uniquenss option type out of range" },
|
||||
{ en_S1101, "S1101", "Accuracy option type out of range" },
|
||||
{ en_S1103, "S1103", "Direction option out of range" },
|
||||
{ en_S1104, "S1104", "Invalid precision value" },
|
||||
{ en_S1105, "S1105", "Invalid parameter type" },
|
||||
{ en_S1106, "S1106", "Fetch type out of range" },
|
||||
{ en_S1107, "S1107", "Row value out of range" },
|
||||
{ en_S1108, "S1108", "Concurrency option out of range" },
|
||||
{ en_S1109, "S1109", "Invalid cursor position" },
|
||||
{ en_S1110, "S1110", "Invalid driver completion" },
|
||||
{ en_S1111, "S1111", "Invalid bookmark value" },
|
||||
{ en_S1C00, "S1C00", "Driver not capable" },
|
||||
{ en_S1T00, "S1T00", "Timeout expired" },
|
||||
{ en_sqlstat_total, NULL, NULL }
|
||||
};
|
||||
|
||||
static char FAR* sqlerrhd = "[iODBC][Driver Manager]";
|
||||
|
@ -1 +0,0 @@
|
||||
include ../../setup/general/makedirs
|
@ -1,3 +1,7 @@
|
||||
Linux
|
||||
linux-gnu
|
||||
linux
|
||||
Test.h
|
||||
Test.wxr
|
||||
dialog.h
|
||||
dialog.wxr
|
@ -1 +1,38 @@
|
||||
include ../../../setup/general/makedirs
|
||||
|
||||
CC = g++
|
||||
|
||||
DialogEd: dialoged.o dlghndlr.o edlist.o edtree.o reseditr.o reswrite.o \
|
||||
symbtabl.o winprop.o winstyle.o
|
||||
$(CC) -o DialogEd \
|
||||
dialoged.o dlghndlr.o edlist.o edtree.o reseditr.o reswrite.o \
|
||||
symbtabl.o winprop.o winstyle.o `wx-config --libs`
|
||||
|
||||
dialoged.o: dialoged.cpp
|
||||
$(CC) `wx-config --cflags` -c dialoged.cpp
|
||||
|
||||
dlghndlr.o: dlghndlr.cpp
|
||||
$(CC) `wx-config --cflags` -c dlghndlr.cpp
|
||||
|
||||
edlist.o: edlist.cpp
|
||||
$(CC) `wx-config --cflags` -c edlist.cpp
|
||||
|
||||
edtree.o: edtree.cpp
|
||||
$(CC) `wx-config --cflags` -c edtree.cpp
|
||||
|
||||
reseditr.o: reseditr.cpp
|
||||
$(CC) `wx-config --cflags` -c reseditr.cpp
|
||||
|
||||
reswrite.o: reswrite.cpp
|
||||
$(CC) `wx-config --cflags` -c reswrite.cpp
|
||||
|
||||
symbtabl.o: symbtabl.cpp
|
||||
$(CC) `wx-config --cflags` -c symbtabl.cpp
|
||||
|
||||
winprop.o: winprop.cpp
|
||||
$(CC) `wx-config --cflags` -c winprop.cpp
|
||||
|
||||
winstyle.o: winstyle.cpp
|
||||
$(CC) `wx-config --cflags` -c winstyle.cpp
|
||||
|
||||
clean:
|
||||
rm -f *.o DialogEd
|
||||
|
@ -1,26 +0,0 @@
|
||||
# WXXT base directory
|
||||
WXBASEDIR=@WXBASEDIR@
|
||||
|
||||
# set the OS type for compilation
|
||||
OS=@OS@
|
||||
# compile a library only
|
||||
RULE=bin
|
||||
|
||||
# define library name
|
||||
BIN_TARGET=dialoged
|
||||
# define library sources
|
||||
BIN_SRC=dialoged.cpp dlghndlr.cpp edlist.cpp edtree.cpp \
|
||||
reseditr.cpp reswrite.cpp symbtabl.cpp winprop.cpp winstyle.cpp
|
||||
|
||||
#define library objects
|
||||
BIN_OBJ=dialoged.o dlghndlr.o edlist.o edtree.o \
|
||||
reseditr.o reswrite.o symbtabl.o winprop.o winstyle.o
|
||||
|
||||
# additional things needed to link
|
||||
BIN_LINK=
|
||||
|
||||
# additional things needed to compile
|
||||
ADD_COMPILE=
|
||||
|
||||
# include the definitions now
|
||||
include ../../../../template.mak
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# wGLCanvas source makefile for Unix
|
||||
# wxGLCanvas source makefile for Unix
|
||||
#
|
||||
# Copyright 1998, Robert Roebling
|
||||
#
|
||||
@ -18,8 +18,8 @@ NONE=
|
||||
|
||||
# define library name
|
||||
LIB_TARGET=wx_opengl_gtk
|
||||
LIB_MAJOR=0
|
||||
LIB_MINOR=1
|
||||
LIB_MAJOR=1
|
||||
LIB_MINOR=0
|
||||
|
||||
# define library sources
|
||||
|
||||
|
@ -13,12 +13,24 @@
|
||||
#pragma implementation "glcanvas.h"
|
||||
#endif
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
#include "glcanvas.h"
|
||||
|
||||
#include "wx/frame.h"
|
||||
#include "wx/colour.h"
|
||||
#include "glcanvas.h"
|
||||
#include <gdk/gdkx.h>
|
||||
#include "wx/module.h"
|
||||
#include "wx/app.h"
|
||||
|
||||
#include "gtk/gtk.h"
|
||||
#include "gdk/gdk.h"
|
||||
extern "C" {
|
||||
#include "gdk/gdkx.h"
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// global variables
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
XVisualInfo *g_visual_info = (XVisualInfo*) NULL;
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// wxGLContext
|
||||
@ -28,66 +40,57 @@ IMPLEMENT_CLASS(wxGLContext,wxObject)
|
||||
|
||||
wxGLContext::wxGLContext( bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& WXUNUSED(palette) )
|
||||
{
|
||||
m_window = win;
|
||||
m_widget = win->m_wxwindow;
|
||||
m_window = win;
|
||||
m_widget = win->m_wxwindow;
|
||||
|
||||
int data[] = {GLX_RGBA,GLX_RED_SIZE,1,GLX_GREEN_SIZE,1,
|
||||
GLX_BLUE_SIZE,1,GLX_DOUBLEBUFFER,None};
|
||||
|
||||
Display *display = GDK_WINDOW_XDISPLAY( m_widget->window );
|
||||
XVisualInfo *visual_info = glXChooseVisual( display, DefaultScreen(display), data );
|
||||
wxCHECK_RET( g_visual_info != NULL, "invalid visual for OpenGl" );
|
||||
|
||||
m_glContext = glXCreateContext( GDK_DISPLAY(), g_visual_info, None, GL_TRUE );
|
||||
|
||||
wxCHECK_RET( visual_info != NULL, "Couldn't choose visual for OpenGl" );
|
||||
wxCHECK_RET( m_glContext != NULL, "Couldn't create OpenGl context" );
|
||||
|
||||
m_glContext = glXCreateContext( display, visual_info, None, GL_TRUE );
|
||||
|
||||
wxCHECK_RET( m_glContext != NULL, "Couldn't create OpenGl context" );
|
||||
|
||||
glXMakeCurrent( display, GDK_WINDOW_XWINDOW(m_widget->window), m_glContext );
|
||||
glXMakeCurrent( GDK_DISPLAY(), GDK_WINDOW_XWINDOW(m_widget->window), m_glContext );
|
||||
}
|
||||
|
||||
wxGLContext::~wxGLContext()
|
||||
{
|
||||
if (m_glContext)
|
||||
{
|
||||
Display *display = GDK_WINDOW_XDISPLAY( m_widget->window );
|
||||
glXMakeCurrent( display, GDK_WINDOW_XWINDOW(m_widget->window), m_glContext );
|
||||
if (m_glContext)
|
||||
{
|
||||
glXMakeCurrent( GDK_DISPLAY(), GDK_WINDOW_XWINDOW(m_widget->window), m_glContext );
|
||||
|
||||
glXDestroyContext( display, m_glContext );
|
||||
}
|
||||
glXDestroyContext( GDK_DISPLAY(), m_glContext );
|
||||
}
|
||||
}
|
||||
|
||||
void wxGLContext::SwapBuffers()
|
||||
{
|
||||
if (m_glContext)
|
||||
{
|
||||
Display *display = GDK_WINDOW_XDISPLAY( m_widget->window );
|
||||
glXSwapBuffers( display, GDK_WINDOW_XWINDOW( m_widget->window ) );
|
||||
}
|
||||
if (m_glContext)
|
||||
{
|
||||
glXSwapBuffers( GDK_DISPLAY(), GDK_WINDOW_XWINDOW( m_widget->window ) );
|
||||
}
|
||||
}
|
||||
|
||||
void wxGLContext::SetCurrent()
|
||||
{
|
||||
if (m_glContext)
|
||||
{
|
||||
Display *display = GDK_WINDOW_XDISPLAY( m_widget->window );
|
||||
glXMakeCurrent( display, GDK_WINDOW_XWINDOW(m_widget->window), m_glContext );
|
||||
}
|
||||
if (m_glContext)
|
||||
{
|
||||
glXMakeCurrent( GDK_DISPLAY(), GDK_WINDOW_XWINDOW(m_widget->window), m_glContext );
|
||||
}
|
||||
}
|
||||
|
||||
void wxGLContext::SetColour(const char *colour)
|
||||
{
|
||||
float r = 0.0;
|
||||
float g = 0.0;
|
||||
float b = 0.0;
|
||||
wxColour *col = wxTheColourDatabase->FindColour(colour);
|
||||
if (col)
|
||||
{
|
||||
r = (float)(col->Red()/256.0);
|
||||
g = (float)(col->Green()/256.0);
|
||||
b = (float)(col->Blue()/256.0);
|
||||
glColor3f( r, g, b);
|
||||
}
|
||||
float r = 0.0;
|
||||
float g = 0.0;
|
||||
float b = 0.0;
|
||||
wxColour *col = wxTheColourDatabase->FindColour(colour);
|
||||
if (col)
|
||||
{
|
||||
r = (float)(col->Red()/256.0);
|
||||
g = (float)(col->Green()/256.0);
|
||||
b = (float)(col->Blue()/256.0);
|
||||
glColor3f( r, g, b);
|
||||
}
|
||||
}
|
||||
|
||||
void wxGLContext::SetupPixelFormat()
|
||||
@ -100,7 +103,7 @@ void wxGLContext::SetupPalette( const wxPalette& WXUNUSED(palette) )
|
||||
|
||||
wxPalette wxGLContext::CreateDefaultPalette()
|
||||
{
|
||||
return wxNullPalette;
|
||||
return wxNullPalette;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
@ -118,44 +121,79 @@ wxGLCanvas::wxGLCanvas(wxWindow *parent, wxWindowID id,
|
||||
int *WXUNUSED(attribList), const wxPalette& palette):
|
||||
wxScrolledWindow(parent, id, pos, size, style, name)
|
||||
{
|
||||
m_glContext = new wxGLContext( TRUE, this, palette );
|
||||
m_glContext = new wxGLContext( TRUE, this, palette );
|
||||
}
|
||||
|
||||
wxGLCanvas::~wxGLCanvas()
|
||||
{
|
||||
if (m_glContext) delete m_glContext;
|
||||
if (m_glContext) delete m_glContext;
|
||||
}
|
||||
|
||||
void wxGLCanvas::SwapBuffers()
|
||||
{
|
||||
if (m_glContext) m_glContext->SwapBuffers();
|
||||
if (m_glContext) m_glContext->SwapBuffers();
|
||||
}
|
||||
|
||||
void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event))
|
||||
{
|
||||
int width, height;
|
||||
GetClientSize(& width, & height);
|
||||
int width, height;
|
||||
GetClientSize(& width, & height);
|
||||
|
||||
if (m_glContext)
|
||||
{
|
||||
m_glContext->SetCurrent();
|
||||
if (m_glContext)
|
||||
{
|
||||
m_glContext->SetCurrent();
|
||||
|
||||
glViewport(0, 0, (GLint)width, (GLint)height);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
}
|
||||
glViewport(0, 0, (GLint)width, (GLint)height);
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
}
|
||||
}
|
||||
|
||||
void wxGLCanvas::SetCurrent()
|
||||
{
|
||||
if (m_glContext) m_glContext->SetCurrent();
|
||||
if (m_glContext) m_glContext->SetCurrent();
|
||||
}
|
||||
|
||||
void wxGLCanvas::SetColour( const char *colour )
|
||||
{
|
||||
if (m_glContext) m_glContext->SetColour( colour );
|
||||
if (m_glContext) m_glContext->SetColour( colour );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// wxGLModule
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
class wxGLModule : public wxModule
|
||||
{
|
||||
public:
|
||||
virtual bool OnInit();
|
||||
virtual void OnExit();
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxGLModule)
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxGLModule, wxModule)
|
||||
|
||||
bool wxGLModule::OnInit()
|
||||
{
|
||||
int data[] = { GLX_RGBA,GLX_RED_SIZE,1,GLX_GREEN_SIZE,1,
|
||||
GLX_BLUE_SIZE,1,GLX_DOUBLEBUFFER,None};
|
||||
|
||||
g_visual_info = glXChooseVisual( GDK_DISPLAY(), DefaultScreen(GDK_DISPLAY()), data );
|
||||
|
||||
wxCHECK_MSG( g_visual_info != NULL, FALSE, "Couldn't choose visual for OpenGl" );
|
||||
|
||||
wxVisualSetByExternal = gdkx_visual_get(g_visual_info->visualid);
|
||||
|
||||
wxColormapSetByExternal = gdk_colormap_new( gdkx_visual_get(g_visual_info->visualid), TRUE );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void wxGLModule::OnExit()
|
||||
{
|
||||
}
|
||||
|
||||
|
15
wxGTK.spec
15
wxGTK.spec
@ -4,17 +4,17 @@ Version: 2b1
|
||||
Release: 1
|
||||
Copyright: LGPL
|
||||
Group: X11/Libraries
|
||||
Source: ftp://wesley.informatik.uni-freiburg.de/pub/linux/wxxt/source/wxGTK2b1.tgz
|
||||
Source0: ftp://wesley.informatik.uni-freiburg.de/pub/linux/wxxt/source/wxGTK2b1.tgz
|
||||
URL: http://www.freiburg.linux.de/~wxxt/docs.html
|
||||
Packager: Michael Kiefte <mkiefte@gpu.srv.ualberta.ca>
|
||||
Requires: gtk+ >= 1.0.4
|
||||
|
||||
%description
|
||||
wxWindows is a free C++ library for cross-platform GUI development. With wxWindows, you can create applications for different GUIs from the same source code.
|
||||
wxWindows is a free C++ library for cross-platform GUI development. With wxWindows, you can create applications for different GUIs from the same source code. This package also contains a dialog editor.
|
||||
|
||||
%prep
|
||||
%setup -n wxGTK
|
||||
./configure --with-threads
|
||||
./configure --prefix=/usr --with-threads
|
||||
|
||||
%build
|
||||
make src
|
||||
@ -30,5 +30,10 @@ make install
|
||||
|
||||
%files
|
||||
%doc COPYING.LIB INSTALL.txt LICENCE.txt README.txt SYMBOLS.txt TODO.txt
|
||||
/usr/local/include
|
||||
/usr/local/lib
|
||||
/usr/include/wx
|
||||
/usr/lib/wx
|
||||
/usr/lib/libwx_gtk_1_0.a
|
||||
/usr/lib/libwx_gtk_1_0.so
|
||||
/usr/lib/libwx_gtk_1_0.so.1
|
||||
/usr/lib/libwx_gtk_1_0.so.1.99
|
||||
/usr/bin/wx-config
|
||||
|
Loading…
Reference in New Issue
Block a user