spek

Acoustic spectrum analyser
git clone http://git.hanabi.in/repos/spek.git
Log | Files | Refs | README

commit c588131005232d911a1f03c40bbc9080ccfd6aa5
parent 0d6df1e48c94d1583afacbb5b011a7b99b5b7cb5
Author: Alexander Kojevnikov <alexander@kojevnikov.com>
Date:   Thu,  9 Aug 2012 11:02:33 -0700

Parse the command line

Diffstat:
Msrc/spek.cc | 52+++++++++++++++++++++++++++++++++++++++++++++++++++-
Msrc/spek.vala | 32--------------------------------
2 files changed, 51 insertions(+), 33 deletions(-)

diff --git a/src/spek.cc b/src/spek.cc @@ -16,21 +16,71 @@ * along with Spek. If not, see <http://www.gnu.org/licenses/>. */ -#include <wx/wx.h> +#include <wx/cmdline.h> +#include <wx/log.h> #include "spek-window.hh" class Spek: public wxApp { +protected: virtual bool OnInit(); + virtual void OnInitCmdLine(wxCmdLineParser& parser); + virtual bool OnCmdLineParsed(wxCmdLineParser& parser); }; IMPLEMENT_APP(Spek) bool Spek::OnInit() { + if (!wxApp::OnInit()) { + return false; + } + SpekWindow *window = new SpekWindow(wxT("Hello World"), wxPoint(50,50), wxSize(450,340)); window->Show(true); SetTopWindow(window); return true; } + +void Spek::OnInitCmdLine(wxCmdLineParser& parser) +{ + wxCmdLineEntryDesc desc[] = {{ + wxCMD_LINE_SWITCH, wxT("h"), + wxT("help"), _("Show this help message"), + wxCMD_LINE_VAL_NONE, + wxCMD_LINE_OPTION_HELP + }, { + wxCMD_LINE_SWITCH, + wxT("V"), + wxT("version"), + _("Display the version and exit") + }, { + wxCMD_LINE_PARAM, + NULL, + NULL, + _("FILE"), + wxCMD_LINE_VAL_STRING, + wxCMD_LINE_PARAM_OPTIONAL + }, { + wxCMD_LINE_NONE + } + }; + + parser.SetDesc(desc); +} + +bool Spek::OnCmdLineParsed(wxCmdLineParser& parser) +{ + if (!wxApp::OnCmdLineParsed(parser)) { + return false; + } + + if (parser.Found(wxT("version"))) { + // TRANSLATORS: first %s is the package name, second %s is the package version. + wxPrintf(_("%s version %s\n"), wxT(PACKAGE_NAME), wxT(PACKAGE_VERSION)); + return false; + } + + return true; +} diff --git a/src/spek.vala b/src/spek.vala @@ -21,15 +21,7 @@ namespace Spek { [CCode (array_length = false, array_null_terminated = true)] string[] files = null; - const OptionEntry[] options = { - { "version", 'V', 0, OptionArg.NONE, ref version, N_("Display the version and exit"), null }, - { "", 0, 0, OptionArg.FILENAME_ARRAY, ref files, null, null }, - { null } - }; - int main (string[] args) { - Platform.fix_args (args); - if (Preferences.instance.language.length > 0) { Environment.set_variable ("LANGUAGE", Preferences.instance.language, true); } @@ -38,27 +30,6 @@ namespace Spek { Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8"); Intl.textdomain (Config.GETTEXT_PACKAGE); - try { - Gtk.init_with_args (ref args, _("[FILE]"), (OptionEntry[]) options, Config.GETTEXT_PACKAGE); - } catch (Error e) { - print (e.message); - print ("\n"); - print (_("Run `%s --help` to see a full list of available command line options.\n"), args[0]); - return 1; - } - - if (version) { - // TRANSLATORS: first %s is the package name, second %s is the package version. - print (_("%s version %s\n"), Config.PACKAGE_NAME, Config.PACKAGE_VERSION); - return 0; - } - - if (files != null && files.length != 1) { - print (_("Specify a single file\n")); - return 1; - } - - Platform.init (); Audio.init (); var file_name = files == null ? null : files[0]; if (file_name != null && file_name.has_prefix ("file://")) { @@ -67,9 +38,6 @@ namespace Spek { } catch (ConvertError e) { } } - var window = new Window (file_name); - Gtk.main (); - window.destroy (); return 0; } } \ No newline at end of file