From 621935256b987929450717d4561fa16f0e732e8d Mon Sep 17 00:00:00 2001
From: fszontagh <51741446+fszontagh@users.noreply.github.com>
Date: Sun, 25 Feb 2024 08:23:46 +0000
Subject: [PATCH] Skeleton with icons

---
 res/icons/16/interrogation.png |    0 
 .gitignore                     |    7 
 main.cpp                       |   25 +
 res/icons/16/palette.png       |    0 
 res/icons/16/trash.png         |    0 
 CMakeLists.txt                 |   28 +
 res/icons/16/images.png        |    0 
 res/icons/16/add_image.png     |    0 
 res/icons/16/forward.png       |    0 
 res/icons/16/zoom_in.png       |    0 
 ui/ImageViewer.h               |   56 +++
 ui/ImageViewerImageWindow.cpp  |    8 
 static/minimal.rc              |    2 
 res/icons/16/pause.png         |    0 
 static/window.fbp              |  279 ++++++++++++++++++
 res/zoom_out.png.h             |   59 +++
 res/icons/16/fullscreen.png    |    0 
 res/icons/16/rotate_right.png  |    0 
 res/icons/16/rotate_left.png   |    0 
 res/icons/16/dice_four.png     |    0 
 res/icons/16/file_import.png   |    0 
 res/icons/16/rewind.png        |    0 
 res/rotate_left.png.h          |   60 ++++
 ui/ImageViewerImageWindow.h    |   25 +
 res/icons/16/disk.png          |    0 
 res/icons/16/cube.ico          |    0 
 res/fullscreen.png.h           |   48 +++
 res/icons/16/replace.png       |    0 
 ui/ImageViewer.cpp             |   74 ++++
 res/icons/16/settings.png      |    0 
 res/add_image.png.h            |   64 ++++
 res/icons/16/play.png          |    0 
 res/icons/16/cross_circle.png  |    0 
 res/icons/16/picture.png       |    0 
 res/icons/16/zoom_out.png      |    0 
 res/icons/16/folder_open.png   |    0 
 res/zoom_in.png.h              |   59 +++
 res/rotate_right.png.h         |   60 ++++
 res/icons/16/text_box_dots.png |    0 
 res/icons/16/cube.png          |    0 
 res/icons/16/refresh.png       |    0 
 41 files changed, 854 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore
index 0def275..2fec102 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,10 @@
 *.exe
 *.out
 *.app
