diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-12-08 00:09:57 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-12-08 00:09:57 +0000 |
| commit | 9c1bb2e5ca7c80c4e26b1b2e41159aa171360a94 (patch) | |
| tree | 674348c2090d46047c62ad6e1fdbb3a0b5c32896 /src/wx/i18n_hook.cc | |
| parent | cac2b6f2c8dffcb7271d71fc23c0150c2fe4d6ea (diff) | |
Basics of in-place i18n with support for wxStaticText and wxCheckBox.
Diffstat (limited to 'src/wx/i18n_hook.cc')
| -rw-r--r-- | src/wx/i18n_hook.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/wx/i18n_hook.cc b/src/wx/i18n_hook.cc new file mode 100644 index 000000000..bb185526e --- /dev/null +++ b/src/wx/i18n_hook.cc @@ -0,0 +1,56 @@ +/* + Copyright (C) 2018 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#include "i18n_hook.h" +#include "instant_i18n_dialog.h" +#include "wx_util.h" +#include "lib/cross.h" +#include <wx/wx.h> +#include <boost/bind.hpp> +#include <boost/filesystem.hpp> + +I18NHook::I18NHook (wxWindow* window) + : _window (window) +{ + _window->Bind (wxEVT_MIDDLE_DOWN, bind(&I18NHook::handle, this, _1)); +} + +void +I18NHook::handle (wxMouseEvent& ev) +{ + wxString const original = get_text (); + + InstantI18NDialog* d = new InstantI18NDialog (_window, get_text()); + d->ShowModal(); + set_text (d->get()); + _window->GetContainingSizer()->Layout(); + ev.Skip (); + + boost::filesystem::path file = "instant_i18n"; + + FILE* f = fopen_boost (file, "a"); + if (!f) { + error_dialog (_window, wxString::Format(_("Could not open translation file %s"), std_to_wx(file.string()).data())); + return; + } + fprintf (f, "%s\n", wx_to_std(original).c_str()); + fprintf (f, "%s\n", wx_to_std(get_text()).c_str()); + fclose (f); +} |
