Skip to content
Snippets Groups Projects
Commit b1589972 authored by deuce's avatar deuce
Browse files

Initial start of Code::Blocks user list project.

Not complete yet, but at least it lists users.
parent dab91416
Branches
Tags
No related merge requests found
/***************************************************************
* Name: SBBS_User_ListApp.cpp
* Purpose: Code for Application Class
* Author: Stephen Hurd (sysop@nix.synchro.net)
* Created: 2011-10-23
* Copyright: Stephen Hurd (http://www.synchro.net/)
* License:
**************************************************************/
#include "SBBS_User_ListApp.h"
//(*AppHeaders
#include "SBBS_User_ListMain.h"
#include <wx/image.h>
//*)
#include <wx/msgdlg.h>
#include <wx/strconv.h>
IMPLEMENT_APP(SBBS_User_ListApp);
extern "C" int lprintf(int level, const char *fmt, ...) /* log output */
{
return 0;
}
SBBS_User_ListApp *App;
bool SBBS_User_ListApp::OnInit()
{
//(*AppInitialize
bool wxsOK = true;
wxString ctrlDir;
char errstr[1024];
App=this;
wxInitAllImageHandlers();
/* Check config... */
if(!wxGetEnv(_("SBBSCTRL"), &ctrlDir)) {
wxMessageDialog *dlg = new wxMessageDialog(NULL, _("SBBSCTRL environment variable not set. This variable must be set to the ctrl directory (ie: /sbbs/ctrl)."), _("SBBSCTRL Not Set"));
dlg->ShowModal();
return false;
}
memset(&cfg, 0, sizeof(cfg));
cfg.size=sizeof(cfg);
SAFECOPY(cfg.ctrl_dir, ctrlDir.fn_str());
prep_dir("", cfg.ctrl_dir, sizeof(cfg.ctrl_dir));
if(!isdir(cfg.ctrl_dir)) {
wxMessageDialog *dlg = new wxMessageDialog(NULL, _("SBBSCTRL environment variable is not set to a directory. This variable must be set to the ctrl directory (ie: /sbbs/ctrl)."), _("SBBSCTRL Not A Directory"));
dlg->ShowModal();
return false;
}
if(!load_cfg(&cfg, NULL, TRUE, errstr)) {
wxString str(errstr,wxConvUTF8);
wxMessageDialog *dlg = new wxMessageDialog(NULL, _("ERROR: \"")+str+_("\"loading config"), _("Config Error"));
dlg->ShowModal();
return false;
}
if ( wxsOK )
{
SBBS_User_ListFrame* Frame = new SBBS_User_ListFrame(0);
Frame->Show();
SetTopWindow(Frame);
}
//*)
return wxsOK;
}
/***************************************************************
* Name: SBBS_User_ListApp.h
* Purpose: Defines Application Class
* Author: Stephen Hurd (sysop@nix.synchro.net)
* Created: 2011-10-23
* Copyright: Stephen Hurd (http://www.synchro.net/)
* License:
**************************************************************/
#ifndef SBBS_USER_LISTAPP_H
#define SBBS_USER_LISTAPP_H
#include <wx/app.h>
#include <sbbs.h>
#undef AST // TODO: Hack hack... conflicts with wxDateTime
#undef ADT
#undef EST
#undef EDT
#undef CST
#undef CDT
#undef MST
#undef MDT
#undef PST
#undef PDT
#undef HST
#undef HDT
#undef BST
#undef BDT
#undef eof
class SBBS_User_ListApp : public wxApp
{
public:
virtual bool OnInit();
scfg_t cfg;
};
DECLARE_APP(SBBS_User_ListApp);
extern SBBS_User_ListApp *App;
#endif // SBBS_USER_LISTAPP_H
/***************************************************************
* Name: SBBS_User_ListMain.cpp
* Purpose: Code for Application Frame
* Author: Stephen Hurd (sysop@nix.synchro.net)
* Created: 2011-10-23
* Copyright: Stephen Hurd (http://www.synchro.net/)
* License:
**************************************************************/
#include "SBBS_User_ListMain.h"
#include <wx/msgdlg.h>
//(*InternalHeaders(SBBS_User_ListFrame)
#include <wx/intl.h>
#include <wx/string.h>
//*)
//helper functions
enum wxbuildinfoformat {
short_f, long_f };
wxString wxbuildinfo(wxbuildinfoformat format)
{
wxString wxbuild(wxVERSION_STRING);
if (format == long_f )
{
#if defined(__WXMSW__)
wxbuild << _T("-Windows");
#elif defined(__UNIX__)
wxbuild << _T("-Linux");
#endif
#if wxUSE_UNICODE
wxbuild << _T("-Unicode build");
#else
wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
}
return wxbuild;
}
//(*IdInit(SBBS_User_ListFrame)
const long SBBS_User_ListFrame::ID_STATICTEXT1 = wxNewId();
const long SBBS_User_ListFrame::ID_TEXTCTRL1 = wxNewId();
const long SBBS_User_ListFrame::ID_CLEARBUTTON = wxNewId();
const long SBBS_User_ListFrame::ID_USERLISTCTRL = wxNewId();
const long SBBS_User_ListFrame::ID_STATICTEXT2 = wxNewId();
const long SBBS_User_ListFrame::ID_CHOICE1 = wxNewId();
const long SBBS_User_ListFrame::ID_REFRESHBUTTON = wxNewId();
const long SBBS_User_ListFrame::ID_EDITBUTTON = wxNewId();
const long SBBS_User_ListFrame::idMenuQuit = wxNewId();
const long SBBS_User_ListFrame::idMenuAbout = wxNewId();
const long SBBS_User_ListFrame::ID_STATUSBAR1 = wxNewId();
//*)
BEGIN_EVENT_TABLE(SBBS_User_ListFrame,wxFrame)
//(*EventTable(SBBS_User_ListFrame)
//*)
END_EVENT_TABLE()
void fillUserList(wxListCtrl *UserList)
{
int totalusers=lastuser(&App->cfg);
int i;
user_t user;
int item;
wxString buf;
char datebuf[9];
UserList->DeleteAllItems();
for(i=0; i<totalusers; i++) {
user.number=i;
if(getuserdat(&App->cfg, &user)!=0)
continue;
buf.Printf(_("%d"), i);
item=UserList->InsertItem(i, buf, 0);
UserList->SetItem(item, 1, wxString::From8BitData(user.alias));
UserList->SetItem(item, 2, wxString::From8BitData(user.name));
buf.Printf(_("%d"), user.level);
UserList->SetItem(item, 3, buf);
buf.Printf(_("%d"), getage(&App->cfg, user.birth));
UserList->SetItem(item, 4, buf);
buf.Printf(_("%c"), user.sex);
UserList->SetItem(item, 5, buf);
UserList->SetItem(item, 6, wxString::From8BitData(user.location));
UserList->SetItem(item, 7, wxString::From8BitData(user.modem));
UserList->SetItem(item, 8, wxString::From8BitData(user.note));
UserList->SetItem(item, 9, wxString::From8BitData(user.comp));
UserList->SetItem(item,10, wxString::From8BitData(user.phone));
UserList->SetItem(item,11, wxString::From8BitData(user.netmail));
buf.Printf(_("%d"), user.logons);
UserList->SetItem(item,12, buf);
unixtodstr(&App->cfg, user.firston, datebuf);
UserList->SetItem(item,13, wxString::From8BitData(datebuf));
unixtodstr(&App->cfg, user.laston, datebuf);
UserList->SetItem(item,14, wxString::From8BitData(datebuf));
}
}
SBBS_User_ListFrame::SBBS_User_ListFrame(wxWindow* parent,wxWindowID id)
{
//(*Initialize(SBBS_User_ListFrame)
wxBoxSizer* BoxSizer4;
wxBoxSizer* BoxSizer5;
wxMenuItem* MenuItem2;
wxMenuItem* MenuItem1;
wxBoxSizer* BoxSizer2;
wxMenu* Menu1;
wxBoxSizer* BoxSizer1;
wxMenuBar* MenuBar1;
wxBoxSizer* BoxSizer3;
wxMenu* Menu2;
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id"));
BoxSizer1 = new wxBoxSizer(wxVERTICAL);
BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("ARS Filter"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
BoxSizer2->Add(StaticText1, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
TextCtrl1 = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
TextCtrl1->SetToolTip(_("Enter an ARS string to filter users with"));
BoxSizer2->Add(TextCtrl1, 1, wxALL|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
ClearButton = new wxButton(this, ID_CLEARBUTTON, _("Clear"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CLEARBUTTON"));
ClearButton->SetToolTip(_("Clears the ARS filter"));
BoxSizer2->Add(ClearButton, 0, wxALL|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
BoxSizer1->Add(BoxSizer2, 0, wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
UserList = new wxListCtrl(this, ID_USERLISTCTRL, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_HRULES, wxDefaultValidator, _T("ID_USERLISTCTRL"));
UserList->InsertColumn(0, wxString(_("Num")));
UserList->InsertColumn(1, wxString(_("Alias")));
UserList->InsertColumn(2, wxString(_("Name")));
UserList->InsertColumn(3, wxString(_("Level")));
UserList->InsertColumn(4, wxString(_("Age")));
UserList->InsertColumn(5, wxString(_("Sex")));
UserList->InsertColumn(6, wxString(_("Location")));
UserList->InsertColumn(7, wxString(_("Protocol")));
UserList->InsertColumn(8, wxString(_("Address")));
UserList->InsertColumn(9, wxString(_("Host Name")));
UserList->InsertColumn(10, wxString(_("Phone")));
UserList->InsertColumn(11, wxString(_("Email")));
UserList->InsertColumn(12, wxString(_("Logons")));
UserList->InsertColumn(13, wxString(_("First On")));
UserList->InsertColumn(14, wxString(_("Last On")));
fillUserList(UserList);
BoxSizer1->Add(UserList, 1, wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
BoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("Quick Validation Sets"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
BoxSizer4->Add(StaticText2, 0, wxALL|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
Choice1 = new wxChoice(this, ID_CHOICE1, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE1"));
Choice1->SetSelection( Choice1->Append(_("Select a set")) );
Choice1->Append(_("1 SL:10 F1: "));
Choice1->Append(_("2 SL:20 F1: "));
Choice1->Append(_("3 SL:30 F1: "));
Choice1->Append(_("4 SL:40 F1: "));
Choice1->Append(_("5 SL:50 F1: "));
Choice1->Append(_("6 SL:60 F1: "));
Choice1->Append(_("7 SL:70 F1: "));
Choice1->Append(_("8 SL:80 F1: "));
Choice1->Append(_("9 SL:90 F1: "));
Choice1->Append(_("10 SL:100 F1: "));
Choice1->Disable();
BoxSizer4->Add(Choice1, 0, wxALL|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
BoxSizer3->Add(BoxSizer4, 1, wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
BoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
RefreshButton = new wxButton(this, ID_REFRESHBUTTON, _("Refresh"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_REFRESHBUTTON"));
RefreshButton->SetToolTip(_("Reloads the user database"));
BoxSizer5->Add(RefreshButton, 0, wxALL|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
EditButton = new wxButton(this, ID_EDITBUTTON, _("Edit"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_EDITBUTTON"));
EditButton->Disable();
BoxSizer5->Add(EditButton, 0, wxALL|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
BoxSizer3->Add(BoxSizer5, 0, wxALL|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
BoxSizer1->Add(BoxSizer3, 0, wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM, 5);
SetSizer(BoxSizer1);
MenuBar1 = new wxMenuBar();
Menu1 = new wxMenu();
MenuItem1 = new wxMenuItem(Menu1, idMenuQuit, _("Quit\tAlt-F4"), _("Quit the application"), wxITEM_NORMAL);
Menu1->Append(MenuItem1);
MenuBar1->Append(Menu1, _("&File"));
Menu2 = new wxMenu();
MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info about this application"), wxITEM_NORMAL);
Menu2->Append(MenuItem2);
MenuBar1->Append(Menu2, _("Help"));
SetMenuBar(MenuBar1);
StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, 0, _T("ID_STATUSBAR1"));
int __wxStatusBarWidths_1[1] = { -1 };
int __wxStatusBarStyles_1[1] = { wxSB_NORMAL };
StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1);
StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1);
SetStatusBar(StatusBar1);
BoxSizer1->Fit(this);
BoxSizer1->SetSizeHints(this);
Connect(idMenuQuit,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SBBS_User_ListFrame::OnQuit);
Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SBBS_User_ListFrame::OnAbout);
//*)
}
SBBS_User_ListFrame::~SBBS_User_ListFrame()
{
//(*Destroy(SBBS_User_ListFrame)
//*)
}
void SBBS_User_ListFrame::OnQuit(wxCommandEvent& event)
{
Close();
}
void SBBS_User_ListFrame::OnAbout(wxCommandEvent& event)
{
wxString msg = wxbuildinfo(long_f);
wxMessageBox(msg, _("Welcome to..."));
}
/***************************************************************
* Name: SBBS_User_ListMain.h
* Purpose: Defines Application Frame
* Author: Stephen Hurd (sysop@nix.synchro.net)
* Created: 2011-10-23
* Copyright: Stephen Hurd (http://www.synchro.net/)
* License:
**************************************************************/
#ifndef SBBS_USER_LISTMAIN_H
#define SBBS_USER_LISTMAIN_H
//(*Headers(SBBS_User_ListFrame)
#include <wx/listctrl.h>
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/menu.h>
#include <wx/textctrl.h>
#include <wx/choice.h>
#include <wx/button.h>
#include <wx/frame.h>
#include <wx/statusbr.h>
//*)
#include "SBBS_User_ListApp.h"
class SBBS_User_ListFrame: public wxFrame
{
public:
SBBS_User_ListFrame(wxWindow* parent,wxWindowID id = -1);
virtual ~SBBS_User_ListFrame();
private:
//(*Handlers(SBBS_User_ListFrame)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
//*)
//(*Identifiers(SBBS_User_ListFrame)
static const long ID_STATICTEXT1;
static const long ID_TEXTCTRL1;
static const long ID_CLEARBUTTON;
static const long ID_USERLISTCTRL;
static const long ID_STATICTEXT2;
static const long ID_CHOICE1;
static const long ID_REFRESHBUTTON;
static const long ID_EDITBUTTON;
static const long idMenuQuit;
static const long idMenuAbout;
static const long ID_STATUSBAR1;
//*)
//(*Declarations(SBBS_User_ListFrame)
wxButton* RefreshButton;
wxStaticText* StaticText2;
wxStaticText* StaticText1;
wxListCtrl* UserList;
wxStatusBar* StatusBar1;
wxButton* ClearButton;
wxTextCtrl* TextCtrl1;
wxButton* EditButton;
wxChoice* Choice1;
//*)
DECLARE_EVENT_TABLE()
};
#endif // SBBS_USER_LISTMAIN_H
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="SBBS User List" />
<Option pch_mode="2" />
<Option compiler="gcc" />
<Build>
<Target title="Debug">
<Option output="gcc.freebsd.exe.debug/SBBS User List" prefix_auto="1" extension_auto="1" />
<Option object_output="gcc.freebsd.obj.debug/" />
<Option type="0" />
<Option compiler="gcc" />
<Option projectLinkerOptionsRelation="2" />
<Compiler>
<Add option="-g" />
<Add option="-DHAS_INTTYPES_H=1" />
<Add directory=".." />
<Add directory="../../xpdev" />
<Add directory="../../smblib" />
</Compiler>
<Linker>
<Add library="xpdev" />
<Add directory="../../xpdev/gcc.freebsd.lib.release" />
</Linker>
</Target>
<Target title="Release">
<Option output="gcc.freebsd.exe.release/SBBS User List" prefix_auto="1" extension_auto="1" />
<Option object_output="gcc.freebsd.exe.release/" />
<Option type="0" />
<Option compiler="gcc" />
<Option projectLinkerOptionsRelation="2" />
<Compiler>
<Add option="-O2" />
</Compiler>
<Linker>
<Add option="-s" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
<Add option="`wxgtk2u-2.8-config --cflags`" />
</Compiler>
<Linker>
<Add option="`wxgtk2u-2.8-config --libs`" />
</Linker>
<Unit filename="../ars.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../dat_rec.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../date_str.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../load_cfg.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../nopen.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../scfglib1.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../scfglib2.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../str_util.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="../userdat.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="SBBS_User_ListApp.cpp" />
<Unit filename="SBBS_User_ListApp.h" />
<Unit filename="SBBS_User_ListMain.cpp" />
<Unit filename="SBBS_User_ListMain.h" />
<Unit filename="wxsmith/SBBS_User_Listframe.wxs" />
<Extensions>
<code_completion />
<envvars />
<debugger />
<wxsmith version="1">
<gui name="wxWidgets" src="SBBS_User_ListApp.cpp" main="SBBS_User_ListFrame" init_handlers="necessary" language="CPP" />
<resources>
<wxFrame wxs="wxsmith/SBBS_User_Listframe.wxs" src="SBBS_User_ListMain.cpp" hdr="SBBS_User_ListMain.h" name="SBBS_User_ListFrame" language="CPP" />
</resources>
</wxsmith>
<lib_finder disable_auto="1" />
</Extensions>
</Project>
</CodeBlocks_project_file>
This diff is collapsed.
<?xml version="1.0" encoding="utf-8" ?>
<wxsmith>
<object class="wxFrame" name="SBBS_User_ListFrame">
<object class="wxBoxSizer" variable="BoxSizer1" member="no">
<orient>wxVERTICAL</orient>
<object class="sizeritem">
<object class="wxBoxSizer" variable="BoxSizer2" member="no">
<object class="sizeritem">
<object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText1" member="yes">
<label>ARS Filter</label>
</object>
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag>
<border>5</border>
</object>
<object class="sizeritem">
<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="TextCtrl1" member="yes">
<tooltip>Enter an ARS string to filter users with</tooltip>
</object>
<flag>wxALL|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
<option>1</option>
</object>
<object class="sizeritem">
<object class="wxButton" name="ID_CLEARBUTTON" variable="ClearButton" member="yes">
<label>Clear</label>
<tooltip>Clears the ARS filter</tooltip>
</object>
<flag>wxALL|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
</object>
<flag>wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
<object class="sizeritem">
<object class="wxListCtrl" name="ID_USERLISTCTRL" variable="UserList" member="yes">
<style>wxLC_REPORT|wxLC_HRULES</style>
</object>
<flag>wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
<option>1</option>
</object>
<object class="sizeritem">
<object class="wxBoxSizer" variable="BoxSizer3" member="no">
<object class="sizeritem">
<object class="wxBoxSizer" variable="BoxSizer4" member="no">
<object class="sizeritem">
<object class="wxStaticText" name="ID_STATICTEXT2" variable="StaticText2" member="yes">
<label>Quick Validation Sets</label>
</object>
<flag>wxALL|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
<object class="sizeritem">
<object class="wxChoice" name="ID_CHOICE1" variable="Choice1" member="yes">
<content>
<item>Select a set</item>
<item>1 SL:10 F1: </item>
<item>2 SL:20 F1: </item>
<item>3 SL:30 F1: </item>
<item>4 SL:40 F1: </item>
<item>5 SL:50 F1: </item>
<item>6 SL:60 F1: </item>
<item>7 SL:70 F1: </item>
<item>8 SL:80 F1: </item>
<item>9 SL:90 F1: </item>
<item>10 SL:100 F1: </item>
</content>
<selection>0</selection>
<enabled>0</enabled>
</object>
<flag>wxALL|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
</object>
<flag>wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
<option>1</option>
</object>
<object class="sizeritem">
<object class="wxBoxSizer" variable="BoxSizer5" member="no">
<object class="sizeritem">
<object class="wxButton" name="ID_REFRESHBUTTON" variable="RefreshButton" member="yes">
<label>Refresh</label>
<tooltip>Reloads the user database</tooltip>
</object>
<flag>wxALL|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
<object class="sizeritem">
<object class="wxButton" name="ID_EDITBUTTON" variable="EditButton" member="yes">
<label>Edit</label>
<enabled>0</enabled>
</object>
<flag>wxALL|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
</object>
<flag>wxALL|wxALIGN_RIGHT|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
</object>
<flag>wxALL|wxEXPAND|wxALIGN_TOP|wxALIGN_BOTTOM</flag>
<border>5</border>
</object>
</object>
<object class="wxMenuBar" variable="MenuBar1" member="no">
<object class="wxMenu" variable="Menu1" member="no">
<label>&amp;File</label>
<object class="wxMenuItem" name="idMenuQuit" variable="MenuItem1" member="no">
<label>Quit</label>
<accel>Alt-F4</accel>
<help>Quit the application</help>
<handler function="OnQuit" entry="EVT_MENU" />
</object>
</object>
<object class="wxMenu" variable="Menu2" member="no">
<label>Help</label>
<object class="wxMenuItem" name="idMenuAbout" variable="MenuItem2" member="no">
<label>About</label>
<accel>F1</accel>
<help>Show info about this application</help>
<handler function="OnAbout" entry="EVT_MENU" />
</object>
</object>
</object>
<object class="wxStatusBar" name="ID_STATUSBAR1" variable="StatusBar1" member="yes">
<fields>1</fields>
<widths>-1</widths>
<styles>wxSB_NORMAL</styles>
</object>
</object>
</wxsmith>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment