diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/inkview-application.cpp | 20 | ||||
| -rw-r--r-- | src/inkview-window.cpp | 6 | ||||
| -rw-r--r-- | src/inkview-window.h | 2 |
3 files changed, 20 insertions, 8 deletions
diff --git a/src/inkview-application.cpp b/src/inkview-application.cpp index 983c4287a..fbec132a1 100644 --- a/src/inkview-application.cpp +++ b/src/inkview-application.cpp @@ -65,12 +65,12 @@ InkviewApplication::InkviewApplication() // Will automatically handle character conversions. // Note: OPTION_TYPE_FILENAME => std::string, OPTION_TYPE_STRING => Glib::ustring. - add_main_option_entry(OPTION_TYPE_BOOL, "version", 'V', N_("Print: Inkview version."), ""); - add_main_option_entry(OPTION_TYPE_BOOL, "fullscreen", 'f', N_("Launch in fullscreen mode"), ""); - add_main_option_entry(OPTION_TYPE_BOOL, "recursive", 'r', N_("Search folders recursively"), ""); - add_main_option_entry(OPTION_TYPE_INT, "timer", 't', N_("Change image every NUMBER seconds"), N_("NUMBER")); - add_main_option_entry(OPTION_TYPE_DOUBLE, "scale", 's', N_("Scale image by factor NUMBER"), N_("NUMBER")); - add_main_option_entry(OPTION_TYPE_BOOL, "preload", 'p', N_("Preload files"), ""); + add_main_option_entry(OPTION_TYPE_BOOL, "version", 'V', N_("Print: Inkview version."), ""); + add_main_option_entry(OPTION_TYPE_BOOL, "fullscreen", 'f', N_("Launch in fullscreen mode"), ""); + add_main_option_entry(OPTION_TYPE_BOOL, "recursive", 'r', N_("Search folders recursively"), ""); + add_main_option_entry(OPTION_TYPE_INT, "timer", 't', N_("Change image every NUMBER seconds"), N_("NUMBER")); + add_main_option_entry(OPTION_TYPE_DOUBLE, "scale", 's', N_("Scale image by factor NUMBER"), N_("NUMBER")); + add_main_option_entry(OPTION_TYPE_BOOL, "preload", 'p', N_("Preload files"), ""); signal_handle_local_options().connect(sigc::mem_fun(*this, &InkviewApplication::on_handle_local_options)); @@ -125,7 +125,13 @@ InkviewApplication::on_activate() void InkviewApplication::on_open(const Gio::Application::type_vec_files& files, const Glib::ustring& hint) { - window = new InkviewWindow(files, fullscreen, recursive, timer, scale, preload); + try { + window = new InkviewWindow(files, fullscreen, recursive, timer, scale, preload); + } catch (const InkviewWindow::NoValidFilesException&) { + std::cerr << _("Error") << ": " << _("No (valid) files to open.") << std::endl; + exit(1); + } + window->show_all(); add_window(*window); } diff --git a/src/inkview-window.cpp b/src/inkview-window.cpp index 05893dc9b..57e7f4727 100644 --- a/src/inkview-window.cpp +++ b/src/inkview-window.cpp @@ -49,6 +49,10 @@ InkviewWindow::InkviewWindow(const Gio::Application::type_vec_files files, preload_documents(); } + if (_files.empty()) { + throw NoValidFilesException(); + } + _documents.resize( _files.size(), nullptr); // We keep _documents and _files in sync. // Callbacks @@ -278,7 +282,7 @@ InkviewWindow::show_control() return; } - + builder->get_widget("ControlWindow", _controlwindow); if (!_controlwindow) { std::cerr << "InkviewWindow::show_control: Control Window not found!" << std::endl; diff --git a/src/inkview-window.h b/src/inkview-window.h index dc110f381..8cf6915fb 100644 --- a/src/inkview-window.h +++ b/src/inkview-window.h @@ -36,6 +36,8 @@ public: InkviewWindow(const Gio::Application::type_vec_files files, bool fullscreen, bool recursive, int timer, double scale, bool preload); + class NoValidFilesException : public std::exception {}; + private: std::vector<Glib::RefPtr<Gio::File> > create_file_list(const std::vector<Glib::RefPtr<Gio::File > >& files); |
