From 61a9770951d4cc328c6449f73879a9fe8c750ad3 Mon Sep 17 00:00:00 2001 From: Syping Date: Fri, 27 Aug 2021 23:17:57 +0200 Subject: [PATCH] improve examples --- .../ragephoto-gtkviewer/src/PhotoViewer.cpp | 12 ++++++++-- examples/ragephoto-gtkviewer/src/main.cpp | 22 ++++++++++++++----- examples/ragephoto-qtviewer/src/main.cpp | 9 +++++--- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/examples/ragephoto-gtkviewer/src/PhotoViewer.cpp b/examples/ragephoto-gtkviewer/src/PhotoViewer.cpp index d37d740..fe31710 100644 --- a/examples/ragephoto-gtkviewer/src/PhotoViewer.cpp +++ b/examples/ragephoto-gtkviewer/src/PhotoViewer.cpp @@ -19,6 +19,7 @@ #include "PhotoViewer.h" #include #include +#include #include #include @@ -32,6 +33,9 @@ void PhotoViewer::open_file(const char *filename) // Read file FILE *file = fopen(filename, "rb"); if (!file) { + Gtk::MessageDialog msg(*p_win, "Failed to read file: " + Glib::ustring(filename), false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true); + msg.set_title("Open Photo"); + msg.run(); return; } const int fseek_end_value = fseek(file, 0, SEEK_END); @@ -60,8 +64,12 @@ void PhotoViewer::open_file(const char *filename) free(data); if (!loaded) { const RagePhoto::Error error = ragePhoto.error(); - if (error <= RagePhoto::Error::PhotoReadError) + if (error <= RagePhoto::Error::PhotoReadError) { + Gtk::MessageDialog msg(*p_win, "Failed to read photo: " + Glib::ustring(filename), false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true); + msg.set_title("Open Photo"); + msg.run(); return; + } } guchar *photoData = static_cast(malloc(ragePhoto.photoSize())); @@ -71,7 +79,7 @@ void PhotoViewer::open_file(const char *filename) memcpy(photoData, ragePhoto.photoData(), ragePhoto.photoSize()); GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); - gdk_pixbuf_loader_write(loader, photoData, static_cast(ragePhoto.photoSize()), nullptr); + gdk_pixbuf_loader_write(loader, photoData, static_cast(ragePhoto.photoSize()), NULL); GdkPixbuf *c_pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); p_image = Glib::wrap(c_pixbuf); diff --git a/examples/ragephoto-gtkviewer/src/main.cpp b/examples/ragephoto-gtkviewer/src/main.cpp index 1caf428..b727121 100644 --- a/examples/ragephoto-gtkviewer/src/main.cpp +++ b/examples/ragephoto-gtkviewer/src/main.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -53,6 +54,7 @@ int main(int argc, char *argv[]) open_button.set_label("Open"); open_button.set_hexpand(true); open_button.set_size_request(100); + open_button.set_image_from_icon_name("document-open"); open_button.signal_clicked().connect([&](){ Gtk::FileChooserDialog dialog("Open Photo...", Gtk::FILE_CHOOSER_ACTION_OPEN); dialog.set_transient_for(win); @@ -84,18 +86,28 @@ int main(int argc, char *argv[]) close_button.set_label("Close"); close_button.set_hexpand(true); close_button.set_size_request(100); + close_button.set_image_from_icon_name("dialog-close"); close_button.signal_clicked().connect([&](){ win.close(); }); horizontal_box.add(close_button); close_button.show(); - app->signal_open().connect([&](const Gio::Application::type_vec_files &files, const Glib::ustring &hint){ - for (const auto &file : files) { - photo_viewer.open_file(file->get_path().c_str()); + app->signal_open().connect([&](const Gio::Application::type_vec_files &files, const Glib::ustring &hint) { + if (files.size() == 1) { + for (const auto &file : files) { + photo_viewer.open_file(file->get_path().c_str()); + } + app->add_window(win); + win.show(); + } + else { + app->add_window(win); + win.show(); + Gtk::MessageDialog msg(win, "Can't open multiple photos at once!", false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true); + msg.set_title("RagePhoto GTK Photo Viewer"); + msg.run(); } - app->add_window(win); - win.show(); }); horizontal_box.show(); diff --git a/examples/ragephoto-qtviewer/src/main.cpp b/examples/ragephoto-qtviewer/src/main.cpp index 50f49b8..c26664a 100644 --- a/examples/ragephoto-qtviewer/src/main.cpp +++ b/examples/ragephoto-qtviewer/src/main.cpp @@ -73,20 +73,21 @@ int main(int argc, char *argv[]) QWidget centralWidget(&mainWindow); mainWindow.setCentralWidget(¢ralWidget); - QVBoxLayout verticalLayout(&mainWindow); + QVBoxLayout verticalLayout(¢ralWidget); verticalLayout.setContentsMargins(0, 0, 0, 0); verticalLayout.setSpacing(6); - centralWidget.setLayout(&verticalLayout); QLabel photoLabel(&mainWindow); verticalLayout.addWidget(&photoLabel); - QHBoxLayout horizontalLayout(&mainWindow); + QHBoxLayout horizontalLayout; horizontalLayout.setContentsMargins(6, 0, 6, 6); horizontalLayout.setSpacing(6); verticalLayout.addLayout(&horizontalLayout); QPushButton openButton("Open", &mainWindow); + if (QIcon::hasThemeIcon("document-open")) + openButton.setIcon(QIcon::fromTheme("document-open")); QObject::connect(&openButton, &QPushButton::clicked, &mainWindow, [&](){ const QString filename = QFileDialog::getOpenFileName(&mainWindow, "Open Photo...", QString(), "GTA V Photo (PGTA5*)"); if (filename.isEmpty()) @@ -100,6 +101,8 @@ int main(int argc, char *argv[]) horizontalLayout.addWidget(&openButton); QPushButton closeButton("Close", &mainWindow); + if (QIcon::hasThemeIcon("dialog-close")) + closeButton.setIcon(QIcon::fromTheme("dialog-close")); QObject::connect(&closeButton, &QPushButton::clicked, &mainWindow, &QMainWindow::close); horizontalLayout.addWidget(&closeButton);