Text language for decomposition GUI support added

(closes #1)
This commit is contained in:
Simon Rozman 2016-04-13 11:02:58 +02:00
parent ab3ef08a5f
commit 4fba54bdb2
9 changed files with 393 additions and 23 deletions

View File

@ -270,6 +270,12 @@
<event name="OnMenuSelection"></event>
<event name="OnUpdateUI"></event>
</object>
<object class="submenu" expanded="1">
<property name="bitmap"></property>
<property name="label">&amp;Language</property>
<property name="name">m_menuDecompLanguage</property>
<property name="permission">protected</property>
</object>
</object>
<object class="wxMenu" expanded="1">
<property name="label">&amp;Help</property>
@ -479,6 +485,167 @@
<event name="OnToolRClicked"></event>
<event name="OnUpdateUI"></event>
</object>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Language:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_toolDecompLanguageLbl</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxALIGN_RIGHT</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
<object class="wxChoice" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices"></property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_toolDecompLanguage</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnChoice">OnDecompLanguageChoice</event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>

View File

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: ZRCola\n"
"POT-Creation-Date: 2016-04-08 13:13+0200\n"
"PO-Revision-Date: 2016-04-08 13:13+0200\n"
"POT-Creation-Date: 2016-04-13 10:50+0200\n"
"PO-Revision-Date: 2016-04-13 10:50+0200\n"
"Last-Translator: Simon Rozman <simon.rozman@amebis.si>\n"
"Language-Team: Amebis, d. o. o., Kamnik <info@amebis.si>\n"
"Language: sl_SI\n"
@ -17,7 +17,12 @@ msgstr ""
"X-Poedit-KeywordsList: _\n"
"X-Poedit-SearchPath-0: .\n"
#: zrcolafrm.cpp:61
#: zrcolafrm.cpp:69
#, c-format
msgid "Select %s language for decomposition"
msgstr "Izberi jezik %s za razstavljanje"
#: zrcolafrm.cpp:81
msgid ""
"ZRCola keyboard shortcut Win+F5 could not be registered. Some functionality "
"will not be available."
@ -25,11 +30,11 @@ msgstr ""
"ZRColine bližnjice na tipkovnici Win+F5 ni mogoče registrirati. Nekaj "
"funkcionalnosti ne bo na voljo."
#: zrcolafrm.cpp:61 zrcolafrm.cpp:63
#: zrcolafrm.cpp:81 zrcolafrm.cpp:83
msgid "Warning"
msgstr "Opozorilo"
#: zrcolafrm.cpp:63
#: zrcolafrm.cpp:83
msgid ""
"ZRCola keyboard shortcut Win+F6 could not be registered. Some functionality "
"will not be available."
@ -37,7 +42,7 @@ msgstr ""
"ZRColine bližnjice na tipkovnici Win+F6 ni mogoče registrirati. Nekaj "
"funkcionalnosti ne bo na voljo."
#: zrcolafrm.cpp:144
#: zrcolafrm.cpp:205
#, c-format
msgid ""
"ZRCola v%s\n"
@ -46,7 +51,7 @@ msgstr ""
"ZRCola v%s\n"
"Vse pravice pridržane 2015-%s Amebis"
#: zrcolafrm.cpp:144
#: zrcolafrm.cpp:205
msgid "About ZRCola"
msgstr "O ZRColi"
@ -74,7 +79,7 @@ msgstr "Izberi celotno besedilo"
msgid "&Send Composed"
msgstr "Pošlji &sestavljeno"
#: zrcolagui.cpp:74 zrcolagui.cpp:121
#: zrcolagui.cpp:74 zrcolagui.cpp:125
msgid "Send composed text to source window"
msgstr "Pošlji sestavljeno besedilo izvornemu oknu"
@ -82,7 +87,7 @@ msgstr "Pošlji sestavljeno besedilo izvornemu oknu"
msgid "Send &Decomposed"
msgstr "Pošlji &razstavljeno"
#: zrcolagui.cpp:83 zrcolagui.cpp:123
#: zrcolagui.cpp:83 zrcolagui.cpp:127
msgid "Send decomposed text to source window"
msgstr "Pošlji razstavljeno besedilo izvornemu oknu"
@ -94,47 +99,55 @@ msgstr "Prekini raz/sestavljanje"
msgid "Abort composition and return focus to source window"
msgstr "Prekini sestavljanje in vrni fokus nazaj izvornemu oknu"
#: zrcolagui.cpp:100
#: zrcolagui.cpp:101
msgid "&Language"
msgstr "&Jezik"
#: zrcolagui.cpp:104
msgid "&Edit"
msgstr "Ur&edi"
#: zrcolagui.cpp:107
#: zrcolagui.cpp:111
msgid "&Help"
msgstr "&Pomoč"
#: zrcolagui.cpp:113
#: zrcolagui.cpp:117
msgid "Cut"
msgstr "Izreži"
#: zrcolagui.cpp:113
#: zrcolagui.cpp:117
msgid "Cut selection"
msgstr "Izreži izbor"
#: zrcolagui.cpp:115
#: zrcolagui.cpp:119
msgid "Copy"
msgstr "Kopiraj"
#: zrcolagui.cpp:115
#: zrcolagui.cpp:119
msgid "Copy selection"
msgstr "Kopiraj izbor"
#: zrcolagui.cpp:117
#: zrcolagui.cpp:121
msgid "Paste"
msgstr "Prilepi"
#: zrcolagui.cpp:117
#: zrcolagui.cpp:121
msgid "Paste selection"
msgstr "Prilepi izbor"
#: zrcolagui.cpp:121
#: zrcolagui.cpp:125
msgid "Send Composed"
msgstr "Pošlji sestavljeno"
#: zrcolagui.cpp:123
#: zrcolagui.cpp:127
msgid "Send Decomposed"
msgstr "Pošlji razstavljeno"
#: zrcolagui.h:64 MSIBuild/En.Win32.Release.Feature-2.idtx:4
#: zrcolagui.cpp:129
msgid "Language:"
msgstr "Jezik:"
#: zrcolagui.h:73 MSIBuild/En.Win32.Release.Feature-2.idtx:4
#: MSIBuild/En.Win32.Release.Shortcut-2.idtx:4
#: MSIBuild/En.x64.Release.Feature-2.idtx:4
#: MSIBuild/En.x64.Release.Shortcut-2.idtx:4

View File

@ -84,6 +84,23 @@ bool ZRColaApp::OnInit()
m_t_db.idxDecomp.clear();
m_t_db.data .clear();
}
} else if (id == ZRCola::langchar_rec::id) {
dat >> ZRCola::langchar_rec(m_lc_db);
if (!dat.good()) {
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
m_lc_db.idxChr.clear();
#ifdef ZRCOLA_LANGCHAR_LANG_IDX
m_lc_db.idxLng.clear();
#endif
m_lc_db.data .clear();
}
} else if (id == ZRCola::language_rec::id) {
dat >> ZRCola::language_rec(m_lang_db);
if (!dat.good()) {
wxFAIL_MSG(wxT("Error reading language character data from ZRCola.zrcdb."));
m_lang_db.idxLng.clear();
m_lang_db.data .clear();
}
}
}
@ -95,7 +112,7 @@ bool ZRColaApp::OnInit()
}
wxZRColaFrame* mainFrame = new wxZRColaFrame();
wxPersistentRegisterAndRestore<wxTopLevelWindow>(mainFrame);
wxPersistentRegisterAndRestore<wxZRColaFrame>(mainFrame);
mainFrame->Show();
return true;

