aboutsummaryrefslogtreecommitdiff
path: root/mapman/src/groupview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mapman/src/groupview.cpp')
-rw-r--r--mapman/src/groupview.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/mapman/src/groupview.cpp b/mapman/src/groupview.cpp
index ea4225a..7881184 100644
--- a/mapman/src/groupview.cpp
+++ b/mapman/src/groupview.cpp
@@ -1,6 +1,7 @@
#include "groupview.hpp"
#include "library.hpp"
#include "painter.hpp"
+#include "src/utils.hpp"
#include <algorithm>
@@ -19,6 +20,8 @@
#include <QSpacerItem>
#include <QHeaderView>
#include <QMessageBox>
+#include <QFileDialog>
+#include <qfiledialog.h>
group_view::group_view() : QMdiSubWindow()
{
@@ -141,6 +144,14 @@ void group_view::set_library(map_library *lib)
refresh_list();
}
+void group_view::export_group_image(QString fn, int64_t gid)
+{
+ if (!l || !l->has_group(gid))
+ return;
+ QImage img = image_of_map_group(l, l->get_group(gid), 1.);
+ img.save(fn, "PNG");
+}
+
void group_view::add_group()
{
map_group_t g {
@@ -260,3 +271,31 @@ void group_view::update_map_view()
for (int i = 0; i < g.hc * g.vc; ++i)
p->set_map_id(i, g.populated[i], g.ids[i]);
}
+
+void group_view::export_current_group()
+{
+ int64_t curgid = -1;
+ if (tv->currentIndex().isValid() && tv->currentIndex().siblingAtColumn(3).isValid())
+ {
+ auto idx = tv->currentIndex().siblingAtColumn(3);
+ curgid = mf->data(idx, Qt::ItemDataRole::DisplayRole).toLongLong();
+ }
+ if (!~curgid)
+ return;
+ QString fn = QFileDialog::getSaveFileName(this, "Export Image", QString(), "Images (*.png)");
+ if (fn.isEmpty()) return;
+ export_group_image(fn, curgid);
+}
+
+void group_view::export_all_groups()
+{
+ QString fp = QFileDialog::getExistingDirectory(this, "Select Output Directory");
+ if (fp.isEmpty()) return;
+ auto gids = l->groups();
+ for (auto gid : gids)
+ {
+ auto g = l->get_group(gid);
+ auto fn = QString("%1/%2_%3.png").arg(fp).arg(gid).arg(QString::fromStdString(g.title));
+ export_group_image(fn, gid);
+ }
+}