summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/inkview-application.cpp20
-rw-r--r--src/inkview-window.cpp6
-rw-r--r--src/inkview-window.h2
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);