View File

@ -28,6 +28,7 @@ class ZRColaApp;
#include <wx/app.h>
#include <wx/config.h>
#include <wx/intl.h>
#include <zrcola/language.h>
#include <zrcola/translate.h>
@ -57,6 +58,8 @@ public:
public:
ZRCola::translation_db m_t_db; ///< Translation database
ZRCola::langchar_db m_lc_db; ///< Language character database
ZRCola::language_db m_lang_db; ///< Language database
protected:
wxLocale m_locale; ///< Current locale

View File

@ -118,8 +118,13 @@ void wxZRColaComposerPanel::OnComposedText(wxCommandEvent& event)
wxString src(m_composed->GetValue());
#endif
ZRColaApp *app = (ZRColaApp*)wxTheApp;
std::wstring dst;
((ZRColaApp*)wxTheApp)->m_t_db.Decompose(src.data(), src.size(), dst, &m_mapping);
wxZRColaFrame *mainWnd = dynamic_cast<wxZRColaFrame*>(wxGetActiveWindow());
if (mainWnd)
app->m_t_db.Decompose(src.data(), src.size(), &app->m_lc_db, mainWnd->m_lang, dst, &m_mapping);
else
app->m_t_db.Decompose(src.data(), src.size(), dst, &m_mapping);
long from, to;
m_composed->GetSelection(&from, &to);

