#include "wx/dcclient.h"
#include "wx/dcmemory.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// local data
extern bool g_blockEventsOnDrag;
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 3)
+#define NEW_GTK_DND_CODE
+#endif
+#endif
+
+#ifdef NEW_GTK_DND_CODE
+
+wxDropTarget::wxDropTarget()
+{
+}
+
+wxDropTarget::~wxDropTarget()
+{
+}
+
+void wxDropTarget::UnregisterWidget( GtkWidget *widget )
+{
+ if (!widget) return;
+
+ // TODO
+}
+
+void wxDropTarget::RegisterWidget( GtkWidget *widget )
+{
+ if (!widget) return;
+
+ wxString formats;
+ int valid = 0;
+
+ for ( size_t i = 0; i < GetFormatCount(); i++ )
+ {
+ wxDataFormat df = GetFormat( i );
+ switch (df)
+ {
+ case wxDF_TEXT:
+ if (i > 0) formats += ";";
+ formats += "text/plain";
+ valid++;
+ break;
+ case wxDF_FILENAME:
+ if (i > 0) formats += ";";
+ formats += "file:ALL";
+ valid++;
+ break;
+ default:
+ break;
+ }
+ }
+
+ char *str = WXSTRINGCAST formats;
+
+ // TODO
+}
+
+// ----------------------------------------------------------------------------
+// wxTextDropTarget
+// ----------------------------------------------------------------------------
+
+bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) )
+{
+ OnDropText( x, y, (const char*)data );
+ return TRUE;
+}
+
+bool wxTextDropTarget::OnDropText( long x, long y, const char *psz )
+{
+ printf( "Got dropped text: %s.\n", psz );
+ printf( "At x: %d, y: %d.\n", (int)x, (int)y );
+ return TRUE;
+}
+
+size_t wxTextDropTarget::GetFormatCount() const
+{
+ return 1;
+}
+
+wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const
+{
+ return wxDF_TEXT;
+}
+
+// ----------------------------------------------------------------------------
+// wxFileDropTarget
+// ----------------------------------------------------------------------------
+
+bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] )
+{
+ printf( "Got %d dropped files.\n", (int)nFiles );
+ printf( "At x: %d, y: %d.\n", (int)x, (int)y );
+ for (size_t i = 0; i < nFiles; i++)
+ {
+ printf( aszFiles[i] );
+ printf( "\n" );
+ }
+ return TRUE;
+}
+
+bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size )
+{
+ size_t number = 0;
+ char *text = (char*) data;
+ for (size_t i = 0; i < size; i++)
+ if (text[i] == 0) number++;
+
+ if (number == 0) return TRUE;
+
+ char **files = new char*[number];
+
+ text = (char*) data;
+ for (size_t i = 0; i < number; i++)
+ {
+ files[i] = text;
+ int len = strlen( text );
+ text += len+1;
+ }
+
+ bool ret = OnDropFiles( x, y, 1, files );
+
+ free( files );
+
+ return ret;
+}
+
+size_t wxFileDropTarget::GetFormatCount() const
+{
+ return 1;
+}
+
+wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const
+{
+ return wxDF_FILENAME;
+}
+
+//-------------------------------------------------------------------------
+// wxDropSource
+//-------------------------------------------------------------------------
+
+wxDropSource::wxDropSource( wxWindow *win )
+{
+ g_blockEventsOnDrag = TRUE;
+
+ m_window = win;
+ m_widget = win->m_widget;
+ if (win->m_wxwindow) m_widget = win->m_wxwindow;
+
+ m_data = (wxDataObject *) NULL;
+ m_retValue = wxDragCancel;
+
+ m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY );
+ m_goaheadCursor = wxCursor( wxCURSOR_HAND );
+}
+
+wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win )
+{
+ g_blockEventsOnDrag = TRUE;
+
+ m_window = win;
+ m_widget = win->m_widget;
+ if (win->m_wxwindow) m_widget = win->m_wxwindow;
+ m_retValue = wxDragCancel;
+
+ m_data = &data;
+
+ m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY );
+ m_goaheadCursor = wxCursor( wxCURSOR_HAND );
+}
+
+void wxDropSource::SetData( wxDataObject &data )
+{
+ m_data = &data;
+}
+
+wxDropSource::~wxDropSource(void)
+{
+// if (m_data) delete m_data;
+
+ g_blockEventsOnDrag = FALSE;
+}
+
+wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
+{
+ wxASSERT_MSG( m_data, "wxDragSource: no data" );
+
+ if (!m_data) return (wxDragResult) wxDragNone;
+ if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone;
+
+ RegisterWindow();
+
+ // TODO
+
+ UnregisterWindow();
+
+ g_blockEventsOnDrag = FALSE;
+
+ return m_retValue;
+}
+
+void wxDropSource::RegisterWindow(void)
+{
+ if (!m_data) return;
+
+ wxString formats;
+
+ wxDataFormat df = m_data->GetPreferredFormat();
+
+ switch (df)
+ {
+ case wxDF_TEXT:
+ formats += "text/plain";
+ break;
+ case wxDF_FILENAME:
+ formats += "file:ALL";
+ break;
+ default:
+ break;
+ }
+
+ char *str = WXSTRINGCAST formats;
+
+ // TODO
+}
+
+void wxDropSource::UnregisterWindow(void)
+{
+ if (!m_widget) return;
+
+ // TODO
+}
+
+#else
+
// ----------------------------------------------------------------------------
// wxDropTarget
// ----------------------------------------------------------------------------
gtk_signal_disconnect_by_data( GTK_OBJECT(m_widget), (gpointer)this );
}
+
+#endif
+ // NEW_GTK_DND_CODE
+
if (m_parent) m_parent->AddChild( this );
PostCreation();
-
+
return TRUE;
}
void wxFrame::SetClientSize( int const width, int const height )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
-
- int h = height;
- if (m_frameMenuBar) h += wxMENU_HEIGHT;
- if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
- if (m_frameToolBar)
- {
- int y = 0;
- m_frameToolBar->GetSize( (int *) NULL, &y );
- h += y;
- }
- wxWindow::SetClientSize( width, h );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+
+ int h = height;
+ if (m_frameMenuBar) h += wxMENU_HEIGHT;
+ if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
+ if (m_frameToolBar)
+ {
+ int y = 0;
+ m_frameToolBar->GetSize( (int *) NULL, &y );
+ h += y;
+ }
+ wxWindow::SetClientSize( width, h );
}
void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height )
{
- // due to a bug in gtk, x,y are always 0
- // m_x = x;
- // m_y = y;
-
- if ((m_height == height) && (m_width == width) &&
- (m_sizeSet)) return;
- if (!m_wxwindow) return;
-
- m_width = width;
- m_height = height;
- if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
- if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
- if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
- if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
-
- gtk_widget_set_usize( m_widget, m_width, m_height );
-
- // This emulates the new wxMSW behaviour
-
- if (m_frameMenuBar)
- {
- m_frameMenuBar->m_x = 1;
- m_frameMenuBar->m_y = 1;
- m_frameMenuBar->m_width = m_width-2;
- m_frameMenuBar->m_height = wxMENU_HEIGHT-2;
- gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 );
- gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 );
- }
-
- if (m_frameToolBar)
- {
- int y = 0;
- if (m_frameMenuBar) y = wxMENU_HEIGHT;
- int h = m_frameToolBar->m_height;
+ // due to a bug in gtk, x,y are always 0
+ // m_x = x;
+ // m_y = y;
+
+ if ((m_height == height) && (m_width == width) &&
+ (m_sizeSet)) return;
+ if (!m_wxwindow) return;
+
+ m_width = width;
+ m_height = height;
+
+ if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
+ if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
+ if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
+ if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
+
+ wxSizeEvent event( wxSize(m_width,m_height), GetId() );
+ event.SetEventObject( this );
+ ProcessEvent( event );
+
+ gtk_widget_set_usize( m_widget, m_width, m_height );
+
+ // This emulates the new wxMSW behaviour
+
+ if (m_frameMenuBar)
+ {
+ m_frameMenuBar->m_x = 1;
+ m_frameMenuBar->m_y = 1;
+ m_frameMenuBar->m_width = m_width-2;
+ m_frameMenuBar->m_height = wxMENU_HEIGHT-2;
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 );
+ gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 );
+ }
+
+ if (m_frameToolBar)
+ {
+ int y = 0;
+ if (m_frameMenuBar) y = wxMENU_HEIGHT;
+ int h = m_frameToolBar->m_height;
- m_frameToolBar->m_x = 2;
- gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y );
- gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h );
- }
-
- if (m_frameStatusBar)
- {
- // OK, this hurts in the eye, but I don't want to call SetSize()
- // because I don't want to call any non-native functions here.
- m_frameStatusBar->m_x = 0;
- m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT;
- m_frameStatusBar->m_width = m_width;
- m_frameStatusBar->m_height = wxSTATUS_HEIGHT;
- gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT );
- gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT );
- }
-
- m_sizeSet = TRUE;
-
- wxSizeEvent event( wxSize(m_width,m_height), GetId() );
- event.SetEventObject( this );
- ProcessEvent( event );
+ m_frameToolBar->m_x = 2;
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y );
+ gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h );
+ }
+
+ if (m_frameStatusBar)
+ {
+ // OK, this hurts in the eye, but I don't want to call SetSize()
+ // because I don't want to call any non-native functions here.
+ m_frameStatusBar->m_x = 0;
+ m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT;
+ m_frameStatusBar->m_width = m_width;
+ m_frameStatusBar->m_height = wxSTATUS_HEIGHT;
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT );
+ gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT );
+ }
+
+ m_sizeSet = TRUE;
}
void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
-
- if ( GetAutoLayout() )
- Layout();
- else {
- // no child: go out !
- if (!GetChildren()->First())
- return;
-
- // do we have exactly one child?
- wxWindow *child = (wxWindow *) NULL;
- for(wxNode *node = GetChildren()->First(); node; node = node->Next())
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+
+ if (GetAutoLayout())
+ {
+ Layout();
+ }
+ else
{
- wxWindow *win = (wxWindow *)node->Data();
- if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog)
+ // no child: go out !
+ if (!GetChildren()->First()) return;
+
+ // do we have exactly one child?
+ wxWindow *child = (wxWindow *) NULL;
+ for(wxNode *node = GetChildren()->First(); node; node = node->Next())
+ {
+ wxWindow *win = (wxWindow *)node->Data();
+ if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog)
#if 0 // not in m_children anyway ?
- && (win != m_frameMenuBar) &&
- (win != m_frameToolBar) &&
- (win != m_frameStatusBar)
+ && (win != m_frameMenuBar) &&
+ (win != m_frameToolBar) &&
+ (win != m_frameStatusBar)
#endif
- )
- {
- if ( child ) // it's the second one: do nothing
- return;
+ )
+ {
+ // it's the second one: do nothing
+ if (child) return;
+ child = win;
+ }
+ }
- child = win;
- }
+ // yes: set it's size to fill all the frame
+ int client_x, client_y;
+ GetClientSize( &client_x, &client_y );
+ child->SetSize( 1, 1, client_x-2, client_y);
}
-
- // yes: set it's size to fill all the frame
- int client_x, client_y;
- GetClientSize(&client_x, &client_y);
- child->SetSize( 1, 1, client_x-2, client_y);
- }
}
static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
{
- menu->SetInvokingWindow( win );
- wxNode *node = menu->m_items.First();
- while (node)
- {
- wxMenuItem *menuitem = (wxMenuItem*)node->Data();
- if (menuitem->IsSubMenu())
- SetInvokingWindow( menuitem->GetSubMenu(), win );
- node = node->Next();
- }
+ menu->SetInvokingWindow( win );
+ wxNode *node = menu->m_items.First();
+ while (node)
+ {
+ wxMenuItem *menuitem = (wxMenuItem*)node->Data();
+ if (menuitem->IsSubMenu())
+ SetInvokingWindow( menuitem->GetSubMenu(), win );
+ node = node->Next();
+ }
}
void wxFrame::SetMenuBar( wxMenuBar *menuBar )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
- m_frameMenuBar = menuBar;
+ m_frameMenuBar = menuBar;
- if (m_frameMenuBar)
- {
- wxNode *node = m_frameMenuBar->m_menus.First();
- while (node)
+ if (m_frameMenuBar)
{
- wxMenu *menu = (wxMenu*)node->Data();
- SetInvokingWindow( menu, this );
- node = node->Next();
- }
+ wxNode *node = m_frameMenuBar->m_menus.First();
+ while (node)
+ {
+ wxMenu *menu = (wxMenu*)node->Data();
+ SetInvokingWindow( menu, this );
+ node = node->Next();
+ }
- if (m_frameMenuBar->m_parent != this)
- {
- m_frameMenuBar->m_parent = this;
- gtk_myfixed_put( GTK_MYFIXED(m_wxwindow),
- m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
+ if (m_frameMenuBar->m_parent != this)
+ {
+ m_frameMenuBar->m_parent = this;
+ gtk_myfixed_put( GTK_MYFIXED(m_wxwindow),
+ m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
+ }
}
- }
}
wxMenuBar *wxFrame::GetMenuBar(void) const
{
- return m_frameMenuBar;
+ return m_frameMenuBar;
}
wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
+ wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
- m_frameToolBar = OnCreateToolBar( style, id, name );
+ m_frameToolBar = OnCreateToolBar( style, id, name );
- GetChildren()->DeleteObject( m_frameToolBar );
+ GetChildren()->DeleteObject( m_frameToolBar );
- return m_frameToolBar;
+ return m_frameToolBar;
}
wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name )
{
- return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
+ return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
}
wxToolBar *wxFrame::GetToolBar(void) const
{
- return m_frameToolBar;
+ return m_frameToolBar;
}
wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
+ wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
- m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
+ m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
- return m_frameStatusBar;
+ return m_frameStatusBar;
}
wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
{
- wxStatusBar *statusBar = (wxStatusBar *) NULL;
+ wxStatusBar *statusBar = (wxStatusBar *) NULL;
- statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name);
+ statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name);
- // Set the height according to the font and the border size
- wxClientDC dc(statusBar);
- dc.SetFont( *statusBar->GetFont() );
+ // Set the height according to the font and the border size
+ wxClientDC dc(statusBar);
+ dc.SetFont( *statusBar->GetFont() );
- long x, y;
- dc.GetTextExtent( "X", &x, &y );
+ long x, y;
+ dc.GetTextExtent( "X", &x, &y );
- int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
+ int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
- statusBar->SetSize( -1, -1, 100, height );
+ statusBar->SetSize( -1, -1, 100, height );
- statusBar->SetFieldsCount( number );
- return statusBar;
+ statusBar->SetFieldsCount( number );
+ return statusBar;
}
void wxFrame::SetStatusText(const wxString& text, int number)
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
+ wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
- m_frameStatusBar->SetStatusText(text, number);
+ m_frameStatusBar->SetStatusText(text, number);
}
void wxFrame::SetStatusWidths(int n, const int widths_field[] )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
+ wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
- m_frameStatusBar->SetStatusWidths(n, widths_field);
+ m_frameStatusBar->SetStatusWidths(n, widths_field);
}
wxStatusBar *wxFrame::GetStatusBar(void) const
{
- return m_frameStatusBar;
+ return m_frameStatusBar;
}
void wxFrame::SetTitle( const wxString &title )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- m_title = title;
- if (m_title.IsNull()) m_title = "";
- gtk_window_set_title( GTK_WINDOW(m_widget), title );
+ m_title = title;
+ if (m_title.IsNull()) m_title = "";
+ gtk_window_set_title( GTK_WINDOW(m_widget), title );
}
void wxFrame::SetIcon( const wxIcon &icon )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- m_icon = icon;
- if (!icon.Ok()) return;
+ m_icon = icon;
+ if (!icon.Ok()) return;
- wxMask *mask = icon.GetMask();
- GdkBitmap *bm = (GdkBitmap *) NULL;
- if (mask) bm = mask->GetBitmap();
+ wxMask *mask = icon.GetMask();
+ GdkBitmap *bm = (GdkBitmap *) NULL;
+ if (mask) bm = mask->GetBitmap();
- gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
+ gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
}
#include "wx/scrolbar.h"
#include "wx/utils.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// data
#include "wx/slider.h"
#include "wx/utils.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// data
#include "wx/spinbutt.h"
#include "wx/utils.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// data
// ... and put into the upper left hand corner of the table
m_widget = gtk_table_new(bHasHScrollbar ? 2 : 1, 2, FALSE);
- gtk_table_attach(GTK_TABLE(m_widget), m_text, 0, 1, 0, 1,
- GTK_FILL | GTK_EXPAND,
- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
- 0, 0);
+ gtk_table_attach( GTK_TABLE(m_widget), m_text, 0, 1, 0, 1,
+ (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
+ (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
+ 0, 0);
// put the horizontal scrollbar in the lower left hand corner
if (bHasHScrollbar)
{
GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj);
gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2,
- GTK_EXPAND | GTK_FILL,
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
GTK_FILL,
0, 0);
gtk_widget_show(hscrollbar);
GtkWidget *vscrollbar = gtk_vscrollbar_new(GTK_TEXT(m_text)->vadj);
gtk_table_attach(GTK_TABLE(m_widget), vscrollbar, 1, 2, 0, 1,
GTK_FILL,
- GTK_EXPAND | GTK_FILL | GTK_SHRINK,
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK),
0, 0);
gtk_widget_show( vscrollbar );
}
object_class = (GtkObjectClass*) klass;
widget_class = (GtkWidgetClass*) klass;
container_class = (GtkContainerClass*) klass;
-
+
parent_class = gtk_type_class (gtk_container_get_type ());
widget_class->map = gtk_myfixed_map;
GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
+#if (GTK_MINOR_VERSION == 1)
+ gtk_container_set_resize_mode( GTK_CONTAINER(myfixed), GTK_RESIZE_PARENT );
+#endif
+
myfixed->children = NULL;
}
*/
+//-----------------------------------------------------------------------------
+// cond comp
+//-----------------------------------------------------------------------------
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 3)
+#define NEW_GTK_DND_CODE
+#endif
+#endif
+
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
return FALSE;
}
+
+#ifdef NEW_GTK_DND_CODE
+
+#else
+
//-----------------------------------------------------------------------------
// "drop_data_available_event"
//-----------------------------------------------------------------------------
*/
}
+#endif
+ // NEW_GTK_DND_CODE
+
//-----------------------------------------------------------------------------
// InsertChild for wxWindow.
//-----------------------------------------------------------------------------
m_dropTarget->RegisterWidget( widget );
+#ifdef NEW_GTK_DND_CODE
+
+#else
+
gtk_signal_connect( GTK_OBJECT(widget), "drop_data_available_event",
GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this );
+
+#endif
+
}
void wxWindow::DisconnectDnDWidget( GtkWidget *widget )
{
if (!m_dropTarget) return;
+#ifdef NEW_GTK_DND_CODE
+
+#else
+
gtk_signal_disconnect_by_func( GTK_OBJECT(widget),
GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this );
m_dropTarget->UnregisterWidget( widget );
+
+#endif
+
}
GtkWidget* wxWindow::GetConnectWidget()
#include "wx/dcclient.h"
#include "wx/dcmemory.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// local data
extern bool g_blockEventsOnDrag;
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 3)
+#define NEW_GTK_DND_CODE
+#endif
+#endif
+
+#ifdef NEW_GTK_DND_CODE
+
+wxDropTarget::wxDropTarget()
+{
+}
+
+wxDropTarget::~wxDropTarget()
+{
+}
+
+void wxDropTarget::UnregisterWidget( GtkWidget *widget )
+{
+ if (!widget) return;
+
+ // TODO
+}
+
+void wxDropTarget::RegisterWidget( GtkWidget *widget )
+{
+ if (!widget) return;
+
+ wxString formats;
+ int valid = 0;
+
+ for ( size_t i = 0; i < GetFormatCount(); i++ )
+ {
+ wxDataFormat df = GetFormat( i );
+ switch (df)
+ {
+ case wxDF_TEXT:
+ if (i > 0) formats += ";";
+ formats += "text/plain";
+ valid++;
+ break;
+ case wxDF_FILENAME:
+ if (i > 0) formats += ";";
+ formats += "file:ALL";
+ valid++;
+ break;
+ default:
+ break;
+ }
+ }
+
+ char *str = WXSTRINGCAST formats;
+
+ // TODO
+}
+
+// ----------------------------------------------------------------------------
+// wxTextDropTarget
+// ----------------------------------------------------------------------------
+
+bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) )
+{
+ OnDropText( x, y, (const char*)data );
+ return TRUE;
+}
+
+bool wxTextDropTarget::OnDropText( long x, long y, const char *psz )
+{
+ printf( "Got dropped text: %s.\n", psz );
+ printf( "At x: %d, y: %d.\n", (int)x, (int)y );
+ return TRUE;
+}
+
+size_t wxTextDropTarget::GetFormatCount() const
+{
+ return 1;
+}
+
+wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const
+{
+ return wxDF_TEXT;
+}
+
+// ----------------------------------------------------------------------------
+// wxFileDropTarget
+// ----------------------------------------------------------------------------
+
+bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] )
+{
+ printf( "Got %d dropped files.\n", (int)nFiles );
+ printf( "At x: %d, y: %d.\n", (int)x, (int)y );
+ for (size_t i = 0; i < nFiles; i++)
+ {
+ printf( aszFiles[i] );
+ printf( "\n" );
+ }
+ return TRUE;
+}
+
+bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size )
+{
+ size_t number = 0;
+ char *text = (char*) data;
+ for (size_t i = 0; i < size; i++)
+ if (text[i] == 0) number++;
+
+ if (number == 0) return TRUE;
+
+ char **files = new char*[number];
+
+ text = (char*) data;
+ for (size_t i = 0; i < number; i++)
+ {
+ files[i] = text;
+ int len = strlen( text );
+ text += len+1;
+ }
+
+ bool ret = OnDropFiles( x, y, 1, files );
+
+ free( files );
+
+ return ret;
+}
+
+size_t wxFileDropTarget::GetFormatCount() const
+{
+ return 1;
+}
+
+wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const
+{
+ return wxDF_FILENAME;
+}
+
+//-------------------------------------------------------------------------
+// wxDropSource
+//-------------------------------------------------------------------------
+
+wxDropSource::wxDropSource( wxWindow *win )
+{
+ g_blockEventsOnDrag = TRUE;
+
+ m_window = win;
+ m_widget = win->m_widget;
+ if (win->m_wxwindow) m_widget = win->m_wxwindow;
+
+ m_data = (wxDataObject *) NULL;
+ m_retValue = wxDragCancel;
+
+ m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY );
+ m_goaheadCursor = wxCursor( wxCURSOR_HAND );
+}
+
+wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win )
+{
+ g_blockEventsOnDrag = TRUE;
+
+ m_window = win;
+ m_widget = win->m_widget;
+ if (win->m_wxwindow) m_widget = win->m_wxwindow;
+ m_retValue = wxDragCancel;
+
+ m_data = &data;
+
+ m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY );
+ m_goaheadCursor = wxCursor( wxCURSOR_HAND );
+}
+
+void wxDropSource::SetData( wxDataObject &data )
+{
+ m_data = &data;
+}
+
+wxDropSource::~wxDropSource(void)
+{
+// if (m_data) delete m_data;
+
+ g_blockEventsOnDrag = FALSE;
+}
+
+wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) )
+{
+ wxASSERT_MSG( m_data, "wxDragSource: no data" );
+
+ if (!m_data) return (wxDragResult) wxDragNone;
+ if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone;
+
+ RegisterWindow();
+
+ // TODO
+
+ UnregisterWindow();
+
+ g_blockEventsOnDrag = FALSE;
+
+ return m_retValue;
+}
+
+void wxDropSource::RegisterWindow(void)
+{
+ if (!m_data) return;
+
+ wxString formats;
+
+ wxDataFormat df = m_data->GetPreferredFormat();
+
+ switch (df)
+ {
+ case wxDF_TEXT:
+ formats += "text/plain";
+ break;
+ case wxDF_FILENAME:
+ formats += "file:ALL";
+ break;
+ default:
+ break;
+ }
+
+ char *str = WXSTRINGCAST formats;
+
+ // TODO
+}
+
+void wxDropSource::UnregisterWindow(void)
+{
+ if (!m_widget) return;
+
+ // TODO
+}
+
+#else
+
// ----------------------------------------------------------------------------
// wxDropTarget
// ----------------------------------------------------------------------------
gtk_signal_disconnect_by_data( GTK_OBJECT(m_widget), (gpointer)this );
}
+
+#endif
+ // NEW_GTK_DND_CODE
+
if (m_parent) m_parent->AddChild( this );
PostCreation();
-
+
return TRUE;
}
void wxFrame::SetClientSize( int const width, int const height )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
-
- int h = height;
- if (m_frameMenuBar) h += wxMENU_HEIGHT;
- if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
- if (m_frameToolBar)
- {
- int y = 0;
- m_frameToolBar->GetSize( (int *) NULL, &y );
- h += y;
- }
- wxWindow::SetClientSize( width, h );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+
+ int h = height;
+ if (m_frameMenuBar) h += wxMENU_HEIGHT;
+ if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
+ if (m_frameToolBar)
+ {
+ int y = 0;
+ m_frameToolBar->GetSize( (int *) NULL, &y );
+ h += y;
+ }
+ wxWindow::SetClientSize( width, h );
}
void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height )
{
- // due to a bug in gtk, x,y are always 0
- // m_x = x;
- // m_y = y;
-
- if ((m_height == height) && (m_width == width) &&
- (m_sizeSet)) return;
- if (!m_wxwindow) return;
-
- m_width = width;
- m_height = height;
- if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
- if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
- if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
- if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
-
- gtk_widget_set_usize( m_widget, m_width, m_height );
-
- // This emulates the new wxMSW behaviour
-
- if (m_frameMenuBar)
- {
- m_frameMenuBar->m_x = 1;
- m_frameMenuBar->m_y = 1;
- m_frameMenuBar->m_width = m_width-2;
- m_frameMenuBar->m_height = wxMENU_HEIGHT-2;
- gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 );
- gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 );
- }
-
- if (m_frameToolBar)
- {
- int y = 0;
- if (m_frameMenuBar) y = wxMENU_HEIGHT;
- int h = m_frameToolBar->m_height;
+ // due to a bug in gtk, x,y are always 0
+ // m_x = x;
+ // m_y = y;
+
+ if ((m_height == height) && (m_width == width) &&
+ (m_sizeSet)) return;
+ if (!m_wxwindow) return;
+
+ m_width = width;
+ m_height = height;
+
+ if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth;
+ if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
+ if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth;
+ if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight;
+
+ wxSizeEvent event( wxSize(m_width,m_height), GetId() );
+ event.SetEventObject( this );
+ ProcessEvent( event );
+
+ gtk_widget_set_usize( m_widget, m_width, m_height );
+
+ // This emulates the new wxMSW behaviour
+
+ if (m_frameMenuBar)
+ {
+ m_frameMenuBar->m_x = 1;
+ m_frameMenuBar->m_y = 1;
+ m_frameMenuBar->m_width = m_width-2;
+ m_frameMenuBar->m_height = wxMENU_HEIGHT-2;
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 );
+ gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 );
+ }
+
+ if (m_frameToolBar)
+ {
+ int y = 0;
+ if (m_frameMenuBar) y = wxMENU_HEIGHT;
+ int h = m_frameToolBar->m_height;
- m_frameToolBar->m_x = 2;
- gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y );
- gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h );
- }
-
- if (m_frameStatusBar)
- {
- // OK, this hurts in the eye, but I don't want to call SetSize()
- // because I don't want to call any non-native functions here.
- m_frameStatusBar->m_x = 0;
- m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT;
- m_frameStatusBar->m_width = m_width;
- m_frameStatusBar->m_height = wxSTATUS_HEIGHT;
- gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT );
- gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT );
- }
-
- m_sizeSet = TRUE;
-
- wxSizeEvent event( wxSize(m_width,m_height), GetId() );
- event.SetEventObject( this );
- ProcessEvent( event );
+ m_frameToolBar->m_x = 2;
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y );
+ gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h );
+ }
+
+ if (m_frameStatusBar)
+ {
+ // OK, this hurts in the eye, but I don't want to call SetSize()
+ // because I don't want to call any non-native functions here.
+ m_frameStatusBar->m_x = 0;
+ m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT;
+ m_frameStatusBar->m_width = m_width;
+ m_frameStatusBar->m_height = wxSTATUS_HEIGHT;
+ gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT );
+ gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT );
+ }
+
+ m_sizeSet = TRUE;
}
void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
-
- if ( GetAutoLayout() )
- Layout();
- else {
- // no child: go out !
- if (!GetChildren()->First())
- return;
-
- // do we have exactly one child?
- wxWindow *child = (wxWindow *) NULL;
- for(wxNode *node = GetChildren()->First(); node; node = node->Next())
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+
+ if (GetAutoLayout())
+ {
+ Layout();
+ }
+ else
{
- wxWindow *win = (wxWindow *)node->Data();
- if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog)
+ // no child: go out !
+ if (!GetChildren()->First()) return;
+
+ // do we have exactly one child?
+ wxWindow *child = (wxWindow *) NULL;
+ for(wxNode *node = GetChildren()->First(); node; node = node->Next())
+ {
+ wxWindow *win = (wxWindow *)node->Data();
+ if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog)
#if 0 // not in m_children anyway ?
- && (win != m_frameMenuBar) &&
- (win != m_frameToolBar) &&
- (win != m_frameStatusBar)
+ && (win != m_frameMenuBar) &&
+ (win != m_frameToolBar) &&
+ (win != m_frameStatusBar)
#endif
- )
- {
- if ( child ) // it's the second one: do nothing
- return;
+ )
+ {
+ // it's the second one: do nothing
+ if (child) return;
+ child = win;
+ }
+ }
- child = win;
- }
+ // yes: set it's size to fill all the frame
+ int client_x, client_y;
+ GetClientSize( &client_x, &client_y );
+ child->SetSize( 1, 1, client_x-2, client_y);
}
-
- // yes: set it's size to fill all the frame
- int client_x, client_y;
- GetClientSize(&client_x, &client_y);
- child->SetSize( 1, 1, client_x-2, client_y);
- }
}
static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
{
- menu->SetInvokingWindow( win );
- wxNode *node = menu->m_items.First();
- while (node)
- {
- wxMenuItem *menuitem = (wxMenuItem*)node->Data();
- if (menuitem->IsSubMenu())
- SetInvokingWindow( menuitem->GetSubMenu(), win );
- node = node->Next();
- }
+ menu->SetInvokingWindow( win );
+ wxNode *node = menu->m_items.First();
+ while (node)
+ {
+ wxMenuItem *menuitem = (wxMenuItem*)node->Data();
+ if (menuitem->IsSubMenu())
+ SetInvokingWindow( menuitem->GetSubMenu(), win );
+ node = node->Next();
+ }
}
void wxFrame::SetMenuBar( wxMenuBar *menuBar )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
- m_frameMenuBar = menuBar;
+ m_frameMenuBar = menuBar;
- if (m_frameMenuBar)
- {
- wxNode *node = m_frameMenuBar->m_menus.First();
- while (node)
+ if (m_frameMenuBar)
{
- wxMenu *menu = (wxMenu*)node->Data();
- SetInvokingWindow( menu, this );
- node = node->Next();
- }
+ wxNode *node = m_frameMenuBar->m_menus.First();
+ while (node)
+ {
+ wxMenu *menu = (wxMenu*)node->Data();
+ SetInvokingWindow( menu, this );
+ node = node->Next();
+ }
- if (m_frameMenuBar->m_parent != this)
- {
- m_frameMenuBar->m_parent = this;
- gtk_myfixed_put( GTK_MYFIXED(m_wxwindow),
- m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
+ if (m_frameMenuBar->m_parent != this)
+ {
+ m_frameMenuBar->m_parent = this;
+ gtk_myfixed_put( GTK_MYFIXED(m_wxwindow),
+ m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y );
+ }
}
- }
}
wxMenuBar *wxFrame::GetMenuBar(void) const
{
- return m_frameMenuBar;
+ return m_frameMenuBar;
}
wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
+ wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
- m_frameToolBar = OnCreateToolBar( style, id, name );
+ m_frameToolBar = OnCreateToolBar( style, id, name );
- GetChildren()->DeleteObject( m_frameToolBar );
+ GetChildren()->DeleteObject( m_frameToolBar );
- return m_frameToolBar;
+ return m_frameToolBar;
}
wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name )
{
- return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
+ return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name );
}
wxToolBar *wxFrame::GetToolBar(void) const
{
- return m_frameToolBar;
+ return m_frameToolBar;
}
wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
+ wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
- m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
+ m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
- return m_frameStatusBar;
+ return m_frameStatusBar;
}
wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
{
- wxStatusBar *statusBar = (wxStatusBar *) NULL;
+ wxStatusBar *statusBar = (wxStatusBar *) NULL;
- statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name);
+ statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name);
- // Set the height according to the font and the border size
- wxClientDC dc(statusBar);
- dc.SetFont( *statusBar->GetFont() );
+ // Set the height according to the font and the border size
+ wxClientDC dc(statusBar);
+ dc.SetFont( *statusBar->GetFont() );
- long x, y;
- dc.GetTextExtent( "X", &x, &y );
+ long x, y;
+ dc.GetTextExtent( "X", &x, &y );
- int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
+ int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY());
- statusBar->SetSize( -1, -1, 100, height );
+ statusBar->SetSize( -1, -1, 100, height );
- statusBar->SetFieldsCount( number );
- return statusBar;
+ statusBar->SetFieldsCount( number );
+ return statusBar;
}
void wxFrame::SetStatusText(const wxString& text, int number)
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
+ wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
- m_frameStatusBar->SetStatusText(text, number);
+ m_frameStatusBar->SetStatusText(text, number);
}
void wxFrame::SetStatusWidths(int n, const int widths_field[] )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
+ wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
- m_frameStatusBar->SetStatusWidths(n, widths_field);
+ m_frameStatusBar->SetStatusWidths(n, widths_field);
}
wxStatusBar *wxFrame::GetStatusBar(void) const
{
- return m_frameStatusBar;
+ return m_frameStatusBar;
}
void wxFrame::SetTitle( const wxString &title )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- m_title = title;
- if (m_title.IsNull()) m_title = "";
- gtk_window_set_title( GTK_WINDOW(m_widget), title );
+ m_title = title;
+ if (m_title.IsNull()) m_title = "";
+ gtk_window_set_title( GTK_WINDOW(m_widget), title );
}
void wxFrame::SetIcon( const wxIcon &icon )
{
- wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+ wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
- m_icon = icon;
- if (!icon.Ok()) return;
+ m_icon = icon;
+ if (!icon.Ok()) return;
- wxMask *mask = icon.GetMask();
- GdkBitmap *bm = (GdkBitmap *) NULL;
- if (mask) bm = mask->GetBitmap();
+ wxMask *mask = icon.GetMask();
+ GdkBitmap *bm = (GdkBitmap *) NULL;
+ if (mask) bm = mask->GetBitmap();
- gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
+ gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm );
}
#include "wx/scrolbar.h"
#include "wx/utils.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// data
#include "wx/slider.h"
#include "wx/utils.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// data
#include "wx/spinbutt.h"
#include "wx/utils.h"
+#include <math.h>
//-----------------------------------------------------------------------------
// data
// ... and put into the upper left hand corner of the table
m_widget = gtk_table_new(bHasHScrollbar ? 2 : 1, 2, FALSE);
- gtk_table_attach(GTK_TABLE(m_widget), m_text, 0, 1, 0, 1,
- GTK_FILL | GTK_EXPAND,
- GTK_FILL | GTK_EXPAND | GTK_SHRINK,
- 0, 0);
+ gtk_table_attach( GTK_TABLE(m_widget), m_text, 0, 1, 0, 1,
+ (GtkAttachOptions)(GTK_FILL | GTK_EXPAND),
+ (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK),
+ 0, 0);
// put the horizontal scrollbar in the lower left hand corner
if (bHasHScrollbar)
{
GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj);
gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2,
- GTK_EXPAND | GTK_FILL,
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
GTK_FILL,
0, 0);
gtk_widget_show(hscrollbar);
GtkWidget *vscrollbar = gtk_vscrollbar_new(GTK_TEXT(m_text)->vadj);
gtk_table_attach(GTK_TABLE(m_widget), vscrollbar, 1, 2, 0, 1,
GTK_FILL,
- GTK_EXPAND | GTK_FILL | GTK_SHRINK,
+ (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK),
0, 0);
gtk_widget_show( vscrollbar );
}
object_class = (GtkObjectClass*) klass;
widget_class = (GtkWidgetClass*) klass;
container_class = (GtkContainerClass*) klass;
-
+
parent_class = gtk_type_class (gtk_container_get_type ());
widget_class->map = gtk_myfixed_map;
GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW);
GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC);
+#if (GTK_MINOR_VERSION == 1)
+ gtk_container_set_resize_mode( GTK_CONTAINER(myfixed), GTK_RESIZE_PARENT );
+#endif
+
myfixed->children = NULL;
}
*/
+//-----------------------------------------------------------------------------
+// cond comp
+//-----------------------------------------------------------------------------
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 3)
+#define NEW_GTK_DND_CODE
+#endif
+#endif
+
//-----------------------------------------------------------------------------
// data
//-----------------------------------------------------------------------------
return FALSE;
}
+
+#ifdef NEW_GTK_DND_CODE
+
+#else
+
//-----------------------------------------------------------------------------
// "drop_data_available_event"
//-----------------------------------------------------------------------------
*/
}
+#endif
+ // NEW_GTK_DND_CODE
+
//-----------------------------------------------------------------------------
// InsertChild for wxWindow.
//-----------------------------------------------------------------------------
m_dropTarget->RegisterWidget( widget );
+#ifdef NEW_GTK_DND_CODE
+
+#else
+
gtk_signal_connect( GTK_OBJECT(widget), "drop_data_available_event",
GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this );
+
+#endif
+
}
void wxWindow::DisconnectDnDWidget( GtkWidget *widget )
{
if (!m_dropTarget) return;
+#ifdef NEW_GTK_DND_CODE
+
+#else
+
gtk_signal_disconnect_by_func( GTK_OBJECT(widget),
GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this );
m_dropTarget->UnregisterWidget( widget );
+
+#endif
+
}
GtkWidget* wxWindow::GetConnectWidget()