• App.h
  • #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;
            
        };
    }