From: Václav Slavík Date: Mon, 18 Sep 2000 20:01:54 +0000 (+0000) Subject: added XML resources sample X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/64d452a82d87ddef130d3adc64ec2e11813c9bee added XML resources sample git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/contrib/samples/xml/Makefile.in b/contrib/samples/xml/Makefile.in new file mode 100644 index 0000000000..79cccd5622 --- /dev/null +++ b/contrib/samples/xml/Makefile.in @@ -0,0 +1,23 @@ +############################################################################### +# Purpose: Makefile.in for xml resources sample for Unix with autoconf +# Created: 17.09.00 +# Author: VS +# Version: $Id$ +############################################################################### + +top_srcdir = @top_srcdir@/.. +top_builddir = ../../.. +program_dir = contrib/samples/xml + +PROGRAM=xmldemo + +OBJECTS=$(PROGRAM).o + +APPEXTRALIBS=$(top_builddir)/lib/libwxxml.@WX_TARGET_LIBRARY_TYPE@ +APPEXTRADEFS=-I$(top_srcdir)/contrib/include + +DATADIRS = rc +DATAFILES = rc/resource.xml rc/fileopen.gif rc/filesave.gif rc/fuzzy.gif \ + rc/quotes.gif rc/scanning.gif rc/update.gif + +include $(top_builddir)/src/makeprog.env diff --git a/contrib/samples/xml/makefile.b32 b/contrib/samples/xml/makefile.b32 new file mode 100644 index 0000000000..98340af6b7 --- /dev/null +++ b/contrib/samples/xml/makefile.b32 @@ -0,0 +1,18 @@ +# +# File: makefile.b32 +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: +# +# Makefile : Builds sample for 32-bit BC++ + +WXDIR = $(WXWIN) + +TARGET=xmldemo + +EXTRALIBS=$(WXDIR)\contrib\lib\wxxml.lib +OBJECTS = $(TARGET).obj + +!include $(WXDIR)\src\makeprog.b32 + diff --git a/contrib/samples/xml/makefile.g95 b/contrib/samples/xml/makefile.g95 new file mode 100644 index 0000000000..8377fef413 --- /dev/null +++ b/contrib/samples/xml/makefile.g95 @@ -0,0 +1,14 @@ +# File: makefile.g95 for stectrl +# Author: Robin Dunn +# Created: 1-Feb-2000 +# Updated: + +WXDIR = ../../.. + +TARGET = xmldemo +OBJECTS = $(TARGET).o +EXTRAINC = -I$(WXDIR)/contrib/include +EXTRALIBS = -lwxxml + +include $(WXDIR)/src/makeprog.g95 + diff --git a/contrib/samples/xml/makefile.vc b/contrib/samples/xml/makefile.vc new file mode 100644 index 0000000000..d10e084feb --- /dev/null +++ b/contrib/samples/xml/makefile.vc @@ -0,0 +1,14 @@ +# File: makefile.vc For stectrl +# Author: Robin Dunn +# Created: 1-Feb-2000 +# Updated: + +WXDIR = $(WXWIN) +PROGRAM = xmldemo + +OBJECTS = $(PROGRAM).obj +EXTRALIBS = $(WXDIR)\contrib\lib\wxxml$(LIBEXT).lib +EXTRAINC = -I$(WXDIR)\contrib\include + +!include $(WXDIR)\src\makeprog.vc + diff --git a/contrib/samples/xml/xmldemo.cpp b/contrib/samples/xml/xmldemo.cpp new file mode 100644 index 0000000000..572c24e4a2 --- /dev/null +++ b/contrib/samples/xml/xmldemo.cpp @@ -0,0 +1,168 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: xmldemo.cpp +// Purpose: XML resources sample +// Author: Vaclav Slavik +// RCS-ID: $Id$ +// Copyright: (c) Vaclav Slavik +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- +#ifdef __GNUG__ + #pragma implementation "xmldemo.cpp" + #pragma interface "xmldemo.cpp" +#endif + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +// for all others, include the necessary headers (this file is usually all you +// need because it includes almost all "standard" wxWindows headers) +#ifndef WX_PRECOMP + #include "wx/wx.h" + #include "wx/image.h" +#endif + +#include "wx/xml/xmlres.h" + +// ---------------------------------------------------------------------------- +// resources +// ---------------------------------------------------------------------------- +// the application icon +#if defined(__WXGTK__) || defined(__WXMOTIF__) + #include "rc/appicon.xpm" +#endif + +// ---------------------------------------------------------------------------- +// private classes +// ---------------------------------------------------------------------------- + +// Define a new application type, each program should derive a class from wxApp +class MyApp : public wxApp +{ +public: + // override base class virtuals + // ---------------------------- + + // this one is called on application startup and is a good place for the app + // initialization (doing it here and not in the ctor allows to have an error + // return: if OnInit() returns false, the application terminates) + virtual bool OnInit(); +}; + +// Define a new frame type: this is going to be our main frame +class MyFrame : public wxFrame +{ +public: + // ctor(s) + MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); + + // event handlers (these functions should _not_ be virtual) + void OnQuit(wxCommandEvent& event); + void OnAbout(wxCommandEvent& event); + void OnDlg1(wxCommandEvent& event); + void OnDlg2(wxCommandEvent& event); + +private: + // any class wishing to process wxWindows events must use this macro + DECLARE_EVENT_TABLE() +}; + +// ---------------------------------------------------------------------------- +// event tables and other macros for wxWindows +// ---------------------------------------------------------------------------- + +// the event tables connect the wxWindows events with the functions (event +// handlers) which process them. It can be also done at run-time, but for the +// simple menu events like this the static method is much simpler. +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU(XMLID("menu_quit"), MyFrame::OnQuit) + EVT_MENU(XMLID("menu_about"), MyFrame::OnAbout) + EVT_MENU(XMLID("menu_dlg1"), MyFrame::OnDlg1) + EVT_MENU(XMLID("menu_dlg2"), MyFrame::OnDlg2) +END_EVENT_TABLE() + +// Create a new application object: this macro will allow wxWindows to create +// the application object during program execution (it's better than using a +// static object for many reasons) and also declares the accessor function +// wxGetApp() which will return the reference of the right type (i.e. MyApp and +// not wxApp) +IMPLEMENT_APP(MyApp) + +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// the application class +// ---------------------------------------------------------------------------- + +// 'Main program' equivalent: the program execution "starts" here +bool MyApp::OnInit() +{ + wxImage::AddHandler(new wxGIFHandler); + wxTheXmlResource->InitAllHandlers(); + wxTheXmlResource->Load("rc/resource.xml"); + + MyFrame *frame = new MyFrame("XML resources demo", + wxPoint(50, 50), wxSize(450, 340)); + frame->Show(TRUE); + return TRUE; +} + +// ---------------------------------------------------------------------------- +// main frame +// ---------------------------------------------------------------------------- + +// frame constructor +MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) + : wxFrame((wxFrame *)NULL, -1, title, pos, size) +{ + SetIcon(wxICON(appicon)); + + SetMenuBar(wxTheXmlResource->LoadMenuBar("mainmenu")); + SetToolBar(wxTheXmlResource->LoadToolBar(this, "toolbar")); +} + + +// event handlers + +void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) +{ + // TRUE is to force the frame to close + Close(TRUE); +} + +void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) +{ + wxString msg; + msg.Printf( _T("This is the about dialog of XML resources demo.\n") + _T("Welcome to %s"), wxVERSION_STRING); + + wxMessageBox(msg, "About XML resources demo", wxOK | wxICON_INFORMATION, this); +} + +void MyFrame::OnDlg1(wxCommandEvent& WXUNUSED(event)) +{ + wxDialog dlg; + wxTheXmlResource->LoadDialog(&dlg, this, "dlg1"); + dlg.ShowModal(); +} + + +void MyFrame::OnDlg2(wxCommandEvent& WXUNUSED(event)) +{ + wxDialog dlg; + wxTheXmlResource->LoadDialog(&dlg, this, "dlg2"); + dlg.ShowModal(); +} diff --git a/contrib/samples/xml/xmldemo.rc b/contrib/samples/xml/xmldemo.rc new file mode 100644 index 0000000000..a5b2ce34e2 --- /dev/null +++ b/contrib/samples/xml/xmldemo.rc @@ -0,0 +1,2 @@ +appicon ICON "rc/appicon.ico" +#include "wx/msw/wx.rc"