/* Stand-ins for GDK types */
typedef gulong GdkAtom;
+typedef struct _GdkVisual GdkVisual;
typedef struct _GdkColor GdkColor;
typedef struct _GdkColormap GdkColormap;
typedef struct _GdkFont GdkFont;
typedef struct _GtkToolbar GtkToolbar;
typedef struct _GtkNotebook GtkNotebook;
typedef struct _GtkNotebookPage GtkNotebookPage;
-
#endif
-
#endif
// _WX_DEFS_H_
wxBrush *m_hilightBrush;
wxImageList *m_imageListNormal,
*m_imageListState;
+ int m_dragCount;
// the common part of all ctors
void Init();
extern wxApp *wxTheApp;
+extern GdkVisual *wxVisualSetByExternal;
+extern GdkColormap *wxColormapSetByExternal;
+
//-----------------------------------------------------------------------------
// global functions
//-----------------------------------------------------------------------------
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; }
+
+ /* 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();
- virtual bool OnInit(void);
- virtual bool OnInitGui(void);
- virtual int OnRun(void);
- virtual int OnExit(void);
+ virtual bool OnInit();
+ virtual bool OnInitGui();
+ virtual int OnRun();
+ virtual int OnExit();
- wxWindow *GetTopWindow(void);
+ 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)
// 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;
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(); }
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);
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
//-----------------------------------------------------------------------------
extern const char *wxFrameNameStr;
extern wxList wxTopLevelWindows;
+//-----------------------------------------------------------------------------
+// global function
+//-----------------------------------------------------------------------------
+
+wxWindow* wxGetActiveWindow();
+
//-----------------------------------------------------------------------------
// classes
//-----------------------------------------------------------------------------
extern wxApp *wxTheApp;
+extern GdkVisual *wxVisualSetByExternal;
+extern GdkColormap *wxColormapSetByExternal;
+
//-----------------------------------------------------------------------------
// global functions
//-----------------------------------------------------------------------------
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; }
+
+ /* 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();
- virtual bool OnInit(void);
- virtual bool OnInitGui(void);
- virtual int OnRun(void);
- virtual int OnExit(void);
+ virtual bool OnInit();
+ virtual bool OnInitGui();
+ virtual int OnRun();
+ virtual int OnExit();
- wxWindow *GetTopWindow(void);
+ 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)
// 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;
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(); }
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);
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
//-----------------------------------------------------------------------------
extern const char *wxFrameNameStr;
extern wxList wxTopLevelWindows;
+//-----------------------------------------------------------------------------
+// global function
+//-----------------------------------------------------------------------------
+
+wxWindow* wxGetActiveWindow();
+
//-----------------------------------------------------------------------------
// classes
//-----------------------------------------------------------------------------
bool err_occured;
wxList recordSets; // Record sets: Added by JACS
-
+
public:
wxDatabase(void);
~wxDatabase(void);
/* 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)
class CeditorDlg;
class CparameterDlg;
+#ifdef __WXGTK__
+const char paramFilename[] = "../database.cfg";
+#else
const char paramFilename[] = "database.cfg";
+#endif
/*
}
/*
- * REading the image data
+ * Reading the image data
*/
fseek(file, offset, SEEK_SET);
data = ptr;
* 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.
// 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
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));
}
{
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;
{
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;
wxExtHelpController::wxExtHelpController(void)
{
- m_MapList = NULL;
+ m_MapList = (wxList*) NULL;
m_BrowserName = WXEXTHELP_DEFAULTBROWSER;
m_BrowserIsNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE;
m_NumOfEntries = 0;
node = m_MapList->First();
}
delete m_MapList;
- m_MapList = NULL;
+ m_MapList = (wxList*) NULL;
}
}
m_imageListNormal =
m_imageListState = (wxImageList *) NULL;
+
+ m_dragCount = 0;
}
bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
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
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 (IsExposed( exposed_x, exposed_y, 10000, m_lineHeight+4 )) // 10000 = very much
+ {
+ int startX = horizX;
+ int endX = horizX + 10;
- if (!item->HasChildren()) endX += 20;
+ if (!item->HasChildren()) endX += 20;
- dc.DrawLine( startX, y, endX, y );
+ 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->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 ) );
+ if (item->HasHilight())
+ {
+ dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
- dc.SetBrush( *m_hilightBrush );
+ dc.SetBrush( *m_hilightBrush );
- if (m_hasFocus)
- dc.SetPen( *wxBLACK_PEN );
- else
- dc.SetPen( *wxTRANSPARENT_PEN );
+ if (m_hasFocus)
+ dc.SetPen( *wxBLACK_PEN );
+ else
+ dc.SetPen( *wxTRANSPARENT_PEN );
- PaintItem(item, dc);
+ PaintItem(item, dc);
- dc.SetPen( *wxBLACK_PEN );
- dc.SetTextForeground( *wxBLACK );
- dc.SetBrush( *wxWHITE_BRUSH );
- }
- else
- {
- dc.SetBrush( *wxWHITE_BRUSH );
- dc.SetPen( *wxTRANSPARENT_PEN );
+ dc.SetPen( *wxBLACK_PEN );
+ dc.SetTextForeground( *wxBLACK );
+ dc.SetBrush( *wxWHITE_BRUSH );
+ }
+ else
+ {
+ dc.SetBrush( *wxWHITE_BRUSH );
+ dc.SetPen( *wxTRANSPARENT_PEN );
- PaintItem(item, dc);
+ PaintItem(item, dc);
- dc.SetPen( *wxBLACK_PEN );
+ 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;
+ if (item->IsExpanded())
+ {
+ int semiOldY = y;
- PaintLevel( 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;
+ 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 );
- }
+ /* 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 );
+ }
}
// -----------------------------------------------------------------------------
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 )
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 );
-
- 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 );
+ 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 );
}
#include <ctype.h>
+#ifdef __WXDEBUG__
+#ifdef NULL
+#undef NULL
+#endif
+#define NULL ((void*)0L)
+#endif
+
//-----------------------------------------------------------------------------
// wxAcceleratorTable
//-----------------------------------------------------------------------------
extern wxList wxPendingDelete;
extern wxResourceCache *wxTheResourceCache;
+GdkVisual *wxVisualSetByExternal = (GdkVisual*) NULL;
+GdkColormap *wxColormapSetByExternal = (GdkColormap*) NULL;
+
unsigned char g_palette[64*3] =
{
0x0, 0x0, 0x0,
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;
}
void wxApp::CommonInit(void)
{
-
-/*
-#if wxUSE_RESOURCES
- (void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion);
-#endif
-*/
wxSystemSettings::Init();
wxTheFontNameDirectory = new wxFontNameDirectory;
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
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 );
-
- wxApp::CommonInit();
-
wxModule::RegisterModules();
if (!wxModule::InitializeModules()) return FALSE;
+
+ if (!wxTheApp->InitVisual()) return 0;
- wxTheApp->OnInitGui();
+ wxApp::CommonInit();
+
+ if (!wxTheApp->OnInitGui()) return 0;
// Here frames insert themselves automatically
// into wxTopLevelWindows by getting created
#endif
- wxLog *oldLog = wxLog::SetActiveTarget( NULL );
+ wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL );
if (oldLog) delete oldLog;
return retValue;
}
-//-----------------------------------------------------------------------------
-
{
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 );
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 );
#pragma interface
#endif
-
#include "wx/defs.h"
#if wxUSE_POSTSCRIPT
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 };
/*
* Shaped Windows
*/
-static GdkWindow *root_win = NULL;
+static GdkWindow *root_win = (GdkWindow*) NULL;
typedef struct _cursoroffset {gint x,y;} CursorOffset;
(GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK),
- NULL, NULL, 0);
+ (GdkWindow*)NULL,
+ (GdkCursor*) NULL, 0);
}
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 );
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 */
#include "gtk/gtk.h"
#include "wx/gtk/win_gtk.h"
-
//-----------------------------------------------------------------------------
// "clicked"
//-----------------------------------------------------------------------------
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)
{
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifdef __GNUG__
#pragma implementation "radiobox.h"
#endif
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;
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 );
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();
x += max_len + 2;
}
- res.y -= 3;
- res.x = x-2;
+ res.x = x+4;
+ res.y += 9;
}
else
{
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();
{
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;
}
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifdef __GNUG__
#pragma implementation "region.h"
#endif
#include "gdk/gdk.h"
#include "gtk/gtk.h"
+#ifdef __WXDEBUG__
+#ifdef NULL
+#undef NULL
+#endif
+#define NULL ((void*)0L)
+#endif
+
//-----------------------------------------------------------------------------
// wxRegion
//-----------------------------------------------------------------------------
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();
+ }
}
//-----------------------------------------------------------------------------
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)
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);
}
//-----------------------------------------------------------------------------
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;
}
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 ||
}
else
{
- char *text = NULL;
+ char *text = (char*) NULL;
gint len = 0;
if (m_windowStyle & wxTE_MULTILINE)
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;
}
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;
}
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) );
}
//--------------------------------------------------------------------
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);
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()
#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
#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__
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)
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
//------------------------------------------------------------------------
{
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());
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 )
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;
}
#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
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);
// 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);
#include "wx/file.h"
#include "wx/wave.h"
+//-----------------------------------------------------------------
+// wxWave
+//-----------------------------------------------------------------
wxWave::wxWave()
: m_waveLength(0), m_isResource(FALSE), m_waveData(NULL)
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
-
- return (m_waveData ? TRUE : FALSE);
- }
- else
- {
- m_isResource = FALSE;
+ if (isResource)
+ {
+ // todo
+ 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);
-
-
- close(dev);
- return TRUE;
-
+ 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;
}
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
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
child->m_height );
}
+//-----------------------------------------------------------------------------
+// global functions
+//-----------------------------------------------------------------------------
+
+wxWindow* wxGetActiveWindow()
+{
+ return g_focusWindow;
+}
+
//-----------------------------------------------------------------------------
// wxWindow
//-----------------------------------------------------------------------------
#include <ctype.h>
+#ifdef __WXDEBUG__
+#ifdef NULL
+#undef NULL
+#endif
+#define NULL ((void*)0L)
+#endif
+
//-----------------------------------------------------------------------------
// wxAcceleratorTable
//-----------------------------------------------------------------------------
extern wxList wxPendingDelete;
extern wxResourceCache *wxTheResourceCache;
+GdkVisual *wxVisualSetByExternal = (GdkVisual*) NULL;
+GdkColormap *wxColormapSetByExternal = (GdkColormap*) NULL;
+
unsigned char g_palette[64*3] =
{
0x0, 0x0, 0x0,
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;
}
void wxApp::CommonInit(void)
{
-
-/*
-#if wxUSE_RESOURCES
- (void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion);
-#endif
-*/
wxSystemSettings::Init();
wxTheFontNameDirectory = new wxFontNameDirectory;
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
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 );
-
- wxApp::CommonInit();
-
wxModule::RegisterModules();
if (!wxModule::InitializeModules()) return FALSE;
+
+ if (!wxTheApp->InitVisual()) return 0;
- wxTheApp->OnInitGui();
+ wxApp::CommonInit();
+
+ if (!wxTheApp->OnInitGui()) return 0;
// Here frames insert themselves automatically
// into wxTopLevelWindows by getting created
#endif
- wxLog *oldLog = wxLog::SetActiveTarget( NULL );
+ wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL );
if (oldLog) delete oldLog;
return retValue;
}
-//-----------------------------------------------------------------------------
-
{
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 );
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 );
#pragma interface
#endif
-
#include "wx/defs.h"
#if wxUSE_POSTSCRIPT
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 };
/*
* Shaped Windows
*/
-static GdkWindow *root_win = NULL;
+static GdkWindow *root_win = (GdkWindow*) NULL;
typedef struct _cursoroffset {gint x,y;} CursorOffset;
(GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK),
- NULL, NULL, 0);
+ (GdkWindow*)NULL,
+ (GdkCursor*) NULL, 0);
}
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 );
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 */
#include "gtk/gtk.h"
#include "wx/gtk/win_gtk.h"
-
//-----------------------------------------------------------------------------
// "clicked"
//-----------------------------------------------------------------------------
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)
{
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifdef __GNUG__
#pragma implementation "radiobox.h"
#endif
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;
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 );
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();
x += max_len + 2;
}
- res.y -= 3;
- res.x = x-2;
+ res.x = x+4;
+ res.y += 9;
}
else
{
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();
{
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;
}
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
#ifdef __GNUG__
#pragma implementation "region.h"
#endif
#include "gdk/gdk.h"
#include "gtk/gtk.h"
+#ifdef __WXDEBUG__
+#ifdef NULL
+#undef NULL
+#endif
+#define NULL ((void*)0L)
+#endif
+
//-----------------------------------------------------------------------------
// wxRegion
//-----------------------------------------------------------------------------
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();
+ }
}
//-----------------------------------------------------------------------------
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)
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);
}
//-----------------------------------------------------------------------------
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;
}
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 ||
}
else
{
- char *text = NULL;
+ char *text = (char*) NULL;
gint len = 0;
if (m_windowStyle & wxTE_MULTILINE)
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;
}
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;
}
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) );
}
//--------------------------------------------------------------------
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);
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()
#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
#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__
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)
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
//------------------------------------------------------------------------
{
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());
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 )
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;
}
#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
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);
// 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);
#include "wx/file.h"
#include "wx/wave.h"
+//-----------------------------------------------------------------
+// wxWave
+//-----------------------------------------------------------------
wxWave::wxWave()
: m_waveLength(0), m_isResource(FALSE), m_waveData(NULL)
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
-
- return (m_waveData ? TRUE : FALSE);
- }
- else
- {
- m_isResource = FALSE;
+ if (isResource)
+ {
+ // todo
+ 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);
-
-
- close(dev);
- return TRUE;
-
+ 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;
}
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
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
child->m_height );
}
+//-----------------------------------------------------------------------------
+// global functions
+//-----------------------------------------------------------------------------
+
+wxWindow* wxGetActiveWindow()
+{
+ return g_focusWindow;
+}
+
//-----------------------------------------------------------------------------
// wxWindow
//-----------------------------------------------------------------------------
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 }
};
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]";
+++ /dev/null
-include ../../setup/general/makedirs
Linux
linux-gnu
linux
+Test.h
+Test.wxr
+dialog.h
+dialog.wxr
\ No newline at end of file
-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
+++ /dev/null
-# 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
#
-# wGLCanvas source makefile for Unix
+# wxGLCanvas source makefile for Unix
#
# Copyright 1998, Robert Roebling
#
# define library name
LIB_TARGET=wx_opengl_gtk
-LIB_MAJOR=0
-LIB_MINOR=1
+LIB_MAJOR=1
+LIB_MINOR=0
# define library sources
#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
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( visual_info != NULL, "Couldn't choose visual for OpenGl" );
-
- m_glContext = glXCreateContext( display, visual_info, None, GL_TRUE );
+ wxCHECK_RET( g_visual_info != NULL, "invalid visual for OpenGl" );
+
+ m_glContext = glXCreateContext( GDK_DISPLAY(), g_visual_info, None, GL_TRUE );
- wxCHECK_RET( m_glContext != NULL, "Couldn't create OpenGl context" );
+ 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()
wxPalette wxGLContext::CreateDefaultPalette()
{
- return wxNullPalette;
+ return wxNullPalette;
}
//---------------------------------------------------------------------------
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);
-
- 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);
- }
+ int width, height;
+ GetClientSize(& width, & height);
+
+ 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);
+ }
}
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()
+{
+}
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
%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