minimal/Makefile
mobile/Makefile
mobile/wxedit/Makefile
+ mobile/styles/Makefile
newgrid/Makefile
notebook/Makefile
png/Makefile
minimal/Makefile
mobile/Makefile
mobile/wxedit/Makefile
+ mobile/styles/Makefile
newgrid/Makefile
notebook/Makefile
png/Makefile
minimal/Makefile
mobile/Makefile
mobile/wxedit/Makefile
+ mobile/styles/Makefile
newgrid/Makefile
notebook/Makefile
png/Makefile
all:
cd wxedit && $(MAKE)
+ cd styles && $(MAKE)
clean:
cd wxedit && $(MAKE) clean
+ cd styles && $(MAKE) clean
--- /dev/null
+#
+# File: makefile
+# Author: Robert Roebling
+# Created: 2002
+# Updated:
+# Copyright: (c) 2002 Robert Roebling
+#
+# "%W% %G%"
+#
+# Makefile for wxedit
+
+top_srcdir = @top_srcdir@/..
+top_builddir = ../../..
+program_dir = samples/mobile/styles
+
+PROGRAM=styles
+
+DATAFILES=marble.jpg
+
+OBJECTS =$(PROGRAM).o
+DEPFILES=$(PROGRAM).d
+
+include ../../../src/makeprog.env
+
+@IF_GNU_MAKE@-include $(DEPFILES)
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: styles.cpp
+// Author: Robert Roebling
+// Created: 04/07/02
+// Copyright:
+/////////////////////////////////////////////////////////////////////////////
+
+#ifdef __GNUG__
+ #pragma implementation "styles.cpp"
+#endif
+
+// For compilers that support precompilation
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+// Include private headers
+#include "styles.h"
+
+//------------------------------------------------------------------------------
+// MyFrame
+//------------------------------------------------------------------------------
+
+BEGIN_EVENT_TABLE(MyFrame,wxFrame)
+ EVT_MENU(ID_ABOUT, MyFrame::OnAbout)
+ EVT_MENU(ID_QUIT, MyFrame::OnQuit)
+ EVT_CLOSE(MyFrame::OnCloseWindow)
+END_EVENT_TABLE()
+
+MyFrame::MyFrame( wxWindow *parent, wxWindowID id, const wxString &title,
+ const wxPoint &position, const wxSize& size, long style ) :
+ wxFrame( parent, id, title, position, size, style )
+{
+ // Create menu and status bar.
+ CreateMyMenuBar();
+ CreateStatusBar(1);
+ SetStatusText( "Welcome to Styles!" );
+
+
+ wxImage image;
+ image.LoadFile( "marble.jpg", wxBITMAP_TYPE_JPEG );
+
+ wxBitmap bitmap( image );
+ SetBackground( bitmap, 0, wxTILE );
+
+ new wxStaticText( this, -1, "This is text", wxPoint( 20,50 ) );
+
+ new wxCheckBox( this, -1, "This is a checkbox", wxPoint( 20,70 ) );
+}
+
+void MyFrame::CreateMyMenuBar()
+{
+ wxMenu *file_menu = new wxMenu;
+ file_menu->Append( ID_ABOUT, "About...", "Program info" );
+ file_menu->AppendSeparator();
+ file_menu->Append( ID_QUIT, "Quit...", "Quit program" );
+
+ wxMenuBar *menu_bar = new wxMenuBar();
+ menu_bar->Append( file_menu, "&File" );
+
+ SetMenuBar( menu_bar );
+}
+
+void MyFrame::OnAbout( wxCommandEvent &event )
+{
+}
+
+void MyFrame::OnQuit( wxCommandEvent &event )
+{
+ Close( TRUE );
+}
+
+void MyFrame::OnCloseWindow( wxCloseEvent &event )
+{
+ Destroy();
+}
+
+//------------------------------------------------------------------------------
+// MyApp
+//------------------------------------------------------------------------------
+
+IMPLEMENT_APP(MyApp)
+
+MyApp::MyApp()
+{
+}
+
+bool MyApp::OnInit()
+{
+ wxInitAllImageHandlers();
+
+ SetVendorName("Free world");
+ SetAppName("Styles");
+
+ MyFrame *frame = new MyFrame( NULL, -1, "Styles", wxPoint(20,20), wxSize(500,340) );
+ frame->Show( TRUE );
+
+ return TRUE;
+}
+
+int MyApp::OnExit()
+{
+ return 0;
+}
+
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: styles.h
+// Author: Robert Roebling
+// Created: 04/07/02
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef __styles_H__
+#define __styles_H__
+
+#ifdef __GNUG__
+ #pragma interface "styles.cpp"
+#endif
+
+// Include wxWindows' headers
+
+#ifndef WX_PRECOMP
+ #include <wx/wx.h>
+#endif
+
+//----------------------------------------------------------------------------
+// constants
+//----------------------------------------------------------------------------
+
+#define ID_ABOUT 100
+#define ID_QUIT 204
+
+//----------------------------------------------------------------------------
+// MyFrame
+//----------------------------------------------------------------------------
+
+class MyFrame: public wxFrame
+{
+public:
+ // constructors and destructors
+ MyFrame( wxWindow *parent, wxWindowID id, const wxString &title,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxDEFAULT_FRAME_STYLE );
+
+private:
+ void CreateMyMenuBar();
+
+private:
+ void OnAbout( wxCommandEvent &event );
+ void OnQuit( wxCommandEvent &event );
+
+ void OnCloseWindow( wxCloseEvent &event );
+
+private:
+ DECLARE_EVENT_TABLE()
+};
+
+//----------------------------------------------------------------------------
+// MyApp
+//----------------------------------------------------------------------------
+
+class MyApp: public wxApp
+{
+public:
+ MyApp();
+
+ virtual bool OnInit();
+ virtual int OnExit();
+};
+
+#endif
// painting
// ----------------------------------------------------------------------------
-// the event handler executed when the window background must be painted
-void wxWindow::OnErase(wxEraseEvent& event)
-{
- if ( !m_renderer )
- {
- event.Skip();
-
- return;
- }
-
- DoDrawBackground(*event.GetDC());
-
- // if we have both scrollbars, we also have a square in the corner between
- // them which we must paint
- if ( m_scrollbarVert && m_scrollbarHorz )
- {
- wxSize size = GetSize();
- wxRect rectClient = GetClientRect(),
- rectBorder = m_renderer->GetBorderDimensions(GetBorder());
-
- wxRect rectCorner;
- rectCorner.x = rectClient.GetRight() + 1;
- rectCorner.y = rectClient.GetBottom() + 1;
- rectCorner.SetRight(size.x - rectBorder.width);
- rectCorner.SetBottom(size.y - rectBorder.height);
-
- if ( GetUpdateRegion().Contains(rectCorner) )
- {
- m_renderer->DrawScrollCorner(*event.GetDC(), rectCorner);
- }
- }
-}
-
// the event handlers executed when the window must be repainted
void wxWindow::OnNcPaint(wxPaintEvent& event)
{
}
}
+// the event handler executed when the window background must be painted
+void wxWindow::OnErase(wxEraseEvent& event)
+{
+ if ( !m_renderer )
+ {
+ event.Skip();
+
+ return;
+ }
+
+ DoDrawBackground(*event.GetDC());
+
+ // if we have both scrollbars, we also have a square in the corner between
+ // them which we must paint
+ if ( m_scrollbarVert && m_scrollbarHorz )
+ {
+ wxSize size = GetSize();
+ wxRect rectClient = GetClientRect(),
+ rectBorder = m_renderer->GetBorderDimensions(GetBorder());
+
+ wxRect rectCorner;
+ rectCorner.x = rectClient.GetRight() + 1;
+ rectCorner.y = rectClient.GetBottom() + 1;
+ rectCorner.SetRight(size.x - rectBorder.width);
+ rectCorner.SetBottom(size.y - rectBorder.height);
+
+ if ( GetUpdateRegion().Contains(rectCorner) )
+ {
+ m_renderer->DrawScrollCorner(*event.GetDC(), rectCorner);
+ }
+ }
+}
+
bool wxWindow::DoDrawBackground(wxDC& dc)
{
- // FIXME: Leaving this code in leads to partial bg redraws
- // sometimes under MSW.
- // The same happens under X11 because it has a clear
- // region and an update region and these are sometimes
- // different. RR.
wxRect rect;
-// #ifndef __WXMSW__
-#if 0
- rect = GetUpdateRegion().GetBox();
- if ( !rect.width && !rect.height )
-#endif
+
+ wxSize size = GetSize(); // Why not GetClientSize() ?
+ rect.x = 0;
+ rect.y = 0;
+ rect.width = size.x;
+ rect.height = size.y;
+
+ if (HasTransparentBackground() && GetParent() && GetParent()->ProvidesBackground())
{
- wxSize size = GetSize();
- rect.width = size.x;
- rect.height = size.y;
+ wxASSERT( !IsTopLevel() );
+
+ wxPoint pos = GetPosition();
+
+ AdjustForParentClientOrigin( pos.x, pos.y, 0 );
+
+ // Adjust DC logical origin
+ wxCoord x,y;
+ dc.GetLogicalOrigin( &x, &y );
+ x += pos.x;
+ y += pos.y;
+ dc.SetLogicalOrigin( x, y );
+
+ // Adjust draw rect
+ rect.x = pos.x;
+ rect.y = pos.y;
+
+ // Let parent draw the background
+ GetParent()->EraseBackground( dc, rect );
+ }
+ else
+ {
+ // Draw background ouselves
+ EraseBackground( dc, rect );
}
+
+ return TRUE;
+}
+void wxWindow::EraseBackground(wxDC& dc, const wxRect& rect)
+{
if ( GetBackgroundBitmap().Ok() )
{
- // get the bitmap and the flags
+ // Get the bitmap and the flags
int alignment;
wxStretch stretch;
wxBitmap bmp = GetBackgroundBitmap(&alignment, &stretch);
wxControlRenderer::DrawBitmap(dc, bmp, rect, alignment, stretch);
}
- else // just fill it with bg colour if no bitmap
+ else
{
+ // Just fill it with bg colour if no bitmap
+
m_renderer->DrawBackground(dc, wxTHEME_BG_COLOUR(this),
rect, GetStateFlags());
}
-
- return TRUE;
-}
-
-void wxWindow::EraseBackground(wxDC& dc, const wxRect& rect)
-{
- // TODO: handle bg bitmaps here!
-
- m_renderer->DrawBackground(dc, wxTHEME_BG_COLOUR(this), rect, GetStateFlags());
}
void wxWindow::DoDrawBorder(wxDC& dc, const wxRect& rect)