View File

@ -35,6 +35,9 @@ wxBEGIN_EVENT_TABLE(wxZRColaFrame, wxZRColaFrameBase)
EVT_MENU(wxID_SEND_DECOMPOSED, wxZRColaFrame::OnSendDecomposed )
EVT_MENU(wxID_SEND_ABORT , wxZRColaFrame::OnSendAbort )
EVT_UPDATE_UI_RANGE(wxID_DECOMP_LANGUAGE_START, wxID_DECOMP_LANGUAGE_END, wxZRColaFrame::OnDecomposedLanguageUpdate)
EVT_MENU_RANGE(wxID_DECOMP_LANGUAGE_START, wxID_DECOMP_LANGUAGE_END, wxZRColaFrame::OnDecomposedLanguage)
EVT_MENU(wxID_EXIT , wxZRColaFrame::OnExit )
EVT_MENU(wxID_ABOUT, wxZRColaFrame::OnAbout)
wxEND_EVENT_TABLE()
@ -54,6 +57,23 @@ wxZRColaFrame::wxZRColaFrame() :
SetIcon(wxICON(00_zrcola.ico));
#endif
// Populate language lists.
memcpy(m_lang, ZRCOLA_LANG_VOID, sizeof(m_lang));
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
m_toolDecompLanguage->Clear();
if (!app->m_lang_db.idxLng.empty()) {
for (size_t i = 0, n = app->m_lang_db.idxLng.size(); i < n; i++) {
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[i];
wxString label(wxString::FromAscii(lang.id, strnlen(lang.id, sizeof(lang.id))));
if (i < wxID_DECOMP_LANGUAGE_END - wxID_DECOMP_LANGUAGE_START + 1)
m_menuDecompLanguage->Insert(i, wxID_DECOMP_LANGUAGE_START + i, label, wxString::Format(_("Select %s language for decomposition"), (const wxStringCharType*)label), wxITEM_RADIO);
m_toolDecompLanguage->Insert(label, i);
if (memcmp(m_lang, lang.id, sizeof(m_lang)) == 0)
m_toolDecompLanguage->Select(i);
}
}
// Set focus.
m_panel->m_decomposed->SetFocus();
// Register global hotkey(s).
@ -75,7 +95,7 @@ wxZRColaFrame::~wxZRColaFrame()
void wxZRColaFrame::OnForwardEventUpdate(wxUpdateUIEvent& event)
{
wxControl *focusWnd = wxDynamicCast(FindFocus(), wxControl);
if (focusWnd)
if (focusWnd && !m_toolbar->IsDescendant(focusWnd))
focusWnd->GetEventHandler()->ProcessEvent(event);
else
event.Enable(false);
@ -133,6 +153,47 @@ void wxZRColaFrame::OnSendAbort(wxCommandEvent& event)
}
void wxZRColaFrame::OnDecomposedLanguageUpdate(wxUpdateUIEvent& event)
{
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[event.GetId() - wxID_DECOMP_LANGUAGE_START];
event.Check(memcmp(m_lang, lang.id, sizeof(m_lang)) == 0);
}
void wxZRColaFrame::OnDecomposedLanguage(wxCommandEvent& event)
{
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
size_t i = event.GetId() - wxID_DECOMP_LANGUAGE_START;
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[i];
if (memcmp(m_lang, lang.id, sizeof(m_lang)) != 0) {
memcpy(m_lang, lang.id, sizeof(m_lang));
m_toolDecompLanguage->Select(i);
// Notify composed text something changed and should re-decompose.
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
m_panel->m_composed->ProcessWindowEvent(event2);
}
}
void wxZRColaFrame::OnDecompLanguageChoice(wxCommandEvent& event)
{
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
size_t i = event.GetSelection();
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[i];
if (memcmp(m_lang, lang.id, sizeof(m_lang)) != 0) {
memcpy(m_lang, lang.id, sizeof(m_lang));
// Notify composed text something changed and should re-decompose.
wxCommandEvent event2(wxEVT_COMMAND_TEXT_UPDATED);
m_panel->m_composed->ProcessWindowEvent(event2);
}
}
void wxZRColaFrame::OnExit(wxCommandEvent& event)
{
Close();
@ -224,3 +285,47 @@ WXLRESULT wxZRColaFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM
} else
return wxZRColaFrameBase::MSWWindowProc(message, wParam, lParam);
}
//////////////////////////////////////////////////////////////////////////
// wxPersistentZRColaFrame
//////////////////////////////////////////////////////////////////////////
wxPersistentZRColaFrame::wxPersistentZRColaFrame(wxZRColaFrame *wnd) : wxPersistentTLW(wnd)
{
}
void wxPersistentZRColaFrame::Save() const
{
//
const wxZRColaFrame * const wnd = static_cast<const wxZRColaFrame*>(GetWindow());
SaveValue(wxT("lang"), wxString::FromAscii(wnd->m_lang, sizeof(wnd->m_lang)));
wxPersistentTLW::Save();
}
bool wxPersistentZRColaFrame::Restore()
{
const bool r = wxPersistentTLW::Restore();
wxZRColaFrame * const wnd = static_cast<wxZRColaFrame*>(GetWindow());
wxString lang;
if (RestoreValue(wxT("lang"), &lang) && lang.Length() == 3) {
memcpy(wnd->m_lang, (const char*)lang.c_str(), sizeof(wnd->m_lang));
wnd->m_toolDecompLanguage->SetStringSelection(wxString::FromAscii(wnd->m_lang, sizeof(wnd->m_lang)));
} else {
ZRColaApp *app = ((ZRColaApp*)wxTheApp);
if (!app->m_lang_db.idxLng.empty()) {
const ZRCola::language_db::language &lang = app->m_lang_db.idxLng[0];
memcpy(wnd->m_lang, lang.id, sizeof(wnd->m_lang));
wnd->m_toolDecompLanguage->Select(0);
} else {
memcpy(wnd->m_lang, ZRCOLA_LANG_VOID, sizeof(wnd->m_lang));
}
}
return r;
}

View File

@ -27,6 +27,8 @@ class wxZRColaFrame;
#pragma once
#include "zrcolagui.h"
#include <zrcola/language.h>
#include <wx/persist/toplevel.h>
///
@ -42,6 +44,12 @@ class wxZRColaFrame;
class wxZRColaFrame : public wxZRColaFrameBase
{
public:
enum
{
wxID_DECOMP_LANGUAGE_START = 6000,
wxID_DECOMP_LANGUAGE_END = 6099,
};
wxZRColaFrame();
virtual ~wxZRColaFrame();
@ -52,10 +60,16 @@ protected:
void OnSendComposed(wxCommandEvent& event);
void OnSendDecomposed(wxCommandEvent& event);
void OnSendAbort(wxCommandEvent& event);
void OnDecomposedLanguageUpdate(wxUpdateUIEvent& event);
void OnDecomposedLanguage(wxCommandEvent& event);
virtual void OnDecompLanguageChoice(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
wxDECLARE_EVENT_TABLE();
friend class wxPersistentZRColaFrame;
friend class wxZRColaComposerPanel;
private:
void DoSend(const wxString& str);
@ -63,5 +77,25 @@ protected:
virtual WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
protected:
ZRCola::langid_t m_lang; ///< Language for decomposing
WXHWND m_hWndSource; ///< handle of the active window, when the ZRCola hotkey was pressed
};
///
/// Supports saving/restoring wxZRColaFrame GUI state
///
class wxPersistentZRColaFrame : public wxPersistentTLW
{
public:
wxPersistentZRColaFrame(wxZRColaFrame *wnd);
virtual void Save() const;
virtual bool Restore();
};
inline wxPersistentObject *wxCreatePersistentObject(wxZRColaFrame *wnd)
{
return new wxPersistentZRColaFrame(wnd);
}

View File

@ -97,6 +97,10 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
#endif
m_menuEdit->Append( m_menuItemSendAbort );
m_menuDecompLanguage = new wxMenu();
wxMenuItem* m_menuDecompLanguageItem = new wxMenuItem( m_menuEdit, wxID_ANY, _("&Language"), wxEmptyString, wxITEM_NORMAL, m_menuDecompLanguage );
m_menuEdit->Append( m_menuDecompLanguageItem );
m_menubar->Append( m_menuEdit, _("&Edit") );
m_menuHelp = new wxMenu();
@ -122,6 +126,13 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
m_toolSendDecomposed = m_toolbar->AddTool( wxID_SEND_DECOMPOSED, _("Send Decomposed"), wxIcon( wxT("send_decomposed.ico"), wxBITMAP_TYPE_ICO_RESOURCE, 24, 24 ), wxNullBitmap, wxITEM_NORMAL, _("Send Decomposed"), _("Send decomposed text to source window"), NULL );
m_toolDecompLanguageLbl = new wxStaticText( m_toolbar, wxID_ANY, _("Language:"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
m_toolDecompLanguageLbl->Wrap( -1 );
m_toolbar->AddControl( m_toolDecompLanguageLbl );
wxArrayString m_toolDecompLanguageChoices;
m_toolDecompLanguage = new wxChoice( m_toolbar, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_toolDecompLanguageChoices, 0 );
m_toolDecompLanguage->SetSelection( 0 );
m_toolbar->AddControl( m_toolDecompLanguage );
m_toolbar->Realize();
wxBoxSizer* bSizerMain;
@ -137,10 +148,16 @@ wxZRColaFrameBase::wxZRColaFrameBase( wxWindow* parent, wxWindowID id, const wxS
m_statusBar = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
this->Centre( wxBOTH );
// Connect Events
m_toolDecompLanguage->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( wxZRColaFrameBase::OnDecompLanguageChoice ), NULL, this );
}
wxZRColaFrameBase::~wxZRColaFrameBase()
{
// Disconnect Events
m_toolDecompLanguage->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( wxZRColaFrameBase::OnDecompLanguageChoice ), NULL, this );
}
wxZRColaComposerPanelBase::wxZRColaComposerPanelBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )

View File

@ -21,6 +21,8 @@
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/stattext.h>
#include <wx/choice.h>
#include <wx/toolbar.h>
#include "zrcolacomppnl.h"
#include <wx/sizer.h>
@ -49,6 +51,7 @@ class wxZRColaFrameBase : public wxFrame
wxMenuBar* m_menubar;
wxMenu* m_menuProgram;
wxMenu* m_menuEdit;
wxMenu* m_menuDecompLanguage;
wxMenu* m_menuHelp;
wxToolBar* m_toolbar;
wxToolBarToolBase* m_toolEditCut;
@ -56,9 +59,15 @@ class wxZRColaFrameBase : public wxFrame
wxToolBarToolBase* m_toolEditPaste;
wxToolBarToolBase* m_toolSendComposed;
wxToolBarToolBase* m_toolSendDecomposed;
wxStaticText* m_toolDecompLanguageLbl;
wxChoice* m_toolDecompLanguage;
wxZRColaComposerPanel* m_panel;
wxStatusBar* m_statusBar;
// Virtual event handlers, overide them in your derived class
virtual void OnDecompLanguageChoice( wxCommandEvent& event ) { event.Skip(); }
public:
wxZRColaFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("ZRCola"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 600,400 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL, const wxString& name = wxT("ZRCola") );