#pragma once
#include <string>
#include <Gorgon/Graphics/Layer.h>
#include <Gorgon/UI/Window.h>
#include <Gorgon/Geometry/Size.h>
#include <Gorgon/Widgets/Panel.h>
#include <Gorgon/UI.h>
#include <Gorgon/Layer.h>
#include <Gorgon/Graphics/BlankImage.h>
#include <Gorgon/UI/ComponentStack.h>
#include <Gorgon/Widgets/Generator.h>
#include <Gorgon/Widgets/Button.h>
#include <Gorgon/Widgets/Checkbox.h>
#include <Gorgon/Widgets/RadioButtons.h>
#include <Gorgon/Widgets/Label.h>
#include <Gorgon/UI/RadioControl.h>
#include <Gorgon/WindowManager.h>
#include <Gorgon/CGI/Line.h>
#include <Gorgon/UI/Organizers/List.h>
#include <Gorgon/Widgets/Textbox.h>
#include <Gorgon/Widgets/Numberbox.h>
#include <Gorgon/Widgets/GeometryBoxes.h>
#include <Gorgon/Widgets/Composer.h>
#include <typeinfo>
#include <Gorgon/UI/Template.h>
#include <Gorgon/Graphics/Color.h>
#include <Gorgon/Graphics/FreeType.h>
#include <Gorgon/Graphics/Color.h>
#include <Gorgon/Filesystem.h>
#include <Gorgon/UI/Organizers/Flow.h>
#include <Gorgon/Widgets/DialogWindow.h>
#include <Gorgon/UI/Dialog.h>
#include <Gorgon/Widgets/Dropdown.h>
#include <Gorgon/Enum.h>
#include <Gorgon/Widgets/Composer.h>
#include <Gorgon/Widgets/Listbox.h>
#include <Gorgon/Widgets/ListItem.h>
#include <Gorgon/Widgets/Generator.h>
#include <Gorgon/UI/ComponentStack.h>
#include "Cli.h"
#include "../Importer/Image.h"
#include "../Importer/Audio.h"
namespace UI{
enum FileTypes{
Image,
Audio,
Text
};
DefineEnumStrings(FileTypes,{
{Image, " .png (Images)"},
{Audio, " .flac (Audio)"},
{Text, " .txt (text)"}
});
enum Scales{
s1 = 1,
s2 = 2,
s3 = 3,
s4 = 4,
s5 = 5,
s6 = 6,
s7 = 7,
s8 = 8,
s9 = 9
};
DefineEnumStrings(Scales ,{
{s1, " 1x"},
{s2, " 2x"},
{s3, " 3x"},
{s4, " 4x"},
{s5, " 5x"},
{s6, " 6x"},
{s7, " 7x"},
{s8, " 8x"},
{s9, " 9x"},
});
class InitUI {
public:
InitUI() {
Gorgon::Graphics::Initialize();
Gorgon::UI::Initialize();
};
};
class App{
public:
//Declaration function for UI to be called in Main.cpp
App (Gorgon::Geometry::Size size, int fontSize, std::string title, std::vector<std::string> &tcommands, std::string filePath );
private:
//Import function
void Import();
//Read in metadata elemnts from textbox and convert to a vector
void GetMetadataVariables();
//Gorgon Main UI Window
Gorgon::UI::Window window;
//This will initialize UI after the window is created.
InitUI uninit;
//Structure to handle styling of UI
struct initStyle {
initStyle(std::string fontname, int fh);
Gorgon::Widgets::SimpleGenerator uiStyle;
};
//Initialize styling
initStyle initstyl;
UI::Cli cli;
Importer::Image image;
Importer::Audio audio;
//Gorgon Icon objects for app window
Gorgon::Graphics::Bitmap ico;
Gorgon::WindowManager::Icon icon;
//Gorgon Layer objects
Gorgon::Graphics::Layer backgroundLayer;
//background of default window
Gorgon::Graphics::BlankImage applicationBG;
//Gorgon Button Objects
Gorgon::Widgets::Button btnImport, btnClearFileFrom, btnClearFileTo, btnExit, btnClassInfo, btnScaleInfo;
//Gorgon Checkbox opjects
Gorgon::Widgets::Checkbox metadata;
//Gorgon Drop downbox
Gorgon::Widgets::DropdownList<FileTypes> fileList;
Gorgon::Widgets::DropdownList<Scales> scaleList;
//Gorgon text areas
Gorgon::Widgets::Textbox pathTo, pathFrom, resourceClass, metadata1;
//Gorgon labels
Gorgon::Widgets::Label lblMetadata;
//Gorgon panel objects
Gorgon::Widgets::Panel pnlSettings, pnlPreview;
std::vector<std::string> metas;
};
}