+
+
+vcpkg_installed
+build/
+.vscode/c_cpp_properties.json
+.vscode/settings.json
+.vscode/tasks.json
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..7bcdae6
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 3.5.0)
+
+set(PNAME ImageViewer)
+
+project(${PNAME} VERSION 0.1.0 LANGUAGES C CXX)
+
+find_package(wxWidgets CONFIG REQUIRED)
+find_package(exiv2 CONFIG REQUIRED)
+
+
+IF(WIN32)
+    SET(OPTIONS WIN32)
+    SET(SRCS ${SRCS} static/minimal.rc)
+ENDIF(WIN32)
+
+add_executable(${PNAME} ${OPTIONS} ${SRCS} main.cpp ui/ImageViewer.cpp ui/ImageViewerImageWindow.cpp)
+
+target_compile_definitions(${PROJECT_NAME} PRIVATE ${wxWidgets_DEFINITIONS} "$<$<CONFIG:DEBUG>:${wxWidgets_DEFINITIONS_DEBUG}>")
+target_include_directories(${PROJECT_NAME} PRIVATE ${wxWidgets_INCLUDE_DIRS})
+
+
+target_link_libraries(${PNAME} PRIVATE Exiv2::exiv2lib wx::core wx::base wx::xrc wx::adv wx::richtext wx::aui wx::propgrid wx::html)
+target_compile_features(${PNAME} PUBLIC cxx_std_17)
+
+
+set(CPACK_PROJECT_NAME ${PROJECT_NAME})
+set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
+include(CPack)
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..4d14ac1
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,25 @@
+#include <wx/app.h>
+#include <wx/event.h>
+#define STB_IMAGE_IMPLEMENTATION
+#include "ui/ImageViewerImageWindow.h"
+#include <wx/image.h>
+
+// Define the MainApp
+class MainApp : public wxApp
+{
+public:
+    MainApp() {}
+    virtual ~MainApp() {}
+
+    virtual bool OnInit()
+    {
+        wxInitAllImageHandlers();
+        ImageViewerImageWindow *mainFrame = new ImageViewerImageWindow(nullptr);
+        SetTopWindow(mainFrame);
+
+        return GetTopWindow()->Show();
+    }
+};
+
+DECLARE_APP(MainApp)
+IMPLEMENT_APP(MainApp)
\ No newline at end of file
diff --git a/res/add_image.png.h b/res/add_image.png.h
new file mode 100644
index 0000000..6b68549
--- /dev/null
+++ b/res/add_image.png.h
@@ -0,0 +1,64 @@
+#ifndef ADD_IMAGE_PNG_H
+#define ADD_IMAGE_PNG_H
+
+#include <wx/mstream.h>
+#include <wx/image.h>
+#include <wx/bitmap.h>
+
+static const unsigned char add_image_png[] =
+{
+	0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 
+	0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 
+	0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 
+	0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+	0x73, 0x00, 0x00, 0x09, 0xD7, 0x00, 0x00, 0x09, 0xD7, 0x01, 
+	0xB1, 0x6E, 0x17, 0xB7, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 
+	0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 
+	0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 
+	0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 
+	0x1A, 0x00, 0x00, 0x01, 0x38, 0x49, 0x44, 0x41, 0x54, 0x38, 
+	0x8D, 0x7D, 0xD3, 0x3D, 0x4B, 0x5D, 0x41, 0x10, 0x06, 0xE0, 
+	0xE7, 0xE2, 0x15, 0x04, 0xFF, 0x80, 0x8D, 0x55, 0x1A, 0x0B, 
+	0x3F, 0xDA, 0x58, 0xE4, 0x17, 0xD8, 0x26, 0x04, 0xAD, 0x44, 
+	0xC4, 0xCA, 0x52, 0xB0, 0x12, 0x0B, 0x6D, 0x24, 0xA2, 0x28, 
+	0xA4, 0x89, 0xE9, 0x05, 0xBF, 0x3A, 0x2B, 0x1B, 0x3F, 0x0A, 
+	0x6F, 0x23, 0x04, 0x82, 0x60, 0x27, 0x89, 0xE6, 0x07, 0x04, 
+	0x15, 0x41, 0xEE, 0xF5, 0x5A, 0xEC, 0x1C, 0xB9, 0x1E, 0x8E, 
+	0xFB, 0xC2, 0x70, 0x76, 0x67, 0xE7, 0x7D, 0x67, 0xF6, 0xEC, 
+	0x0C, 0x09, 0x53, 0xB8, 0x44, 0x13, 0xED, 0x8C, 0xDD, 0xE3, 
+	0x08, 0x43, 0xC1, 0x53, 0x0B, 0xF2, 0x0F, 0x7C, 0xC7, 0x39, 
+	0x5A, 0xDE, 0x47, 0x2F, 0x26, 0x31, 0x82, 0x41, 0xFC, 0x13, 
+	0x99, 0x37, 0x32, 0xA4, 0x3E, 0xAC, 0x63, 0x2D, 0xD6, 0x3D, 
+	0xF8, 0x83, 0xC5, 0x22, 0xA0, 0x89, 0xAF, 0x19, 0x81, 0x33, 
+	0xFC, 0x0D, 0x3B, 0x09, 0xDF, 0x3E, 0xB6, 0xA1, 0x8E, 0x2E, 
+	0x3C, 0x67, 0x04, 0x86, 0xF1, 0x2D, 0xD6, 0x73, 0xF1, 0x6D, 
+	0x05, 0x4F, 0xBD, 0x14, 0xFC, 0x01, 0xB3, 0xE8, 0xC6, 0x4F, 
+	0xFC, 0xC2, 0x16, 0x96, 0xE2, 0x7C, 0xB5, 0xAC, 0xDE, 0x29, 
+	0xF0, 0x09, 0x87, 0xB8, 0xC1, 0x23, 0x66, 0x30, 0x1E, 0x59, 
+	0xF7, 0x22, 0xA6, 0x51, 0x55, 0x62, 0x1B, 0x9B, 0xB8, 0x8B, 
+	0xC0, 0x6E, 0xE9, 0x75, 0x36, 0xF1, 0x84, 0xCF, 0x15, 0x9C, 
+	0x95, 0xB0, 0x57, 0x81, 0x76, 0x07, 0xB9, 0x40, 0x4D, 0x7A, 
+	0x9D, 0x26, 0x26, 0xAA, 0x32, 0x77, 0x0A, 0x1C, 0x94, 0xC8, 
+	0x9D, 0x22, 0x45, 0x25, 0x63, 0xE1, 0x5B, 0x46, 0x7F, 0x59, 
+	0xE0, 0x4B, 0x26, 0x41, 0x4D, 0xFA, 0x89, 0x33, 0x55, 0xF1, 
+	0x75, 0x3C, 0x48, 0x1D, 0x96, 0xAB, 0x70, 0x21, 0x73, 0xEE, 
+	0x08, 0xC7, 0x52, 0x87, 0xBD, 0x87, 0x25, 0xD5, 0xB3, 0x71, 
+	0x55, 0x93, 0x06, 0xE3, 0x14, 0xFF, 0x71, 0xE1, 0xED, 0x2C, 
+	0x5C, 0x63, 0x5E, 0xBA, 0xF3, 0xC7, 0xF0, 0xED, 0x48, 0x6D, 
+	0xDD, 0xC0, 0x6D, 0x1D, 0xBF, 0xA5, 0xC1, 0x98, 0xC6, 0x80, 
+	0xE8, 0xB0, 0x12, 0x6E, 0xC2, 0x0A, 0x34, 0xB0, 0x9B, 0xBB, 
+	0x56, 0x0E, 0x57, 0x18, 0x2D, 0x36, 0x2F, 0x15, 0x18, 0x51, 
+	0x56, 0x88, 0xBB, 0xC5, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x49, 
+	0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, 
+};
+
+wxBitmap& add_image_png_to_wx_bitmap()
+{
+	static wxMemoryInputStream memIStream( add_image_png, sizeof( add_image_png ) );
+	static wxImage image( memIStream, wxBITMAP_TYPE_PNG );
+	static wxBitmap bmp( image );
+	return bmp;
+}
+
+
+#endif //ADD_IMAGE_PNG_H
diff --git a/res/fullscreen.png.h b/res/fullscreen.png.h
new file mode 100644
index 0000000..dcbd7e3
--- /dev/null
+++ b/res/fullscreen.png.h
@@ -0,0 +1,48 @@
+#ifndef FULLSCREEN_PNG_H
+#define FULLSCREEN_PNG_H
+
+#include <wx/mstream.h>
+#include <wx/image.h>
+#include <wx/bitmap.h>
+
+static const unsigned char fullscreen_png[] =
+{
+	0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 
+	0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 
+	0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 
+	0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+	0x73, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 
+	0x4E, 0x7B, 0x26, 0x08, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 
+	0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 
+	0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 
+	0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 
+	0x1A, 0x00, 0x00, 0x00, 0x9B, 0x49, 0x44, 0x41, 0x54, 0x38, 
+	0x8D, 0xCD, 0xD3, 0xB1, 0x0D, 0xC2, 0x30, 0x10, 0x85, 0xE1, 
+	0x2F, 0x62, 0x0C, 0x28, 0x58, 0x83, 0x94, 0x74, 0xE9, 0x68, 
+	0x18, 0x20, 0x1D, 0x2D, 0xA9, 0x18, 0x85, 0x65, 0x42, 0xC9, 
+	0x0C, 0xA4, 0x05, 0xB1, 0x06, 0xA1, 0xB0, 0x23, 0x19, 0x45, 
+	0x48, 0x36, 0x15, 0x4F, 0xB2, 0x64, 0x3F, 0xE9, 0x7E, 0xDD, 
+	0xE9, 0xF9, 0xC8, 0xD7, 0x80, 0x31, 0x39, 0x0F, 0x34, 0x55, 
+	0x01, 0xA0, 0xC6, 0x32, 0xDE, 0x0F, 0xD8, 0x46, 0x48, 0xB1, 
+	0x3A, 0xBC, 0xD0, 0xC7, 0x4E, 0x8A, 0x74, 0x8C, 0x45, 0x27, 
+	0xEC, 0x4B, 0x01, 0x69, 0xB1, 0x52, 0x40, 0x2B, 0xB4, 0xDD, 
+	0x25, 0x5E, 0x8D, 0x5B, 0x2E, 0x60, 0x17, 0x21, 0x7F, 0xA8, 
+	0xC5, 0x17, 0xBF, 0xC5, 0x5A, 0xE6, 0x8C, 0x03, 0x36, 0xC9, 
+	0x7B, 0xCA, 0x39, 0x7B, 0xE6, 0x51, 0x88, 0x84, 0x79, 0x54, 
+	0x45, 0x80, 0x9F, 0x8A, 0x27, 0x40, 0x6F, 0x9E, 0x73, 0x96, 
+	0x2A, 0x61, 0x21, 0x56, 0xB8, 0xE0, 0x1C, 0xFD, 0x27, 0xAE, 
+	0xB9, 0x90, 0x06, 0x77, 0x9F, 0xAB, 0x9A, 0xFD, 0xC3, 0xDE, 
+	0x7F, 0x59, 0x2B, 0x02, 0x7A, 0x97, 0x4A, 0x74, 0x00, 0x00, 
+	0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, 
+};
+
+wxBitmap& fullscreen_png_to_wx_bitmap()
+{
+	static wxMemoryInputStream memIStream( fullscreen_png, sizeof( fullscreen_png ) );
+	static wxImage image( memIStream, wxBITMAP_TYPE_PNG );
+	static wxBitmap bmp( image );
+	return bmp;
+}
+
+
+#endif //FULLSCREEN_PNG_H
diff --git a/res/icons/16/add_image.png b/res/icons/16/add_image.png
new file mode 100644
index 0000000..ac809b5
--- /dev/null
+++ b/res/icons/16/add_image.png
Binary files differ
diff --git a/res/icons/16/cross_circle.png b/res/icons/16/cross_circle.png
new file mode 100644
index 0000000..aa05a65
--- /dev/null
+++ b/res/icons/16/cross_circle.png
Binary files differ
diff --git a/res/icons/16/cube.ico b/res/icons/16/cube.ico
new file mode 100644
index 0000000..be7152b
--- /dev/null
+++ b/res/icons/16/cube.ico
Binary files differ
diff --git a/res/icons/16/cube.png b/res/icons/16/cube.png
new file mode 100644
index 0000000..39f3037
--- /dev/null
+++ b/res/icons/16/cube.png
Binary files differ
diff --git a/res/icons/16/dice_four.png b/res/icons/16/dice_four.png
new file mode 100644
index 0000000..4a31b84
--- /dev/null
+++ b/res/icons/16/dice_four.png
Binary files differ
diff --git a/res/icons/16/disk.png b/res/icons/16/disk.png
new file mode 100644
index 0000000..3d9afb1
--- /dev/null
+++ b/res/icons/16/disk.png
Binary files differ
diff --git a/res/icons/16/file_import.png b/res/icons/16/file_import.png
new file mode 100644
index 0000000..7e87159
--- /dev/null
+++ b/res/icons/16/file_import.png
Binary files differ
diff --git a/res/icons/16/folder_open.png b/res/icons/16/folder_open.png
new file mode 100644
index 0000000..8838325
--- /dev/null
+++ b/res/icons/16/folder_open.png
Binary files differ
diff --git a/res/icons/16/forward.png b/res/icons/16/forward.png
new file mode 100644
index 0000000..43dc718
--- /dev/null
+++ b/res/icons/16/forward.png
Binary files differ
diff --git a/res/icons/16/fullscreen.png b/res/icons/16/fullscreen.png
new file mode 100644
index 0000000..3aa177a
--- /dev/null
+++ b/res/icons/16/fullscreen.png
Binary files differ
diff --git a/res/icons/16/images.png b/res/icons/16/images.png
new file mode 100644
index 0000000..24f6c0e
--- /dev/null
+++ b/res/icons/16/images.png
Binary files differ
diff --git a/res/icons/16/interrogation.png b/res/icons/16/interrogation.png
new file mode 100644
index 0000000..ee17c65
--- /dev/null
+++ b/res/icons/16/interrogation.png
Binary files differ
diff --git a/res/icons/16/palette.png b/res/icons/16/palette.png
new file mode 100644
index 0000000..637029b
--- /dev/null
+++ b/res/icons/16/palette.png
Binary files differ
diff --git a/res/icons/16/pause.png b/res/icons/16/pause.png
new file mode 100644
index 0000000..8da828c
--- /dev/null
+++ b/res/icons/16/pause.png
Binary files differ
diff --git a/res/icons/16/picture.png b/res/icons/16/picture.png
new file mode 100644
index 0000000..00c4d82
--- /dev/null
+++ b/res/icons/16/picture.png
Binary files differ
diff --git a/res/icons/16/play.png b/res/icons/16/play.png
new file mode 100644
index 0000000..25ad68a
--- /dev/null
+++ b/res/icons/16/play.png
Binary files differ
diff --git a/res/icons/16/refresh.png b/res/icons/16/refresh.png
new file mode 100644
index 0000000..b132117
--- /dev/null
+++ b/res/icons/16/refresh.png
Binary files differ
diff --git a/res/icons/16/replace.png b/res/icons/16/replace.png
new file mode 100644
index 0000000..e5d062a
--- /dev/null
+++ b/res/icons/16/replace.png
Binary files differ
diff --git a/res/icons/16/rewind.png b/res/icons/16/rewind.png
new file mode 100644
index 0000000..51a23cb
--- /dev/null
+++ b/res/icons/16/rewind.png
Binary files differ
diff --git a/res/icons/16/rotate_left.png b/res/icons/16/rotate_left.png
new file mode 100644
index 0000000..ca71ca8
--- /dev/null
+++ b/res/icons/16/rotate_left.png
Binary files differ
diff --git a/res/icons/16/rotate_right.png b/res/icons/16/rotate_right.png
new file mode 100644
index 0000000..3d67759
--- /dev/null
+++ b/res/icons/16/rotate_right.png
Binary files differ
diff --git a/res/icons/16/settings.png b/res/icons/16/settings.png
new file mode 100644
index 0000000..abdc42a
--- /dev/null
+++ b/res/icons/16/settings.png
Binary files differ
diff --git a/res/icons/16/text_box_dots.png b/res/icons/16/text_box_dots.png
new file mode 100644
index 0000000..ee66c97
--- /dev/null
+++ b/res/icons/16/text_box_dots.png
Binary files differ
diff --git a/res/icons/16/trash.png b/res/icons/16/trash.png
new file mode 100644
index 0000000..431d747
--- /dev/null
+++ b/res/icons/16/trash.png
Binary files differ
diff --git a/res/icons/16/zoom_in.png b/res/icons/16/zoom_in.png
new file mode 100644
index 0000000..916413c
--- /dev/null
+++ b/res/icons/16/zoom_in.png
Binary files differ
diff --git a/res/icons/16/zoom_out.png b/res/icons/16/zoom_out.png
new file mode 100644
index 0000000..5db2046
--- /dev/null
+++ b/res/icons/16/zoom_out.png
Binary files differ
diff --git a/res/rotate_left.png.h b/res/rotate_left.png.h
new file mode 100644
index 0000000..1ccbf13
--- /dev/null
+++ b/res/rotate_left.png.h
@@ -0,0 +1,60 @@
+#ifndef ROTATE_LEFT_PNG_H
+#define ROTATE_LEFT_PNG_H
+
+#include <wx/mstream.h>
+#include <wx/image.h>
+#include <wx/bitmap.h>
+
+static const unsigned char rotate_left_png[] =
+{
+	0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 
+	0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 
+	0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 
+	0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+	0x73, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 
+	0x4E, 0x7B, 0x26, 0x08, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 
+	0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 
+	0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 
+	0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 
+	0x1A, 0x00, 0x00, 0x01, 0x1C, 0x49, 0x44, 0x41, 0x54, 0x38, 
+	0x8D, 0x9D, 0xD3, 0x4B, 0x2B, 0xC4, 0x51, 0x18, 0xC7, 0xF1, 
+	0x4F, 0xE3, 0xD2, 0x94, 0x12, 0x56, 0xDE, 0x81, 0x72, 0x09, 
+	0x53, 0x34, 0xAC, 0xF0, 0x06, 0xAC, 0xAC, 0x78, 0x07, 0x5E, 
+	0x8A, 0x24, 0x26, 0x59, 0x7A, 0x01, 0x4A, 0x59, 0x49, 0x16, 
+	0xB2, 0xB3, 0x90, 0x92, 0xCB, 0x96, 0xCD, 0x94, 0xD5, 0x94, 
+	0x12, 0xC3, 0x18, 0x63, 0xF1, 0x7F, 0xC6, 0x65, 0x9A, 0xF9, 
+	0xBB, 0xFC, 0xEA, 0x74, 0xEA, 0x39, 0xCF, 0xF9, 0x9E, 0xDF, 
+	0x73, 0xCE, 0x79, 0x48, 0xD4, 0xEE, 0x53, 0x23, 0x28, 0xE0, 
+	0x0A, 0x8F, 0x78, 0xC2, 0x75, 0xC4, 0x86, 0x35, 0xD1, 0x2C, 
+	0x4A, 0x98, 0xC1, 0x26, 0xAA, 0xA8, 0xB5, 0x18, 0x55, 0xAC, 
+	0x22, 0xFB, 0x15, 0xB0, 0xD0, 0x90, 0xF4, 0x8A, 0x2D, 0xCC, 
+	0xA1, 0x0F, 0xBD, 0x98, 0xC0, 0x3A, 0x9E, 0x23, 0xE7, 0x00, 
+	0x9D, 0xAD, 0x00, 0xCB, 0xCD, 0x6C, 0x86, 0xC6, 0x51, 0x8C, 
+	0xBC, 0x42, 0x3D, 0x38, 0xDF, 0x00, 0x28, 0xA1, 0x2D, 0x05, 
+	0x32, 0x16, 0x4E, 0x2A, 0x18, 0x6C, 0xC3, 0x2D, 0x4E, 0xB1, 
+	0x8B, 0x1D, 0x6C, 0xE3, 0x26, 0x05, 0x70, 0x87, 0x7E, 0xE4, 
+	0xF1, 0x92, 0x92, 0x97, 0xAA, 0xA9, 0x70, 0x7B, 0xF1, 0x5F, 
+	0x40, 0x4F, 0x00, 0x4A, 0x19, 0xEC, 0xE1, 0x44, 0x7A, 0xDD, 
+	0x8D, 0x7A, 0x8B, 0xB9, 0x03, 0x2E, 0x83, 0x36, 0xF9, 0x07, 
+	0xC0, 0x74, 0xEC, 0x39, 0xCB, 0xE0, 0x28, 0x82, 0x8B, 0x7F, 
+	0x00, 0x2C, 0xC5, 0x7C, 0x0C, 0x43, 0x61, 0xA9, 0x8C, 0xD1, 
+	0x5F, 0x6C, 0xCE, 0x49, 0x6E, 0xBF, 0x8A, 0x81, 0x7A, 0xB0, 
+	0x10, 0x96, 0x8A, 0x3F, 0x40, 0x72, 0x92, 0x67, 0xAC, 0x49, 
+	0xBE, 0xF4, 0x87, 0xB2, 0x38, 0x8C, 0x85, 0x72, 0x00, 0xF3, 
+	0xE8, 0x42, 0xB7, 0xA4, 0xE6, 0xCD, 0x38, 0xB9, 0x86, 0x7D, 
+	0x0D, 0xFD, 0x50, 0x87, 0x14, 0xA4, 0x37, 0x53, 0x05, 0x6B, 
+	0xBE, 0xF4, 0x41, 0x33, 0x0D, 0x62, 0x43, 0xF2, 0x3A, 0x0F, 
+	0xB8, 0xC7, 0x39, 0x56, 0x62, 0xED, 0x9B, 0xDE, 0x01, 0xA6, 
+	0xD5, 0x58, 0x18, 0xA2, 0x54, 0x3E, 0x29, 0x00, 0x00, 0x00, 
+	0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, };
+
+wxBitmap& rotate_left_png_to_wx_bitmap()
+{
+	static wxMemoryInputStream memIStream( rotate_left_png, sizeof( rotate_left_png ) );
+	static wxImage image( memIStream, wxBITMAP_TYPE_PNG );
+	static wxBitmap bmp( image );
+	return bmp;
+}
+
+
+#endif //ROTATE_LEFT_PNG_H
diff --git a/res/rotate_right.png.h b/res/rotate_right.png.h
new file mode 100644
index 0000000..bdf7b23
--- /dev/null
+++ b/res/rotate_right.png.h
@@ -0,0 +1,60 @@
+#ifndef ROTATE_RIGHT_PNG_H
+#define ROTATE_RIGHT_PNG_H
+
+#include <wx/mstream.h>
+#include <wx/image.h>
+#include <wx/bitmap.h>
+
+static const unsigned char rotate_right_png[] =
+{
+	0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 
+	0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 
+	0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 
+	0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+	0x73, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 
+	0x4E, 0x7B, 0x26, 0x08, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 
+	0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 
+	0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 
+	0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 
+	0x1A, 0x00, 0x00, 0x01, 0x1C, 0x49, 0x44, 0x41, 0x54, 0x38, 
+	0x8D, 0x9D, 0xD3, 0xBB, 0x4A, 0x03, 0x51, 0x10, 0xC6, 0xF1, 
+	0x9F, 0x31, 0xF1, 0x0A, 0x3E, 0x80, 0xAD, 0x90, 0x26, 0xE0, 
+	0xA5, 0x08, 0x2A, 0x08, 0xB6, 0xBE, 0x80, 0x08, 0x0A, 0x16, 
+	0x56, 0xBE, 0x8A, 0x5A, 0x18, 0x2D, 0xA2, 0x95, 0x2F, 0xA1, 
+	0x85, 0x8D, 0xA2, 0xAD, 0x58, 0x48, 0x04, 0x4B, 0x41, 0x10, 
+	0x9B, 0x80, 0x60, 0x21, 0x31, 0x6A, 0x8C, 0x45, 0x26, 0x18, 
+	0x72, 0x59, 0x88, 0x03, 0xCB, 0x9E, 0x9D, 0x99, 0xEF, 0x3F, 
+	0x73, 0x66, 0xCF, 0xA1, 0xD3, 0x72, 0xD8, 0x47, 0x09, 0x1F, 
+	0x78, 0xC3, 0x03, 0x8A, 0x98, 0x6E, 0xC9, 0x1B, 0x6C, 0x17, 
+	0x66, 0x42, 0xF8, 0x8D, 0x7A, 0x8F, 0xE7, 0x07, 0xC7, 0x58, 
+	0x46, 0x19, 0x2B, 0xAD, 0xE2, 0xB3, 0x48, 0xAA, 0xA2, 0x80, 
+	0x3C, 0x86, 0x31, 0x8A, 0x25, 0x1C, 0xE0, 0xB3, 0x0D, 0xB8, 
+	0xD9, 0x04, 0xEC, 0x84, 0xE3, 0x19, 0x33, 0x5D, 0xB6, 0xD5, 
+	0xB4, 0xAD, 0x6E, 0x80, 0xA9, 0x68, 0xBB, 0x82, 0xD9, 0x04, 
+	0xF1, 0x00, 0x5E, 0xDA, 0x00, 0x6B, 0x69, 0x6C, 0xC7, 0x40, 
+	0x8A, 0xB8, 0x4B, 0x00, 0xD4, 0xB1, 0x8A, 0xC9, 0xF8, 0xFE, 
+	0xC2, 0x39, 0xDC, 0x46, 0x70, 0x31, 0x41, 0x9C, 0x68, 0xE5, 
+	0x00, 0x4C, 0xFC, 0x47, 0x9C, 0x46, 0x2A, 0xD6, 0x3F, 0x7D, 
+	0xE8, 0x52, 0xB8, 0xD6, 0x38, 0x27, 0x6E, 0xA2, 0x83, 0x85, 
+	0x3E, 0x00, 0x73, 0xA1, 0x79, 0x4C, 0xE1, 0x22, 0x9C, 0x1B, 
+	0x7D, 0x00, 0xD6, 0xE3, 0x7D, 0x09, 0x59, 0x8D, 0x89, 0x56, 
+	0x25, 0xFF, 0xC6, 0xA6, 0xE5, 0xF0, 0xAE, 0xB1, 0xE5, 0x7C, 
+	0xD3, 0xB9, 0xEB, 0xEF, 0x20, 0x25, 0x41, 0x72, 0x78, 0x8A, 
+	0xDC, 0x93, 0xD6, 0x40, 0x06, 0xA7, 0x11, 0xA8, 0xE0, 0x10, 
+	0xF3, 0x18, 0xC3, 0x48, 0x54, 0x2A, 0x68, 0x0C, 0xAD, 0x8E, 
+	0x2B, 0x8C, 0xB7, 0xD3, 0x87, 0xB0, 0x87, 0x9A, 0xDE, 0x97, 
+	0xA9, 0x86, 0xA3, 0x80, 0xF6, 0xB4, 0x6C, 0x54, 0x2B, 0xE1, 
+	0x35, 0xAA, 0xDE, 0x47, 0x57, 0x1D, 0xF7, 0xE4, 0x17, 0xBF, 
+	0xE2, 0x56, 0x31, 0x5E, 0xE5, 0x59, 0xC4, 0x00, 0x00, 0x00, 
+	0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, };
+
+wxBitmap& rotate_right_png_to_wx_bitmap()
+{
+	static wxMemoryInputStream memIStream( rotate_right_png, sizeof( rotate_right_png ) );
+	static wxImage image( memIStream, wxBITMAP_TYPE_PNG );
+	static wxBitmap bmp( image );
+	return bmp;
+}
+
+
+#endif //ROTATE_RIGHT_PNG_H
diff --git a/res/zoom_in.png.h b/res/zoom_in.png.h
new file mode 100644
index 0000000..c425dd6
--- /dev/null
+++ b/res/zoom_in.png.h
@@ -0,0 +1,59 @@
+#ifndef ZOOM_IN_PNG_H
+#define ZOOM_IN_PNG_H
+
+#include <wx/mstream.h>
+#include <wx/image.h>
+#include <wx/bitmap.h>
+
+static const unsigned char zoom_in_png[] =
+{
+	0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 
+	0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 
+	0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 
+	0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+	0x73, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 
+	0x4E, 0x7B, 0x26, 0x08, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 
+	0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 
+	0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 
+	0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 
+	0x1A, 0x00, 0x00, 0x01, 0x05, 0x49, 0x44, 0x41, 0x54, 0x38, 
+	0x8D, 0x8D, 0xD2, 0x3D, 0x4E, 0x02, 0x51, 0x14, 0x05, 0xE0, 
+	0x4F, 0x3A, 0xE9, 0x05, 0x94, 0xB5, 0x58, 0xD8, 0xD3, 0x60, 
+	0x88, 0xDB, 0xD0, 0xC4, 0x0D, 0xE0, 0x5F, 0xED, 0x4E, 0x2C, 
+	0x8C, 0xD8, 0x58, 0xA2, 0x8D, 0x89, 0x10, 0xB1, 0x74, 0x0F, 
+	0x0A, 0x89, 0x12, 0x0B, 0x15, 0x0B, 0x2E, 0xE1, 0x31, 0xCE, 
+	0x64, 0x38, 0xC9, 0xCB, 0x9B, 0x77, 0xEE, 0xB9, 0xBF, 0x73, 
+	0x59, 0x45, 0x1D, 0xA7, 0x78, 0xC2, 0x04, 0x53, 0x0C, 0x70, 
+	0x82, 0x9A, 0x12, 0x74, 0x30, 0xC6, 0xAC, 0xE0, 0xBC, 0x87, 
+	0x26, 0x17, 0xFB, 0xF8, 0x0E, 0x61, 0x1F, 0x6D, 0x34, 0xB1, 
+	0x83, 0x16, 0xEE, 0xC2, 0xF6, 0x83, 0x83, 0xAC, 0x73, 0x0D, 
+	0x6F, 0x21, 0xB8, 0xC4, 0x46, 0x41, 0x92, 0x6E, 0x68, 0xC6, 
+	0x68, 0xE4, 0x19, 0xFA, 0xA8, 0x24, 0xFC, 0x43, 0x70, 0x29, 
+	0x7A, 0xA1, 0x3D, 0x4F, 0xC9, 0x61, 0x90, 0xED, 0x8C, 0x78, 
+	0xD1, 0x7B, 0x8A, 0xBD, 0xE0, 0x86, 0x29, 0xF9, 0x11, 0x64, 
+	0x33, 0xC9, 0x9C, 0x1D, 0xE0, 0xA2, 0x92, 0x6A, 0xBC, 0x3F, 
+	0x17, 0xCE, 0x15, 0xFC, 0x26, 0x19, 0x25, 0xEF, 0x6C, 0x35, 
+	0xE9, 0xBD, 0x82, 0x41, 0x18, 0x5A, 0x6B, 0xB4, 0xB0, 0x1B, 
+	0xDC, 0x73, 0x5A, 0xC1, 0x4D, 0x7C, 0x1F, 0x66, 0xC4, 0xF7, 
+	0xFE, 0x0F, 0xF1, 0x28, 0xEE, 0xEB, 0x94, 0xAC, 0x5B, 0x2E, 
+	0x50, 0x37, 0xAF, 0xC4, 0xC0, 0xB1, 0xE5, 0x6F, 0xAC, 0x67, 
+	0x8D, 0x1D, 0xCB, 0x45, 0xEA, 0x99, 0x4F, 0xBB, 0x8A, 0xCD, 
+	0x28, 0xFB, 0x2A, 0x69, 0xE9, 0x15, 0x5B, 0x79, 0x19, 0xCA, 
+	0x56, 0x79, 0x12, 0xCE, 0x33, 0x8C, 0x8A, 0x82, 0x34, 0x70, 
+	0x66, 0x3E, 0xA4, 0x69, 0x9C, 0x11, 0x2E, 0xB0, 0x1D, 0x4E, 
+	0x2F, 0x65, 0x41, 0xCA, 0x90, 0x06, 0x79, 0x2C, 0xDA, 0xFB, 
+	0x75, 0x82, 0xDC, 0xE2, 0xEB, 0x0F, 0x93, 0xCD, 0x61, 0x15, 
+	0x7C, 0x55, 0xE1, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+	0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, 
+};
+
+wxBitmap& zoom_in_png_to_wx_bitmap()
+{
+	static wxMemoryInputStream memIStream( zoom_in_png, sizeof( zoom_in_png ) );
+	static wxImage image( memIStream, wxBITMAP_TYPE_PNG );
+	static wxBitmap bmp( image );
+	return bmp;
+}
+
+
+#endif //ZOOM_IN_PNG_H
diff --git a/res/zoom_out.png.h b/res/zoom_out.png.h
new file mode 100644
index 0000000..8d740a5
--- /dev/null
+++ b/res/zoom_out.png.h
@@ -0,0 +1,59 @@
+#ifndef ZOOM_OUT_PNG_H
+#define ZOOM_OUT_PNG_H
+
+#include <wx/mstream.h>
+#include <wx/image.h>
+#include <wx/bitmap.h>
+
+static const unsigned char zoom_out_png[] =
+{
+	0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 
+	0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 
+	0x00, 0x00, 0x00, 0x10, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 
+	0xF3, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+	0x73, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x76, 0x01, 
+	0x4E, 0x7B, 0x26, 0x08, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 
+	0x58, 0x74, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 
+	0x00, 0x77, 0x77, 0x77, 0x2E, 0x69, 0x6E, 0x6B, 0x73, 0x63, 
+	0x61, 0x70, 0x65, 0x2E, 0x6F, 0x72, 0x67, 0x9B, 0xEE, 0x3C, 
+	0x1A, 0x00, 0x00, 0x01, 0x01, 0x49, 0x44, 0x41, 0x54, 0x38, 
+	0x8D, 0x9D, 0xD2, 0xBD, 0x4E, 0x02, 0x51, 0x10, 0x05, 0xE0, 
+	0x4F, 0x3A, 0xB5, 0x76, 0xFD, 0xE1, 0x11, 0xEC, 0x8C, 0xB5, 
+	0x89, 0xD6, 0x16, 0x04, 0x7D, 0x0F, 0x63, 0x61, 0x0F, 0x4A, 
+	0xED, 0xAB, 0x98, 0x98, 0x60, 0x63, 0x68, 0xAC, 0xA5, 0x20, 
+	0x94, 0x3C, 0x83, 0x42, 0x42, 0xB4, 0x22, 0x62, 0xC1, 0xAC, 
+	0x7B, 0x45, 0xD6, 0x35, 0x9E, 0x64, 0x72, 0xE7, 0xCE, 0x9C, 
+	0x73, 0xEE, 0xEE, 0xBD, 0xC3, 0x77, 0x64, 0x68, 0xE1, 0x19, 
+	0x13, 0xBC, 0xA1, 0x1F, 0xB5, 0x4C, 0x05, 0x9A, 0x18, 0x63, 
+	0x5E, 0x12, 0xAF, 0xC1, 0x59, 0x89, 0x06, 0x66, 0x41, 0x7C, 
+	0x8A, 0x7D, 0x1D, 0x7B, 0x38, 0xC5, 0x63, 0xF4, 0x66, 0x38, 
+	0x5F, 0x16, 0x6F, 0xE1, 0x25, 0x08, 0xB7, 0x58, 0x2B, 0x39, 
+	0xA4, 0x1D, 0x9C, 0x09, 0xB6, 0xD3, 0x46, 0x2B, 0x39, 0xB9, 
+	0x4C, 0x9C, 0xA3, 0x1B, 0xDC, 0xEB, 0xB4, 0xD8, 0x8F, 0x62, 
+	0xA3, 0x42, 0x0C, 0xC7, 0xC1, 0xED, 0xA7, 0xC5, 0x69, 0x14, 
+	0xEB, 0xB1, 0x2F, 0xBB, 0x44, 0xD8, 0x8C, 0x7C, 0x9A, 0x8B, 
+	0x6B, 0xF8, 0x48, 0x84, 0x55, 0xC8, 0x39, 0x5F, 0xBF, 0x5A, 
+	0xC3, 0x28, 0xF2, 0x83, 0xA4, 0xB9, 0x2A, 0xE0, 0x30, 0xD6, 
+	0x51, 0x6A, 0xD0, 0x8D, 0xFC, 0xE2, 0x0F, 0x5F, 0x70, 0x19, 
+	0xEB, 0x7D, 0x5A, 0xCC, 0x14, 0x03, 0xD4, 0xFE, 0x45, 0x7C, 
+	0x15, 0x9C, 0xB1, 0xA5, 0x67, 0x84, 0x33, 0xC5, 0x20, 0x3D, 
+	0xE0, 0x04, 0x1B, 0x58, 0xC7, 0x11, 0xEE, 0x14, 0x97, 0x39, 
+	0xB2, 0x98, 0x9D, 0x1F, 0x68, 0x5A, 0x0C, 0x49, 0xD9, 0x2B, 
+	0x4C, 0x42, 0x3C, 0xC7, 0xB0, 0xCC, 0x64, 0x07, 0x37, 0x18, 
+	0xE0, 0x3D, 0x62, 0x80, 0x0E, 0x76, 0x43, 0x34, 0xAC, 0x32, 
+	0xA9, 0x42, 0x6A, 0xD2, 0xFB, 0x8F, 0x41, 0x6E, 0xD2, 0xC3, 
+	0xFE, 0x27, 0xE9, 0xED, 0x55, 0x8D, 0x88, 0x47, 0x65, 0x9C, 
+	0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 
+	0x60, 0x82, 
+};
+
+wxBitmap& zoom_out_png_to_wx_bitmap()
+{
+	static wxMemoryInputStream memIStream( zoom_out_png, sizeof( zoom_out_png ) );
+	static wxImage image( memIStream, wxBITMAP_TYPE_PNG );
+	static wxBitmap bmp( image );
+	return bmp;
+}
+
+
+#endif //ZOOM_OUT_PNG_H
diff --git a/static/minimal.rc b/static/minimal.rc
new file mode 100644
index 0000000..a207eea
--- /dev/null
+++ b/static/minimal.rc
@@ -0,0 +1,2 @@
+mondrian ICON "../res/icons/16/cube.ico"
+#include "wx/msw/wx.rc"
\ No newline at end of file
diff --git a/static/window.fbp b/static/window.fbp
new file mode 100644
index 0000000..e819c31
--- /dev/null
+++ b/static/window.fbp
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<wxFormBuilder_Project>
+  <FileVersion major="1" minor="17"/>
+  <object class="Project" expanded="true">
+    <property name="class_decoration">; </property>
+    <property name="code_generation">C++</property>
+    <property name="disconnect_events">1</property>
+    <property name="disconnect_mode">source_name</property>
+    <property name="disconnect_php_events">0</property>
+    <property name="disconnect_python_events">0</property>
+    <property name="embedded_files_path">Z:\wx.image_viewer\res</property>
+    <property name="encoding">UTF-8</property>
+    <property name="event_generation">connect</property>
+    <property name="file">ImageViewer</property>
+    <property name="first_id">1000</property>
+    <property name="help_provider">wxSimpleHelpProvider</property>
+    <property name="image_path_wrapper_function_name"></property>
+    <property name="indent_with_spaces"></property>
+    <property name="internationalize">1</property>
+    <property name="name">ImageViewer</property>
+    <property name="namespace"></property>
+    <property name="path">Z:\wx.image_viewer\ui</property>
+    <property name="precompiled_header"></property>
+    <property name="relative_path">1</property>
+    <property name="skip_lua_events">1</property>
+    <property name="skip_php_events">1</property>
+    <property name="skip_python_events">1</property>
+    <property name="ui_table">UI</property>
+    <property name="use_array_enum">0</property>
+    <property name="use_enum">0</property>
+    <property name="use_microsoft_bom">0</property>
+    <object class="Frame" expanded="true">
+      <property name="aui_managed">0</property>
+      <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
+      <property name="bg"></property>
+      <property name="center">wxBOTH</property>
+      <property name="context_help"></property>
+      <property name="context_menu">1</property>
+      <property name="drag_accept_files">1</property>
+      <property name="enabled">1</property>
+      <property name="event_handler">impl_virtual</property>
+      <property name="extra_style"></property>
+      <property name="fg"></property>
+      <property name="font"></property>
+      <property name="hidden">0</property>
+      <property name="id">wxID_ANY</property>
+      <property name="maximum_size"></property>
+      <property name="minimum_size"></property>
+      <property name="name">ImageWindow</property>
+      <property name="pos"></property>
+      <property name="size">500,300</property>
+      <property name="style">wxDEFAULT_FRAME_STYLE</property>
+      <property name="subclass">; ; forward_declare</property>
+      <property name="title">Image viewer</property>
+      <property name="tooltip"></property>
+      <property name="two_step_creation">0</property>
+      <property name="window_extra_style"></property>
+      <property name="window_name"></property>
+      <property name="window_style">wxTAB_TRAVERSAL</property>
+      <property name="xrc_skip_sizer">1</property>
+      <object class="wxBoxSizer" expanded="true">
+        <property name="minimum_size"></property>
+        <property name="name">bSizer1</property>
+        <property name="orient">wxVERTICAL</property>
+        <property name="permission">none</property>
+        <object class="sizeritem" expanded="true">
+          <property name="border">5</property>
+          <property name="flag">wxALL|wxEXPAND</property>
+          <property name="proportion">1</property>
+          <object class="wxStaticBitmap" expanded="true">
+            <property name="BottomDockable">1</property>
+            <property name="LeftDockable">1</property>
+            <property name="RightDockable">1</property>
+            <property name="TopDockable">1</property>
+            <property name="aui_layer"></property>
+            <property name="aui_name"></property>
+            <property name="aui_position"></property>
+            <property name="aui_row"></property>
+            <property name="best_size"></property>
+            <property name="bg"></property>
+            <property name="bitmap"></property>
+            <property name="caption"></property>
+            <property name="caption_visible">1</property>
+            <property name="center_pane">0</property>
+            <property name="close_button">1</property>
+            <property name="context_help"></property>
+            <property name="context_menu">1</property>
+            <property name="default_pane">0</property>
+            <property name="dock">Dock</property>
+            <property name="dock_fixed">0</property>
+            <property name="docking">Left</property>
+            <property name="drag_accept_files">0</property>
+            <property name="enabled">1</property>
+            <property name="fg"></property>
+            <property name="floatable">1</property>
+            <property name="font"></property>
+            <property name="gripper">0</property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="max_size"></property>
+            <property name="maximize_button">0</property>
+            <property name="maximum_size"></property>
+            <property name="min_size"></property>
+            <property name="minimize_button">0</property>
+            <property name="minimum_size"></property>
+            <property name="moveable">1</property>
+            <property name="name">m_bitmap1</property>
+            <property name="pane_border">1</property>
+            <property name="pane_position"></property>
+            <property name="pane_size"></property>
+            <property name="permission">protected</property>
+            <property name="pin_button">1</property>
+            <property name="pos"></property>
+            <property name="resize">Resizable</property>
+            <property name="show">1</property>
+            <property name="size"></property>
+            <property name="subclass">; ; forward_declare</property>
+            <property name="toolbar_pane">0</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+          </object>
+        </object>
+      </object>
+      <object class="wxStatusBar" expanded="true">
+        <property name="bg"></property>
+        <property name="context_help"></property>
+        <property name="context_menu">1</property>
+        <property name="drag_accept_files">0</property>
+        <property name="enabled">1</property>
+        <property name="fg"></property>
+        <property name="fields">1</property>
+        <property name="font"></property>
+        <property name="hidden">0</property>
+        <property name="id">wxID_ANY</property>
+        <property name="maximum_size"></property>
+        <property name="minimum_size"></property>
+        <property name="name">m_statusBar1</property>
+        <property name="permission">protected</property>
+        <property name="pos"></property>
+        <property name="size"></property>
+        <property name="style">wxSTB_SIZEGRIP</property>
+        <property name="subclass">; ; forward_declare</property>
+        <property name="tooltip"></property>
+        <property name="window_extra_style"></property>
+        <property name="window_name"></property>
+        <property name="window_style"></property>
+      </object>
+      <object class="wxToolBar" expanded="true">
+        <property name="BottomDockable">1</property>
+        <property name="LeftDockable">1</property>
+        <property name="RightDockable">1</property>
+        <property name="TopDockable">1</property>
+        <property name="aui_layer"></property>
+        <property name="aui_name"></property>
+        <property name="aui_position"></property>
+        <property name="aui_row"></property>
+        <property name="best_size"></property>
+        <property name="bg"></property>
+        <property name="bitmapsize"></property>
+        <property name="caption"></property>
+        <property name="caption_visible">1</property>
+        <property name="center_pane">0</property>
+        <property name="close_button">1</property>
+        <property name="context_help"></property>
+        <property name="context_menu">1</property>
+        <property name="default_pane">0</property>
+        <property name="dock">Dock</property>
+        <property name="dock_fixed">0</property>
+        <property name="docking">Left</property>
+        <property name="drag_accept_files">0</property>
+        <property name="enabled">1</property>
+        <property name="fg"></property>
+        <property name="floatable">1</property>
+        <property name="font"></property>
+        <property name="gripper">0</property>
+        <property name="hidden">0</property>
+        <property name="id">wxID_ANY</property>
+        <property name="margins"></property>
+        <property name="max_size"></property>
+        <property name="maximize_button">0</property>
+        <property name="maximum_size"></property>
+        <property name="min_size"></property>
+        <property name="minimize_button">0</property>
+        <property name="minimum_size"></property>
+        <property name="moveable">1</property>
+        <property name="name">m_toolBar1</property>
+        <property name="packing">1</property>
+        <property name="pane_border">1</property>
+        <property name="pane_position"></property>
+        <property name="pane_size"></property>
+        <property name="permission">protected</property>
+        <property name="pin_button">1</property>
+        <property name="pos"></property>
+        <property name="resize">Resizable</property>
+        <property name="separation">5</property>
+        <property name="show">1</property>
+        <property name="size"></property>
+        <property name="style">wxTB_DOCKABLE|wxTB_HORIZONTAL</property>
+        <property name="subclass">; ; forward_declare</property>
+        <property name="toolbar_pane">0</property>
+        <property name="tooltip"></property>
+        <property name="window_extra_style"></property>
+        <property name="window_name"></property>
+        <property name="window_style"></property>
+        <object class="tool" expanded="true">
+          <property name="bitmap">Load From Embedded File; ../res/icons/16/add_image.png</property>
+          <property name="context_menu">0</property>
+          <property name="id">wxID_ANY</property>
+          <property name="kind">wxITEM_NORMAL</property>
+          <property name="label">Open image</property>
+          <property name="name">m_open_image</property>
+          <property name="permission">protected</property>
+          <property name="statusbar"></property>
+          <property name="tooltip"></property>
+        </object>
+        <object class="toolSeparator" expanded="true">
+          <property name="permission">protected</property>
+        </object>
+        <object class="tool" expanded="true">
+          <property name="bitmap">Load From Embedded File; ../res/icons/16/rotate_left.png</property>
+          <property name="context_menu">0</property>
+          <property name="id">wxID_ANY</property>
+          <property name="kind">wxITEM_NORMAL</property>
+          <property name="label">Rotate -90</property>
+          <property name="name">m_rotate_left</property>
+          <property name="permission">protected</property>
+          <property name="statusbar"></property>
+          <property name="tooltip"></property>
+        </object>
+        <object class="tool" expanded="true">
+          <property name="bitmap">Load From Embedded File; ../res/icons/16/rotate_right.png</property>
+          <property name="context_menu">0</property>
+          <property name="id">wxID_ANY</property>
+          <property name="kind">wxITEM_NORMAL</property>
+          <property name="label">Rotate +90</property>
+          <property name="name">m_rotate_right</property>
+          <property name="permission">protected</property>
+          <property name="statusbar"></property>
+          <property name="tooltip"></property>
+        </object>
+        <object class="tool" expanded="true">
+          <property name="bitmap">Load From Embedded File; ../res/icons/16/zoom_in.png</property>
+          <property name="context_menu">0</property>
+          <property name="id">wxID_ANY</property>
+          <property name="kind">wxITEM_NORMAL</property>
+          <property name="label">Zoom in</property>
+          <property name="name">m_zoom_in</property>
+          <property name="permission">protected</property>
+          <property name="statusbar"></property>
+          <property name="tooltip"></property>
+        </object>
+        <object class="tool" expanded="true">
+          <property name="bitmap">Load From Embedded File; ../res/icons/16/zoom_out.png</property>
+          <property name="context_menu">0</property>
+          <property name="id">wxID_ANY</property>
+          <property name="kind">wxITEM_NORMAL</property>
+          <property name="label">Zoom out</property>
+          <property name="name">m_zoom_out</property>
+          <property name="permission">protected</property>
+          <property name="statusbar"></property>
+          <property name="tooltip"></property>
+        </object>
+        <object class="tool" expanded="true">
+          <property name="bitmap">Load From Embedded File; ../res/icons/16/fullscreen.png</property>
+          <property name="context_menu">0</property>
+          <property name="id">wxID_ANY</property>
+          <property name="kind">wxITEM_NORMAL</property>
+          <property name="label">Fullscreen</property>
+          <property name="name">m_fullscreen</property>
+          <property name="permission">protected</property>
+          <property name="statusbar"></property>
+          <property name="tooltip"></property>
+        </object>
+      </object>
+    </object>
+  </object>
+</wxFormBuilder_Project>
diff --git a/ui/ImageViewer.cpp b/ui/ImageViewer.cpp
new file mode 100644
index 0000000..31ee985
--- /dev/null
+++ b/ui/ImageViewer.cpp
@@ -0,0 +1,74 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO *NOT* EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "ImageViewer.h"
+
+#include "../res/add_image.png.h"
+#include "../res/fullscreen.png.h"
+#include "../res/rotate_left.png.h"
+#include "../res/rotate_right.png.h"
+#include "../res/zoom_in.png.h"
+#include "../res/zoom_out.png.h"
+
+// Using the construction of a static object to ensure that the help provider is set
+// wx Manages the most recent HelpProvider passed to ::Set, but not the previous ones
+// If ::Set gets called more than once, the previous one is returned and should be deleted
+class wxFBContextSensitiveHelpSetter
+{
+public:
+wxFBContextSensitiveHelpSetter()
+{
+wxSimpleHelpProvider* help = new wxSimpleHelpProvider();
+wxHelpProvider* old = wxHelpProvider::Set( help );
+if (old != 0){
+delete old;
+}
+}
+};
+
+static wxFBContextSensitiveHelpSetter s_wxFBSetTheHelpProvider;
+///////////////////////////////////////////////////////////////////////////
+
+ImageWindow::ImageWindow( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+	this->DragAcceptFiles( true );
+
+	wxBoxSizer* bSizer1;
+	bSizer1 = new wxBoxSizer( wxVERTICAL );
+
+	m_bitmap1 = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
+	bSizer1->Add( m_bitmap1, 1, wxALL|wxEXPAND, 5 );
+
+
+	this->SetSizer( bSizer1 );
+	this->Layout();
+	m_statusBar1 = this->CreateStatusBar( 1, wxSTB_SIZEGRIP, wxID_ANY );
+	m_toolBar1 = this->CreateToolBar( wxTB_DOCKABLE|wxTB_HORIZONTAL, wxID_ANY );
+	m_open_image = m_toolBar1->AddTool( wxID_ANY, _("Open image"), add_image_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
+
+	m_toolBar1->AddSeparator();
+
+	m_rotate_left = m_toolBar1->AddTool( wxID_ANY, _("Rotate -90"), rotate_left_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
+
+	m_rotate_right = m_toolBar1->AddTool( wxID_ANY, _("Rotate +90"), rotate_right_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
+
+	m_zoom_in = m_toolBar1->AddTool( wxID_ANY, _("Zoom in"), zoom_in_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
+
+	m_zoom_out = m_toolBar1->AddTool( wxID_ANY, _("Zoom out"), zoom_out_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
+
+	m_fullscreen = m_toolBar1->AddTool( wxID_ANY, _("Fullscreen"), fullscreen_png_to_wx_bitmap(), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
+
+	m_toolBar1->Realize();
+
+
+	this->Centre( wxBOTH );
+}
+
+ImageWindow::~ImageWindow()
+{
+}
diff --git a/ui/ImageViewer.h b/ui/ImageViewer.h
new file mode 100644
index 0000000..8e17b5a
--- /dev/null
+++ b/ui/ImageViewer.h
@@ -0,0 +1,56 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO *NOT* EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+#include <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/cshelp.h>
+#include <wx/intl.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/statbmp.h>
+#include <wx/gdicmn.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/string.h>
+#include <wx/sizer.h>
+#include <wx/statusbr.h>
+#include <wx/toolbar.h>
+#include <wx/frame.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class ImageWindow
+///////////////////////////////////////////////////////////////////////////////
+class ImageWindow : public wxFrame
+{
+	private:
+
+	protected:
+		wxStaticBitmap* m_bitmap1;
+		wxStatusBar* m_statusBar1;
+		wxToolBar* m_toolBar1;
+		wxToolBarToolBase* m_open_image;
+		wxToolBarToolBase* m_rotate_left;
+		wxToolBarToolBase* m_rotate_right;
+		wxToolBarToolBase* m_zoom_in;
+		wxToolBarToolBase* m_zoom_out;
+		wxToolBarToolBase* m_fullscreen;
+
+	public:
+
+		ImageWindow( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Image viewer"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
+
+		~ImageWindow();
+
+};
+
diff --git a/ui/ImageViewerImageWindow.cpp b/ui/ImageViewerImageWindow.cpp
new file mode 100644
index 0000000..28a9dcf
--- /dev/null
+++ b/ui/ImageViewerImageWindow.cpp
@@ -0,0 +1,8 @@
+#include "ImageViewerImageWindow.h"
+
+ImageViewerImageWindow::ImageViewerImageWindow( wxWindow* parent )
+:
+ImageWindow( parent )
+{
+
+}
diff --git a/ui/ImageViewerImageWindow.h b/ui/ImageViewerImageWindow.h
new file mode 100644
index 0000000..211fac0
--- /dev/null
+++ b/ui/ImageViewerImageWindow.h
@@ -0,0 +1,25 @@
+#ifndef __ImageViewerImageWindow__
+#define __ImageViewerImageWindow__
+
+/**
+@file
+Subclass of ImageWindow, which is generated by wxFormBuilder.
+*/
+
+#include "ImageViewer.h"
+
+//// end generated include
+
+/** Implementing ImageWindow */
+class ImageViewerImageWindow : public ImageWindow
+{
+	public:
+		/** Constructor */
+		ImageViewerImageWindow( wxWindow* parent );
+	//// end generated class members
+
+
+
+};
+
+#endif // __ImageViewerImageWindow__

--
Gitblit v1.9.3