diff --git a/PanoPainter.vcxproj b/PanoPainter.vcxproj
index 8337d6d..dd1727f 100644
--- a/PanoPainter.vcxproj
+++ b/PanoPainter.vcxproj
@@ -384,6 +384,7 @@
+
@@ -516,6 +517,7 @@
+
@@ -573,6 +575,7 @@
+
Designer
diff --git a/PanoPainter.vcxproj.filters b/PanoPainter.vcxproj.filters
index f3e34d8..e17b38b 100644
--- a/PanoPainter.vcxproj.filters
+++ b/PanoPainter.vcxproj.filters
@@ -5,10 +5,6 @@
{4FC737F1-C7A5-4376-A066-2A32D752A2FF}
cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hh;hpp;hxx;hm;inl;inc;xsd
-
{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
@@ -16,9 +12,6 @@
{600b8daa-4234-4c37-b4ba-c22cad7d1dc3}
-
- {2c3e7ce5-d3f4-4731-b05f-5e288c7e6e63}
-
{6d64b115-02d1-43e0-86c8-c8212f51162d}
@@ -390,6 +383,9 @@
Source Files\ui
+
+ Source Files\ui
+
@@ -641,15 +637,18 @@
Source Files\ui
-
- Header Files
-
Source Files\ui
Source Files\ui
+
+ Source Files\ui
+
+
+ Source Files
+
@@ -740,6 +739,9 @@
extras\dialogs
+
+ extras\dialogs
+
diff --git a/data/dialogs/shortcuts.xml b/data/dialogs/shortcuts.xml
new file mode 100644
index 0000000..6cfa71c
--- /dev/null
+++ b/data/dialogs/shortcuts.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ New File
+
+
+ Ctrl + N
+
+
+
+
+
+
+
+
+ Shortcuts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/layout.xml b/data/layout.xml
index c312562..995b09d 100644
--- a/data/layout.xml
+++ b/data/layout.xml
@@ -234,6 +234,10 @@
+
+
+
+
diff --git a/src/app.h b/src/app.h
index a914bb9..d8fb0cd 100644
--- a/src/app.h
+++ b/src/app.h
@@ -263,6 +263,7 @@ public:
void dialog_export_mp4();
void dialog_timelapse_export();
void dialog_whatsnew(bool force_show);
+ void dialog_shortcuts();
void cloud_upload();
void cloud_upload_all();
diff --git a/src/app_dialogs.cpp b/src/app_dialogs.cpp
index 584c01d..4024c76 100644
--- a/src/app_dialogs.cpp
+++ b/src/app_dialogs.cpp
@@ -11,6 +11,7 @@
#include "node_usermanual.h"
#include "node_dialog_export_ppbr.h"
#include "node_remote_page.h"
+#include "node_shorcuts.h"
#include
#define MP4V2_NO_STDINT_DEFS
@@ -869,4 +870,9 @@ void App::dialog_whatsnew(bool force_show)
});
}
});
-}
\ No newline at end of file
+}
+
+void App::dialog_shortcuts()
+{
+ layout[main_id]->add_child();
+}
diff --git a/src/app_layout.cpp b/src/app_layout.cpp
index 149c484..859e971 100644
--- a/src/app_layout.cpp
+++ b/src/app_layout.cpp
@@ -10,6 +10,7 @@
#include "serializer.h"
#include "font.h"
#include "node_remote_page.h"
+#include "node_shorcuts.h"
void App::title_update()
{
@@ -1043,7 +1044,13 @@ void App::init_menu_tools()
popup_exp->mouse_release();
popup_exp->destroy();
};
-
+
+ popup_exp->find("shortcuts")->on_click = [this, popup_exp](Node*) {
+ dialog_shortcuts();
+ popup_exp->mouse_release();
+ popup_exp->destroy();
+ };
+
/*
popup_exp->find("mp4test")->on_click = [this, popup_exp](Node*) {
dialog_export_mp4();
@@ -1381,13 +1388,13 @@ void App::initLayout()
LOG("initializing layout designer xml");
layout_designer.on_loaded = [&](bool reloaded) {
layout_designer.create();
- //layout_designer[main_id]->add_child(layout_designer.instantiate("tpl-panel-animation"));
- auto p = layout_designer[main_id]->add_child();
- p->SetPosition(300, 300);
- p->SetSize(600, 400);
- p->m_container->add_child();
+ //layout_designer[main_id]->add_child(layout_designer.instantiate("shortcuts"));
+ auto p = layout_designer[main_id]->add_child();
+ //p->SetPosition(300, 300);
+ //p->SetSize(600, 400);
+ //p->m_container->add_child();
};
- //layout_designer.load("data/dialogs/panel-animation.xml");
+ //layout_designer.load("data/dialogs/shortcuts.xml");
}
void App::set_ui_scale(float scale)
diff --git a/src/node_shorcuts.cpp b/src/node_shorcuts.cpp
new file mode 100644
index 0000000..e38b22c
--- /dev/null
+++ b/src/node_shorcuts.cpp
@@ -0,0 +1,62 @@
+#include "pch.h"
+#include "node_shorcuts.h"
+#include "node_button.h"
+#include "node_text.h"
+#include "node_scroll.h"
+
+Node* NodeShortcuts::clone_instantiate() const
+{
+ return new NodeShortcuts;
+}
+
+void NodeShortcuts::init()
+{
+ init_template_file("data/dialogs/shortcuts.xml", "shortcuts");
+ init_controls();
+}
+
+void NodeShortcuts::init_controls()
+{
+ m_content = find("content");
+ m_btn_close = find("btn-ok");
+ m_btn_close->on_click = [this](Node*) {
+ destroy();
+ };
+ add_shortcut("New File", "Ctrl+N");
+}
+
+void NodeShortcuts::add_shortcut(const std::string& descr, const std::string& shortcut) noexcept
+{
+ auto item = m_content->add_child();
+ item->set_descr(descr);
+ item->set_shortcut(shortcut);
+}
+
+//////////////////////////////////////////////////////////////////////////
+
+Node* NodeShortcutsItem::clone_instantiate() const
+{
+ return new NodeShortcutsItem;
+}
+
+void NodeShortcutsItem::init()
+{
+ init_template_file("data/dialogs/shortcuts.xml", "item");
+ init_controls();
+}
+
+void NodeShortcutsItem::init_controls()
+{
+ m_descr = find("descr");
+ m_shortcut = find("shortcut");
+}
+
+void NodeShortcutsItem::set_descr(const std::string& str) noexcept
+{
+ m_descr->set_text(str);
+}
+
+void NodeShortcutsItem::set_shortcut(const std::string& str) noexcept
+{
+ m_shortcut->set_text(str);
+}
diff --git a/src/node_shorcuts.h b/src/node_shorcuts.h
new file mode 100644
index 0000000..6028f2a
--- /dev/null
+++ b/src/node_shorcuts.h
@@ -0,0 +1,25 @@
+#pragma once
+#include "node_border.h"
+
+class NodeShortcutsItem : public NodeBorder
+{
+ class NodeText* m_descr;
+ class NodeText* m_shortcut;
+public:
+ virtual Node* clone_instantiate() const override;
+ virtual void init() override;
+ void init_controls();
+ void set_descr(const std::string& str) noexcept;
+ void set_shortcut(const std::string& str) noexcept;
+};
+
+class NodeShortcuts : public NodeBorder
+{
+ class NodeButton* m_btn_close;
+ class NodeScroll* m_content;
+public:
+ virtual Node* clone_instantiate() const override;
+ virtual void init() override;
+ void init_controls();
+ void add_shortcut(const std::string& descr, const std::string& shortcut) noexcept;
+};