- clean working copy for leaving SVN
@@ -0,0 +1,372 @@
|
||||
# Automatically generated makefile, created by the Introjucer
|
||||
# Don't edit this file! Your changes will be overwritten when you re-save the Introjucer project!
|
||||
|
||||
# (this disables dependency generation if multiple architectures are set)
|
||||
DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD)
|
||||
|
||||
ifndef CONFIG
|
||||
CONFIG=Debug
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG),Debug)
|
||||
BINDIR := build
|
||||
LIBDIR := build
|
||||
OBJDIR := build/intermediate/Debug
|
||||
OUTDIR := build
|
||||
|
||||
ifeq ($(TARGET_ARCH),)
|
||||
TARGET_ARCH := -march=native
|
||||
endif
|
||||
|
||||
CPPFLAGS := $(DEPFLAGS) -std=c++11 -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.1.0" -D "JUCE_APP_VERSION_HEX=0x30100" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules
|
||||
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 -std=gnu++0x
|
||||
CXXFLAGS += $(CFLAGS)
|
||||
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt
|
||||
LDDEPS :=
|
||||
RESFLAGS := -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.1.0" -D "JUCE_APP_VERSION_HEX=0x30100" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules
|
||||
TARGET := Introjucer
|
||||
BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||
CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG),Release)
|
||||
BINDIR := build
|
||||
LIBDIR := build
|
||||
OBJDIR := build/intermediate/Release
|
||||
OUTDIR := build
|
||||
|
||||
ifeq ($(TARGET_ARCH),)
|
||||
TARGET_ARCH := -march=native
|
||||
endif
|
||||
|
||||
CPPFLAGS := $(DEPFLAGS) -std=c++11 -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.1.0" -D "JUCE_APP_VERSION_HEX=0x30100" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules
|
||||
CFLAGS += $(CPPFLAGS) $(TARGET_ARCH) -O3 -std=gnu++0x
|
||||
CXXFLAGS += $(CFLAGS)
|
||||
LDFLAGS += $(TARGET_ARCH) -L$(BINDIR) -L$(LIBDIR) -fvisibility=hidden -L/usr/X11R6/lib/ -lX11 -lXext -lXinerama -ldl -lfreetype -lpthread -lrt
|
||||
LDDEPS :=
|
||||
RESFLAGS := -D "LINUX=1" -D "NDEBUG=1" -D "JUCER_LINUX_MAKE_7346DA2A=1" -D "JUCE_APP_VERSION=3.1.0" -D "JUCE_APP_VERSION_HEX=0x30100" -I /usr/include -I /usr/include/freetype2 -I ../../JuceLibraryCode -I ../../../../modules
|
||||
TARGET := Introjucer
|
||||
BLDCMD = $(CXX) -o $(OUTDIR)/$(TARGET) $(OBJECTS) $(LDFLAGS) $(RESOURCES) $(TARGET_ARCH)
|
||||
CLEANCMD = rm -rf $(OUTDIR)/$(TARGET) $(OBJDIR)
|
||||
endif
|
||||
|
||||
OBJECTS := \
|
||||
$(OBJDIR)/jucer_AppearanceSettings_788d9889.o \
|
||||
$(OBJDIR)/jucer_CommandLine_f35de107.o \
|
||||
$(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \
|
||||
$(OBJDIR)/jucer_Main_f8488f5b.o \
|
||||
$(OBJDIR)/jucer_MainWindow_1e163aeb.o \
|
||||
$(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o \
|
||||
$(OBJDIR)/jucer_SourceCodeEditor_461f5487.o \
|
||||
$(OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o \
|
||||
$(OBJDIR)/jucer_ButtonDocument_56c341cc.o \
|
||||
$(OBJDIR)/jucer_ComponentDocument_92868083.o \
|
||||
$(OBJDIR)/jucer_ColouredElement_70cbc839.o \
|
||||
$(OBJDIR)/jucer_PaintElement_653460.o \
|
||||
$(OBJDIR)/jucer_PaintElementPath_908894a5.o \
|
||||
$(OBJDIR)/jucer_ComponentLayoutEditor_aeb44f8d.o \
|
||||
$(OBJDIR)/jucer_ComponentOverlayComponent_fd508d63.o \
|
||||
$(OBJDIR)/jucer_EditingPanelBase_6c2ed9ee.o \
|
||||
$(OBJDIR)/jucer_JucerDocumentEditor_2c581e26.o \
|
||||
$(OBJDIR)/jucer_PaintRoutineEditor_f6ac0344.o \
|
||||
$(OBJDIR)/jucer_PaintRoutinePanel_c309a0d7.o \
|
||||
$(OBJDIR)/jucer_ResourceEditorPanel_a558f2e2.o \
|
||||
$(OBJDIR)/jucer_TestComponent_db757dc4.o \
|
||||
$(OBJDIR)/jucer_BinaryResources_e0f99b46.o \
|
||||
$(OBJDIR)/jucer_ComponentLayout_6ea00129.o \
|
||||
$(OBJDIR)/jucer_GeneratedCode_9ca4ef7e.o \
|
||||
$(OBJDIR)/jucer_JucerDocument_ff8afcc2.o \
|
||||
$(OBJDIR)/jucer_ObjectTypes_4406f01c.o \
|
||||
$(OBJDIR)/jucer_PaintRoutine_e1e891ee.o \
|
||||
$(OBJDIR)/jucer_ProjectExporter_eefe2e5b.o \
|
||||
$(OBJDIR)/jucer_ResourceFile_6af120d3.o \
|
||||
$(OBJDIR)/jucer_Module_3f7666a5.o \
|
||||
$(OBJDIR)/jucer_Project_c131864a.o \
|
||||
$(OBJDIR)/jucer_ProjectContentComponent_60de0eee.o \
|
||||
$(OBJDIR)/jucer_ProjectType_1bc27a24.o \
|
||||
$(OBJDIR)/jucer_CodeHelpers_c317179c.o \
|
||||
$(OBJDIR)/jucer_FileHelpers_f98ed0ad.o \
|
||||
$(OBJDIR)/jucer_Icons_9db2f51e.o \
|
||||
$(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o \
|
||||
$(OBJDIR)/jucer_MiscUtilities_25b68c82.o \
|
||||
$(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o \
|
||||
$(OBJDIR)/jucer_StoredSettings_26078d2c.o \
|
||||
$(OBJDIR)/jucer_NewFileWizard_fac97f47.o \
|
||||
$(OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o \
|
||||
$(OBJDIR)/BinaryData_ce4232d4.o \
|
||||
$(OBJDIR)/juce_core_1ee54a40.o \
|
||||
$(OBJDIR)/juce_cryptography_3b1f489a.o \
|
||||
$(OBJDIR)/juce_data_structures_84790dfc.o \
|
||||
$(OBJDIR)/juce_events_584896b4.o \
|
||||
$(OBJDIR)/juce_graphics_f9afc18.o \
|
||||
$(OBJDIR)/juce_gui_basics_90929794.o \
|
||||
$(OBJDIR)/juce_gui_extra_b81d9e1c.o \
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
$(OUTDIR)/$(TARGET): $(OBJECTS) $(LDDEPS) $(RESOURCES)
|
||||
@echo Linking The Introjucer
|
||||
-@mkdir -p $(BINDIR)
|
||||
-@mkdir -p $(LIBDIR)
|
||||
-@mkdir -p $(OUTDIR)
|
||||
@$(BLDCMD)
|
||||
|
||||
clean:
|
||||
@echo Cleaning The Introjucer
|
||||
@$(CLEANCMD)
|
||||
|
||||
strip:
|
||||
@echo Stripping The Introjucer
|
||||
-@strip --strip-unneeded $(OUTDIR)/$(TARGET)
|
||||
|
||||
$(OBJDIR)/jucer_AppearanceSettings_788d9889.o: ../../Source/Application/jucer_AppearanceSettings.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_AppearanceSettings.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_CommandLine_f35de107.o: ../../Source/Application/jucer_CommandLine.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_CommandLine.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o: ../../Source/Application/jucer_DocumentEditorComponent.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_DocumentEditorComponent.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_Main_f8488f5b.o: ../../Source/Application/jucer_Main.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_Main.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_MainWindow_1e163aeb.o: ../../Source/Application/jucer_MainWindow.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_MainWindow.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_OpenDocumentManager_4c72d210.o: ../../Source/Application/jucer_OpenDocumentManager.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_OpenDocumentManager.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_SourceCodeEditor_461f5487.o: ../../Source/Code\ Editor/jucer_SourceCodeEditor.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_SourceCodeEditor.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ComponentTypeHandler_6bec6262.o: ../../Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ComponentTypeHandler.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ButtonDocument_56c341cc.o: ../../Source/ComponentEditor/documents/jucer_ButtonDocument.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ButtonDocument.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ComponentDocument_92868083.o: ../../Source/ComponentEditor/documents/jucer_ComponentDocument.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ComponentDocument.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ColouredElement_70cbc839.o: ../../Source/ComponentEditor/paintelements/jucer_ColouredElement.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ColouredElement.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_PaintElement_653460.o: ../../Source/ComponentEditor/paintelements/jucer_PaintElement.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_PaintElement.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_PaintElementPath_908894a5.o: ../../Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_PaintElementPath.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ComponentLayoutEditor_aeb44f8d.o: ../../Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ComponentLayoutEditor.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ComponentOverlayComponent_fd508d63.o: ../../Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ComponentOverlayComponent.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_EditingPanelBase_6c2ed9ee.o: ../../Source/ComponentEditor/ui/jucer_EditingPanelBase.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_EditingPanelBase.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_JucerDocumentEditor_2c581e26.o: ../../Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_JucerDocumentEditor.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_PaintRoutineEditor_f6ac0344.o: ../../Source/ComponentEditor/ui/jucer_PaintRoutineEditor.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_PaintRoutineEditor.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_PaintRoutinePanel_c309a0d7.o: ../../Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_PaintRoutinePanel.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ResourceEditorPanel_a558f2e2.o: ../../Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ResourceEditorPanel.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_TestComponent_db757dc4.o: ../../Source/ComponentEditor/ui/jucer_TestComponent.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_TestComponent.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_BinaryResources_e0f99b46.o: ../../Source/ComponentEditor/jucer_BinaryResources.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_BinaryResources.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ComponentLayout_6ea00129.o: ../../Source/ComponentEditor/jucer_ComponentLayout.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ComponentLayout.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_GeneratedCode_9ca4ef7e.o: ../../Source/ComponentEditor/jucer_GeneratedCode.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_GeneratedCode.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_JucerDocument_ff8afcc2.o: ../../Source/ComponentEditor/jucer_JucerDocument.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_JucerDocument.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ObjectTypes_4406f01c.o: ../../Source/ComponentEditor/jucer_ObjectTypes.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ObjectTypes.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_PaintRoutine_e1e891ee.o: ../../Source/ComponentEditor/jucer_PaintRoutine.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_PaintRoutine.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ProjectExporter_eefe2e5b.o: ../../Source/Project\ Saving/jucer_ProjectExporter.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ProjectExporter.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ResourceFile_6af120d3.o: ../../Source/Project\ Saving/jucer_ResourceFile.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ResourceFile.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_Module_3f7666a5.o: ../../Source/Project/jucer_Module.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_Module.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_Project_c131864a.o: ../../Source/Project/jucer_Project.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_Project.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ProjectContentComponent_60de0eee.o: ../../Source/Project/jucer_ProjectContentComponent.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ProjectContentComponent.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_ProjectType_1bc27a24.o: ../../Source/Project/jucer_ProjectType.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_ProjectType.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_CodeHelpers_c317179c.o: ../../Source/Utility/jucer_CodeHelpers.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_CodeHelpers.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_FileHelpers_f98ed0ad.o: ../../Source/Utility/jucer_FileHelpers.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_FileHelpers.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_Icons_9db2f51e.o: ../../Source/Utility/jucer_Icons.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_Icons.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_JucerTreeViewBase_d043309d.o: ../../Source/Utility/jucer_JucerTreeViewBase.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_JucerTreeViewBase.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_MiscUtilities_25b68c82.o: ../../Source/Utility/jucer_MiscUtilities.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_MiscUtilities.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_SlidingPanelComponent_9aa7a2ab.o: ../../Source/Utility/jucer_SlidingPanelComponent.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_SlidingPanelComponent.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_StoredSettings_26078d2c.o: ../../Source/Utility/jucer_StoredSettings.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_StoredSettings.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_NewFileWizard_fac97f47.o: ../../Source/Wizards/jucer_NewFileWizard.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_NewFileWizard.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/jucer_NewProjectWizardClasses_891f6fa2.o: ../../Source/Wizards/jucer_NewProjectWizardClasses.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling jucer_NewProjectWizardClasses.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/BinaryData_ce4232d4.o: ../../JuceLibraryCode/BinaryData.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling BinaryData.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_core_1ee54a40.o: ../../../../modules/juce_core/juce_core.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_core.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_cryptography_3b1f489a.o: ../../../../modules/juce_cryptography/juce_cryptography.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_cryptography.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_data_structures_84790dfc.o: ../../../../modules/juce_data_structures/juce_data_structures.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_data_structures.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_events_584896b4.o: ../../../../modules/juce_events/juce_events.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_events.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_graphics_f9afc18.o: ../../../../modules/juce_graphics/juce_graphics.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_graphics.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_gui_basics_90929794.o: ../../../../modules/juce_gui_basics/juce_gui_basics.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_gui_basics.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
$(OBJDIR)/juce_gui_extra_b81d9e1c.o: ../../../../modules/juce_gui_extra/juce_gui_extra.cpp
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_gui_extra.cpp"
|
||||
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
|
||||
|
||||
-include $(OBJECTS:%.o=%.d)
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.rawmaterialsoftware.introjucer</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>The Introjucer</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>3.1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>3.1.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Raw Material Software Ltd.</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>jucer</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>jucer</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
<key>NSPersistentStoreTypeKey</key>
|
||||
<string>XML</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
||||
# Visual C++ Express 2005
|
||||
Project("{62DDBD62-D03F-FBCA-D85C-731B2D53653D}") = "The Introjucer", "The Introjucer.vcproj", "{26ABE2A4-1F2F-8375-088D-D692A4408B5A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,33 @@
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,1,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Ltd.\0"
|
||||
VALUE "FileDescription", "The Introjucer\0"
|
||||
VALUE "FileVersion", "3.1.0\0"
|
||||
VALUE "ProductName", "The Introjucer\0"
|
||||
VALUE "ProductVersion", "3.1.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 65001
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
||||
@@ -0,0 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual C++ Express 2008
|
||||
Project("{62DDBD62-D03F-FBCA-D85C-731B2D53653D}") = "The Introjucer", "The Introjucer.vcproj", "{26ABE2A4-1F2F-8375-088D-D692A4408B5A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,33 @@
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,1,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Ltd.\0"
|
||||
VALUE "FileDescription", "The Introjucer\0"
|
||||
VALUE "FileVersion", "3.1.0\0"
|
||||
VALUE "ProductName", "The Introjucer\0"
|
||||
VALUE "ProductVersion", "3.1.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 65001
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
||||
@@ -0,0 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{62DDBD62-D03F-FBCA-D85C-731B2D53653D}") = "The Introjucer", "The Introjucer.vcxproj", "{26ABE2A4-1F2F-8375-088D-D692A4408B5A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,33 @@
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,1,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Ltd.\0"
|
||||
VALUE "FileDescription", "The Introjucer\0"
|
||||
VALUE "FileVersion", "3.1.0\0"
|
||||
VALUE "ProductName", "The Introjucer\0"
|
||||
VALUE "ProductVersion", "3.1.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 65001
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
||||
@@ -0,0 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2012
|
||||
Project("{62DDBD62-D03F-FBCA-D85C-731B2D53653D}") = "The Introjucer", "The Introjucer.vcxproj", "{26ABE2A4-1F2F-8375-088D-D692A4408B5A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,33 @@
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,1,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Ltd.\0"
|
||||
VALUE "FileDescription", "The Introjucer\0"
|
||||
VALUE "FileVersion", "3.1.0\0"
|
||||
VALUE "ProductName", "The Introjucer\0"
|
||||
VALUE "ProductVersion", "3.1.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 65001
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
||||
@@ -0,0 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2013
|
||||
Project("{62DDBD62-D03F-FBCA-D85C-731B2D53653D}") = "The Introjucer", "The Introjucer.vcxproj", "{26ABE2A4-1F2F-8375-088D-D692A4408B5A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{26ABE2A4-1F2F-8375-088D-D692A4408B5A}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,33 @@
|
||||
#ifdef JUCE_USER_DEFINED_RC_FILE
|
||||
#include JUCE_USER_DEFINED_RC_FILE
|
||||
#else
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,1,0,0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Raw Material Software Ltd.\0"
|
||||
VALUE "FileDescription", "The Introjucer\0"
|
||||
VALUE "FileVersion", "3.1.0\0"
|
||||
VALUE "ProductName", "The Introjucer\0"
|
||||
VALUE "ProductVersion", "3.1.0\0"
|
||||
END
|
||||
END
|
||||
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 65001
|
||||
END
|
||||
END
|
||||
|
||||
#endif
|
||||
|
||||
IDI_ICON1 ICON DISCARDABLE "icon.ico"
|
||||
IDI_ICON2 ICON DISCARDABLE "icon.ico"
|
||||
@@ -0,0 +1,616 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<JUCERPROJECT id="M70qfTRRk" name="The Introjucer" projectType="guiapp" juceLinkage="amalg_multi"
|
||||
juceFolder="../../juce" jucerVersion="3.1.0" version="3.1.0"
|
||||
buildVST="1" buildRTAS="0" buildAU="1" vstFolderMac="~/SDKs/vstsdk2.4"
|
||||
vstFolderPC="c:\SDKs\vstsdk2.4" rtasFolderMac="~/SDKs/PT_80_SDK"
|
||||
rtasFolderPC="c:\SDKs\PT_80_SDK" pluginName="The Introjucer"
|
||||
pluginDesc="The Introjucer" pluginManufacturer="yourcompany"
|
||||
pluginManufacturerCode="abcd" pluginCode="Abcd" pluginChannelConfigs="{ {1, 1}, {2, 2} }"
|
||||
pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0"
|
||||
pluginSilenceInIsSilenceOut="0" pluginTailLength="0" pluginEditorRequiresKeys="0"
|
||||
pluginAUExportPrefix="TheIntrojucerAU" pluginAUViewClass="TheIntrojucerAU_V1"
|
||||
pluginRTASCategory="" bundleIdentifier="com.rawmaterialsoftware.introjucer"
|
||||
companyName="Raw Material Software Ltd." includeBinaryInAppConfig="1">
|
||||
<EXPORTFORMATS>
|
||||
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"
|
||||
documentExtensions=".jucer" objCExtraSuffix="zNNCr" bigIcon="rVgowdy"
|
||||
extraCompilerFlags="-Wall -Wshadow -Wno-missing-field-initializers -Wshadow -Wshorten-64-to-32 -Wstrict-aliasing -Wuninitialized -Wunused-parameter">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"
|
||||
osxSDK="default" osxCompatibility="default" osxArchitecture="Native"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"
|
||||
osxSDK="default" osxCompatibility="10.5 SDK" osxArchitecture="Native"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</XCODE_MAC>
|
||||
<VS2005 targetFolder="Builds/VisualStudio2005" vstFolder="c:\SDKs\vstsdk2.4"
|
||||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" bigIcon="rVgowdy">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"
|
||||
winWarningLevel="4" generateManifest="1"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"
|
||||
winWarningLevel="4" generateManifest="1"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2005>
|
||||
<VS2008 targetFolder="Builds/VisualStudio2008" vstFolder="c:\SDKs\vstsdk2.4"
|
||||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" bigIcon="rVgowdy">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"
|
||||
winWarningLevel="4" generateManifest="1"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"
|
||||
winWarningLevel="4" generateManifest="1"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2008>
|
||||
<LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" bigIcon="rVgowdy"
|
||||
extraCompilerFlags="-std=gnu++0x">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"
|
||||
libraryPath="/usr/X11R6/lib/"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"
|
||||
libraryPath="/usr/X11R6/lib/"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</LINUX_MAKE>
|
||||
<VS2010 targetFolder="Builds/VisualStudio2010" vstFolder="c:\SDKs\vstsdk2.4"
|
||||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" bigIcon="rVgowdy">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"
|
||||
winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"
|
||||
winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2010>
|
||||
<VS2012 targetFolder="Builds/VisualStudio2012" bigIcon="rVgowdy">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||
isDebug="1" optimisation="1" targetName="The Introjucer"/>
|
||||
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||
isDebug="0" optimisation="2" targetName="The Introjucer"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2012>
|
||||
<VS2013 targetFolder="Builds/VisualStudio2013" bigIcon="rVgowdy">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||
isDebug="1" optimisation="1" targetName="The Introjucer"/>
|
||||
<CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit"
|
||||
isDebug="0" optimisation="2" targetName="The Introjucer"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2013>
|
||||
<CODEBLOCKS targetFolder="Builds/CodeBlocks">
|
||||
<CONFIGURATIONS>
|
||||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="The Introjucer"/>
|
||||
<CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="The Introjucer"/>
|
||||
</CONFIGURATIONS>
|
||||
<MODULEPATHS>
|
||||
<MODULEPATH id="juce_gui_extra" path="../../modules"/>
|
||||
<MODULEPATH id="juce_gui_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_graphics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_events" path="../../modules"/>
|
||||
<MODULEPATH id="juce_data_structures" path="../../modules"/>
|
||||
<MODULEPATH id="juce_cryptography" path="../../modules"/>
|
||||
<MODULEPATH id="juce_core" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</CODEBLOCKS>
|
||||
</EXPORTFORMATS>
|
||||
<MAINGROUP name="The Introjucer" id="NhrJq66R">
|
||||
<GROUP id="mslFIKZ" name="Application">
|
||||
<FILE id="pI5xt5" name="jucer_AppearanceSettings.cpp" compile="1" resource="0"
|
||||
file="Source/Application/jucer_AppearanceSettings.cpp"/>
|
||||
<FILE id="oCCddi" name="jucer_AppearanceSettings.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_AppearanceSettings.h"/>
|
||||
<FILE id="PXX8Yi" name="jucer_Application.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_Application.h"/>
|
||||
<FILE id="RWf1Jy" name="jucer_AutoUpdater.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_AutoUpdater.h"/>
|
||||
<FILE id="lHd3UQJ" name="jucer_CommandIDs.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_CommandIDs.h"/>
|
||||
<FILE id="MyVf4S" name="jucer_CommandLine.cpp" compile="1" resource="0"
|
||||
file="Source/Application/jucer_CommandLine.cpp"/>
|
||||
<FILE id="SuOWc2" name="jucer_CommandLine.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_CommandLine.h"/>
|
||||
<FILE id="vXhFyvd" name="jucer_CommonHeaders.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_CommonHeaders.h"/>
|
||||
<FILE id="YNZhhqp" name="jucer_DocumentEditorComponent.cpp" compile="1"
|
||||
resource="0" file="Source/Application/jucer_DocumentEditorComponent.cpp"/>
|
||||
<FILE id="tyrTEq" name="jucer_DocumentEditorComponent.h" compile="0"
|
||||
resource="0" file="Source/Application/jucer_DocumentEditorComponent.h"/>
|
||||
<FILE id="C4MqR1U" name="jucer_FilePreviewComponent.h" compile="0"
|
||||
resource="0" file="Source/Application/jucer_FilePreviewComponent.h"/>
|
||||
<FILE id="qXOJtpg" name="jucer_Headers.h" compile="0" resource="0"
|
||||
file="Source/jucer_Headers.h"/>
|
||||
<FILE id="ga7xgxf" name="jucer_Main.cpp" compile="1" resource="0" file="Source/Application/jucer_Main.cpp"/>
|
||||
<FILE id="Glk9Bg" name="jucer_MainWindow.cpp" compile="1" resource="0"
|
||||
file="Source/Application/jucer_MainWindow.cpp"/>
|
||||
<FILE id="OUmWPg" name="jucer_MainWindow.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_MainWindow.h"/>
|
||||
<FILE id="9hfMs0O" name="jucer_OpenDocumentManager.cpp" compile="1"
|
||||
resource="0" file="Source/Application/jucer_OpenDocumentManager.cpp"/>
|
||||
<FILE id="NYEknlp" name="jucer_OpenDocumentManager.h" compile="0" resource="0"
|
||||
file="Source/Application/jucer_OpenDocumentManager.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="i1s14uV" name="Code Editor">
|
||||
<FILE id="36CkPUf" name="jucer_SourceCodeEditor.cpp" compile="1" resource="0"
|
||||
file="Source/Code Editor/jucer_SourceCodeEditor.cpp"/>
|
||||
<FILE id="CygyGGA" name="jucer_SourceCodeEditor.h" compile="0" resource="0"
|
||||
file="Source/Code Editor/jucer_SourceCodeEditor.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{2CEB6C89-822E-5334-4BA3-EBCA71F15B1D}" name="ComponentEditor">
|
||||
<GROUP id="{991D022D-772C-89CA-9279-97CBE57A95A1}" name="components">
|
||||
<FILE id="rITV4W" name="jucer_ButtonHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_ButtonHandler.h"/>
|
||||
<FILE id="ETf5wP" name="jucer_ComboBoxHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_ComboBoxHandler.h"/>
|
||||
<FILE id="VYwZMA" name="jucer_ComponentNameProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_ComponentNameProperty.h"/>
|
||||
<FILE id="HKreNg" name="jucer_ComponentTypeHandler.cpp" compile="1"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp"/>
|
||||
<FILE id="qf7M8f" name="jucer_ComponentTypeHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_ComponentTypeHandler.h"/>
|
||||
<FILE id="BNNvIv" name="jucer_ComponentUndoableAction.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_ComponentUndoableAction.h"/>
|
||||
<FILE id="K8TvLo" name="jucer_GenericComponentHandler.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_GenericComponentHandler.h"/>
|
||||
<FILE id="wZGCvQ" name="jucer_GroupComponentHandler.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_GroupComponentHandler.h"/>
|
||||
<FILE id="PJxFrK" name="jucer_HyperlinkButtonHandler.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_HyperlinkButtonHandler.h"/>
|
||||
<FILE id="YSwPme" name="jucer_ImageButtonHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_ImageButtonHandler.h"/>
|
||||
<FILE id="LDl6E2" name="jucer_JucerComponentHandler.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_JucerComponentHandler.h"/>
|
||||
<FILE id="KV8ITI" name="jucer_LabelHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_LabelHandler.h"/>
|
||||
<FILE id="Ib9vrK" name="jucer_SliderHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_SliderHandler.h"/>
|
||||
<FILE id="LE1P9T" name="jucer_TabbedComponentHandler.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/components/jucer_TabbedComponentHandler.h"/>
|
||||
<FILE id="yNGaOZ" name="jucer_TextButtonHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_TextButtonHandler.h"/>
|
||||
<FILE id="uCcFPZ" name="jucer_TextEditorHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_TextEditorHandler.h"/>
|
||||
<FILE id="Vc0nqL" name="jucer_ToggleButtonHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_ToggleButtonHandler.h"/>
|
||||
<FILE id="LxUfLS" name="jucer_TreeViewHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_TreeViewHandler.h"/>
|
||||
<FILE id="UK7au4" name="jucer_ViewportHandler.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/components/jucer_ViewportHandler.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{4205F9F4-CA03-599A-8C9B-E26061861F6F}" name="documents">
|
||||
<FILE id="TYU1VV" name="jucer_ButtonDocument.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/documents/jucer_ButtonDocument.cpp"/>
|
||||
<FILE id="X7tlEa" name="jucer_ButtonDocument.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/documents/jucer_ButtonDocument.h"/>
|
||||
<FILE id="aKYUKO" name="jucer_ComponentDocument.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/documents/jucer_ComponentDocument.cpp"/>
|
||||
<FILE id="QWjkNQ" name="jucer_ComponentDocument.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/documents/jucer_ComponentDocument.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{A0FB1797-F730-7BC3-D880-3BA303E7399E}" name="paintelements">
|
||||
<FILE id="inuiZP" name="jucer_ColouredElement.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_ColouredElement.cpp"/>
|
||||
<FILE id="HPmBrY" name="jucer_ColouredElement.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_ColouredElement.h"/>
|
||||
<FILE id="dJaub3" name="jucer_ElementSiblingComponent.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/paintelements/jucer_ElementSiblingComponent.h"/>
|
||||
<FILE id="K7K9w1" name="jucer_FillType.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_FillType.h"/>
|
||||
<FILE id="VwZZZW" name="jucer_GradientPointComponent.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/paintelements/jucer_GradientPointComponent.h"/>
|
||||
<FILE id="bev2oi" name="jucer_ImageResourceProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/paintelements/jucer_ImageResourceProperty.h"/>
|
||||
<FILE id="clRcIu" name="jucer_PaintElement.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElement.cpp"/>
|
||||
<FILE id="F4AEGr" name="jucer_PaintElement.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElement.h"/>
|
||||
<FILE id="xU4ubN" name="jucer_PaintElementEllipse.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElementEllipse.h"/>
|
||||
<FILE id="RcWpm8" name="jucer_PaintElementGroup.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElementGroup.h"/>
|
||||
<FILE id="ft5MWO" name="jucer_PaintElementImage.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElementImage.h"/>
|
||||
<FILE id="pnsBvh" name="jucer_PaintElementPath.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElementPath.cpp"/>
|
||||
<FILE id="TBaAHE" name="jucer_PaintElementPath.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElementPath.h"/>
|
||||
<FILE id="dd1jYM" name="jucer_PaintElementRectangle.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/paintelements/jucer_PaintElementRectangle.h"/>
|
||||
<FILE id="PFMc79" name="jucer_PaintElementRoundedRectangle.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/paintelements/jucer_PaintElementRoundedRectangle.h"/>
|
||||
<FILE id="YIfBIW" name="jucer_PaintElementText.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PaintElementText.h"/>
|
||||
<FILE id="yKXEgv" name="jucer_PaintElementUndoableAction.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/paintelements/jucer_PaintElementUndoableAction.h"/>
|
||||
<FILE id="M6U5Wv" name="jucer_PointComponent.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_PointComponent.h"/>
|
||||
<FILE id="xT3Eb0" name="jucer_StrokeType.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/paintelements/jucer_StrokeType.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{721DE2A1-8F94-F2B8-6AD8-BC8B1A9E5705}" name="properties">
|
||||
<FILE id="NLsN0X" name="jucer_ColourPropertyComponent.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_ColourPropertyComponent.h"/>
|
||||
<FILE id="DRH56I" name="jucer_ComponentBooleanProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_ComponentBooleanProperty.h"/>
|
||||
<FILE id="rfuwQh" name="jucer_ComponentChoiceProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_ComponentChoiceProperty.h"/>
|
||||
<FILE id="vEgZwf" name="jucer_ComponentColourProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_ComponentColourProperty.h"/>
|
||||
<FILE id="NA8Z1Q" name="jucer_ComponentTextProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_ComponentTextProperty.h"/>
|
||||
<FILE id="W8Rfzk" name="jucer_FilePropertyComponent.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_FilePropertyComponent.h"/>
|
||||
<FILE id="ro0hFm" name="jucer_FontPropertyComponent.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_FontPropertyComponent.h"/>
|
||||
<FILE id="bZrq82" name="jucer_JustificationProperty.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/properties/jucer_JustificationProperty.h"/>
|
||||
<FILE id="qg4Jzu" name="jucer_PositionPropertyBase.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/properties/jucer_PositionPropertyBase.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{2E376C88-458D-B030-6A17-32378D83EA2C}" name="ui">
|
||||
<FILE id="yUp6KD" name="jucer_ComponentLayoutEditor.cpp" compile="1"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.cpp"/>
|
||||
<FILE id="MSAX1Y" name="jucer_ComponentLayoutEditor.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_ComponentLayoutEditor.h"/>
|
||||
<FILE id="iKlcXq" name="jucer_ComponentLayoutPanel.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_ComponentLayoutPanel.h"/>
|
||||
<FILE id="hJ1gT9" name="jucer_ComponentOverlayComponent.cpp" compile="1"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.cpp"/>
|
||||
<FILE id="BFfCA3" name="jucer_ComponentOverlayComponent.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_ComponentOverlayComponent.h"/>
|
||||
<FILE id="jbijT3" name="jucer_EditingPanelBase.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_EditingPanelBase.cpp"/>
|
||||
<FILE id="RNGdaa" name="jucer_EditingPanelBase.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_EditingPanelBase.h"/>
|
||||
<FILE id="D5pfJg" name="jucer_JucerCommandIDs.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_JucerCommandIDs.h"/>
|
||||
<FILE id="HsjExN" name="jucer_JucerDocumentEditor.cpp" compile="1"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_JucerDocumentEditor.cpp"/>
|
||||
<FILE id="b2FF1t" name="jucer_JucerDocumentEditor.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_JucerDocumentEditor.h"/>
|
||||
<FILE id="Re59Al" name="jucer_PaintRoutineEditor.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_PaintRoutineEditor.cpp"/>
|
||||
<FILE id="mTow9T" name="jucer_PaintRoutineEditor.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_PaintRoutineEditor.h"/>
|
||||
<FILE id="g1E8EJ" name="jucer_PaintRoutinePanel.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_PaintRoutinePanel.cpp"/>
|
||||
<FILE id="wzRGI9" name="jucer_PaintRoutinePanel.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_PaintRoutinePanel.h"/>
|
||||
<FILE id="ktQ4ng" name="jucer_RelativePositionedRectangle.h" compile="0"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_RelativePositionedRectangle.h"/>
|
||||
<FILE id="CFe5dO" name="jucer_ResourceEditorPanel.cpp" compile="1"
|
||||
resource="0" file="Source/ComponentEditor/ui/jucer_ResourceEditorPanel.cpp"/>
|
||||
<FILE id="S8hsI2" name="jucer_ResourceEditorPanel.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_ResourceEditorPanel.h"/>
|
||||
<FILE id="jwLtCu" name="jucer_SnapGridPainter.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_SnapGridPainter.h"/>
|
||||
<FILE id="QqRZKi" name="jucer_TestComponent.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_TestComponent.cpp"/>
|
||||
<FILE id="mIEmG7" name="jucer_TestComponent.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/ui/jucer_TestComponent.h"/>
|
||||
</GROUP>
|
||||
<FILE id="q9RAaZ" name="jucer_BinaryResources.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/jucer_BinaryResources.cpp"/>
|
||||
<FILE id="sbNvpB" name="jucer_BinaryResources.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_BinaryResources.h"/>
|
||||
<FILE id="smSHM5" name="jucer_ComponentLayout.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/jucer_ComponentLayout.cpp"/>
|
||||
<FILE id="MNeOnz" name="jucer_ComponentLayout.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_ComponentLayout.h"/>
|
||||
<FILE id="pxZtWJ" name="jucer_GeneratedCode.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/jucer_GeneratedCode.cpp"/>
|
||||
<FILE id="uCwazM" name="jucer_GeneratedCode.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_GeneratedCode.h"/>
|
||||
<FILE id="Ck53JI" name="jucer_JucerDocument.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/jucer_JucerDocument.cpp"/>
|
||||
<FILE id="TMo2IM" name="jucer_JucerDocument.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_JucerDocument.h"/>
|
||||
<FILE id="Cg97A0" name="jucer_ObjectTypes.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/jucer_ObjectTypes.cpp"/>
|
||||
<FILE id="OXJG49" name="jucer_ObjectTypes.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_ObjectTypes.h"/>
|
||||
<FILE id="sGXKcJ" name="jucer_PaintRoutine.cpp" compile="1" resource="0"
|
||||
file="Source/ComponentEditor/jucer_PaintRoutine.cpp"/>
|
||||
<FILE id="ctReDx" name="jucer_PaintRoutine.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_PaintRoutine.h"/>
|
||||
<FILE id="DNlSpr" name="jucer_UtilityFunctions.h" compile="0" resource="0"
|
||||
file="Source/ComponentEditor/jucer_UtilityFunctions.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{579C9644-D5C2-8469-9439-F91C81337531}" name="Project Saving">
|
||||
<FILE id="TtXohM" name="jucer_ProjectExport_Android.h" compile="0"
|
||||
resource="0" file="Source/Project Saving/jucer_ProjectExport_Android.h"/>
|
||||
<FILE id="EkBkj1" name="jucer_ProjectExport_CodeBlocks.h" compile="0"
|
||||
resource="0" file="Source/Project Saving/jucer_ProjectExport_CodeBlocks.h"/>
|
||||
<FILE id="mVXrLi" name="jucer_ProjectExport_Make.h" compile="0" resource="0"
|
||||
file="Source/Project Saving/jucer_ProjectExport_Make.h"/>
|
||||
<FILE id="ILeTrs" name="jucer_ProjectExport_MSVC.h" compile="0" resource="0"
|
||||
file="Source/Project Saving/jucer_ProjectExport_MSVC.h"/>
|
||||
<FILE id="qGukX7" name="jucer_ProjectExport_XCode.h" compile="0" resource="0"
|
||||
file="Source/Project Saving/jucer_ProjectExport_XCode.h"/>
|
||||
<FILE id="IhUUL3" name="jucer_ProjectExporter.cpp" compile="1" resource="0"
|
||||
file="Source/Project Saving/jucer_ProjectExporter.cpp"/>
|
||||
<FILE id="DDuG44" name="jucer_ProjectExporter.h" compile="0" resource="0"
|
||||
file="Source/Project Saving/jucer_ProjectExporter.h"/>
|
||||
<FILE id="ASAH0z" name="jucer_ProjectSaver.h" compile="0" resource="0"
|
||||
file="Source/Project Saving/jucer_ProjectSaver.h"/>
|
||||
<FILE id="EEyV81" name="jucer_ResourceFile.cpp" compile="1" resource="0"
|
||||
file="Source/Project Saving/jucer_ResourceFile.cpp"/>
|
||||
<FILE id="dCnNH" name="jucer_ResourceFile.h" compile="0" resource="0"
|
||||
file="Source/Project Saving/jucer_ResourceFile.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="vGFZIJg" name="Project">
|
||||
<FILE id="a9a1b" name="jucer_AudioPluginModule.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_AudioPluginModule.h"/>
|
||||
<FILE id="xYS0qQ" name="jucer_ConfigTree_Base.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ConfigTree_Base.h"/>
|
||||
<FILE id="mLHZta" name="jucer_ConfigTree_Exporter.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ConfigTree_Exporter.h"/>
|
||||
<FILE id="OO3lfM" name="jucer_ConfigTree_Modules.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ConfigTree_Modules.h"/>
|
||||
<FILE id="sQjHbVN" name="jucer_GroupInformationComponent.h" compile="0"
|
||||
resource="0" file="Source/Project/jucer_GroupInformationComponent.h"/>
|
||||
<FILE id="MJkOAX" name="jucer_Module.cpp" compile="1" resource="0"
|
||||
file="Source/Project/jucer_Module.cpp"/>
|
||||
<FILE id="VZmQQ6" name="jucer_Module.h" compile="0" resource="0" file="Source/Project/jucer_Module.h"/>
|
||||
<FILE id="AbVStQ" name="jucer_ModulesPanel.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ModulesPanel.h"/>
|
||||
<FILE id="o4UdN4D" name="jucer_Project.cpp" compile="1" resource="0"
|
||||
file="Source/Project/jucer_Project.cpp"/>
|
||||
<FILE id="aFopF9G" name="jucer_Project.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_Project.h"/>
|
||||
<FILE id="KqyDGWJ" name="jucer_ProjectContentComponent.cpp" compile="1"
|
||||
resource="0" file="Source/Project/jucer_ProjectContentComponent.cpp"/>
|
||||
<FILE id="mIJMR08" name="jucer_ProjectContentComponent.h" compile="0"
|
||||
resource="0" file="Source/Project/jucer_ProjectContentComponent.h"/>
|
||||
<FILE id="UwhAsi1" name="jucer_ProjectTree_Base.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ProjectTree_Base.h"/>
|
||||
<FILE id="wiMMXX" name="jucer_ProjectTree_File.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ProjectTree_File.h"/>
|
||||
<FILE id="WaT0B16" name="jucer_ProjectTree_Group.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ProjectTree_Group.h"/>
|
||||
<FILE id="WQ6fWQ" name="jucer_ProjectType.cpp" compile="1" resource="0"
|
||||
file="Source/Project/jucer_ProjectType.cpp"/>
|
||||
<FILE id="davId" name="jucer_ProjectType.h" compile="0" resource="0"
|
||||
file="Source/Project/jucer_ProjectType.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="Ga8fLmv" name="Utility">
|
||||
<FILE id="mceJWJc" name="jucer_CodeHelpers.cpp" compile="1" resource="0"
|
||||
file="Source/Utility/jucer_CodeHelpers.cpp"/>
|
||||
<FILE id="BBRteob" name="jucer_CodeHelpers.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_CodeHelpers.h"/>
|
||||
<FILE id="wQtNWXb" name="jucer_Colours.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_Colours.h"/>
|
||||
<FILE id="MQYSse6" name="jucer_FileHelpers.cpp" compile="1" resource="0"
|
||||
file="Source/Utility/jucer_FileHelpers.cpp"/>
|
||||
<FILE id="NeLXzRp" name="jucer_FileHelpers.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_FileHelpers.h"/>
|
||||
<FILE id="f6iMAs" name="jucer_Icons.cpp" compile="1" resource="0" file="Source/Utility/jucer_Icons.cpp"/>
|
||||
<FILE id="EtL6vF" name="jucer_Icons.h" compile="0" resource="0" file="Source/Utility/jucer_Icons.h"/>
|
||||
<FILE id="4fxv0YC" name="jucer_JucerTreeViewBase.cpp" compile="1" resource="0"
|
||||
file="Source/Utility/jucer_JucerTreeViewBase.cpp"/>
|
||||
<FILE id="F0vVVSX" name="jucer_JucerTreeViewBase.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_JucerTreeViewBase.h"/>
|
||||
<FILE id="P4hiiqU" name="jucer_MiscUtilities.cpp" compile="1" resource="0"
|
||||
file="Source/Utility/jucer_MiscUtilities.cpp"/>
|
||||
<FILE id="xyRXOU6" name="jucer_MiscUtilities.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_MiscUtilities.h"/>
|
||||
<FILE id="i0HWAP4" name="jucer_PresetIDs.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_PresetIDs.h"/>
|
||||
<FILE id="F3VxlRX" name="jucer_RelativePath.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_RelativePath.h"/>
|
||||
<FILE id="w40H5T" name="jucer_SlidingPanelComponent.cpp" compile="1"
|
||||
resource="0" file="Source/Utility/jucer_SlidingPanelComponent.cpp"/>
|
||||
<FILE id="a5dZ4L" name="jucer_SlidingPanelComponent.h" compile="0"
|
||||
resource="0" file="Source/Utility/jucer_SlidingPanelComponent.h"/>
|
||||
<FILE id="5UDCwsI" name="jucer_StoredSettings.cpp" compile="1" resource="0"
|
||||
file="Source/Utility/jucer_StoredSettings.cpp"/>
|
||||
<FILE id="BkswLvF" name="jucer_StoredSettings.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_StoredSettings.h"/>
|
||||
<FILE id="l75UWh" name="jucer_TranslationTool.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_TranslationTool.h"/>
|
||||
<FILE id="lZ9s99o" name="jucer_ValueSourceHelpers.h" compile="0" resource="0"
|
||||
file="Source/Utility/jucer_ValueSourceHelpers.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{8B3486A1-A1FE-D1F3-DC93-A9648E7A0B81}" name="Wizards">
|
||||
<FILE id="jNmG53" name="jucer_NewFileWizard.cpp" compile="1" resource="0"
|
||||
file="Source/Wizards/jucer_NewFileWizard.cpp"/>
|
||||
<FILE id="hDWsJe" name="jucer_NewFileWizard.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_NewFileWizard.h"/>
|
||||
<FILE id="z1x9qC" name="jucer_NewProjectWizard.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_NewProjectWizard.h"/>
|
||||
<FILE id="Qj5Pic" name="jucer_NewProjectWizardClasses.cpp" compile="1"
|
||||
resource="0" file="Source/Wizards/jucer_NewProjectWizardClasses.cpp"/>
|
||||
<FILE id="EorFIT" name="jucer_NewProjectWizardClasses.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_NewProjectWizardClasses.h"/>
|
||||
<FILE id="gANG6q" name="jucer_NewProjectWizardComponent.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_NewProjectWizardComponent.h"/>
|
||||
<FILE id="XsYjVu" name="jucer_ProjectWizard_Animated.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_ProjectWizard_Animated.h"/>
|
||||
<FILE id="C3QHDx" name="jucer_ProjectWizard_AudioApp.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_ProjectWizard_AudioApp.h"/>
|
||||
<FILE id="VslsJm" name="jucer_ProjectWizard_AudioPlugin.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_ProjectWizard_AudioPlugin.h"/>
|
||||
<FILE id="YnNfnf" name="jucer_ProjectWizard_Blank.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_ProjectWizard_Blank.h"/>
|
||||
<FILE id="ZGv05z" name="jucer_ProjectWizard_Console.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_ProjectWizard_Console.h"/>
|
||||
<FILE id="MSY7Sv" name="jucer_ProjectWizard_DLL.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_ProjectWizard_DLL.h"/>
|
||||
<FILE id="DLKmUb" name="jucer_ProjectWizard_GUIApp.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_ProjectWizard_GUIApp.h"/>
|
||||
<FILE id="ok6sWB" name="jucer_ProjectWizard_openGL.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_ProjectWizard_openGL.h"/>
|
||||
<FILE id="NEahcu" name="jucer_ProjectWizard_StaticLibrary.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_ProjectWizard_StaticLibrary.h"/>
|
||||
<FILE id="mwwjfj" name="jucer_StartPageComponent.h" compile="0" resource="0"
|
||||
file="Source/Wizards/jucer_StartPageComponent.h"/>
|
||||
<FILE id="BlL6EA" name="jucer_TemplateThumbnailsComponent.h" compile="0"
|
||||
resource="0" file="Source/Wizards/jucer_TemplateThumbnailsComponent.h"/>
|
||||
<GROUP id="{2EFFC5F3-CE4A-FCEB-391B-A644E7394EE3}" name="templates">
|
||||
<FILE id="Ksvdgw" name="jucer_AnimatedComponentTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_AnimatedComponentTemplate.cpp"/>
|
||||
<FILE id="zI7KxE" name="jucer_AudioComponentTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_AudioComponentTemplate.cpp"/>
|
||||
<FILE id="8H7vztx" name="jucer_AudioPluginEditorTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_AudioPluginEditorTemplate.cpp"/>
|
||||
<FILE id="908LsXi" name="jucer_AudioPluginEditorTemplate.h" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_AudioPluginEditorTemplate.h"/>
|
||||
<FILE id="AfHjhZ9" name="jucer_AudioPluginFilterTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_AudioPluginFilterTemplate.cpp"/>
|
||||
<FILE id="pvgTmND" name="jucer_AudioPluginFilterTemplate.h" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_AudioPluginFilterTemplate.h"/>
|
||||
<FILE id="gM9qyy" name="jucer_ComponentTemplate.cpp" compile="0" resource="1"
|
||||
file="Source/BinaryData/jucer_ComponentTemplate.cpp"/>
|
||||
<FILE id="TSDD99" name="jucer_ComponentTemplate.h" compile="0" resource="1"
|
||||
file="Source/BinaryData/jucer_ComponentTemplate.h"/>
|
||||
<FILE id="xl685P" name="jucer_ContentCompTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_ContentCompTemplate.cpp"/>
|
||||
<FILE id="gFj8Jl" name="jucer_ContentCompTemplate.h" compile="0" resource="1"
|
||||
file="Source/BinaryData/jucer_ContentCompTemplate.h"/>
|
||||
<FILE id="BnCgp2" name="jucer_InlineComponentTemplate.h" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_InlineComponentTemplate.h"/>
|
||||
<FILE id="pizYtv9" name="jucer_MainConsoleAppTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_MainConsoleAppTemplate.cpp"/>
|
||||
<FILE id="tZCXSl" name="jucer_MainTemplate_NoWindow.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_MainTemplate_NoWindow.cpp"/>
|
||||
<FILE id="R7OBsx" name="jucer_MainTemplate_SimpleWindow.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_MainTemplate_SimpleWindow.cpp"/>
|
||||
<FILE id="W9iwHx" name="jucer_MainTemplate_Window.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_MainTemplate_Window.cpp"/>
|
||||
<FILE id="fWEsCu" name="jucer_NewComponentTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_NewComponentTemplate.cpp"/>
|
||||
<FILE id="ljPBjw" name="jucer_NewComponentTemplate.h" compile="0" resource="1"
|
||||
file="Source/BinaryData/jucer_NewComponentTemplate.h"/>
|
||||
<FILE id="cI2ImgX" name="jucer_NewCppFileTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_NewCppFileTemplate.cpp"/>
|
||||
<FILE id="YDcz5P" name="jucer_NewCppFileTemplate.h" compile="0" resource="1"
|
||||
file="Source/BinaryData/jucer_NewCppFileTemplate.h"/>
|
||||
<FILE id="teqnin" name="jucer_NewInlineComponentTemplate.h" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_NewInlineComponentTemplate.h"/>
|
||||
<FILE id="MMiar4" name="jucer_OpenGLComponentTemplate.cpp" compile="0"
|
||||
resource="1" file="Source/BinaryData/jucer_OpenGLComponentTemplate.cpp"/>
|
||||
</GROUP>
|
||||
</GROUP>
|
||||
<GROUP id="KPIRFfz" name="BinaryData">
|
||||
<FILE id="RSJcrRl" name="AudioPluginXCodeScript.txt" compile="0" resource="1"
|
||||
file="Source/BinaryData/AudioPluginXCodeScript.txt"/>
|
||||
<FILE id="eYn4jB" name="background_tile.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/background_tile.png"/>
|
||||
<FILE id="geMos6" name="colourscheme_dark.xml" compile="0" resource="1"
|
||||
file="Source/BinaryData/colourscheme_dark.xml"/>
|
||||
<FILE id="Rm5UQS" name="colourscheme_light.xml" compile="0" resource="1"
|
||||
file="Source/BinaryData/colourscheme_light.xml"/>
|
||||
<FILE id="rVgowdy" name="juce_icon.png" compile="0" resource="1" file="Source/BinaryData/juce_icon.png"/>
|
||||
<FILE id="b8Brir" name="projectIconAndroid.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/projectIconAndroid.png"/>
|
||||
<FILE id="wdeicV" name="projectIconCodeblocks.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/projectIconCodeblocks.png"/>
|
||||
<FILE id="xwPVtR" name="projectIconLinuxMakefile.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/projectIconLinuxMakefile.png"/>
|
||||
<FILE id="TXWwpL" name="projectIconVisualStudio.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/projectIconVisualStudio.png"/>
|
||||
<FILE id="WFftCh" name="projectIconXcode.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/projectIconXcode.png"/>
|
||||
<FILE id="FZNKix" name="projectIconXcodeIOS.png" compile="0" resource="1"
|
||||
file="Source/BinaryData/projectIconXcodeIOS.png"/>
|
||||
<FILE id="TNXogM" name="RecentFilesMenuTemplate.nib" compile="0" resource="1"
|
||||
file="Source/BinaryData/RecentFilesMenuTemplate.nib"/>
|
||||
<FILE id="khQDTB" name="wizard_AnimatedApp.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_AnimatedApp.svg"/>
|
||||
<FILE id="b59ILn" name="wizard_AudioApp.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_AudioApp.svg"/>
|
||||
<FILE id="KRfxLR" name="wizard_AudioPlugin.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_AudioPlugin.svg"/>
|
||||
<FILE id="qDz5HP" name="wizard_ConsoleApp.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_ConsoleApp.svg"/>
|
||||
<FILE id="Oqscrn" name="wizard_DLL.svg" compile="0" resource="1" file="Source/BinaryData/wizard_DLL.svg"/>
|
||||
<FILE id="tTa6MB" name="wizard_GUI.svg" compile="0" resource="1" file="Source/BinaryData/wizard_GUI.svg"/>
|
||||
<FILE id="X6oRVj" name="wizard_Highlight.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_Highlight.svg"/>
|
||||
<FILE id="MvraQX" name="wizard_Openfile.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_Openfile.svg"/>
|
||||
<FILE id="SvQOsO" name="wizard_OpenGL.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_OpenGL.svg"/>
|
||||
<FILE id="l1q1aL" name="wizard_StaticLibrary.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/wizard_StaticLibrary.svg"/>
|
||||
</GROUP>
|
||||
</MAINGROUP>
|
||||
<JUCEOPTIONS JUCE_ASIO="disabled" JUCE_WASAPI="disabled" JUCE_DIRECTSOUND="disabled"
|
||||
JUCE_ALSA="disabled" JUCE_QUICKTIME="disabled" JUCE_OPENGL="disabled"
|
||||
JUCE_USE_FLAC="disabled" JUCE_USE_CDBURNER="disabled" JUCE_USE_CDREADER="disabled"
|
||||
JUCE_USE_CAMERA="disabled" JUCE_PLUGINHOST_VST="disabled" JUCE_PLUGINHOST_AU="disabled"
|
||||
JUCE_USE_OGGVORBIS="disabled" JUCE_USE_COREIMAGE_LOADER="disabled"
|
||||
JUCE_LOG_ASSERTIONS="enabled"/>
|
||||
<MODULES>
|
||||
<MODULE id="juce_core" showAllCode="1"/>
|
||||
<MODULE id="juce_cryptography" showAllCode="1"/>
|
||||
<MODULE id="juce_data_structures" showAllCode="1"/>
|
||||
<MODULE id="juce_events" showAllCode="1"/>
|
||||
<MODULE id="juce_graphics" showAllCode="1"/>
|
||||
<MODULE id="juce_gui_basics" showAllCode="1"/>
|
||||
<MODULE id="juce_gui_extra" showAllCode="1"/>
|
||||
</MODULES>
|
||||
<LIVE_SETTINGS>
|
||||
<OSX enableCxx11="1" systemHeaderPath="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/4.2/include"/>
|
||||
</LIVE_SETTINGS>
|
||||
</JUCERPROJECT>
|
||||
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
There's a section below where you can add your own custom code safely, and the
|
||||
Introjucer will preserve the contents of that block, but the best way to change
|
||||
any of these definitions is by using the Introjucer's project settings.
|
||||
|
||||
Any commented-out settings will assume their default values.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __JUCE_APPCONFIG_M70QFTRRK__
|
||||
#define __JUCE_APPCONFIG_M70QFTRRK__
|
||||
|
||||
//==============================================================================
|
||||
// [BEGIN_USER_CODE_SECTION]
|
||||
|
||||
// (You can add your own code in this section, and the Introjucer will not overwrite it)
|
||||
|
||||
// [END_USER_CODE_SECTION]
|
||||
|
||||
//==============================================================================
|
||||
#define JUCE_MODULE_AVAILABLE_juce_core 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_cryptography 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_data_structures 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_events 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_graphics 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_gui_basics 1
|
||||
#define JUCE_MODULE_AVAILABLE_juce_gui_extra 1
|
||||
|
||||
//==============================================================================
|
||||
// juce_core flags:
|
||||
|
||||
#ifndef JUCE_FORCE_DEBUG
|
||||
//#define JUCE_FORCE_DEBUG
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_LOG_ASSERTIONS
|
||||
#define JUCE_LOG_ASSERTIONS 1
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_CHECK_MEMORY_LEAKS
|
||||
//#define JUCE_CHECK_MEMORY_LEAKS
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
//#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_INCLUDE_ZLIB_CODE
|
||||
//#define JUCE_INCLUDE_ZLIB_CODE
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_graphics flags:
|
||||
|
||||
#ifndef JUCE_USE_COREIMAGE_LOADER
|
||||
#define JUCE_USE_COREIMAGE_LOADER 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_DIRECTWRITE
|
||||
//#define JUCE_USE_DIRECTWRITE
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_gui_basics flags:
|
||||
|
||||
#ifndef JUCE_ENABLE_REPAINT_DEBUGGING
|
||||
//#define JUCE_ENABLE_REPAINT_DEBUGGING
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XSHM
|
||||
//#define JUCE_USE_XSHM
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XRENDER
|
||||
//#define JUCE_USE_XRENDER
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_XCURSOR
|
||||
//#define JUCE_USE_XCURSOR
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
// juce_gui_extra flags:
|
||||
|
||||
#ifndef JUCE_WEB_BROWSER
|
||||
//#define JUCE_WEB_BROWSER
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||
//#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR
|
||||
#endif
|
||||
|
||||
|
||||
#endif // __JUCE_APPCONFIG_M70QFTRRK__
|
||||
@@ -0,0 +1,152 @@
|
||||
/* =========================================================================================
|
||||
|
||||
This is an auto-generated file: Any edits you make may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#ifndef BINARYDATA_H_62491730_INCLUDED
|
||||
#define BINARYDATA_H_62491730_INCLUDED
|
||||
|
||||
namespace BinaryData
|
||||
{
|
||||
extern const char* jucer_AnimatedComponentTemplate_cpp;
|
||||
const int jucer_AnimatedComponentTemplate_cppSize = 1949;
|
||||
|
||||
extern const char* jucer_AudioComponentTemplate_cpp;
|
||||
const int jucer_AudioComponentTemplate_cppSize = 2991;
|
||||
|
||||
extern const char* jucer_AudioPluginEditorTemplate_cpp;
|
||||
const int jucer_AudioPluginEditorTemplate_cppSize = 1180;
|
||||
|
||||
extern const char* jucer_AudioPluginEditorTemplate_h;
|
||||
const int jucer_AudioPluginEditorTemplate_hSize = 1012;
|
||||
|
||||
extern const char* jucer_AudioPluginFilterTemplate_cpp;
|
||||
const int jucer_AudioPluginFilterTemplate_cppSize = 5039;
|
||||
|
||||
extern const char* jucer_AudioPluginFilterTemplate_h;
|
||||
const int jucer_AudioPluginFilterTemplate_hSize = 2727;
|
||||
|
||||
extern const char* jucer_ComponentTemplate_cpp;
|
||||
const int jucer_ComponentTemplate_cppSize = 2083;
|
||||
|
||||
extern const char* jucer_ComponentTemplate_h;
|
||||
const int jucer_ComponentTemplate_hSize = 2156;
|
||||
|
||||
extern const char* jucer_ContentCompTemplate_cpp;
|
||||
const int jucer_ContentCompTemplate_cppSize = 886;
|
||||
|
||||
extern const char* jucer_ContentCompTemplate_h;
|
||||
const int jucer_ContentCompTemplate_hSize = 924;
|
||||
|
||||
extern const char* jucer_InlineComponentTemplate_h;
|
||||
const int jucer_InlineComponentTemplate_hSize = 1143;
|
||||
|
||||
extern const char* jucer_MainConsoleAppTemplate_cpp;
|
||||
const int jucer_MainConsoleAppTemplate_cppSize = 470;
|
||||
|
||||
extern const char* jucer_MainTemplate_NoWindow_cpp;
|
||||
const int jucer_MainTemplate_NoWindow_cppSize = 2010;
|
||||
|
||||
extern const char* jucer_MainTemplate_SimpleWindow_cpp;
|
||||
const int jucer_MainTemplate_SimpleWindow_cppSize = 3866;
|
||||
|
||||
extern const char* jucer_MainTemplate_Window_cpp;
|
||||
const int jucer_MainTemplate_Window_cppSize = 3778;
|
||||
|
||||
extern const char* jucer_NewComponentTemplate_cpp;
|
||||
const int jucer_NewComponentTemplate_cppSize = 1389;
|
||||
|
||||
extern const char* jucer_NewComponentTemplate_h;
|
||||
const int jucer_NewComponentTemplate_hSize = 648;
|
||||
|
||||
extern const char* jucer_NewCppFileTemplate_cpp;
|
||||
const int jucer_NewCppFileTemplate_cppSize = 262;
|
||||
|
||||
extern const char* jucer_NewCppFileTemplate_h;
|
||||
const int jucer_NewCppFileTemplate_hSize = 308;
|
||||
|
||||
extern const char* jucer_NewInlineComponentTemplate_h;
|
||||
const int jucer_NewInlineComponentTemplate_hSize = 1626;
|
||||
|
||||
extern const char* jucer_OpenGLComponentTemplate_cpp;
|
||||
const int jucer_OpenGLComponentTemplate_cppSize = 1827;
|
||||
|
||||
extern const char* AudioPluginXCodeScript_txt;
|
||||
const int AudioPluginXCodeScript_txtSize = 2922;
|
||||
|
||||
extern const char* background_tile_png;
|
||||
const int background_tile_pngSize = 151;
|
||||
|
||||
extern const char* colourscheme_dark_xml;
|
||||
const int colourscheme_dark_xmlSize = 1050;
|
||||
|
||||
extern const char* colourscheme_light_xml;
|
||||
const int colourscheme_light_xmlSize = 1050;
|
||||
|
||||
extern const char* juce_icon_png;
|
||||
const int juce_icon_pngSize = 83091;
|
||||
|
||||
extern const char* projectIconAndroid_png;
|
||||
const int projectIconAndroid_pngSize = 8150;
|
||||
|
||||
extern const char* projectIconCodeblocks_png;
|
||||
const int projectIconCodeblocks_pngSize = 11917;
|
||||
|
||||
extern const char* projectIconLinuxMakefile_png;
|
||||
const int projectIconLinuxMakefile_pngSize = 16444;
|
||||
|
||||
extern const char* projectIconVisualStudio_png;
|
||||
const int projectIconVisualStudio_pngSize = 7194;
|
||||
|
||||
extern const char* projectIconXcode_png;
|
||||
const int projectIconXcode_pngSize = 18281;
|
||||
|
||||
extern const char* projectIconXcodeIOS_png;
|
||||
const int projectIconXcodeIOS_pngSize = 18111;
|
||||
|
||||
extern const char* RecentFilesMenuTemplate_nib;
|
||||
const int RecentFilesMenuTemplate_nibSize = 2842;
|
||||
|
||||
extern const char* wizard_AnimatedApp_svg;
|
||||
const int wizard_AnimatedApp_svgSize = 2963;
|
||||
|
||||
extern const char* wizard_AudioApp_svg;
|
||||
const int wizard_AudioApp_svgSize = 9802;
|
||||
|
||||
extern const char* wizard_AudioPlugin_svg;
|
||||
const int wizard_AudioPlugin_svgSize = 10809;
|
||||
|
||||
extern const char* wizard_ConsoleApp_svg;
|
||||
const int wizard_ConsoleApp_svgSize = 1204;
|
||||
|
||||
extern const char* wizard_DLL_svg;
|
||||
const int wizard_DLL_svgSize = 3588;
|
||||
|
||||
extern const char* wizard_GUI_svg;
|
||||
const int wizard_GUI_svgSize = 3448;
|
||||
|
||||
extern const char* wizard_Highlight_svg;
|
||||
const int wizard_Highlight_svgSize = 638;
|
||||
|
||||
extern const char* wizard_Openfile_svg;
|
||||
const int wizard_Openfile_svgSize = 686;
|
||||
|
||||
extern const char* wizard_OpenGL_svg;
|
||||
const int wizard_OpenGL_svgSize = 2497;
|
||||
|
||||
extern const char* wizard_StaticLibrary_svg;
|
||||
const int wizard_StaticLibrary_svgSize = 3563;
|
||||
|
||||
// Points to the start of a list of resource names.
|
||||
extern const char* namedResourceList[];
|
||||
|
||||
// Number of elements in the namedResourceList array.
|
||||
const int namedResourceListSize = 43;
|
||||
|
||||
// If you provide the name of one of the binary resource variables above, this function will
|
||||
// return the corresponding data and its size (or a null pointer if the name isn't found).
|
||||
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
This is the header file that your files should include in order to get all the
|
||||
JUCE library headers. You should avoid including the JUCE headers directly in
|
||||
your own source files, because that wouldn't pick up the correct configuration
|
||||
options for your app.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __APPHEADERFILE_M70QFTRRK__
|
||||
#define __APPHEADERFILE_M70QFTRRK__
|
||||
|
||||
#include "AppConfig.h"
|
||||
#include "modules/juce_core/juce_core.h"
|
||||
#include "modules/juce_cryptography/juce_cryptography.h"
|
||||
#include "modules/juce_data_structures/juce_data_structures.h"
|
||||
#include "modules/juce_events/juce_events.h"
|
||||
#include "modules/juce_graphics/juce_graphics.h"
|
||||
#include "modules/juce_gui_basics/juce_gui_basics.h"
|
||||
#include "modules/juce_gui_extra/juce_gui_extra.h"
|
||||
#include "BinaryData.h"
|
||||
|
||||
#if ! DONT_SET_USING_JUCE_NAMESPACE
|
||||
// If your code uses a lot of JUCE classes, then this will obviously save you
|
||||
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
|
||||
using namespace juce;
|
||||
#endif
|
||||
|
||||
#if ! JUCE_DONT_DECLARE_PROJECTINFO
|
||||
namespace ProjectInfo
|
||||
{
|
||||
const char* const projectName = "The Introjucer";
|
||||
const char* const versionString = "3.1.0";
|
||||
const int versionNumber = 0x30100;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __APPHEADERFILE_M70QFTRRK__
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
Important Note!!
|
||||
================
|
||||
|
||||
The purpose of this folder is to contain files that are auto-generated by the Introjucer,
|
||||
and ALL files in this folder will be mercilessly DELETED and completely re-written whenever
|
||||
the Introjucer saves your project.
|
||||
|
||||
Therefore, it's a bad idea to make any manual changes to the files in here, or to
|
||||
put any of your own files in here if you don't want to lose them. (Of course you may choose
|
||||
to add the folder's contents to your version-control system so that you can re-merge your own
|
||||
modifications after the Introjucer has saved its changes).
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_core/juce_core.h"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_cryptography/juce_cryptography.h"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_data_structures/juce_data_structures.h"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_events/juce_events.h"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_graphics/juce_graphics.h"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_gui_basics/juce_gui_basics.h"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
// This is an auto-generated file to redirect any included
|
||||
// module headers to the correct external folder.
|
||||
|
||||
#include "../../../../../modules/juce_gui_extra/juce_gui_extra.h"
|
||||
|
||||
@@ -0,0 +1,628 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "jucer_Application.h"
|
||||
#include "jucer_AppearanceSettings.h"
|
||||
|
||||
namespace AppearanceColours
|
||||
{
|
||||
struct ColourInfo
|
||||
{
|
||||
const char* name;
|
||||
int colourID;
|
||||
bool mustBeOpaque;
|
||||
bool applyToEditorOnly;
|
||||
};
|
||||
|
||||
static const ColourInfo colours[] =
|
||||
{
|
||||
{ "Main Window Bkgd", mainBackgroundColourId, true, false },
|
||||
{ "Treeview Highlight", TreeView::selectedItemBackgroundColourId, false, false },
|
||||
|
||||
{ "Code Background", CodeEditorComponent::backgroundColourId, true, false },
|
||||
{ "Line Number Bkgd", CodeEditorComponent::lineNumberBackgroundId, false, false },
|
||||
{ "Line Numbers", CodeEditorComponent::lineNumberTextId, false, false },
|
||||
{ "Plain Text", CodeEditorComponent::defaultTextColourId, false, false },
|
||||
{ "Selected Text Bkgd", CodeEditorComponent::highlightColourId, false, false },
|
||||
{ "Caret", CaretComponent::caretColourId, false, true }
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
numColours = sizeof (AppearanceColours::colours) / sizeof (AppearanceColours::colours[0])
|
||||
};
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
AppearanceSettings::AppearanceSettings (bool updateAppWhenChanged)
|
||||
: settings ("COLOUR_SCHEME")
|
||||
{
|
||||
if (! IntrojucerApp::getApp().isRunningCommandLine)
|
||||
{
|
||||
IntrojucerLookAndFeel lf;
|
||||
|
||||
for (int i = 0; i < AppearanceColours::numColours; ++i)
|
||||
getColourValue (AppearanceColours::colours[i].name) = lf.findColour (AppearanceColours::colours[i].colourID).toString();
|
||||
|
||||
CodeDocument doc;
|
||||
CPlusPlusCodeTokeniser tokeniser;
|
||||
CodeEditorComponent editor (doc, &tokeniser);
|
||||
|
||||
const CodeEditorComponent::ColourScheme cs (editor.getColourScheme());
|
||||
|
||||
for (int i = cs.types.size(); --i >= 0;)
|
||||
{
|
||||
CodeEditorComponent::ColourScheme::TokenType& t = cs.types.getReference(i);
|
||||
getColourValue (t.name) = t.colour.toString();
|
||||
}
|
||||
|
||||
getCodeFontValue() = getDefaultCodeFont().toString();
|
||||
|
||||
if (updateAppWhenChanged)
|
||||
settings.addListener (this);
|
||||
}
|
||||
}
|
||||
|
||||
File AppearanceSettings::getSchemesFolder()
|
||||
{
|
||||
File f (getGlobalProperties().getFile().getSiblingFile ("Schemes"));
|
||||
f.createDirectory();
|
||||
return f;
|
||||
}
|
||||
|
||||
void AppearanceSettings::writeDefaultSchemeFile (const String& xmlString, const String& name)
|
||||
{
|
||||
const File file (getSchemesFolder().getChildFile (name).withFileExtension (getSchemeFileSuffix()));
|
||||
|
||||
AppearanceSettings settings (false);
|
||||
|
||||
ScopedPointer<XmlElement> xml (XmlDocument::parse (xmlString));
|
||||
if (xml != nullptr)
|
||||
settings.readFromXML (*xml);
|
||||
|
||||
settings.writeToFile (file);
|
||||
}
|
||||
|
||||
void AppearanceSettings::refreshPresetSchemeList()
|
||||
{
|
||||
writeDefaultSchemeFile (BinaryData::colourscheme_dark_xml, "Default (Dark)");
|
||||
writeDefaultSchemeFile (BinaryData::colourscheme_light_xml, "Default (Light)");
|
||||
|
||||
Array<File> newSchemes;
|
||||
getSchemesFolder().findChildFiles (newSchemes, File::findFiles, false, String ("*") + getSchemeFileSuffix());
|
||||
|
||||
if (newSchemes != presetSchemeFiles)
|
||||
{
|
||||
presetSchemeFiles.swapWith (newSchemes);
|
||||
IntrojucerApp::getCommandManager().commandStatusChanged();
|
||||
}
|
||||
}
|
||||
|
||||
StringArray AppearanceSettings::getPresetSchemes()
|
||||
{
|
||||
StringArray s;
|
||||
for (int i = 0; i < presetSchemeFiles.size(); ++i)
|
||||
s.add (presetSchemeFiles.getReference(i).getFileNameWithoutExtension());
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void AppearanceSettings::selectPresetScheme (int index)
|
||||
{
|
||||
readFromFile (presetSchemeFiles [index]);
|
||||
}
|
||||
|
||||
bool AppearanceSettings::readFromXML (const XmlElement& xml)
|
||||
{
|
||||
if (xml.hasTagName (settings.getType().toString()))
|
||||
{
|
||||
const ValueTree newSettings (ValueTree::fromXml (xml));
|
||||
|
||||
// we'll manually copy across the new properties to the existing tree so that
|
||||
// any open editors will be kept up to date..
|
||||
settings.copyPropertiesFrom (newSettings, nullptr);
|
||||
|
||||
for (int i = settings.getNumChildren(); --i >= 0;)
|
||||
{
|
||||
ValueTree c (settings.getChild (i));
|
||||
|
||||
const ValueTree newValue (newSettings.getChildWithProperty (Ids::name, c.getProperty (Ids::name)));
|
||||
|
||||
if (newValue.isValid())
|
||||
c.copyPropertiesFrom (newValue, nullptr);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AppearanceSettings::readFromFile (const File& file)
|
||||
{
|
||||
const ScopedPointer<XmlElement> xml (XmlDocument::parse (file));
|
||||
return xml != nullptr && readFromXML (*xml);
|
||||
}
|
||||
|
||||
bool AppearanceSettings::writeToFile (const File& file) const
|
||||
{
|
||||
const ScopedPointer<XmlElement> xml (settings.createXml());
|
||||
return xml != nullptr && xml->writeToFile (file, String::empty);
|
||||
}
|
||||
|
||||
Font AppearanceSettings::getDefaultCodeFont()
|
||||
{
|
||||
return Font (Font::getDefaultMonospacedFontName(), Font::getDefaultStyle(), 13.0f);
|
||||
}
|
||||
|
||||
StringArray AppearanceSettings::getColourNames() const
|
||||
{
|
||||
StringArray s;
|
||||
|
||||
for (int i = 0; i < settings.getNumChildren(); ++i)
|
||||
{
|
||||
const ValueTree c (settings.getChild(i));
|
||||
|
||||
if (c.hasType ("COLOUR"))
|
||||
s.add (c [Ids::name]);
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
void AppearanceSettings::updateColourScheme()
|
||||
{
|
||||
applyToLookAndFeel (LookAndFeel::getDefaultLookAndFeel());
|
||||
IntrojucerApp::getApp().mainWindowList.sendLookAndFeelChange();
|
||||
}
|
||||
|
||||
void AppearanceSettings::applyToLookAndFeel (LookAndFeel& lf) const
|
||||
{
|
||||
for (int i = 0; i < AppearanceColours::numColours; ++i)
|
||||
{
|
||||
Colour col;
|
||||
if (getColour (AppearanceColours::colours[i].name, col))
|
||||
{
|
||||
if (AppearanceColours::colours[i].mustBeOpaque)
|
||||
col = Colours::white.overlaidWith (col);
|
||||
|
||||
if (! AppearanceColours::colours[i].applyToEditorOnly)
|
||||
lf.setColour (AppearanceColours::colours[i].colourID, col);
|
||||
}
|
||||
}
|
||||
|
||||
lf.setColour (ScrollBar::thumbColourId, lf.findColour (mainBackgroundColourId).contrasting().withAlpha (0.13f));
|
||||
}
|
||||
|
||||
void AppearanceSettings::applyToCodeEditor (CodeEditorComponent& editor) const
|
||||
{
|
||||
CodeEditorComponent::ColourScheme cs (editor.getColourScheme());
|
||||
|
||||
for (int i = cs.types.size(); --i >= 0;)
|
||||
{
|
||||
CodeEditorComponent::ColourScheme::TokenType& t = cs.types.getReference(i);
|
||||
getColour (t.name, t.colour);
|
||||
}
|
||||
|
||||
editor.setColourScheme (cs);
|
||||
editor.setFont (getCodeFont());
|
||||
|
||||
for (int i = 0; i < AppearanceColours::numColours; ++i)
|
||||
{
|
||||
if (AppearanceColours::colours[i].applyToEditorOnly)
|
||||
{
|
||||
Colour col;
|
||||
if (getColour (AppearanceColours::colours[i].name, col))
|
||||
editor.setColour (AppearanceColours::colours[i].colourID, col);
|
||||
}
|
||||
}
|
||||
|
||||
editor.setColour (ScrollBar::thumbColourId, editor.findColour (CodeEditorComponent::backgroundColourId)
|
||||
.contrasting()
|
||||
.withAlpha (0.13f));
|
||||
}
|
||||
|
||||
Font AppearanceSettings::getCodeFont() const
|
||||
{
|
||||
const String fontString (settings [Ids::font].toString());
|
||||
|
||||
if (fontString.isEmpty())
|
||||
return getDefaultCodeFont();
|
||||
|
||||
return Font::fromString (fontString);
|
||||
}
|
||||
|
||||
Value AppearanceSettings::getCodeFontValue()
|
||||
{
|
||||
return settings.getPropertyAsValue (Ids::font, nullptr);
|
||||
}
|
||||
|
||||
Value AppearanceSettings::getColourValue (const String& colourName)
|
||||
{
|
||||
ValueTree c (settings.getChildWithProperty (Ids::name, colourName));
|
||||
|
||||
if (! c.isValid())
|
||||
{
|
||||
c = ValueTree ("COLOUR");
|
||||
c.setProperty (Ids::name, colourName, nullptr);
|
||||
settings.addChild (c, -1, nullptr);
|
||||
}
|
||||
|
||||
return c.getPropertyAsValue (Ids::colour, nullptr);
|
||||
}
|
||||
|
||||
bool AppearanceSettings::getColour (const String& name, Colour& result) const
|
||||
{
|
||||
const ValueTree colour (settings.getChildWithProperty (Ids::name, name));
|
||||
|
||||
if (colour.isValid())
|
||||
{
|
||||
result = Colour::fromString (colour [Ids::colour].toString());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
struct AppearanceEditor
|
||||
{
|
||||
class FontScanPanel : public Component,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
FontScanPanel()
|
||||
{
|
||||
fontsToScan = Font::findAllTypefaceNames();
|
||||
startTimer (1);
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.fillAll (Colours::darkgrey);
|
||||
|
||||
g.setFont (14.0f);
|
||||
g.setColour (Colours::white);
|
||||
g.drawFittedText ("Scanning for fonts..", getLocalBounds(), Justification::centred, 2);
|
||||
|
||||
const int size = 30;
|
||||
getLookAndFeel().drawSpinningWaitAnimation (g, Colours::white, (getWidth() - size) / 2, getHeight() / 2 - 50, size, size);
|
||||
}
|
||||
|
||||
void timerCallback() override
|
||||
{
|
||||
repaint();
|
||||
|
||||
if (fontsToScan.size() == 0)
|
||||
{
|
||||
getAppSettings().monospacedFontNames = fontsFound;
|
||||
|
||||
if (DialogWindow* w = findParentComponentOfClass<DialogWindow>())
|
||||
w->setContentOwned (new EditorPanel(), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isMonospacedTypeface (fontsToScan[0]))
|
||||
fontsFound.add (fontsToScan[0]);
|
||||
|
||||
fontsToScan.remove (0);
|
||||
}
|
||||
}
|
||||
|
||||
// A rather hacky trick to select only the fixed-pitch fonts..
|
||||
// This is unfortunately a bit slow, but will work on all platforms.
|
||||
static bool isMonospacedTypeface (const String& name)
|
||||
{
|
||||
const Font font (name, 20.0f, Font::plain);
|
||||
|
||||
const int width = font.getStringWidth ("....");
|
||||
|
||||
return width == font.getStringWidth ("WWWW")
|
||||
&& width == font.getStringWidth ("0000")
|
||||
&& width == font.getStringWidth ("1111")
|
||||
&& width == font.getStringWidth ("iiii");
|
||||
}
|
||||
|
||||
StringArray fontsToScan, fontsFound;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class EditorPanel : public Component,
|
||||
private ButtonListener
|
||||
{
|
||||
public:
|
||||
EditorPanel()
|
||||
: loadButton ("Load Scheme..."),
|
||||
saveButton ("Save Scheme...")
|
||||
{
|
||||
rebuildProperties();
|
||||
addAndMakeVisible (panel);
|
||||
|
||||
loadButton.setColour (TextButton::buttonColourId, Colours::lightgrey.withAlpha (0.5f));
|
||||
saveButton.setColour (TextButton::buttonColourId, Colours::lightgrey.withAlpha (0.5f));
|
||||
loadButton.setColour (TextButton::textColourOffId, Colours::white);
|
||||
saveButton.setColour (TextButton::textColourOffId, Colours::white);
|
||||
|
||||
addAndMakeVisible (loadButton);
|
||||
addAndMakeVisible (saveButton);
|
||||
|
||||
loadButton.addListener (this);
|
||||
saveButton.addListener (this);
|
||||
}
|
||||
|
||||
void rebuildProperties()
|
||||
{
|
||||
AppearanceSettings& scheme = getAppSettings().appearance;
|
||||
|
||||
Array <PropertyComponent*> props;
|
||||
Value fontValue (scheme.getCodeFontValue());
|
||||
props.add (FontNameValueSource::createProperty ("Code Editor Font", fontValue));
|
||||
props.add (FontSizeValueSource::createProperty ("Font Size", fontValue));
|
||||
|
||||
const StringArray colourNames (scheme.getColourNames());
|
||||
|
||||
for (int i = 0; i < colourNames.size(); ++i)
|
||||
props.add (new ColourPropertyComponent (nullptr, colourNames[i],
|
||||
scheme.getColourValue (colourNames[i]),
|
||||
Colours::white, false));
|
||||
|
||||
panel.clear();
|
||||
panel.addProperties (props);
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
Rectangle<int> r (getLocalBounds());
|
||||
panel.setBounds (r.removeFromTop (getHeight() - 28).reduced (4, 2));
|
||||
loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 4));
|
||||
saveButton.setBounds (r.reduced (10, 3));
|
||||
}
|
||||
|
||||
private:
|
||||
PropertyPanel panel;
|
||||
TextButton loadButton, saveButton;
|
||||
|
||||
void buttonClicked (Button* b) override
|
||||
{
|
||||
if (b == &loadButton)
|
||||
loadScheme();
|
||||
else
|
||||
saveScheme();
|
||||
}
|
||||
|
||||
void saveScheme()
|
||||
{
|
||||
FileChooser fc ("Select a file in which to save this colour-scheme...",
|
||||
getAppSettings().appearance.getSchemesFolder()
|
||||
.getNonexistentChildFile ("Scheme", AppearanceSettings::getSchemeFileSuffix()),
|
||||
AppearanceSettings::getSchemeFileWildCard());
|
||||
|
||||
if (fc.browseForFileToSave (true))
|
||||
{
|
||||
File file (fc.getResult().withFileExtension (AppearanceSettings::getSchemeFileSuffix()));
|
||||
getAppSettings().appearance.writeToFile (file);
|
||||
getAppSettings().appearance.refreshPresetSchemeList();
|
||||
}
|
||||
}
|
||||
|
||||
void loadScheme()
|
||||
{
|
||||
FileChooser fc ("Please select a colour-scheme file to load...",
|
||||
getAppSettings().appearance.getSchemesFolder(),
|
||||
AppearanceSettings::getSchemeFileWildCard());
|
||||
|
||||
if (fc.browseForFileToOpen())
|
||||
{
|
||||
if (getAppSettings().appearance.readFromFile (fc.getResult()))
|
||||
rebuildProperties();
|
||||
}
|
||||
}
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE (EditorPanel)
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class FontNameValueSource : public ValueSourceFilter
|
||||
{
|
||||
public:
|
||||
FontNameValueSource (const Value& source) : ValueSourceFilter (source) {}
|
||||
|
||||
var getValue() const override
|
||||
{
|
||||
return Font::fromString (sourceValue.toString()).getTypefaceName();
|
||||
}
|
||||
|
||||
void setValue (const var& newValue) override
|
||||
{
|
||||
Font font (Font::fromString (sourceValue.toString()));
|
||||
font.setTypefaceName (newValue.toString().isEmpty() ? Font::getDefaultMonospacedFontName()
|
||||
: newValue.toString());
|
||||
sourceValue = font.toString();
|
||||
}
|
||||
|
||||
static ChoicePropertyComponent* createProperty (const String& title, const Value& value)
|
||||
{
|
||||
StringArray fontNames = getAppSettings().monospacedFontNames;
|
||||
|
||||
Array<var> values;
|
||||
values.add (Font::getDefaultMonospacedFontName());
|
||||
values.add (var());
|
||||
|
||||
for (int i = 0; i < fontNames.size(); ++i)
|
||||
values.add (fontNames[i]);
|
||||
|
||||
StringArray names;
|
||||
names.add ("<Default Monospaced>");
|
||||
names.add (String::empty);
|
||||
names.addArray (getAppSettings().monospacedFontNames);
|
||||
|
||||
return new ChoicePropertyComponent (Value (new FontNameValueSource (value)),
|
||||
title, names, values);
|
||||
}
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class FontSizeValueSource : public ValueSourceFilter
|
||||
{
|
||||
public:
|
||||
FontSizeValueSource (const Value& source) : ValueSourceFilter (source) {}
|
||||
|
||||
var getValue() const override
|
||||
{
|
||||
return Font::fromString (sourceValue.toString()).getHeight();
|
||||
}
|
||||
|
||||
void setValue (const var& newValue) override
|
||||
{
|
||||
sourceValue = Font::fromString (sourceValue.toString()).withHeight (newValue).toString();
|
||||
}
|
||||
|
||||
static PropertyComponent* createProperty (const String& title, const Value& value)
|
||||
{
|
||||
return new SliderPropertyComponent (Value (new FontSizeValueSource (value)),
|
||||
title, 5.0, 40.0, 0.1, 0.5);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
void AppearanceSettings::showEditorWindow (ScopedPointer<Component>& ownerPointer)
|
||||
{
|
||||
if (ownerPointer != nullptr)
|
||||
{
|
||||
ownerPointer->toFront (true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Component* content;
|
||||
if (getAppSettings().monospacedFontNames.size() == 0)
|
||||
content = new AppearanceEditor::FontScanPanel();
|
||||
else
|
||||
content = new AppearanceEditor::EditorPanel();
|
||||
|
||||
const int width = 350;
|
||||
new FloatingToolWindow ("Appearance Settings",
|
||||
"colourSchemeEditorPos",
|
||||
content, ownerPointer,
|
||||
width, 500,
|
||||
width, 200, width, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
IntrojucerLookAndFeel::IntrojucerLookAndFeel()
|
||||
{
|
||||
setColour (mainBackgroundColourId, Colour::greyLevel (0.8f));
|
||||
}
|
||||
|
||||
int IntrojucerLookAndFeel::getTabButtonBestWidth (TabBarButton&, int) { return 120; }
|
||||
|
||||
static Colour getTabBackgroundColour (TabBarButton& button)
|
||||
{
|
||||
const Colour bkg (button.findColour (mainBackgroundColourId).contrasting (0.15f));
|
||||
|
||||
if (button.isFrontTab())
|
||||
return bkg.overlaidWith (Colours::yellow.withAlpha (0.5f));
|
||||
|
||||
return bkg;
|
||||
}
|
||||
|
||||
void IntrojucerLookAndFeel::drawTabButton (TabBarButton& button, Graphics& g, bool isMouseOver, bool isMouseDown)
|
||||
{
|
||||
const Rectangle<int> activeArea (button.getActiveArea());
|
||||
|
||||
const Colour bkg (getTabBackgroundColour (button));
|
||||
|
||||
g.setGradientFill (ColourGradient (bkg.brighter (0.1f), 0, (float) activeArea.getY(),
|
||||
bkg.darker (0.1f), 0, (float) activeArea.getBottom(), false));
|
||||
g.fillRect (activeArea);
|
||||
|
||||
g.setColour (button.findColour (mainBackgroundColourId).darker (0.3f));
|
||||
g.drawRect (activeArea);
|
||||
|
||||
const float alpha = button.isEnabled() ? ((isMouseOver || isMouseDown) ? 1.0f : 0.8f) : 0.3f;
|
||||
const Colour col (bkg.contrasting().withMultipliedAlpha (alpha));
|
||||
|
||||
TextLayout textLayout;
|
||||
LookAndFeel_V3::createTabTextLayout (button, (float) activeArea.getWidth(), (float) activeArea.getHeight(), col, textLayout);
|
||||
|
||||
textLayout.draw (g, button.getTextArea().toFloat());
|
||||
}
|
||||
|
||||
static Range<float> getBrightnessRange (const Image& im)
|
||||
{
|
||||
float minB = 1.0f, maxB = 0;
|
||||
const int w = im.getWidth();
|
||||
const int h = im.getHeight();
|
||||
|
||||
for (int y = 0; y < h; ++y)
|
||||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const float b = im.getPixelAt (x, y).getBrightness();
|
||||
minB = jmin (minB, b);
|
||||
maxB = jmax (maxB, b);
|
||||
}
|
||||
}
|
||||
|
||||
return Range<float> (minB, maxB);
|
||||
}
|
||||
|
||||
void IntrojucerLookAndFeel::fillWithBackgroundTexture (Graphics& g)
|
||||
{
|
||||
const Colour bkg (findColour (mainBackgroundColourId));
|
||||
|
||||
if (backgroundTextureBaseColour != bkg)
|
||||
{
|
||||
backgroundTextureBaseColour = bkg;
|
||||
|
||||
const Image original (ImageCache::getFromMemory (BinaryData::background_tile_png,
|
||||
BinaryData::background_tile_pngSize));
|
||||
const int w = original.getWidth();
|
||||
const int h = original.getHeight();
|
||||
|
||||
backgroundTexture = Image (Image::RGB, w, h, false);
|
||||
|
||||
const Range<float> brightnessRange (getBrightnessRange (original));
|
||||
const float brightnessOffset = (brightnessRange.getStart() + brightnessRange.getEnd()) / 2.0f;
|
||||
const float brightnessScale = 0.025f / brightnessRange.getLength();
|
||||
const float bkgB = bkg.getBrightness();
|
||||
|
||||
for (int y = 0; y < h; ++y)
|
||||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const float b = (original.getPixelAt (x, y).getBrightness() - brightnessOffset) * brightnessScale;
|
||||
backgroundTexture.setPixelAt (x, y, bkg.withBrightness (jlimit (0.0f, 1.0f, bkgB + b)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g.setTiledImageFill (backgroundTexture, 0, 0, 1.0f);
|
||||
g.fillAll();
|
||||
}
|
||||
|
||||
void IntrojucerLookAndFeel::fillWithBackgroundTexture (Component& c, Graphics& g)
|
||||
{
|
||||
dynamic_cast<IntrojucerLookAndFeel&> (c.getLookAndFeel()).fillWithBackgroundTexture (g);
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_APPEARANCESETTINGS_JUCEHEADER__
|
||||
#define __JUCER_APPEARANCESETTINGS_JUCEHEADER__
|
||||
|
||||
|
||||
class AppearanceSettings : private ValueTree::Listener
|
||||
{
|
||||
public:
|
||||
AppearanceSettings (bool updateAppWhenChanged);
|
||||
|
||||
bool readFromFile (const File& file);
|
||||
bool readFromXML (const XmlElement&);
|
||||
bool writeToFile (const File& file) const;
|
||||
|
||||
void updateColourScheme();
|
||||
void applyToCodeEditor (CodeEditorComponent& editor) const;
|
||||
|
||||
StringArray getColourNames() const;
|
||||
Value getColourValue (const String& colourName);
|
||||
bool getColour (const String& name, Colour& resultIfFound) const;
|
||||
|
||||
Font getCodeFont() const;
|
||||
Value getCodeFontValue();
|
||||
|
||||
ValueTree settings;
|
||||
|
||||
static File getSchemesFolder();
|
||||
StringArray getPresetSchemes();
|
||||
void refreshPresetSchemeList();
|
||||
void selectPresetScheme (int index);
|
||||
|
||||
static Font getDefaultCodeFont();
|
||||
|
||||
static void showEditorWindow (ScopedPointer<Component>& ownerPointer);
|
||||
|
||||
static const char* getSchemeFileSuffix() { return ".scheme"; }
|
||||
static const char* getSchemeFileWildCard() { return "*.scheme"; }
|
||||
|
||||
private:
|
||||
|
||||
Array<File> presetSchemeFiles;
|
||||
|
||||
static void writeDefaultSchemeFile (const String& xml, const String& name);
|
||||
|
||||
void applyToLookAndFeel (LookAndFeel&) const;
|
||||
|
||||
void valueTreePropertyChanged (ValueTree&, const Identifier&) override { updateColourScheme(); }
|
||||
void valueTreeChildAdded (ValueTree&, ValueTree&) override { updateColourScheme(); }
|
||||
void valueTreeChildRemoved (ValueTree&, ValueTree&) override { updateColourScheme(); }
|
||||
void valueTreeChildOrderChanged (ValueTree&) override { updateColourScheme(); }
|
||||
void valueTreeParentChanged (ValueTree&) override { updateColourScheme(); }
|
||||
void valueTreeRedirected (ValueTree&) override { updateColourScheme(); }
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AppearanceSettings)
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class IntrojucerLookAndFeel : public LookAndFeel_V3
|
||||
{
|
||||
public:
|
||||
IntrojucerLookAndFeel();
|
||||
|
||||
void fillWithBackgroundTexture (Graphics&);
|
||||
static void fillWithBackgroundTexture (Component&, Graphics&);
|
||||
|
||||
void drawTabButton (TabBarButton& button, Graphics&, bool isMouseOver, bool isMouseDown) override;
|
||||
void drawTabAreaBehindFrontButton (TabbedButtonBar&, Graphics&, int, int) override {}
|
||||
|
||||
int getTabButtonBestWidth (TabBarButton&, int tabDepth) override;
|
||||
|
||||
private:
|
||||
Image backgroundTexture;
|
||||
Colour backgroundTextureBaseColour;
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCER_APPEARANCESETTINGS_JUCEHEADER__
|
||||
@@ -0,0 +1,587 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_APPLICATION_JUCEHEADER__
|
||||
#define __JUCER_APPLICATION_JUCEHEADER__
|
||||
|
||||
#include "../jucer_Headers.h"
|
||||
#include "jucer_MainWindow.h"
|
||||
#include "jucer_CommandLine.h"
|
||||
#include "../Project/jucer_Module.h"
|
||||
#include "jucer_AutoUpdater.h"
|
||||
#include "../Code Editor/jucer_SourceCodeEditor.h"
|
||||
|
||||
void createGUIEditorMenu (PopupMenu&);
|
||||
void handleGUIEditorMenuCommand (int);
|
||||
void registerGUIEditorCommands();
|
||||
|
||||
//==============================================================================
|
||||
class IntrojucerApp : public JUCEApplication
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
IntrojucerApp() : isRunningCommandLine (false) {}
|
||||
|
||||
//==============================================================================
|
||||
void initialise (const String& commandLine) override
|
||||
{
|
||||
LookAndFeel::setDefaultLookAndFeel (&lookAndFeel);
|
||||
settings = new StoredSettings();
|
||||
|
||||
if (commandLine.isNotEmpty())
|
||||
{
|
||||
const int appReturnCode = performCommandLine (commandLine);
|
||||
|
||||
if (appReturnCode != commandLineNotPerformed)
|
||||
{
|
||||
isRunningCommandLine = true;
|
||||
setApplicationReturnValue (appReturnCode);
|
||||
quit();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (sendCommandLineToPreexistingInstance())
|
||||
{
|
||||
DBG ("Another instance is running - quitting...");
|
||||
quit();
|
||||
return;
|
||||
}
|
||||
|
||||
initialiseLogger ("log_");
|
||||
|
||||
icons = new Icons();
|
||||
|
||||
initCommandManager();
|
||||
|
||||
menuModel = new MainMenuModel();
|
||||
|
||||
doExtraInitialisation();
|
||||
|
||||
settings->appearance.refreshPresetSchemeList();
|
||||
|
||||
ImageCache::setCacheTimeout (30 * 1000);
|
||||
|
||||
if (commandLine.trim().isNotEmpty() && ! commandLine.trim().startsWithChar ('-'))
|
||||
anotherInstanceStarted (commandLine);
|
||||
else
|
||||
mainWindowList.reopenLastProjects();
|
||||
|
||||
mainWindowList.createWindowIfNoneAreOpen();
|
||||
|
||||
#if JUCE_MAC
|
||||
MenuBarModel::setMacMainMenu (menuModel, nullptr, "Open Recent");
|
||||
#endif
|
||||
|
||||
versionChecker = new LatestVersionChecker();
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
versionChecker = nullptr;
|
||||
appearanceEditorWindow = nullptr;
|
||||
utf8Window = nullptr;
|
||||
svgPathWindow = nullptr;
|
||||
|
||||
mainWindowList.forceCloseAllWindows();
|
||||
openDocumentManager.clear();
|
||||
|
||||
#if JUCE_MAC
|
||||
MenuBarModel::setMacMainMenu (nullptr);
|
||||
#endif
|
||||
|
||||
menuModel = nullptr;
|
||||
commandManager = nullptr;
|
||||
settings = nullptr;
|
||||
|
||||
LookAndFeel::setDefaultLookAndFeel (nullptr);
|
||||
|
||||
if (! isRunningCommandLine)
|
||||
Logger::writeToLog ("Shutdown");
|
||||
|
||||
deleteLogger();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void systemRequestedQuit() override
|
||||
{
|
||||
if (ModalComponentManager::getInstance()->cancelAllModalComponents())
|
||||
{
|
||||
new AsyncQuitRetrier();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (closeAllMainWindows())
|
||||
quit();
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
const String getApplicationName() override { return "Introjucer"; }
|
||||
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||
|
||||
bool moreThanOneInstanceAllowed() override
|
||||
{
|
||||
return true; // this is handled manually in initialise()
|
||||
}
|
||||
|
||||
void anotherInstanceStarted (const String& commandLine) override
|
||||
{
|
||||
openFile (File (commandLine.unquoted()));
|
||||
}
|
||||
|
||||
static IntrojucerApp& getApp()
|
||||
{
|
||||
IntrojucerApp* const app = dynamic_cast<IntrojucerApp*> (JUCEApplication::getInstance());
|
||||
jassert (app != nullptr);
|
||||
return *app;
|
||||
}
|
||||
|
||||
static ApplicationCommandManager& getCommandManager()
|
||||
{
|
||||
ApplicationCommandManager* cm = IntrojucerApp::getApp().commandManager;
|
||||
jassert (cm != nullptr);
|
||||
return *cm;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
class MainMenuModel : public MenuBarModel
|
||||
{
|
||||
public:
|
||||
MainMenuModel()
|
||||
{
|
||||
setApplicationCommandManagerToWatch (&getCommandManager());
|
||||
}
|
||||
|
||||
StringArray getMenuBarNames() override
|
||||
{
|
||||
return getApp().getMenuNames();
|
||||
}
|
||||
|
||||
PopupMenu getMenuForIndex (int /*topLevelMenuIndex*/, const String& menuName) override
|
||||
{
|
||||
PopupMenu menu;
|
||||
getApp().createMenu (menu, menuName);
|
||||
return menu;
|
||||
}
|
||||
|
||||
void menuItemSelected (int menuItemID, int /*topLevelMenuIndex*/) override
|
||||
{
|
||||
getApp().handleMainMenuCommand (menuItemID);
|
||||
}
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
recentProjectsBaseID = 100,
|
||||
activeDocumentsBaseID = 300,
|
||||
colourSchemeBaseID = 1000
|
||||
};
|
||||
|
||||
virtual StringArray getMenuNames()
|
||||
{
|
||||
const char* const names[] = { "File", "Edit", "View", "Window", "GUI Editor", "Tools", nullptr };
|
||||
return StringArray (names);
|
||||
}
|
||||
|
||||
virtual void createMenu (PopupMenu& menu, const String& menuName)
|
||||
{
|
||||
if (menuName == "File") createFileMenu (menu);
|
||||
else if (menuName == "Edit") createEditMenu (menu);
|
||||
else if (menuName == "View") createViewMenu (menu);
|
||||
else if (menuName == "Window") createWindowMenu (menu);
|
||||
else if (menuName == "Tools") createToolsMenu (menu);
|
||||
else if (menuName == "GUI Editor") createGUIEditorMenu (menu);
|
||||
else jassertfalse; // names have changed?
|
||||
}
|
||||
|
||||
virtual void createFileMenu (PopupMenu& menu)
|
||||
{
|
||||
menu.addCommandItem (commandManager, CommandIDs::newProject);
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, CommandIDs::open);
|
||||
|
||||
PopupMenu recentFiles;
|
||||
settings->recentFiles.createPopupMenuItems (recentFiles, recentProjectsBaseID, true, true);
|
||||
menu.addSubMenu ("Open Recent", recentFiles);
|
||||
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, CommandIDs::closeDocument);
|
||||
menu.addCommandItem (commandManager, CommandIDs::saveDocument);
|
||||
menu.addCommandItem (commandManager, CommandIDs::saveDocumentAs);
|
||||
menu.addCommandItem (commandManager, CommandIDs::saveAll);
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, CommandIDs::closeProject);
|
||||
menu.addCommandItem (commandManager, CommandIDs::saveProject);
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, CommandIDs::openInIDE);
|
||||
menu.addCommandItem (commandManager, CommandIDs::saveAndOpenInIDE);
|
||||
|
||||
#if ! JUCE_MAC
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit);
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual void createEditMenu (PopupMenu& menu)
|
||||
{
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::undo);
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::redo);
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::cut);
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::copy);
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::paste);
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::del);
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::selectAll);
|
||||
menu.addCommandItem (commandManager, StandardApplicationCommandIDs::deselectAll);
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, CommandIDs::showFindPanel);
|
||||
menu.addCommandItem (commandManager, CommandIDs::findSelection);
|
||||
menu.addCommandItem (commandManager, CommandIDs::findNext);
|
||||
menu.addCommandItem (commandManager, CommandIDs::findPrevious);
|
||||
}
|
||||
|
||||
virtual void createViewMenu (PopupMenu& menu)
|
||||
{
|
||||
menu.addCommandItem (commandManager, CommandIDs::showFilePanel);
|
||||
menu.addCommandItem (commandManager, CommandIDs::showConfigPanel);
|
||||
menu.addCommandItem (commandManager, CommandIDs::showProjectSettings);
|
||||
menu.addCommandItem (commandManager, CommandIDs::showProjectModules);
|
||||
menu.addSeparator();
|
||||
createColourSchemeItems (menu);
|
||||
}
|
||||
|
||||
void createColourSchemeItems (PopupMenu& menu)
|
||||
{
|
||||
menu.addCommandItem (commandManager, CommandIDs::showAppearanceSettings);
|
||||
|
||||
const StringArray presetSchemes (settings->appearance.getPresetSchemes());
|
||||
|
||||
if (presetSchemes.size() > 0)
|
||||
{
|
||||
PopupMenu schemes;
|
||||
|
||||
for (int i = 0; i < presetSchemes.size(); ++i)
|
||||
schemes.addItem (colourSchemeBaseID + i, presetSchemes[i]);
|
||||
|
||||
menu.addSubMenu ("Colour Scheme", schemes);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void createWindowMenu (PopupMenu& menu)
|
||||
{
|
||||
menu.addCommandItem (commandManager, CommandIDs::closeWindow);
|
||||
menu.addSeparator();
|
||||
|
||||
menu.addCommandItem (commandManager, CommandIDs::goToPreviousDoc);
|
||||
menu.addCommandItem (commandManager, CommandIDs::goToNextDoc);
|
||||
menu.addCommandItem (commandManager, CommandIDs::goToCounterpart);
|
||||
menu.addSeparator();
|
||||
|
||||
const int numDocs = jmin (50, openDocumentManager.getNumOpenDocuments());
|
||||
|
||||
for (int i = 0; i < numDocs; ++i)
|
||||
{
|
||||
OpenDocumentManager::Document* doc = openDocumentManager.getOpenDocument(i);
|
||||
menu.addItem (activeDocumentsBaseID + i, doc->getName());
|
||||
}
|
||||
|
||||
menu.addSeparator();
|
||||
menu.addCommandItem (commandManager, CommandIDs::closeAllDocuments);
|
||||
}
|
||||
|
||||
virtual void createToolsMenu (PopupMenu& menu)
|
||||
{
|
||||
menu.addCommandItem (commandManager, CommandIDs::showUTF8Tool);
|
||||
menu.addCommandItem (commandManager, CommandIDs::showSVGPathTool);
|
||||
menu.addCommandItem (commandManager, CommandIDs::showTranslationTool);
|
||||
}
|
||||
|
||||
virtual void handleMainMenuCommand (int menuItemID)
|
||||
{
|
||||
if (menuItemID >= recentProjectsBaseID && menuItemID < recentProjectsBaseID + 100)
|
||||
{
|
||||
// open a file from the "recent files" menu
|
||||
openFile (settings->recentFiles.getFile (menuItemID - recentProjectsBaseID));
|
||||
}
|
||||
else if (menuItemID >= activeDocumentsBaseID && menuItemID < activeDocumentsBaseID + 200)
|
||||
{
|
||||
if (OpenDocumentManager::Document* doc = openDocumentManager.getOpenDocument (menuItemID - activeDocumentsBaseID))
|
||||
mainWindowList.openDocument (doc, true);
|
||||
else
|
||||
jassertfalse;
|
||||
}
|
||||
else if (menuItemID >= colourSchemeBaseID && menuItemID < colourSchemeBaseID + 200)
|
||||
{
|
||||
settings->appearance.selectPresetScheme (menuItemID - colourSchemeBaseID);
|
||||
}
|
||||
else
|
||||
{
|
||||
handleGUIEditorMenuCommand (menuItemID);
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void getAllCommands (Array <CommandID>& commands) override
|
||||
{
|
||||
JUCEApplication::getAllCommands (commands);
|
||||
|
||||
const CommandID ids[] = { CommandIDs::newProject,
|
||||
CommandIDs::open,
|
||||
CommandIDs::closeAllDocuments,
|
||||
CommandIDs::saveAll,
|
||||
CommandIDs::showAppearanceSettings,
|
||||
CommandIDs::showUTF8Tool,
|
||||
CommandIDs::showSVGPathTool };
|
||||
|
||||
commands.addArray (ids, numElementsInArray (ids));
|
||||
}
|
||||
|
||||
void getCommandInfo (CommandID commandID, ApplicationCommandInfo& result) override
|
||||
{
|
||||
switch (commandID)
|
||||
{
|
||||
case CommandIDs::newProject:
|
||||
result.setInfo ("New Project...", "Creates a new Jucer project", CommandCategories::general, 0);
|
||||
result.defaultKeypresses.add (KeyPress ('n', ModifierKeys::commandModifier, 0));
|
||||
break;
|
||||
|
||||
case CommandIDs::open:
|
||||
result.setInfo ("Open...", "Opens a Jucer project", CommandCategories::general, 0);
|
||||
result.defaultKeypresses.add (KeyPress ('o', ModifierKeys::commandModifier, 0));
|
||||
break;
|
||||
|
||||
case CommandIDs::showAppearanceSettings:
|
||||
result.setInfo ("Fonts and Colours...", "Shows the appearance settings window.", CommandCategories::general, 0);
|
||||
break;
|
||||
|
||||
case CommandIDs::closeAllDocuments:
|
||||
result.setInfo ("Close All Documents", "Closes all open documents", CommandCategories::general, 0);
|
||||
result.setActive (openDocumentManager.getNumOpenDocuments() > 0);
|
||||
break;
|
||||
|
||||
case CommandIDs::saveAll:
|
||||
result.setInfo ("Save All", "Saves all open documents", CommandCategories::general, 0);
|
||||
result.defaultKeypresses.add (KeyPress ('s', ModifierKeys::commandModifier | ModifierKeys::altModifier, 0));
|
||||
break;
|
||||
|
||||
case CommandIDs::showUTF8Tool:
|
||||
result.setInfo ("UTF-8 String-Literal Helper", "Shows the UTF-8 string literal utility", CommandCategories::general, 0);
|
||||
break;
|
||||
|
||||
case CommandIDs::showSVGPathTool:
|
||||
result.setInfo ("SVG Path Helper", "Shows the SVG->Path data conversion utility", CommandCategories::general, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
JUCEApplication::getCommandInfo (commandID, result);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool perform (const InvocationInfo& info) override
|
||||
{
|
||||
switch (info.commandID)
|
||||
{
|
||||
case CommandIDs::newProject: createNewProject(); break;
|
||||
case CommandIDs::open: askUserToOpenFile(); break;
|
||||
case CommandIDs::saveAll: openDocumentManager.saveAll(); break;
|
||||
case CommandIDs::closeAllDocuments: closeAllDocuments (true); break;
|
||||
case CommandIDs::showUTF8Tool: showUTF8ToolWindow (utf8Window); break;
|
||||
case CommandIDs::showSVGPathTool: showSVGPathDataToolWindow (svgPathWindow); break;
|
||||
|
||||
case CommandIDs::showAppearanceSettings: AppearanceSettings::showEditorWindow (appearanceEditorWindow); break;
|
||||
default: return JUCEApplication::perform (info);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void createNewProject()
|
||||
{
|
||||
MainWindow* mw = mainWindowList.getOrCreateEmptyWindow();
|
||||
mw->showNewProjectWizard();
|
||||
mainWindowList.avoidSuperimposedWindows (mw);
|
||||
}
|
||||
|
||||
virtual void updateNewlyOpenedProject (Project&) {}
|
||||
|
||||
void askUserToOpenFile()
|
||||
{
|
||||
FileChooser fc ("Open File");
|
||||
|
||||
if (fc.browseForFileToOpen())
|
||||
openFile (fc.getResult());
|
||||
}
|
||||
|
||||
bool openFile (const File& file)
|
||||
{
|
||||
return mainWindowList.openFile (file);
|
||||
}
|
||||
|
||||
bool closeAllDocuments (bool askUserToSave)
|
||||
{
|
||||
return openDocumentManager.closeAll (askUserToSave);
|
||||
}
|
||||
|
||||
virtual bool closeAllMainWindows()
|
||||
{
|
||||
return mainWindowList.askAllWindowsToClose();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void initialiseLogger (const char* filePrefix)
|
||||
{
|
||||
if (logger == nullptr)
|
||||
{
|
||||
logger = FileLogger::createDateStampedLogger (getLogFolderName(), filePrefix, ".txt",
|
||||
getApplicationName() + " " + getApplicationVersion()
|
||||
+ " --- Build date: " __DATE__);
|
||||
Logger::setCurrentLogger (logger);
|
||||
}
|
||||
}
|
||||
|
||||
struct FileWithTime
|
||||
{
|
||||
FileWithTime (const File& f) : file (f), time (f.getLastModificationTime()) {}
|
||||
FileWithTime() {}
|
||||
|
||||
bool operator< (const FileWithTime& other) const { return time < other.time; }
|
||||
bool operator== (const FileWithTime& other) const { return time == other.time; }
|
||||
|
||||
File file;
|
||||
Time time;
|
||||
};
|
||||
|
||||
void deleteLogger()
|
||||
{
|
||||
const int maxNumLogFilesToKeep = 50;
|
||||
|
||||
Logger::setCurrentLogger (nullptr);
|
||||
|
||||
if (logger != nullptr)
|
||||
{
|
||||
Array<File> logFiles;
|
||||
logger->getLogFile().getParentDirectory().findChildFiles (logFiles, File::findFiles, false);
|
||||
|
||||
if (logFiles.size() > maxNumLogFilesToKeep)
|
||||
{
|
||||
Array <FileWithTime> files;
|
||||
|
||||
for (int i = 0; i < logFiles.size(); ++i)
|
||||
files.addUsingDefaultSort (logFiles.getReference(i));
|
||||
|
||||
for (int i = 0; i < files.size() - maxNumLogFilesToKeep; ++i)
|
||||
files.getReference(i).file.deleteFile();
|
||||
}
|
||||
}
|
||||
|
||||
logger = nullptr;
|
||||
}
|
||||
|
||||
virtual void doExtraInitialisation() {}
|
||||
virtual void addExtraConfigItems (Project&, TreeViewItem&) {}
|
||||
|
||||
#if JUCE_LINUX
|
||||
virtual String getLogFolderName() const { return "~/.config/Introjucer/Logs"; }
|
||||
#else
|
||||
virtual String getLogFolderName() const { return "com.juce.introjucer"; }
|
||||
#endif
|
||||
|
||||
virtual PropertiesFile::Options getPropertyFileOptionsFor (const String& filename)
|
||||
{
|
||||
PropertiesFile::Options options;
|
||||
options.applicationName = filename;
|
||||
options.filenameSuffix = "settings";
|
||||
options.osxLibrarySubFolder = "Application Support";
|
||||
#if JUCE_LINUX
|
||||
options.folderName = "~/.config/Introjucer";
|
||||
#else
|
||||
options.folderName = "Introjucer";
|
||||
#endif
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
virtual Component* createProjectContentComponent() const
|
||||
{
|
||||
return new ProjectContentComponent();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
IntrojucerLookAndFeel lookAndFeel;
|
||||
|
||||
ScopedPointer<StoredSettings> settings;
|
||||
ScopedPointer<Icons> icons;
|
||||
|
||||
ScopedPointer<MainMenuModel> menuModel;
|
||||
|
||||
MainWindowList mainWindowList;
|
||||
OpenDocumentManager openDocumentManager;
|
||||
ScopedPointer<ApplicationCommandManager> commandManager;
|
||||
|
||||
ScopedPointer<Component> appearanceEditorWindow, utf8Window, svgPathWindow;
|
||||
|
||||
ScopedPointer<FileLogger> logger;
|
||||
|
||||
bool isRunningCommandLine;
|
||||
|
||||
private:
|
||||
ScopedPointer<LatestVersionChecker> versionChecker;
|
||||
|
||||
class AsyncQuitRetrier : private Timer
|
||||
{
|
||||
public:
|
||||
AsyncQuitRetrier() { startTimer (500); }
|
||||
|
||||
void timerCallback() override
|
||||
{
|
||||
stopTimer();
|
||||
delete this;
|
||||
|
||||
if (JUCEApplicationBase* app = JUCEApplicationBase::getInstance())
|
||||
app->systemRequestedQuit();
|
||||
}
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE (AsyncQuitRetrier)
|
||||
};
|
||||
|
||||
void initCommandManager()
|
||||
{
|
||||
commandManager = new ApplicationCommandManager();
|
||||
commandManager->registerAllCommandsForTarget (this);
|
||||
|
||||
{
|
||||
CodeDocument doc;
|
||||
CppCodeEditorComponent ed (File::nonexistent, doc);
|
||||
commandManager->registerAllCommandsForTarget (&ed);
|
||||
}
|
||||
|
||||
registerGUIEditorCommands();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCER_APPLICATION_JUCEHEADER__
|
||||
@@ -0,0 +1,422 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef JUCER_AUTOUPDATER_H_INCLUDED
|
||||
#define JUCER_AUTOUPDATER_H_INCLUDED
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
class LatestVersionChecker : private Thread,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
LatestVersionChecker() : Thread ("Updater"),
|
||||
hasAttemptedToReadWebsite (false)
|
||||
{
|
||||
startTimer (2000);
|
||||
}
|
||||
|
||||
~LatestVersionChecker()
|
||||
{
|
||||
stopThread (20000);
|
||||
}
|
||||
|
||||
static URL getLatestVersionURL()
|
||||
{
|
||||
return URL ("http://www.juce.com/juce/updates/updatelist.php");
|
||||
}
|
||||
|
||||
void checkForNewVersion()
|
||||
{
|
||||
hasAttemptedToReadWebsite = true;
|
||||
|
||||
{
|
||||
const ScopedPointer<InputStream> in (getLatestVersionURL().createInputStream (false));
|
||||
|
||||
if (in == nullptr || threadShouldExit())
|
||||
return; // can't connect: fail silently.
|
||||
|
||||
jsonReply = JSON::parse (in->readEntireStreamAsString());
|
||||
}
|
||||
|
||||
if (threadShouldExit())
|
||||
return;
|
||||
|
||||
if (jsonReply.isArray() || jsonReply.isObject())
|
||||
startTimer (100);
|
||||
}
|
||||
|
||||
void processResult (var reply)
|
||||
{
|
||||
if (reply.isArray())
|
||||
{
|
||||
askUserAboutNewVersion (VersionInfo (reply[0]));
|
||||
}
|
||||
else if (reply.isObject())
|
||||
{
|
||||
// In the far-distant future, this may be contacting a defunct
|
||||
// URL, so hopefully the website will contain a helpful message
|
||||
// for the user..
|
||||
String message = reply.getProperty ("message", var()).toString();
|
||||
|
||||
if (message.isNotEmpty())
|
||||
{
|
||||
AlertWindow::showMessageBox (AlertWindow::WarningIcon,
|
||||
TRANS("JUCE Updater"),
|
||||
message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct VersionInfo
|
||||
{
|
||||
VersionInfo (var v)
|
||||
{
|
||||
version = v.getProperty ("version", var()).toString().trim();
|
||||
|
||||
url = v.getProperty (
|
||||
#if JUCE_MAC
|
||||
"url_osx",
|
||||
#elif JUCE_WINDOWS
|
||||
"url_win",
|
||||
#elif JUCE_LINUX
|
||||
"url_linux",
|
||||
#endif
|
||||
var()).toString();
|
||||
}
|
||||
|
||||
bool isDifferentVersionToCurrent() const
|
||||
{
|
||||
return version != JUCE_STRINGIFY(JUCE_MAJOR_VERSION)
|
||||
"." JUCE_STRINGIFY(JUCE_MINOR_VERSION)
|
||||
"." JUCE_STRINGIFY(JUCE_BUILDNUMBER)
|
||||
&& version.containsChar ('.')
|
||||
&& version.length() > 2;
|
||||
}
|
||||
|
||||
String version;
|
||||
URL url;
|
||||
};
|
||||
|
||||
void askUserAboutNewVersion (const VersionInfo& info)
|
||||
{
|
||||
if (info.isDifferentVersionToCurrent())
|
||||
{
|
||||
File appParentFolder (File::getSpecialLocation (File::currentApplicationFile).getParentDirectory());
|
||||
|
||||
if (isZipFolder (appParentFolder))
|
||||
{
|
||||
int result = AlertWindow::showYesNoCancelBox (AlertWindow::InfoIcon,
|
||||
TRANS("Download JUCE version 123?").replace ("123", info.version),
|
||||
TRANS("A new version of JUCE is available - would you like to overwrite the folder:\n\n"
|
||||
"xfldrx\n\n"
|
||||
" ..with the latest version from juce.com?\n\n"
|
||||
"(Please note that this will overwrite everything in that folder!)")
|
||||
.replace ("xfldrx", appParentFolder.getFullPathName()),
|
||||
TRANS("Overwrite"),
|
||||
TRANS("Choose another folder..."),
|
||||
TRANS("Cancel"));
|
||||
|
||||
if (result == 1)
|
||||
DownloadNewVersionThread::performDownload (info.url, appParentFolder);
|
||||
|
||||
if (result == 2)
|
||||
askUserForLocationToDownload (info);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (AlertWindow::showOkCancelBox (AlertWindow::InfoIcon,
|
||||
TRANS("Download JUCE version 123?").replace ("123", info.version),
|
||||
TRANS("A new version of JUCE is available - would you like to download it?")))
|
||||
askUserForLocationToDownload (info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void askUserForLocationToDownload (const VersionInfo& info)
|
||||
{
|
||||
File targetFolder (findDefaultModulesFolder());
|
||||
|
||||
if (isJuceModulesFolder (targetFolder))
|
||||
targetFolder = targetFolder.getParentDirectory();
|
||||
|
||||
FileChooser chooser (TRANS("Please select the location into which you'd like to install the new version"),
|
||||
targetFolder);
|
||||
|
||||
if (chooser.browseForDirectory())
|
||||
{
|
||||
targetFolder = chooser.getResult();
|
||||
|
||||
if (isJuceModulesFolder (targetFolder))
|
||||
targetFolder = targetFolder.getParentDirectory();
|
||||
|
||||
if (targetFolder.getChildFile ("JUCE").isDirectory())
|
||||
targetFolder = targetFolder.getChildFile ("JUCE");
|
||||
|
||||
if (targetFolder.getChildFile (".git").isDirectory())
|
||||
{
|
||||
AlertWindow::showMessageBox (AlertWindow::WarningIcon,
|
||||
TRANS ("Downloading new JUCE version"),
|
||||
TRANS ("This folder is a GIT repository!\n\n"
|
||||
"You should use a \"git pull\" to update it to the latest version. "
|
||||
"Or to use the Introjucer to get an update, you should select an empty "
|
||||
"folder into which you'd like to download the new code."));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (isJuceFolder (targetFolder))
|
||||
{
|
||||
if (! AlertWindow::showOkCancelBox (AlertWindow::WarningIcon,
|
||||
TRANS("Overwrite existing JUCE folder?"),
|
||||
TRANS("Do you want to overwrite the folder:\n\n"
|
||||
"xfldrx\n\n"
|
||||
" ..with the latest version from juce.com?\n\n"
|
||||
"(Please note that this will overwrite everything in that folder!)")
|
||||
.replace ("xfldrx", targetFolder.getFullPathName())))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
targetFolder = targetFolder.getChildFile ("JUCE").getNonexistentSibling();
|
||||
}
|
||||
|
||||
DownloadNewVersionThread::performDownload (info.url, targetFolder);
|
||||
}
|
||||
}
|
||||
|
||||
static bool isZipFolder (const File& f)
|
||||
{
|
||||
return f.getChildFile ("modules").isDirectory()
|
||||
&& f.getChildFile ("extras").isDirectory()
|
||||
&& f.getChildFile ("examples").isDirectory()
|
||||
&& ! f.getChildFile (".git").isDirectory();
|
||||
}
|
||||
|
||||
private:
|
||||
void timerCallback() override
|
||||
{
|
||||
stopTimer();
|
||||
|
||||
if (hasAttemptedToReadWebsite)
|
||||
processResult (jsonReply);
|
||||
else
|
||||
startThread (3);
|
||||
}
|
||||
|
||||
void run() override
|
||||
{
|
||||
checkForNewVersion();
|
||||
}
|
||||
|
||||
var jsonReply;
|
||||
bool hasAttemptedToReadWebsite;
|
||||
URL newVersionToDownload;
|
||||
|
||||
//==============================================================================
|
||||
class DownloadNewVersionThread : public ThreadWithProgressWindow
|
||||
{
|
||||
public:
|
||||
DownloadNewVersionThread (URL u, File target)
|
||||
: ThreadWithProgressWindow ("Downloading New Version", true, true),
|
||||
result (Result::ok()),
|
||||
url (u), targetFolder (target)
|
||||
{
|
||||
}
|
||||
|
||||
static void performDownload (URL u, File targetFolder)
|
||||
{
|
||||
DownloadNewVersionThread d (u, targetFolder);
|
||||
|
||||
if (d.runThread())
|
||||
{
|
||||
if (d.result.failed())
|
||||
{
|
||||
AlertWindow::showMessageBoxAsync (AlertWindow::WarningIcon,
|
||||
"Installation Failed",
|
||||
d.result.getErrorMessage());
|
||||
}
|
||||
else
|
||||
{
|
||||
new RelaunchTimer (targetFolder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void run() override
|
||||
{
|
||||
setProgress (-1.0);
|
||||
|
||||
MemoryBlock zipData;
|
||||
result = download (zipData);
|
||||
|
||||
if (result.wasOk() && ! threadShouldExit())
|
||||
result = unzip (zipData);
|
||||
}
|
||||
|
||||
Result download (MemoryBlock& dest)
|
||||
{
|
||||
setStatusMessage ("Downloading...");
|
||||
|
||||
const ScopedPointer<InputStream> in (url.createInputStream (false, nullptr, nullptr, String::empty, 10000));
|
||||
|
||||
if (in != nullptr)
|
||||
{
|
||||
int64 total = 0;
|
||||
MemoryOutputStream mo (dest, true);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (threadShouldExit())
|
||||
return Result::fail ("cancel");
|
||||
|
||||
int64 written = mo.writeFromInputStream (*in, 8192);
|
||||
|
||||
if (written == 0)
|
||||
break;
|
||||
|
||||
total += written;
|
||||
|
||||
setStatusMessage (String (TRANS ("Downloading... (123)"))
|
||||
.replace ("123", File::descriptionOfSizeInBytes (total)));
|
||||
}
|
||||
|
||||
return Result::ok();
|
||||
}
|
||||
|
||||
return Result::fail ("Failed to download from: " + url.toString (false));
|
||||
}
|
||||
|
||||
Result unzip (const MemoryBlock& data)
|
||||
{
|
||||
setStatusMessage ("Installing...");
|
||||
|
||||
File unzipTarget;
|
||||
bool isUsingTempFolder = false;
|
||||
|
||||
{
|
||||
MemoryInputStream input (data, false);
|
||||
ZipFile zip (input);
|
||||
|
||||
if (zip.getNumEntries() == 0)
|
||||
return Result::fail ("The downloaded file wasn't a valid JUCE file!");
|
||||
|
||||
unzipTarget = targetFolder;
|
||||
|
||||
if (unzipTarget.exists())
|
||||
{
|
||||
isUsingTempFolder = true;
|
||||
unzipTarget = targetFolder.getNonexistentSibling();
|
||||
|
||||
if (! unzipTarget.createDirectory())
|
||||
return Result::fail ("Couldn't create a folder to unzip the new version!");
|
||||
}
|
||||
|
||||
Result r (zip.uncompressTo (unzipTarget));
|
||||
|
||||
if (r.failed())
|
||||
{
|
||||
if (isUsingTempFolder)
|
||||
unzipTarget.deleteRecursively();
|
||||
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
if (isUsingTempFolder)
|
||||
{
|
||||
File oldFolder (targetFolder.getSiblingFile (targetFolder.getFileNameWithoutExtension() + "_old").getNonexistentSibling());
|
||||
|
||||
if (! targetFolder.moveFileTo (oldFolder))
|
||||
{
|
||||
unzipTarget.deleteRecursively();
|
||||
return Result::fail ("Could not remove the existing folder!");
|
||||
}
|
||||
|
||||
if (! unzipTarget.moveFileTo (targetFolder))
|
||||
{
|
||||
unzipTarget.deleteRecursively();
|
||||
return Result::fail ("Could not overwrite the existing folder!");
|
||||
}
|
||||
}
|
||||
|
||||
return Result::ok();
|
||||
}
|
||||
|
||||
Result result;
|
||||
URL url;
|
||||
File targetFolder;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DownloadNewVersionThread)
|
||||
};
|
||||
|
||||
struct RelaunchTimer : private Timer
|
||||
{
|
||||
RelaunchTimer (const File& f) : parentFolder (f)
|
||||
{
|
||||
startTimer (1500);
|
||||
}
|
||||
|
||||
void timerCallback() override
|
||||
{
|
||||
stopTimer();
|
||||
|
||||
File app = parentFolder.getChildFile (
|
||||
#if JUCE_MAC
|
||||
"Introjucer.app");
|
||||
#elif JUCE_WINDOWS
|
||||
"Introjucer.exe");
|
||||
#elif JUCE_LINUX
|
||||
"Introjucer");
|
||||
#endif
|
||||
|
||||
JUCEApplication::quit();
|
||||
|
||||
if (app.exists())
|
||||
{
|
||||
app.setExecutePermission (true);
|
||||
|
||||
#if JUCE_MAC
|
||||
app.getChildFile("Contents")
|
||||
.getChildFile("MacOS")
|
||||
.getChildFile("Introjucer").setExecutePermission (true);
|
||||
#endif
|
||||
|
||||
app.startAsProcess();
|
||||
}
|
||||
|
||||
delete this;
|
||||
}
|
||||
|
||||
File parentFolder;
|
||||
};
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LatestVersionChecker)
|
||||
};
|
||||
|
||||
|
||||
#endif // JUCER_AUTOUPDATER_H_INCLUDED
|
||||
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
A namespace to hold all the possible command IDs.
|
||||
*/
|
||||
namespace CommandIDs
|
||||
{
|
||||
enum
|
||||
{
|
||||
newProject = 0x200010,
|
||||
open = 0x200020,
|
||||
closeDocument = 0x200030,
|
||||
saveDocument = 0x200040,
|
||||
saveDocumentAs = 0x200041,
|
||||
|
||||
closeProject = 0x200051,
|
||||
saveProject = 0x200060,
|
||||
saveAll = 0x200080,
|
||||
openInIDE = 0x200072,
|
||||
saveAndOpenInIDE = 0x200073,
|
||||
|
||||
showUTF8Tool = 0x200076,
|
||||
showAppearanceSettings = 0x200077,
|
||||
showConfigPanel = 0x200074,
|
||||
showFilePanel = 0x200078,
|
||||
showTranslationTool = 0x200079,
|
||||
showProjectSettings = 0x20007a,
|
||||
showProjectModules = 0x20007b,
|
||||
showSVGPathTool = 0x20007c,
|
||||
|
||||
closeWindow = 0x201001,
|
||||
closeAllDocuments = 0x201000,
|
||||
goToPreviousDoc = 0x201002,
|
||||
goToNextDoc = 0x201003,
|
||||
goToCounterpart = 0x201004,
|
||||
deleteSelectedItem = 0x201005,
|
||||
|
||||
showFindPanel = 0x2010a0,
|
||||
findSelection = 0x2010a1,
|
||||
findNext = 0x2010a2,
|
||||
findPrevious = 0x2010a3
|
||||
};
|
||||
}
|
||||
|
||||
namespace CommandCategories
|
||||
{
|
||||
static const char* const general = "General";
|
||||
static const char* const editing = "Editing";
|
||||
static const char* const view = "View";
|
||||
static const char* const windows = "Windows";
|
||||
}
|
||||
@@ -0,0 +1,382 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../Project/jucer_Project.h"
|
||||
#include "../Project/jucer_Module.h"
|
||||
#include "jucer_CommandLine.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
namespace
|
||||
{
|
||||
static void hideDockIcon()
|
||||
{
|
||||
#if JUCE_MAC
|
||||
Process::setDockIconVisible (false);
|
||||
#endif
|
||||
}
|
||||
|
||||
static File getFile (const String& filename)
|
||||
{
|
||||
return File::getCurrentWorkingDirectory().getChildFile (filename.unquoted());
|
||||
}
|
||||
|
||||
static bool matchArgument (const String& arg, const String& possible)
|
||||
{
|
||||
return arg == possible
|
||||
|| arg == "-" + possible
|
||||
|| arg == "--" + possible;
|
||||
}
|
||||
|
||||
static bool checkArgumentCount (const StringArray& args, int minNumArgs)
|
||||
{
|
||||
if (args.size() < minNumArgs)
|
||||
{
|
||||
std::cout << "Not enough arguments!" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
struct LoadedProject
|
||||
{
|
||||
LoadedProject()
|
||||
{
|
||||
hideDockIcon();
|
||||
}
|
||||
|
||||
int load (const File& projectFile)
|
||||
{
|
||||
hideDockIcon();
|
||||
|
||||
if (! projectFile.exists())
|
||||
{
|
||||
std::cout << "The file " << projectFile.getFullPathName() << " doesn't exist!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (! projectFile.hasFileExtension (Project::projectFileExtension))
|
||||
{
|
||||
std::cout << projectFile.getFullPathName() << " isn't a valid jucer project file!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
project = new Project (projectFile);
|
||||
|
||||
if (! project->loadFrom (projectFile, true))
|
||||
{
|
||||
project = nullptr;
|
||||
std::cout << "Failed to load the project file: " << projectFile.getFullPathName() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int save (bool justSaveResources)
|
||||
{
|
||||
if (project != nullptr)
|
||||
{
|
||||
Result error (justSaveResources ? project->saveResourcesOnly (project->getFile())
|
||||
: project->saveProject (project->getFile(), true));
|
||||
|
||||
if (error.failed())
|
||||
{
|
||||
std::cout << "Error when saving: " << error.getErrorMessage() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
project = nullptr;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ScopedPointer<Project> project;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
/* Running a command-line of the form "introjucer --resave foobar.jucer" will try to load
|
||||
that project and re-export all of its targets.
|
||||
*/
|
||||
static int resaveProject (const StringArray& args, bool justSaveResources)
|
||||
{
|
||||
if (! checkArgumentCount (args, 2))
|
||||
return 1;
|
||||
|
||||
LoadedProject proj;
|
||||
|
||||
int res = proj.load (getFile (args[1]));
|
||||
|
||||
if (res != 0)
|
||||
return res;
|
||||
|
||||
std::cout << (justSaveResources ? "Re-saving project resources: "
|
||||
: "Re-saving file: ")
|
||||
<< proj.project->getFile().getFullPathName() << std::endl;
|
||||
|
||||
return proj.save (justSaveResources);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static int setVersion (const StringArray& args)
|
||||
{
|
||||
if (! checkArgumentCount (args, 3))
|
||||
return 1;
|
||||
|
||||
LoadedProject proj;
|
||||
|
||||
int res = proj.load (getFile (args[2]));
|
||||
|
||||
if (res != 0)
|
||||
return res;
|
||||
|
||||
String version (args[1].trim());
|
||||
|
||||
std::cout << "Setting project version: " << version << std::endl;
|
||||
|
||||
proj.project->getVersionValue() = version;
|
||||
|
||||
return proj.save (false);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static int bumpVersion (const StringArray& args)
|
||||
{
|
||||
if (! checkArgumentCount (args, 2))
|
||||
return 1;
|
||||
|
||||
LoadedProject proj;
|
||||
|
||||
int res = proj.load (getFile (args[1]));
|
||||
|
||||
if (res != 0)
|
||||
return res;
|
||||
|
||||
String version = proj.project->getVersionString();
|
||||
|
||||
version = version.upToLastOccurrenceOf (".", true, false)
|
||||
+ String (version.getTrailingIntValue() + 1);
|
||||
|
||||
std::cout << "Bumping project version to: " << version << std::endl;
|
||||
|
||||
proj.project->getVersionValue() = version;
|
||||
|
||||
return proj.save (false);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
int showStatus (const StringArray& args)
|
||||
{
|
||||
hideDockIcon();
|
||||
|
||||
if (! checkArgumentCount (args, 2))
|
||||
return 1;
|
||||
|
||||
LoadedProject proj;
|
||||
|
||||
int res = proj.load (getFile (args[1]));
|
||||
|
||||
if (res != 0)
|
||||
return res;
|
||||
|
||||
std::cout << "Project file: " << proj.project->getFile().getFullPathName() << std::endl
|
||||
<< "Name: " << proj.project->getTitle() << std::endl
|
||||
<< "UID: " << proj.project->getProjectUID() << std::endl;
|
||||
|
||||
EnabledModuleList& modules = proj.project->getModules();
|
||||
|
||||
const int numModules = modules.getNumModules();
|
||||
if (numModules > 0)
|
||||
{
|
||||
std::cout << "Modules:" << std::endl;
|
||||
|
||||
for (int i = 0; i < numModules; ++i)
|
||||
std::cout << " " << modules.getModuleID (i) << std::endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static String getModulePackageName (const LibraryModule& module)
|
||||
{
|
||||
return module.getID() + ".jucemodule";
|
||||
}
|
||||
|
||||
static int zipModule (const File& targetFolder, const File& moduleFolder)
|
||||
{
|
||||
jassert (targetFolder.isDirectory());
|
||||
|
||||
const File moduleFolderParent (moduleFolder.getParentDirectory());
|
||||
LibraryModule module (moduleFolder.getChildFile (ModuleDescription::getManifestFileName()));
|
||||
|
||||
if (! module.isValid())
|
||||
{
|
||||
std::cout << moduleFolder.getFullPathName() << " is not a valid module folder!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
const File targetFile (targetFolder.getChildFile (getModulePackageName (module)));
|
||||
|
||||
ZipFile::Builder zip;
|
||||
|
||||
{
|
||||
DirectoryIterator i (moduleFolder, true, "*", File::findFiles);
|
||||
|
||||
while (i.next())
|
||||
if (! i.getFile().isHidden())
|
||||
zip.addFile (i.getFile(), 9, i.getFile().getRelativePathFrom (moduleFolderParent));
|
||||
}
|
||||
|
||||
std::cout << "Writing: " << targetFile.getFullPathName() << std::endl;
|
||||
|
||||
TemporaryFile temp (targetFile);
|
||||
ScopedPointer<FileOutputStream> out (temp.getFile().createOutputStream());
|
||||
|
||||
bool ok = out != nullptr && zip.writeToStream (*out, nullptr);
|
||||
out = nullptr;
|
||||
ok = ok && temp.overwriteTargetFileWithTemporary();
|
||||
|
||||
if (! ok)
|
||||
{
|
||||
std::cout << "Failed to write to the target file: " << targetFile.getFullPathName() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int buildModules (const StringArray& args, const bool buildAllWithIndex)
|
||||
{
|
||||
hideDockIcon();
|
||||
|
||||
if (! checkArgumentCount (args, 3))
|
||||
return 1;
|
||||
|
||||
const File targetFolder (getFile (args[1]));
|
||||
|
||||
if (! targetFolder.isDirectory())
|
||||
{
|
||||
std::cout << "The first argument must be the directory to put the result." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (buildAllWithIndex)
|
||||
{
|
||||
const File folderToSearch (getFile (args[2]));
|
||||
DirectoryIterator i (folderToSearch, false, "*", File::findDirectories);
|
||||
var infoList;
|
||||
|
||||
while (i.next())
|
||||
{
|
||||
LibraryModule module (i.getFile().getChildFile (ModuleDescription::getManifestFileName()));
|
||||
|
||||
if (module.isValid())
|
||||
{
|
||||
const int result = zipModule (targetFolder, i.getFile());
|
||||
|
||||
if (result != 0)
|
||||
return result;
|
||||
|
||||
var moduleInfo (new DynamicObject());
|
||||
moduleInfo.getDynamicObject()->setProperty ("file", getModulePackageName (module));
|
||||
moduleInfo.getDynamicObject()->setProperty ("info", module.moduleInfo.moduleInfo);
|
||||
infoList.append (moduleInfo);
|
||||
}
|
||||
}
|
||||
|
||||
const File indexFile (targetFolder.getChildFile ("modulelist"));
|
||||
std::cout << "Writing: " << indexFile.getFullPathName() << std::endl;
|
||||
indexFile.replaceWithText (JSON::toString (infoList), false, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 2; i < args.size(); ++i)
|
||||
{
|
||||
const int result = zipModule (targetFolder, getFile (args[i]));
|
||||
|
||||
if (result != 0)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static int showHelp()
|
||||
{
|
||||
hideDockIcon();
|
||||
|
||||
std::cout << "The Introjucer!" << std::endl
|
||||
<< std::endl
|
||||
<< "Usage: " << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --resave project_file" << std::endl
|
||||
<< " Resaves all files and resources in a project." << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --resave-resources project_file" << std::endl
|
||||
<< " Resaves just the binary resources for a project." << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --set-version version_number project_file" << std::endl
|
||||
<< " Updates the version number in a project." << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --bump-version project_file" << std::endl
|
||||
<< " Updates the minor version number in a project by 1." << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --status project_file" << std::endl
|
||||
<< " Displays information about a project." << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --buildmodule target_folder module_folder" << std::endl
|
||||
<< " Zips a module into a downloadable file format." << std::endl
|
||||
<< std::endl
|
||||
<< " introjucer --buildallmodules target_folder module_folder" << std::endl
|
||||
<< " Zips all modules in a given folder and creates an index for them." << std::endl
|
||||
<< std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
int performCommandLine (const String& commandLine)
|
||||
{
|
||||
StringArray args;
|
||||
args.addTokens (commandLine, true);
|
||||
args.trim();
|
||||
|
||||
if (matchArgument (args[0], "help")) return showHelp();
|
||||
if (matchArgument (args[0], "resave")) return resaveProject (args, false);
|
||||
if (matchArgument (args[0], "resave-resources")) return resaveProject (args, true);
|
||||
if (matchArgument (args[0], "set-version")) return setVersion (args);
|
||||
if (matchArgument (args[0], "bump-version")) return bumpVersion (args);
|
||||
if (matchArgument (args[0], "buildmodule")) return buildModules (args, false);
|
||||
if (matchArgument (args[0], "buildallmodules")) return buildModules (args, true);
|
||||
if (matchArgument (args[0], "status")) return showStatus (args);
|
||||
|
||||
return commandLineNotPerformed;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_COMMANDLINE_JUCEHEADER__
|
||||
#define __JUCER_COMMANDLINE_JUCEHEADER__
|
||||
|
||||
|
||||
int performCommandLine (const String& commandLine);
|
||||
|
||||
enum { commandLineNotPerformed = 0x72346231 };
|
||||
|
||||
|
||||
#endif // __JUCER_COMMANDLINE_JUCEHEADER__
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_COMMONHEADERS_JUCEHEADER__
|
||||
#define __JUCER_COMMONHEADERS_JUCEHEADER__
|
||||
|
||||
|
||||
#include "../Utility/jucer_StoredSettings.h"
|
||||
#include "../Utility/jucer_Icons.h"
|
||||
#include "../Utility/jucer_MiscUtilities.h"
|
||||
#include "../Utility/jucer_CodeHelpers.h"
|
||||
#include "../Utility/jucer_FileHelpers.h"
|
||||
#include "../Utility/jucer_RelativePath.h"
|
||||
#include "../Utility/jucer_ValueSourceHelpers.h"
|
||||
#include "../Utility/jucer_PresetIDs.h"
|
||||
#include "jucer_CommandIDs.h"
|
||||
|
||||
//==============================================================================
|
||||
const char* const projectItemDragType = "Project Items";
|
||||
const char* const drawableItemDragType = "Drawable Items";
|
||||
const char* const componentItemDragType = "Components";
|
||||
|
||||
const char* const sourceFileExtensions = "cpp;mm;m;c;cc;cxx;s;asm";
|
||||
const char* const headerFileExtensions = "h;hpp;hxx;hh;inl";
|
||||
const char* const cOrCppFileExtensions = "cpp;cc;cxx;c";
|
||||
const char* const cppFileExtensions = "cpp;cc;cxx";
|
||||
const char* const objCFileExtensions = "mm;m";
|
||||
const char* const asmFileExtensions = "s;S;asm";
|
||||
const char* const sourceOrHeaderFileExtensions = "cpp;mm;m;c;cc;cxx;s;S;asm;h;hpp;hxx;hh;inl";
|
||||
const char* const fileTypesToCompileByDefault = "cpp;mm;c;m;cc;cxx;s;S;asm;r";
|
||||
|
||||
enum ColourIds
|
||||
{
|
||||
mainBackgroundColourId = 0x2340000,
|
||||
};
|
||||
|
||||
#endif // __JUCER_COMMONHEADERS_JUCEHEADER__
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "jucer_DocumentEditorComponent.h"
|
||||
#include "../Project/jucer_ProjectContentComponent.h"
|
||||
#include "../Application/jucer_Application.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* doc)
|
||||
: document (doc)
|
||||
{
|
||||
IntrojucerApp::getApp().openDocumentManager.addListener (this);
|
||||
}
|
||||
|
||||
DocumentEditorComponent::~DocumentEditorComponent()
|
||||
{
|
||||
IntrojucerApp::getApp().openDocumentManager.removeListener (this);
|
||||
}
|
||||
|
||||
bool DocumentEditorComponent::documentAboutToClose (OpenDocumentManager::Document* closingDoc)
|
||||
{
|
||||
if (document == closingDoc)
|
||||
{
|
||||
jassert (document != nullptr);
|
||||
|
||||
if (ProjectContentComponent* pcc = findParentComponentOfClass<ProjectContentComponent>())
|
||||
pcc->hideDocument (document);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DocumentEditorComponent::setEditedState (bool /*hasBeenEdited*/)
|
||||
{
|
||||
if (ProjectContentComponent* pcc = findParentComponentOfClass<ProjectContentComponent>())
|
||||
pcc->updateMainWindowTitle();
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_DOCUMENTEDITORCOMPONENT_JUCEHEADER__
|
||||
#define __JUCER_DOCUMENTEDITORCOMPONENT_JUCEHEADER__
|
||||
|
||||
#include "jucer_OpenDocumentManager.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
*/
|
||||
class DocumentEditorComponent : public Component,
|
||||
public OpenDocumentManager::DocumentCloseListener
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
DocumentEditorComponent (OpenDocumentManager::Document* document);
|
||||
~DocumentEditorComponent();
|
||||
|
||||
OpenDocumentManager::Document* getDocument() const { return document; }
|
||||
|
||||
bool documentAboutToClose (OpenDocumentManager::Document*) override;
|
||||
|
||||
protected:
|
||||
OpenDocumentManager::Document* document;
|
||||
|
||||
void setEditedState (bool hasBeenEdited);
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DocumentEditorComponent)
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCER_DOCUMENTEDITORCOMPONENT_JUCEHEADER__
|
||||
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_FILEPREVIEWCOMPONENT_JUCEHEADER__
|
||||
#define __JUCER_FILEPREVIEWCOMPONENT_JUCEHEADER__
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
*/
|
||||
class ItemPreviewComponent : public Component
|
||||
{
|
||||
public:
|
||||
ItemPreviewComponent (const File& f) : file (f)
|
||||
{
|
||||
setOpaque (true);
|
||||
tryToLoadImage();
|
||||
}
|
||||
|
||||
void paint (Graphics& g)
|
||||
{
|
||||
IntrojucerLookAndFeel::fillWithBackgroundTexture (*this, g);
|
||||
|
||||
if (drawable != nullptr)
|
||||
{
|
||||
Rectangle<float> contentBounds (drawable->getDrawableBounds());
|
||||
|
||||
if (DrawableComposite* dc = dynamic_cast<DrawableComposite*> (drawable.get()))
|
||||
{
|
||||
Rectangle<float> r (dc->getContentArea().resolve (nullptr));
|
||||
|
||||
if (! r.isEmpty())
|
||||
contentBounds = r;
|
||||
}
|
||||
|
||||
Rectangle<float> area = RectanglePlacement (RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize)
|
||||
.appliedTo (contentBounds, Rectangle<float> (4.0f, 22.0f, getWidth() - 8.0f, getHeight() - 26.0f));
|
||||
|
||||
Path p;
|
||||
p.addRectangle (area);
|
||||
DropShadow (Colours::black.withAlpha (0.5f), 6, Point<int> (0, 1)).drawForPath (g, p);
|
||||
|
||||
g.fillCheckerBoard (area.getSmallestIntegerContainer(), 24, 24,
|
||||
Colour (0xffffffff), Colour (0xffeeeeee));
|
||||
|
||||
drawable->draw (g, 1.0f, RectanglePlacement (RectanglePlacement::stretchToFit)
|
||||
.getTransformToFit (contentBounds, area.toFloat()));
|
||||
}
|
||||
|
||||
g.setFont (Font (14.0f, Font::bold));
|
||||
g.setColour (findColour (mainBackgroundColourId).contrasting());
|
||||
g.drawMultiLineText (facts.joinIntoString ("\n"), 10, 15, getWidth() - 16);
|
||||
}
|
||||
|
||||
private:
|
||||
StringArray facts;
|
||||
File file;
|
||||
ScopedPointer<Drawable> drawable;
|
||||
|
||||
void tryToLoadImage()
|
||||
{
|
||||
facts.clear();
|
||||
facts.add (file.getFullPathName());
|
||||
drawable = nullptr;
|
||||
|
||||
{
|
||||
ScopedPointer<InputStream> input (file.createInputStream());
|
||||
|
||||
if (input != nullptr)
|
||||
{
|
||||
const int64 totalSize = input->getTotalLength();
|
||||
|
||||
String formatName;
|
||||
if (ImageFileFormat* format = ImageFileFormat::findImageFormatForStream (*input))
|
||||
formatName = " " + format->getFormatName();
|
||||
|
||||
input = nullptr;
|
||||
|
||||
Image image (ImageCache::getFromFile (file));
|
||||
|
||||
if (image.isValid())
|
||||
{
|
||||
DrawableImage* d = new DrawableImage();
|
||||
d->setImage (image);
|
||||
drawable = d;
|
||||
|
||||
facts.add (String (image.getWidth()) + " x " + String (image.getHeight()) + formatName);
|
||||
}
|
||||
|
||||
if (totalSize > 0)
|
||||
facts.add (File::descriptionOfSizeInBytes (totalSize));
|
||||
}
|
||||
}
|
||||
|
||||
if (drawable == nullptr)
|
||||
{
|
||||
ScopedPointer<XmlElement> svg (XmlDocument::parse (file));
|
||||
|
||||
if (svg != nullptr)
|
||||
drawable = Drawable::createFromSVG (*svg);
|
||||
}
|
||||
|
||||
facts.removeEmptyStrings (true);
|
||||
}
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ItemPreviewComponent)
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCER_FILEPREVIEWCOMPONENT_JUCEHEADER__
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "jucer_Application.h"
|
||||
|
||||
START_JUCE_APPLICATION (IntrojucerApp)
|
||||
@@ -0,0 +1,581 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../jucer_Headers.h"
|
||||
#include "jucer_Application.h"
|
||||
#include "jucer_MainWindow.h"
|
||||
#include "jucer_OpenDocumentManager.h"
|
||||
#include "../Code Editor/jucer_SourceCodeEditor.h"
|
||||
#include "../Wizards/jucer_NewProjectWizardClasses.h"
|
||||
#include "../Utility/jucer_JucerTreeViewBase.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
MainWindow::MainWindow()
|
||||
: DocumentWindow (IntrojucerApp::getApp().getApplicationName(),
|
||||
Colour::greyLevel (0.6f),
|
||||
DocumentWindow::allButtons,
|
||||
false)
|
||||
{
|
||||
setUsingNativeTitleBar (true);
|
||||
|
||||
#if ! JUCE_MAC
|
||||
setMenuBar (IntrojucerApp::getApp().menuModel);
|
||||
#endif
|
||||
|
||||
createProjectContentCompIfNeeded();
|
||||
|
||||
setResizable (true, false);
|
||||
centreWithSize (800, 600);
|
||||
|
||||
ApplicationCommandManager& commandManager = IntrojucerApp::getCommandManager();
|
||||
|
||||
// Register all the app commands..
|
||||
commandManager.registerAllCommandsForTarget (this);
|
||||
commandManager.registerAllCommandsForTarget (getProjectContentComponent());
|
||||
|
||||
// update key mappings..
|
||||
{
|
||||
commandManager.getKeyMappings()->resetToDefaultMappings();
|
||||
|
||||
ScopedPointer<XmlElement> keys (getGlobalProperties().getXmlValue ("keyMappings"));
|
||||
|
||||
if (keys != nullptr)
|
||||
commandManager.getKeyMappings()->restoreFromXml (*keys);
|
||||
|
||||
addKeyListener (commandManager.getKeyMappings());
|
||||
}
|
||||
|
||||
// don't want the window to take focus when the title-bar is clicked..
|
||||
setWantsKeyboardFocus (false);
|
||||
|
||||
getLookAndFeel().setColour (ColourSelector::backgroundColourId, Colours::transparentBlack);
|
||||
|
||||
setResizeLimits (600, 500, 32000, 32000);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
#if ! JUCE_MAC
|
||||
setMenuBar (nullptr);
|
||||
#endif
|
||||
|
||||
removeKeyListener (IntrojucerApp::getCommandManager().getKeyMappings());
|
||||
|
||||
// save the current size and position to our settings file..
|
||||
getGlobalProperties().setValue ("lastMainWindowPos", getWindowStateAsString());
|
||||
|
||||
clearContentComponent();
|
||||
currentProject = nullptr;
|
||||
}
|
||||
|
||||
void MainWindow::createProjectContentCompIfNeeded()
|
||||
{
|
||||
if (getProjectContentComponent() == nullptr)
|
||||
{
|
||||
clearContentComponent();
|
||||
setContentOwned (IntrojucerApp::getApp().createProjectContentComponent(), false);
|
||||
jassert (getProjectContentComponent() != nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::makeVisible()
|
||||
{
|
||||
restoreWindowPosition();
|
||||
setVisible (true);
|
||||
addToDesktop(); // (must add before restoring size so that fullscreen will work)
|
||||
restoreWindowPosition();
|
||||
|
||||
getContentComponent()->grabKeyboardFocus();
|
||||
}
|
||||
|
||||
ProjectContentComponent* MainWindow::getProjectContentComponent() const
|
||||
{
|
||||
return dynamic_cast<ProjectContentComponent*> (getContentComponent());
|
||||
}
|
||||
|
||||
void MainWindow::closeButtonPressed()
|
||||
{
|
||||
IntrojucerApp::getApp().mainWindowList.closeWindow (this);
|
||||
}
|
||||
|
||||
bool MainWindow::closeProject (Project* project)
|
||||
{
|
||||
jassert (project == currentProject && project != nullptr);
|
||||
|
||||
if (project == nullptr)
|
||||
return true;
|
||||
|
||||
project->getStoredProperties().setValue (getProjectWindowPosName(), getWindowStateAsString());
|
||||
|
||||
if (ProjectContentComponent* const pcc = getProjectContentComponent())
|
||||
{
|
||||
pcc->saveTreeViewState();
|
||||
pcc->saveOpenDocumentList();
|
||||
pcc->hideEditor();
|
||||
}
|
||||
|
||||
if (! IntrojucerApp::getApp().openDocumentManager.closeAllDocumentsUsingProject (*project, true))
|
||||
return false;
|
||||
|
||||
FileBasedDocument::SaveResult r = project->saveIfNeededAndUserAgrees();
|
||||
|
||||
if (r == FileBasedDocument::savedOk)
|
||||
{
|
||||
setProject (nullptr);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MainWindow::closeCurrentProject()
|
||||
{
|
||||
return currentProject == nullptr || closeProject (currentProject);
|
||||
}
|
||||
|
||||
void MainWindow::setProject (Project* newProject)
|
||||
{
|
||||
createProjectContentCompIfNeeded();
|
||||
getProjectContentComponent()->setProject (newProject);
|
||||
currentProject = newProject;
|
||||
getProjectContentComponent()->updateMainWindowTitle();
|
||||
IntrojucerApp::getCommandManager().commandStatusChanged();
|
||||
}
|
||||
|
||||
void MainWindow::restoreWindowPosition()
|
||||
{
|
||||
String windowState;
|
||||
|
||||
if (currentProject != nullptr)
|
||||
windowState = currentProject->getStoredProperties().getValue (getProjectWindowPosName());
|
||||
|
||||
if (windowState.isEmpty())
|
||||
windowState = getGlobalProperties().getValue ("lastMainWindowPos");
|
||||
|
||||
restoreWindowStateFromString (windowState);
|
||||
}
|
||||
|
||||
bool MainWindow::canOpenFile (const File& file) const
|
||||
{
|
||||
return (! file.isDirectory())
|
||||
&& (file.hasFileExtension (Project::projectFileExtension)
|
||||
|| IntrojucerApp::getApp().openDocumentManager.canOpenFile (file));
|
||||
}
|
||||
|
||||
bool MainWindow::openFile (const File& file)
|
||||
{
|
||||
createProjectContentCompIfNeeded();
|
||||
|
||||
if (file.hasFileExtension (Project::projectFileExtension))
|
||||
{
|
||||
ScopedPointer<Project> newDoc (new Project (file));
|
||||
|
||||
Result result (newDoc->loadFrom (file, true));
|
||||
|
||||
if (result.wasOk() && closeCurrentProject())
|
||||
{
|
||||
setProject (newDoc);
|
||||
newDoc.release()->setChangedFlag (false);
|
||||
|
||||
jassert (getProjectContentComponent() != nullptr);
|
||||
getProjectContentComponent()->reloadLastOpenDocuments();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (file.exists())
|
||||
{
|
||||
return getProjectContentComponent()->showEditorForFile (file, true);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MainWindow::isInterestedInFileDrag (const StringArray& filenames)
|
||||
{
|
||||
for (int i = filenames.size(); --i >= 0;)
|
||||
if (canOpenFile (File (filenames[i])))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void MainWindow::filesDropped (const StringArray& filenames, int /*mouseX*/, int /*mouseY*/)
|
||||
{
|
||||
for (int i = filenames.size(); --i >= 0;)
|
||||
{
|
||||
const File f (filenames[i]);
|
||||
|
||||
if (canOpenFile (f) && openFile (f))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool MainWindow::shouldDropFilesWhenDraggedExternally (const DragAndDropTarget::SourceDetails& sourceDetails,
|
||||
StringArray& files, bool& canMoveFiles)
|
||||
{
|
||||
if (TreeView* tv = dynamic_cast<TreeView*> (sourceDetails.sourceComponent.get()))
|
||||
{
|
||||
Array<JucerTreeViewBase*> selected;
|
||||
|
||||
for (int i = tv->getNumSelectedItems(); --i >= 0;)
|
||||
if (JucerTreeViewBase* b = dynamic_cast<JucerTreeViewBase*> (tv->getSelectedItem(i)))
|
||||
selected.add (b);
|
||||
|
||||
if (selected.size() > 0)
|
||||
{
|
||||
for (int i = selected.size(); --i >= 0;)
|
||||
{
|
||||
if (JucerTreeViewBase* jtvb = selected.getUnchecked(i))
|
||||
{
|
||||
const File f (jtvb->getDraggableFile());
|
||||
|
||||
if (f.existsAsFile())
|
||||
files.add (f.getFullPathName());
|
||||
}
|
||||
}
|
||||
|
||||
canMoveFiles = false;
|
||||
return files.size() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void MainWindow::activeWindowStatusChanged()
|
||||
{
|
||||
DocumentWindow::activeWindowStatusChanged();
|
||||
|
||||
if (ProjectContentComponent* const pcc = getProjectContentComponent())
|
||||
pcc->updateMissingFileStatuses();
|
||||
|
||||
IntrojucerApp::getApp().openDocumentManager.reloadModifiedFiles();
|
||||
}
|
||||
|
||||
void MainWindow::updateTitle (const String& documentName)
|
||||
{
|
||||
String name (IntrojucerApp::getApp().getApplicationName());
|
||||
|
||||
if (currentProject != nullptr)
|
||||
name << " - " << currentProject->getDocumentTitle();
|
||||
|
||||
if (documentName.isNotEmpty())
|
||||
name << " - " << documentName;
|
||||
|
||||
setName (name);
|
||||
}
|
||||
|
||||
void MainWindow::showNewProjectWizard()
|
||||
{
|
||||
jassert (currentProject == nullptr);
|
||||
setContentOwned (createNewProjectWizardComponent(), true);
|
||||
centreWithSize (900, 630);
|
||||
setVisible (true);
|
||||
addToDesktop();
|
||||
getContentComponent()->grabKeyboardFocus();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
ApplicationCommandTarget* MainWindow::getNextCommandTarget()
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void MainWindow::getAllCommands (Array <CommandID>& commands)
|
||||
{
|
||||
const CommandID ids[] = { CommandIDs::closeWindow };
|
||||
|
||||
commands.addArray (ids, numElementsInArray (ids));
|
||||
}
|
||||
|
||||
void MainWindow::getCommandInfo (const CommandID commandID, ApplicationCommandInfo& result)
|
||||
{
|
||||
switch (commandID)
|
||||
{
|
||||
case CommandIDs::closeWindow:
|
||||
result.setInfo ("Close Window", "Closes the current window", CommandCategories::general, 0);
|
||||
result.defaultKeypresses.add (KeyPress ('w', ModifierKeys::commandModifier, 0));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool MainWindow::perform (const InvocationInfo& info)
|
||||
{
|
||||
switch (info.commandID)
|
||||
{
|
||||
case CommandIDs::closeWindow:
|
||||
closeButtonPressed();
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//==============================================================================
|
||||
MainWindowList::MainWindowList()
|
||||
{
|
||||
}
|
||||
|
||||
void MainWindowList::forceCloseAllWindows()
|
||||
{
|
||||
windows.clear();
|
||||
}
|
||||
|
||||
bool MainWindowList::askAllWindowsToClose()
|
||||
{
|
||||
saveCurrentlyOpenProjectList();
|
||||
|
||||
while (windows.size() > 0)
|
||||
{
|
||||
if (! windows[0]->closeCurrentProject())
|
||||
return false;
|
||||
|
||||
windows.remove (0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindowList::createWindowIfNoneAreOpen()
|
||||
{
|
||||
if (windows.size() == 0)
|
||||
createNewMainWindow()->showNewProjectWizard();
|
||||
}
|
||||
|
||||
void MainWindowList::closeWindow (MainWindow* w)
|
||||
{
|
||||
jassert (windows.contains (w));
|
||||
|
||||
#if ! JUCE_MAC
|
||||
if (windows.size() == 1)
|
||||
{
|
||||
JUCEApplicationBase::getInstance()->systemRequestedQuit();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (w->closeCurrentProject())
|
||||
{
|
||||
windows.removeObject (w);
|
||||
saveCurrentlyOpenProjectList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindowList::openDocument (OpenDocumentManager::Document* doc, bool grabFocus)
|
||||
{
|
||||
getOrCreateFrontmostWindow()->getProjectContentComponent()->showDocument (doc, grabFocus);
|
||||
}
|
||||
|
||||
bool MainWindowList::openFile (const File& file)
|
||||
{
|
||||
for (int i = windows.size(); --i >= 0;)
|
||||
{
|
||||
MainWindow* const w = windows.getUnchecked(i);
|
||||
|
||||
if (w->getProject() != nullptr && w->getProject()->getFile() == file)
|
||||
{
|
||||
w->toFront (true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (file.hasFileExtension (Project::projectFileExtension))
|
||||
{
|
||||
MainWindow* const w = getOrCreateEmptyWindow();
|
||||
bool ok = w->openFile (file);
|
||||
|
||||
w->makeVisible();
|
||||
avoidSuperimposedWindows (w);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
if (file.exists())
|
||||
return getOrCreateFrontmostWindow()->openFile (file);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
MainWindow* MainWindowList::createNewMainWindow()
|
||||
{
|
||||
MainWindow* const w = new MainWindow();
|
||||
windows.add (w);
|
||||
w->restoreWindowPosition();
|
||||
avoidSuperimposedWindows (w);
|
||||
return w;
|
||||
}
|
||||
|
||||
MainWindow* MainWindowList::getOrCreateFrontmostWindow()
|
||||
{
|
||||
if (windows.size() == 0)
|
||||
{
|
||||
MainWindow* w = createNewMainWindow();
|
||||
avoidSuperimposedWindows (w);
|
||||
w->makeVisible();
|
||||
return w;
|
||||
}
|
||||
|
||||
for (int i = Desktop::getInstance().getNumComponents(); --i >= 0;)
|
||||
{
|
||||
MainWindow* mw = dynamic_cast<MainWindow*> (Desktop::getInstance().getComponent (i));
|
||||
if (windows.contains (mw))
|
||||
return mw;
|
||||
}
|
||||
|
||||
return windows.getLast();
|
||||
}
|
||||
|
||||
MainWindow* MainWindowList::getOrCreateEmptyWindow()
|
||||
{
|
||||
if (windows.size() == 0)
|
||||
return createNewMainWindow();
|
||||
|
||||
for (int i = Desktop::getInstance().getNumComponents(); --i >= 0;)
|
||||
{
|
||||
MainWindow* mw = dynamic_cast<MainWindow*> (Desktop::getInstance().getComponent (i));
|
||||
if (windows.contains (mw) && mw->getProject() == nullptr)
|
||||
return mw;
|
||||
}
|
||||
|
||||
return createNewMainWindow();
|
||||
}
|
||||
|
||||
void MainWindowList::updateAllWindowTitles()
|
||||
{
|
||||
for (int i = 0; i < windows.size(); ++i)
|
||||
if (ProjectContentComponent* pc = windows.getUnchecked(i)->getProjectContentComponent())
|
||||
pc->updateMainWindowTitle();
|
||||
}
|
||||
|
||||
void MainWindowList::avoidSuperimposedWindows (MainWindow* const mw)
|
||||
{
|
||||
for (int i = windows.size(); --i >= 0;)
|
||||
{
|
||||
MainWindow* const other = windows.getUnchecked(i);
|
||||
|
||||
const Rectangle<int> b1 (mw->getBounds());
|
||||
const Rectangle<int> b2 (other->getBounds());
|
||||
|
||||
if (mw != other
|
||||
&& std::abs (b1.getX() - b2.getX()) < 3
|
||||
&& std::abs (b1.getY() - b2.getY()) < 3
|
||||
&& std::abs (b1.getRight() - b2.getRight()) < 3
|
||||
&& std::abs (b1.getBottom() - b2.getBottom()) < 3)
|
||||
{
|
||||
int dx = 40, dy = 30;
|
||||
|
||||
if (b1.getCentreX() >= mw->getScreenBounds().getCentreX()) dx = -dx;
|
||||
if (b1.getCentreY() >= mw->getScreenBounds().getCentreY()) dy = -dy;
|
||||
|
||||
mw->setBounds (b1.translated (dx, dy));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindowList::saveCurrentlyOpenProjectList()
|
||||
{
|
||||
Array<File> projects;
|
||||
|
||||
Desktop& desktop = Desktop::getInstance();
|
||||
for (int i = 0; i < desktop.getNumComponents(); ++i)
|
||||
{
|
||||
if (MainWindow* const mw = dynamic_cast<MainWindow*> (desktop.getComponent(i)))
|
||||
if (Project* p = mw->getProject())
|
||||
projects.add (p->getFile());
|
||||
}
|
||||
|
||||
getAppSettings().setLastProjects (projects);
|
||||
}
|
||||
|
||||
void MainWindowList::reopenLastProjects()
|
||||
{
|
||||
Array<File> projects (getAppSettings().getLastProjects());
|
||||
|
||||
for (int i = 0; i < projects.size(); ++ i)
|
||||
openFile (projects.getReference(i));
|
||||
}
|
||||
|
||||
void MainWindowList::sendLookAndFeelChange()
|
||||
{
|
||||
for (int i = windows.size(); --i >= 0;)
|
||||
windows.getUnchecked(i)->sendLookAndFeelChange();
|
||||
}
|
||||
|
||||
Project* MainWindowList::getFrontmostProject()
|
||||
{
|
||||
Desktop& desktop = Desktop::getInstance();
|
||||
|
||||
for (int i = desktop.getNumComponents(); --i >= 0;)
|
||||
if (MainWindow* const mw = dynamic_cast<MainWindow*> (desktop.getComponent(i)))
|
||||
if (Project* p = mw->getProject())
|
||||
return p;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
File findDefaultModulesFolder (bool mustContainJuceCoreModule)
|
||||
{
|
||||
const MainWindowList& windows = IntrojucerApp::getApp().mainWindowList;
|
||||
|
||||
for (int i = windows.windows.size(); --i >= 0;)
|
||||
{
|
||||
if (Project* p = windows.windows.getUnchecked (i)->getProject())
|
||||
{
|
||||
const File f (EnabledModuleList::findDefaultModulesFolder (*p));
|
||||
|
||||
if (isJuceModulesFolder (f) || (f.isDirectory() && ! mustContainJuceCoreModule))
|
||||
return f;
|
||||
}
|
||||
}
|
||||
|
||||
if (mustContainJuceCoreModule)
|
||||
return findDefaultModulesFolder (false);
|
||||
|
||||
File f (File::getSpecialLocation (File::currentApplicationFile));
|
||||
|
||||
for (;;)
|
||||
{
|
||||
File parent (f.getParentDirectory());
|
||||
|
||||
if (parent == f || ! parent.isDirectory())
|
||||
break;
|
||||
|
||||
if (isJuceFolder (parent))
|
||||
return parent.getChildFile ("modules");
|
||||
|
||||
f = parent;
|
||||
}
|
||||
|
||||
return File::nonexistent;
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_MAINWINDOW_JUCEHEADER__
|
||||
#define __JUCER_MAINWINDOW_JUCEHEADER__
|
||||
|
||||
#include "../Project/jucer_ProjectContentComponent.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
The big top-level window where everything happens.
|
||||
*/
|
||||
class MainWindow : public DocumentWindow,
|
||||
public ApplicationCommandTarget,
|
||||
public FileDragAndDropTarget,
|
||||
public DragAndDropContainer
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
MainWindow();
|
||||
~MainWindow();
|
||||
|
||||
//==============================================================================
|
||||
void closeButtonPressed() override;
|
||||
|
||||
//==============================================================================
|
||||
bool canOpenFile (const File& file) const;
|
||||
bool openFile (const File& file);
|
||||
void setProject (Project* newProject);
|
||||
Project* getProject() const { return currentProject; }
|
||||
|
||||
void makeVisible();
|
||||
void restoreWindowPosition();
|
||||
bool closeProject (Project* project);
|
||||
bool closeCurrentProject();
|
||||
|
||||
void showNewProjectWizard();
|
||||
|
||||
bool isInterestedInFileDrag (const StringArray& files) override;
|
||||
void filesDropped (const StringArray& filenames, int mouseX, int mouseY) override;
|
||||
|
||||
void activeWindowStatusChanged() override;
|
||||
|
||||
void updateTitle (const String& documentName);
|
||||
|
||||
ProjectContentComponent* getProjectContentComponent() const;
|
||||
|
||||
//==============================================================================
|
||||
ApplicationCommandTarget* getNextCommandTarget() override;
|
||||
void getAllCommands (Array <CommandID>& commands) override;
|
||||
void getCommandInfo (CommandID commandID, ApplicationCommandInfo& result) override;
|
||||
bool perform (const InvocationInfo& info) override;
|
||||
|
||||
bool shouldDropFilesWhenDraggedExternally (const DragAndDropTarget::SourceDetails& sourceDetails,
|
||||
StringArray& files, bool& canMoveFiles) override;
|
||||
private:
|
||||
ScopedPointer <Project> currentProject;
|
||||
|
||||
static const char* getProjectWindowPosName() { return "projectWindowPos"; }
|
||||
void createProjectContentCompIfNeeded();
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class MainWindowList
|
||||
{
|
||||
public:
|
||||
MainWindowList();
|
||||
|
||||
void forceCloseAllWindows();
|
||||
bool askAllWindowsToClose();
|
||||
void closeWindow (MainWindow*);
|
||||
|
||||
void createWindowIfNoneAreOpen();
|
||||
void openDocument (OpenDocumentManager::Document*, bool grabFocus);
|
||||
bool openFile (const File& file);
|
||||
|
||||
MainWindow* createNewMainWindow();
|
||||
MainWindow* getOrCreateFrontmostWindow();
|
||||
MainWindow* getOrCreateEmptyWindow();
|
||||
|
||||
Project* getFrontmostProject();
|
||||
|
||||
void reopenLastProjects();
|
||||
void saveCurrentlyOpenProjectList();
|
||||
|
||||
void updateAllWindowTitles();
|
||||
|
||||
void avoidSuperimposedWindows (MainWindow*);
|
||||
|
||||
void sendLookAndFeelChange();
|
||||
|
||||
OwnedArray<MainWindow> windows;
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindowList)
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCER_MAINWINDOW_JUCEHEADER__
|
||||
@@ -0,0 +1,424 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "jucer_OpenDocumentManager.h"
|
||||
#include "jucer_FilePreviewComponent.h"
|
||||
#include "../Code Editor/jucer_SourceCodeEditor.h"
|
||||
#include "jucer_Application.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
class UnknownDocument : public OpenDocumentManager::Document
|
||||
{
|
||||
public:
|
||||
UnknownDocument (Project* p, const File& f)
|
||||
: project (p), file (f)
|
||||
{
|
||||
reloadFromFile();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
struct Type : public OpenDocumentManager::DocumentType
|
||||
{
|
||||
bool canOpenFile (const File&) override { return true; }
|
||||
Document* openFile (Project* p, const File& f) override { return new UnknownDocument (p, f); }
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
bool loadedOk() const override { return true; }
|
||||
bool isForFile (const File& f) const override { return file == f; }
|
||||
bool isForNode (const ValueTree&) const override { return false; }
|
||||
bool refersToProject (Project& p) const override { return project == &p; }
|
||||
Project* getProject() const override { return project; }
|
||||
bool needsSaving() const override { return false; }
|
||||
bool save() override { return true; }
|
||||
bool saveAs() override { return false; }
|
||||
bool hasFileBeenModifiedExternally() override { return fileModificationTime != file.getLastModificationTime(); }
|
||||
void reloadFromFile() override { fileModificationTime = file.getLastModificationTime(); }
|
||||
String getName() const override { return file.getFileName(); }
|
||||
File getFile() const override { return file; }
|
||||
Component* createEditor() override { return new ItemPreviewComponent (file); }
|
||||
Component* createViewer() override { return createEditor(); }
|
||||
void fileHasBeenRenamed (const File& newFile) override { file = newFile; }
|
||||
String getState() const override { return String::empty; }
|
||||
void restoreState (const String&) override {}
|
||||
|
||||
String getType() const override
|
||||
{
|
||||
if (file.getFileExtension().isNotEmpty())
|
||||
return file.getFileExtension() + " file";
|
||||
|
||||
jassertfalse;
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
private:
|
||||
Project* const project;
|
||||
File file;
|
||||
Time fileModificationTime;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (UnknownDocument)
|
||||
};
|
||||
|
||||
|
||||
//==============================================================================
|
||||
OpenDocumentManager::DocumentType* createGUIDocumentType();
|
||||
|
||||
OpenDocumentManager::OpenDocumentManager()
|
||||
{
|
||||
registerType (new UnknownDocument::Type());
|
||||
registerType (new SourceCodeDocument::Type());
|
||||
registerType (createGUIDocumentType());
|
||||
}
|
||||
|
||||
OpenDocumentManager::~OpenDocumentManager()
|
||||
{
|
||||
}
|
||||
|
||||
void OpenDocumentManager::clear()
|
||||
{
|
||||
documents.clear();
|
||||
types.clear();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void OpenDocumentManager::registerType (DocumentType* type)
|
||||
{
|
||||
types.add (type);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void OpenDocumentManager::addListener (DocumentCloseListener* listener)
|
||||
{
|
||||
listeners.addIfNotAlreadyThere (listener);
|
||||
}
|
||||
|
||||
void OpenDocumentManager::removeListener (DocumentCloseListener* listener)
|
||||
{
|
||||
listeners.removeFirstMatchingValue (listener);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
bool OpenDocumentManager::canOpenFile (const File& file)
|
||||
{
|
||||
for (int i = types.size(); --i >= 0;)
|
||||
if (types.getUnchecked(i)->canOpenFile (file))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
OpenDocumentManager::Document* OpenDocumentManager::openFile (Project* project, const File& file)
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
if (documents.getUnchecked(i)->isForFile (file))
|
||||
return documents.getUnchecked(i);
|
||||
|
||||
Document* d = nullptr;
|
||||
|
||||
for (int i = types.size(); --i >= 0 && d == nullptr;)
|
||||
{
|
||||
if (types.getUnchecked(i)->canOpenFile (file))
|
||||
{
|
||||
d = types.getUnchecked(i)->openFile (project, file);
|
||||
jassert (d != nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
jassert (d != nullptr); // should always at least have been picked up by UnknownDocument
|
||||
|
||||
documents.add (d);
|
||||
IntrojucerApp::getCommandManager().commandStatusChanged();
|
||||
return d;
|
||||
}
|
||||
|
||||
int OpenDocumentManager::getNumOpenDocuments() const
|
||||
{
|
||||
return documents.size();
|
||||
}
|
||||
|
||||
OpenDocumentManager::Document* OpenDocumentManager::getOpenDocument (int index) const
|
||||
{
|
||||
return documents.getUnchecked (index);
|
||||
}
|
||||
|
||||
FileBasedDocument::SaveResult OpenDocumentManager::saveIfNeededAndUserAgrees (OpenDocumentManager::Document* doc)
|
||||
{
|
||||
if (! doc->needsSaving())
|
||||
return FileBasedDocument::savedOk;
|
||||
|
||||
const int r = AlertWindow::showYesNoCancelBox (AlertWindow::QuestionIcon,
|
||||
TRANS("Closing document..."),
|
||||
TRANS("Do you want to save the changes to \"")
|
||||
+ doc->getName() + "\"?",
|
||||
TRANS("Save"),
|
||||
TRANS("Discard changes"),
|
||||
TRANS("Cancel"));
|
||||
|
||||
if (r == 1) // save changes
|
||||
return doc->save() ? FileBasedDocument::savedOk
|
||||
: FileBasedDocument::failedToWriteToFile;
|
||||
|
||||
if (r == 2) // discard changes
|
||||
return FileBasedDocument::savedOk;
|
||||
|
||||
return FileBasedDocument::userCancelledSave;
|
||||
}
|
||||
|
||||
|
||||
bool OpenDocumentManager::closeDocument (int index, bool saveIfNeeded)
|
||||
{
|
||||
if (Document* doc = documents [index])
|
||||
{
|
||||
if (saveIfNeeded)
|
||||
if (saveIfNeededAndUserAgrees (doc) != FileBasedDocument::savedOk)
|
||||
return false;
|
||||
|
||||
bool canClose = true;
|
||||
|
||||
for (int i = listeners.size(); --i >= 0;)
|
||||
if (DocumentCloseListener* l = listeners[i])
|
||||
if (! l->documentAboutToClose (doc))
|
||||
canClose = false;
|
||||
|
||||
if (! canClose)
|
||||
return false;
|
||||
|
||||
documents.remove (index);
|
||||
IntrojucerApp::getCommandManager().commandStatusChanged();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OpenDocumentManager::closeDocument (Document* document, bool saveIfNeeded)
|
||||
{
|
||||
return closeDocument (documents.indexOf (document), saveIfNeeded);
|
||||
}
|
||||
|
||||
void OpenDocumentManager::closeFile (const File& f, bool saveIfNeeded)
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
if (Document* d = documents[i])
|
||||
if (d->isForFile (f))
|
||||
closeDocument (i, saveIfNeeded);
|
||||
}
|
||||
|
||||
bool OpenDocumentManager::closeAll (bool askUserToSave)
|
||||
{
|
||||
for (int i = getNumOpenDocuments(); --i >= 0;)
|
||||
if (! closeDocument (i, askUserToSave))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OpenDocumentManager::closeAllDocumentsUsingProject (Project& project, bool saveIfNeeded)
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
if (Document* d = documents[i])
|
||||
if (d->refersToProject (project))
|
||||
if (! closeDocument (i, saveIfNeeded))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OpenDocumentManager::anyFilesNeedSaving() const
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
if (documents.getUnchecked (i)->needsSaving())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool OpenDocumentManager::saveAll()
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
{
|
||||
if (! documents.getUnchecked (i)->save())
|
||||
return false;
|
||||
|
||||
IntrojucerApp::getApp().mainWindowList.updateAllWindowTitles();
|
||||
IntrojucerApp::getCommandManager().commandStatusChanged();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void OpenDocumentManager::reloadModifiedFiles()
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
{
|
||||
Document* d = documents.getUnchecked (i);
|
||||
|
||||
if (d->hasFileBeenModifiedExternally())
|
||||
d->reloadFromFile();
|
||||
}
|
||||
}
|
||||
|
||||
void OpenDocumentManager::fileHasBeenRenamed (const File& oldFile, const File& newFile)
|
||||
{
|
||||
for (int i = documents.size(); --i >= 0;)
|
||||
{
|
||||
Document* d = documents.getUnchecked (i);
|
||||
|
||||
if (d->isForFile (oldFile))
|
||||
d->fileHasBeenRenamed (newFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//==============================================================================
|
||||
RecentDocumentList::RecentDocumentList()
|
||||
{
|
||||
IntrojucerApp::getApp().openDocumentManager.addListener (this);
|
||||
}
|
||||
|
||||
RecentDocumentList::~RecentDocumentList()
|
||||
{
|
||||
IntrojucerApp::getApp().openDocumentManager.removeListener (this);
|
||||
}
|
||||
|
||||
void RecentDocumentList::clear()
|
||||
{
|
||||
previousDocs.clear();
|
||||
nextDocs.clear();
|
||||
}
|
||||
|
||||
void RecentDocumentList::newDocumentOpened (OpenDocumentManager::Document* document)
|
||||
{
|
||||
if (document != nullptr && document != getCurrentDocument())
|
||||
{
|
||||
nextDocs.clear();
|
||||
previousDocs.add (document);
|
||||
}
|
||||
}
|
||||
|
||||
bool RecentDocumentList::canGoToPrevious() const
|
||||
{
|
||||
return previousDocs.size() > 1;
|
||||
}
|
||||
|
||||
bool RecentDocumentList::canGoToNext() const
|
||||
{
|
||||
return nextDocs.size() > 0;
|
||||
}
|
||||
|
||||
OpenDocumentManager::Document* RecentDocumentList::getPrevious()
|
||||
{
|
||||
if (! canGoToPrevious())
|
||||
return nullptr;
|
||||
|
||||
nextDocs.insert (0, previousDocs.remove (previousDocs.size() - 1));
|
||||
return previousDocs.getLast();
|
||||
}
|
||||
|
||||
OpenDocumentManager::Document* RecentDocumentList::getNext()
|
||||
{
|
||||
if (! canGoToNext())
|
||||
return nullptr;
|
||||
|
||||
OpenDocumentManager::Document* d = nextDocs.remove (0);
|
||||
previousDocs.add (d);
|
||||
return d;
|
||||
}
|
||||
|
||||
OpenDocumentManager::Document* RecentDocumentList::getClosestPreviousDocOtherThan (OpenDocumentManager::Document* oneToAvoid) const
|
||||
{
|
||||
for (int i = previousDocs.size(); --i >= 0;)
|
||||
if (previousDocs.getUnchecked(i) != oneToAvoid)
|
||||
return previousDocs.getUnchecked(i);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool RecentDocumentList::documentAboutToClose (OpenDocumentManager::Document* document)
|
||||
{
|
||||
previousDocs.removeAllInstancesOf (document);
|
||||
nextDocs.removeAllInstancesOf (document);
|
||||
|
||||
jassert (! previousDocs.contains (document));
|
||||
jassert (! nextDocs.contains (document));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void restoreDocList (Project& project, Array <OpenDocumentManager::Document*>& list, const XmlElement* xml)
|
||||
{
|
||||
if (xml != nullptr)
|
||||
{
|
||||
OpenDocumentManager& odm = IntrojucerApp::getApp().openDocumentManager;
|
||||
|
||||
forEachXmlChildElementWithTagName (*xml, e, "DOC")
|
||||
{
|
||||
const File file (e->getStringAttribute ("file"));
|
||||
|
||||
if (file.exists())
|
||||
{
|
||||
if (OpenDocumentManager::Document* doc = odm.openFile (&project, file))
|
||||
{
|
||||
doc->restoreState (e->getStringAttribute ("state"));
|
||||
|
||||
list.add (doc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RecentDocumentList::restoreFromXML (Project& project, const XmlElement& xml)
|
||||
{
|
||||
clear();
|
||||
|
||||
if (xml.hasTagName ("RECENT_DOCUMENTS"))
|
||||
{
|
||||
restoreDocList (project, previousDocs, xml.getChildByName ("PREVIOUS"));
|
||||
restoreDocList (project, nextDocs, xml.getChildByName ("NEXT"));
|
||||
}
|
||||
}
|
||||
|
||||
static void saveDocList (const Array <OpenDocumentManager::Document*>& list, XmlElement& xml)
|
||||
{
|
||||
for (int i = 0; i < list.size(); ++i)
|
||||
{
|
||||
const OpenDocumentManager::Document& doc = *list.getUnchecked(i);
|
||||
|
||||
XmlElement* e = xml.createNewChildElement ("DOC");
|
||||
|
||||
e->setAttribute ("file", doc.getFile().getFullPathName());
|
||||
e->setAttribute ("state", doc.getState());
|
||||
}
|
||||
}
|
||||
|
||||
XmlElement* RecentDocumentList::createXML() const
|
||||
{
|
||||
XmlElement* xml = new XmlElement ("RECENT_DOCUMENTS");
|
||||
|
||||
saveDocList (previousDocs, *xml->createNewChildElement ("PREVIOUS"));
|
||||
saveDocList (nextDocs, *xml->createNewChildElement ("NEXT"));
|
||||
|
||||
return xml;
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library.
|
||||
Copyright (c) 2013 - Raw Material Software Ltd.
|
||||
|
||||
Permission is granted to use this software under the terms of either:
|
||||
a) the GPL v2 (or any later version)
|
||||
b) the Affero GPL v3
|
||||
|
||||
Details of these licenses can be found at: www.gnu.org/licenses
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.juce.com for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCER_OPENDOCUMENTMANAGER_JUCEHEADER__
|
||||
#define __JUCER_OPENDOCUMENTMANAGER_JUCEHEADER__
|
||||
|
||||
#include "../Project/jucer_Project.h"
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
*/
|
||||
class OpenDocumentManager
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
OpenDocumentManager();
|
||||
~OpenDocumentManager();
|
||||
|
||||
//==============================================================================
|
||||
class Document
|
||||
{
|
||||
public:
|
||||
Document() {}
|
||||
virtual ~Document() {}
|
||||
|
||||
virtual bool loadedOk() const = 0;
|
||||
virtual bool isForFile (const File& file) const = 0;
|
||||
virtual bool isForNode (const ValueTree& node) const = 0;
|
||||
virtual bool refersToProject (Project& project) const = 0;
|
||||
virtual Project* getProject() const = 0;
|
||||
virtual String getName() const = 0;
|
||||
virtual String getType() const = 0;
|
||||
virtual File getFile() const = 0;
|
||||
virtual bool needsSaving() const = 0;
|
||||
virtual bool save() = 0;
|
||||
virtual bool saveAs() = 0;
|
||||
virtual bool hasFileBeenModifiedExternally() = 0;
|
||||
virtual void reloadFromFile() = 0;
|
||||
virtual Component* createEditor() = 0;
|
||||
virtual Component* createViewer() = 0;
|
||||
virtual void fileHasBeenRenamed (const File& newFile) = 0;
|
||||
virtual String getState() const = 0;
|
||||
virtual void restoreState (const String& state) = 0;
|
||||
virtual File getCounterpartFile() const { return File::nonexistent; }
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
int getNumOpenDocuments() const;
|
||||
Document* getOpenDocument (int index) const;
|
||||
void clear();
|
||||
|
||||
bool canOpenFile (const File& file);
|
||||
Document* openFile (Project* project, const File& file);
|
||||
bool closeDocument (int index, bool saveIfNeeded);
|
||||
bool closeDocument (Document* document, bool saveIfNeeded);
|
||||
bool closeAll (bool askUserToSave);
|
||||
bool closeAllDocumentsUsingProject (Project& project, bool saveIfNeeded);
|
||||
void closeFile (const File& f, bool saveIfNeeded);
|
||||
bool anyFilesNeedSaving() const;
|
||||
bool saveAll();
|
||||
FileBasedDocument::SaveResult saveIfNeededAndUserAgrees (Document* doc);
|
||||
void reloadModifiedFiles();
|
||||
void fileHasBeenRenamed (const File& oldFile, const File& newFile);
|
||||
|
||||
//==============================================================================
|
||||
class DocumentCloseListener
|
||||
{
|
||||
public:
|
||||
DocumentCloseListener() {}
|
||||
virtual ~DocumentCloseListener() {}
|
||||
|
||||
// return false to force it to stop.
|
||||
virtual bool documentAboutToClose (Document* document) = 0;
|
||||
};
|
||||
|
||||
void addListener (DocumentCloseListener*);
|
||||
void removeListener (DocumentCloseListener*);
|
||||
|
||||
//==============================================================================
|
||||
class DocumentType
|
||||
{
|
||||
public:
|
||||
DocumentType() {}
|
||||
virtual ~DocumentType() {}
|
||||
|
||||
virtual bool canOpenFile (const File& file) = 0;
|
||||
virtual Document* openFile (Project* project, const File& file) = 0;
|
||||
};
|
||||
|
||||
void registerType (DocumentType* type);
|
||||
|
||||
|
||||
private:
|
||||
OwnedArray<DocumentType> types;
|
||||
OwnedArray<Document> documents;
|
||||
Array<DocumentCloseListener*> listeners;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenDocumentManager)
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class RecentDocumentList : private OpenDocumentManager::DocumentCloseListener
|
||||
{
|
||||
public:
|
||||
RecentDocumentList();
|
||||
~RecentDocumentList();
|
||||
|
||||
void clear();
|
||||
|
||||
void newDocumentOpened (OpenDocumentManager::Document* document);
|
||||
|
||||
OpenDocumentManager::Document* getCurrentDocument() const { return previousDocs.getLast(); }
|
||||
|
||||
bool canGoToPrevious() const;
|
||||
bool canGoToNext() const;
|
||||
|
||||
OpenDocumentManager::Document* getPrevious();
|
||||
OpenDocumentManager::Document* getNext();
|
||||
|
||||
OpenDocumentManager::Document* getClosestPreviousDocOtherThan (OpenDocumentManager::Document* oneToAvoid) const;
|
||||
|
||||
void restoreFromXML (Project& project, const XmlElement& xml);
|
||||
XmlElement* createXML() const;
|
||||
|
||||
private:
|
||||
bool documentAboutToClose (OpenDocumentManager::Document*);
|
||||
|
||||
Array<OpenDocumentManager::Document*> previousDocs, nextDocs;
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCER_OPENDOCUMENTMANAGER_JUCEHEADER__
|
||||
@@ -0,0 +1,90 @@
|
||||
|
||||
# This script takes the build product and copies it to the AU, VST, VST3, RTAS and AAX folders, depending on
|
||||
# which plugin types you've built
|
||||
|
||||
original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME
|
||||
|
||||
# this looks inside the binary to detect which platforms are needed..
|
||||
copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l`
|
||||
copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l`
|
||||
copyVST3=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'GetPluginFactory' | wc -l`
|
||||
copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l`
|
||||
copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'ACFStartup' | wc -l`
|
||||
|
||||
if [ $copyAU -gt 0 ]; then
|
||||
echo "Copying to AudioUnit folder..."
|
||||
AU=~/Library/Audio/Plug-Ins/Components/$PRODUCT_NAME.component
|
||||
if [ -d "$AU" ]; then
|
||||
rm -r "$AU"
|
||||
fi
|
||||
|
||||
cp -r "$original" "$AU"
|
||||
sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$AU/Contents/PkgInfo"
|
||||
sed -i "" -e 's/TDMw/BNDL/g' "$AU/Contents/$INFOPLIST_FILE"
|
||||
|
||||
# Fix info.plist for AUs built with Xcode 3
|
||||
if [ -f "$DEVELOPER_DIR/Library/Developer/CoreAudio/AudioUnits/AUPublic/AUBase/AUPlugInDispatch.cpp" ]; then
|
||||
echo
|
||||
else
|
||||
echo "Removing AudioComponents entry from Info.plist because this is not a new-format AU"
|
||||
/usr/libexec/PlistBuddy -c "Delete AudioComponents" "$AU/Contents/Info.plist"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $copyVST -gt 0 ]; then
|
||||
echo "Copying to VST folder..."
|
||||
VST=~/Library/Audio/Plug-Ins/VST/$PRODUCT_NAME.vst
|
||||
if [ -d "$VST" ]; then
|
||||
rm -r "$VST"
|
||||
fi
|
||||
|
||||
cp -r "$original" "$VST"
|
||||
sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST/Contents/PkgInfo"
|
||||
sed -i "" -e 's/TDMw/BNDL/g' "$VST/Contents/$INFOPLIST_FILE"
|
||||
fi
|
||||
|
||||
if [ $copyVST3 -gt 0 ]; then
|
||||
echo "Copying to VST3 folder..."
|
||||
VST3=~/Library/Audio/Plug-Ins/VST3/$PRODUCT_NAME.vst3
|
||||
if [ -d "$VST3" ]; then
|
||||
rm -r "$VST3"
|
||||
fi
|
||||
|
||||
cp -r "$original" "$VST3"
|
||||
sed -i "" -e 's/TDMwPTul/BNDLPTul/g' "$VST3/Contents/PkgInfo"
|
||||
sed -i "" -e 's/TDMw/BNDL/g' "$VST3/Contents/$INFOPLIST_FILE"
|
||||
fi
|
||||
|
||||
if [ $copyRTAS -gt 0 ]; then
|
||||
echo "Copying to RTAS folder..."
|
||||
RTAS=/Library/Application\ Support/Digidesign/Plug-Ins/$PRODUCT_NAME.dpm
|
||||
if [ -d "$RTAS" ]; then
|
||||
rm -r "$RTAS"
|
||||
fi
|
||||
|
||||
cp -r "$original" "$RTAS"
|
||||
fi
|
||||
|
||||
if [ $copyAAX -gt 0 ]; then
|
||||
echo "Copying to AAX folder..."
|
||||
|
||||
if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then
|
||||
AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin"
|
||||
|
||||
if [ -d "$AAX1" ]; then
|
||||
rm -r "$AAX1"
|
||||
fi
|
||||
|
||||
cp -R -H "$original" "$AAX1"
|
||||
fi
|
||||
|
||||
if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then
|
||||
AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin"
|
||||
|
||||
if [ -d "$AAX2" ]; then
|
||||
rm -r "$AAX2"
|
||||
fi
|
||||
|
||||
cp -R -H "$original" "$AAX2"
|
||||
fi
|
||||
fi
|
||||
|
After Width: | Height: | Size: 151 B |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<COLOUR_SCHEME font="<Monospaced>; 13.0">
|
||||
<COLOUR name="Main Window Bkgd" colour="FF29292A"/>
|
||||
<COLOUR name="Treeview Highlight" colour="2BFFFEC3"/>
|
||||
<COLOUR name="Code Background" colour="FF222222"/>
|
||||
<COLOUR name="Line Number Bkgd" colour="44C1C1C1"/>
|
||||
<COLOUR name="Line Numbers" colour="E9B2B2B2"/>
|
||||
<COLOUR name="Plain Text" colour="FFCECECE"/>
|
||||
<COLOUR name="Selected Text Bkgd" colour="FF2859AC"/>
|
||||
<COLOUR name="Caret" colour="FFFFFFFF"/>
|
||||
<COLOUR name="Preprocessor Text" colour="FFF8F631"/>
|
||||
<COLOUR name="Punctuation" colour="FFCFBEFF"/>
|
||||
<COLOUR name="Bracket" colour="FF058202"/>
|
||||
<COLOUR name="String" colour="FFBC45DD"/>
|
||||
<COLOUR name="Float" colour="ff885500"/>
|
||||
<COLOUR name="Integer" colour="FF42C8C4"/>
|
||||
<COLOUR name="Identifier" colour="FFCFCFCF"/>
|
||||
<COLOUR name="Operator" colour="FFC4EB19"/>
|
||||
<COLOUR name="Keyword" colour="FFEE6F6F"/>
|
||||
<COLOUR name="Comment" colour="FF72D20C"/>
|
||||
<COLOUR name="Error" colour="FFE60000"/>
|
||||
</COLOUR_SCHEME>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<COLOUR_SCHEME font="<Monospaced>; 13.0">
|
||||
<COLOUR name="Main Window Bkgd" colour="FFE6E7E9"/>
|
||||
<COLOUR name="Treeview Highlight" colour="401111ee"/>
|
||||
<COLOUR name="Code Background" colour="ffffffff"/>
|
||||
<COLOUR name="Line Number Bkgd" colour="44999999"/>
|
||||
<COLOUR name="Line Numbers" colour="44000000"/>
|
||||
<COLOUR name="Plain Text" colour="ff000000"/>
|
||||
<COLOUR name="Selected Text Bkgd" colour="401111ee"/>
|
||||
<COLOUR name="Caret" colour="ff000000"/>
|
||||
<COLOUR name="Preprocessor Text" colour="ff660000"/>
|
||||
<COLOUR name="Punctuation" colour="ff004400"/>
|
||||
<COLOUR name="Bracket" colour="ff000055"/>
|
||||
<COLOUR name="String" colour="ff990099"/>
|
||||
<COLOUR name="Float" colour="ff885500"/>
|
||||
<COLOUR name="Integer" colour="ff880000"/>
|
||||
<COLOUR name="Identifier" colour="ff000000"/>
|
||||
<COLOUR name="Operator" colour="ff225500"/>
|
||||
<COLOUR name="Keyword" colour="ff0000cc"/>
|
||||
<COLOUR name="Comment" colour="ff00aa00"/>
|
||||
<COLOUR name="Error" colour="ffcc0000"/>
|
||||
</COLOUR_SCHEME>
|
||||
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated!
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef MAINCOMPONENT_H_INCLUDED
|
||||
#define MAINCOMPONENT_H_INCLUDED
|
||||
|
||||
INCLUDE_JUCE
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
This component lives inside our window, and this is where you should put all
|
||||
your controls and content.
|
||||
*/
|
||||
class MainContentComponent : public AnimatedAppComponent
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
MainContentComponent()
|
||||
{
|
||||
setSize (800, 600);
|
||||
setFramesPerSecond (60);
|
||||
}
|
||||
|
||||
~MainContentComponent()
|
||||
{
|
||||
}
|
||||
|
||||
void update() override
|
||||
{
|
||||
// This function is called at the frequency specified by the setFramesPerSecond() call
|
||||
// in the constructor. You can use it to update counters, animate values, etc.
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
// (Our component is opaque, so we must completely fill the background with a solid colour)
|
||||
g.fillAll (Colours::black);
|
||||
|
||||
|
||||
// You can add your drawing code here!
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
// This is called when the MainContentComponent is resized.
|
||||
// If you add any child components, this is where you should
|
||||
// update their positions.
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
|
||||
// Your private member variables go here...
|
||||
|
||||
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
|
||||
};
|
||||
|
||||
|
||||
// (This function is called by the app startup code to create our main component)
|
||||
Component* createMainContentComponent() { return new MainContentComponent(); }
|
||||
|
||||
|
||||
#endif // MAINCOMPONENT_H_INCLUDED
|
||||
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated!
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef MAINCOMPONENT_H_INCLUDED
|
||||
#define MAINCOMPONENT_H_INCLUDED
|
||||
|
||||
INCLUDE_JUCE
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
This component lives inside our window, and this is where you should put all
|
||||
your controls and content.
|
||||
*/
|
||||
class MainContentComponent : public AudioAppComponent
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
MainContentComponent()
|
||||
{
|
||||
setSize (800, 600);
|
||||
|
||||
// specify the number of input and output channels that we want to open
|
||||
setAudioChannels (2, 2);
|
||||
}
|
||||
|
||||
~MainContentComponent()
|
||||
{
|
||||
shutdownAudio();
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
void prepareToPlay (int samplesPerBlockExpected, double sampleRate) override
|
||||
{
|
||||
// This function will be called when the audio device is started, or when
|
||||
// its settings (i.e. sample rate, block size, etc) are changed.
|
||||
|
||||
// You can use this function to initialise any resources you might need,
|
||||
// but be careful - it will be called on the audio thread, not the GUI thread.
|
||||
|
||||
// For more details, see the help for AudioProcessor::prepareToPlay()
|
||||
}
|
||||
|
||||
void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) override
|
||||
{
|
||||
// Your audio-processing code goes here!
|
||||
|
||||
// For more details, see the help for AudioProcessor::getNextAudioBlock()
|
||||
}
|
||||
|
||||
void releaseResources() override
|
||||
{
|
||||
// This will be called when the audio device stops, or when it is being
|
||||
// restarted due to a setting change.
|
||||
|
||||
// For more details, see the help for AudioProcessor::releaseResources()
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
// (Our component is opaque, so we must completely fill the background with a solid colour)
|
||||
g.fillAll (Colours::black);
|
||||
|
||||
|
||||
// You can add your drawing code here!
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
// This is called when the MainContentComponent is resized.
|
||||
// If you add any child components, this is where you should
|
||||
// update their positions.
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
|
||||
// Your private member variables go here...
|
||||
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
|
||||
};
|
||||
|
||||
|
||||
// (This function is called by the app startup code to create our main component)
|
||||
Component* createMainContentComponent() { return new MainContentComponent(); }
|
||||
|
||||
|
||||
#endif // MAINCOMPONENT_H_INCLUDED
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic framework code for a JUCE plugin editor.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
EDITORCPPHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
EDITORCLASSNAME::EDITORCLASSNAME (FILTERCLASSNAME& p)
|
||||
: AudioProcessorEditor (&p), processor (p)
|
||||
{
|
||||
// Make sure that before the constructor has finished, you've set the
|
||||
// editor's size to whatever you need it to be.
|
||||
setSize (400, 300);
|
||||
}
|
||||
|
||||
EDITORCLASSNAME::~EDITORCLASSNAME()
|
||||
{
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void EDITORCLASSNAME::paint (Graphics& g)
|
||||
{
|
||||
g.fillAll (Colours::white);
|
||||
|
||||
g.setColour (Colours::black);
|
||||
g.setFont (15.0f);
|
||||
g.drawFittedText ("Hello World!", getLocalBounds(), Justification::centred, 1);
|
||||
}
|
||||
|
||||
void EDITORCLASSNAME::resized()
|
||||
{
|
||||
// This is generally where you'll want to lay out the positions of any
|
||||
// subcomponents in your editor..
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic framework code for a JUCE plugin editor.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef HEADERGUARD
|
||||
#define HEADERGUARD
|
||||
|
||||
EDITORHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
*/
|
||||
class EDITORCLASSNAME : public AudioProcessorEditor
|
||||
{
|
||||
public:
|
||||
EDITORCLASSNAME (FILTERCLASSNAME&);
|
||||
~EDITORCLASSNAME();
|
||||
|
||||
//==============================================================================
|
||||
void paint (Graphics&) override;
|
||||
void resized() override;
|
||||
|
||||
private:
|
||||
// This reference is provided as a quick way for your editor to
|
||||
// access the processor object that created it.
|
||||
FILTERCLASSNAME& processor;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EDITORCLASSNAME)
|
||||
};
|
||||
|
||||
|
||||
#endif // HEADERGUARD
|
||||
@@ -0,0 +1,189 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic framework code for a JUCE plugin processor.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
FILTERHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
FILTERCLASSNAME::FILTERCLASSNAME()
|
||||
{
|
||||
}
|
||||
|
||||
FILTERCLASSNAME::~FILTERCLASSNAME()
|
||||
{
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
const String FILTERCLASSNAME::getName() const
|
||||
{
|
||||
return JucePlugin_Name;
|
||||
}
|
||||
|
||||
int FILTERCLASSNAME::getNumParameters()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
float FILTERCLASSNAME::getParameter (int index)
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
void FILTERCLASSNAME::setParameter (int index, float newValue)
|
||||
{
|
||||
}
|
||||
|
||||
const String FILTERCLASSNAME::getParameterName (int index)
|
||||
{
|
||||
return String();
|
||||
}
|
||||
|
||||
const String FILTERCLASSNAME::getParameterText (int index)
|
||||
{
|
||||
return String();
|
||||
}
|
||||
|
||||
const String FILTERCLASSNAME::getInputChannelName (int channelIndex) const
|
||||
{
|
||||
return String (channelIndex + 1);
|
||||
}
|
||||
|
||||
const String FILTERCLASSNAME::getOutputChannelName (int channelIndex) const
|
||||
{
|
||||
return String (channelIndex + 1);
|
||||
}
|
||||
|
||||
bool FILTERCLASSNAME::isInputChannelStereoPair (int index) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FILTERCLASSNAME::isOutputChannelStereoPair (int index) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FILTERCLASSNAME::acceptsMidi() const
|
||||
{
|
||||
#if JucePlugin_WantsMidiInput
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool FILTERCLASSNAME::producesMidi() const
|
||||
{
|
||||
#if JucePlugin_ProducesMidiOutput
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool FILTERCLASSNAME::silenceInProducesSilenceOut() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
double FILTERCLASSNAME::getTailLengthSeconds() const
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
int FILTERCLASSNAME::getNumPrograms()
|
||||
{
|
||||
return 1; // NB: some hosts don't cope very well if you tell them there are 0 programs,
|
||||
// so this should be at least 1, even if you're not really implementing programs.
|
||||
}
|
||||
|
||||
int FILTERCLASSNAME::getCurrentProgram()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void FILTERCLASSNAME::setCurrentProgram (int index)
|
||||
{
|
||||
}
|
||||
|
||||
const String FILTERCLASSNAME::getProgramName (int index)
|
||||
{
|
||||
return String();
|
||||
}
|
||||
|
||||
void FILTERCLASSNAME::changeProgramName (int index, const String& newName)
|
||||
{
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void FILTERCLASSNAME::prepareToPlay (double sampleRate, int samplesPerBlock)
|
||||
{
|
||||
// Use this method as the place to do any pre-playback
|
||||
// initialisation that you need..
|
||||
}
|
||||
|
||||
void FILTERCLASSNAME::releaseResources()
|
||||
{
|
||||
// When playback stops, you can use this as an opportunity to free up any
|
||||
// spare memory, etc.
|
||||
}
|
||||
|
||||
void FILTERCLASSNAME::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
|
||||
{
|
||||
// In case we have more outputs than inputs, this code clears any output
|
||||
// channels that didn't contain input data, (because these aren't
|
||||
// guaranteed to be empty - they may contain garbage).
|
||||
// I've added this to avoid people getting screaming feedback
|
||||
// when they first compile the plugin, but obviously you don't need to
|
||||
// this code if your algorithm already fills all the output channels.
|
||||
for (int i = getNumInputChannels(); i < getNumOutputChannels(); ++i)
|
||||
buffer.clear (i, 0, buffer.getNumSamples());
|
||||
|
||||
// This is the place where you'd normally do the guts of your plugin's
|
||||
// audio processing...
|
||||
for (int channel = 0; channel < getNumInputChannels(); ++channel)
|
||||
{
|
||||
float* channelData = buffer.getWritePointer (channel);
|
||||
|
||||
// ..do something to the data...
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
bool FILTERCLASSNAME::hasEditor() const
|
||||
{
|
||||
return true; // (change this to false if you choose to not supply an editor)
|
||||
}
|
||||
|
||||
AudioProcessorEditor* FILTERCLASSNAME::createEditor()
|
||||
{
|
||||
return new EDITORCLASSNAME (*this);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void FILTERCLASSNAME::getStateInformation (MemoryBlock& destData)
|
||||
{
|
||||
// You should use this method to store your parameters in the memory block.
|
||||
// You could do that either as raw data, or use the XML or ValueTree classes
|
||||
// as intermediaries to make it easy to save and load complex data.
|
||||
}
|
||||
|
||||
void FILTERCLASSNAME::setStateInformation (const void* data, int sizeInBytes)
|
||||
{
|
||||
// You should use this method to restore your parameters from this memory block,
|
||||
// whose contents will have been created by the getStateInformation() call.
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
// This creates new instances of the plugin..
|
||||
AudioProcessor* JUCE_CALLTYPE createPluginFilter()
|
||||
{
|
||||
return new FILTERCLASSNAME();
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic framework code for a JUCE plugin processor.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef HEADERGUARD
|
||||
#define HEADERGUARD
|
||||
|
||||
APPHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
*/
|
||||
class FILTERCLASSNAME : public AudioProcessor
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
FILTERCLASSNAME();
|
||||
~FILTERCLASSNAME();
|
||||
|
||||
//==============================================================================
|
||||
void prepareToPlay (double sampleRate, int samplesPerBlock) override;
|
||||
void releaseResources() override;
|
||||
|
||||
void processBlock (AudioSampleBuffer&, MidiBuffer&) override;
|
||||
|
||||
//==============================================================================
|
||||
AudioProcessorEditor* createEditor() override;
|
||||
bool hasEditor() const override;
|
||||
|
||||
//==============================================================================
|
||||
const String getName() const override;
|
||||
|
||||
int getNumParameters() override;
|
||||
float getParameter (int index) override;
|
||||
void setParameter (int index, float newValue) override;
|
||||
|
||||
const String getParameterName (int index) override;
|
||||
const String getParameterText (int index) override;
|
||||
|
||||
const String getInputChannelName (int channelIndex) const override;
|
||||
const String getOutputChannelName (int channelIndex) const override;
|
||||
bool isInputChannelStereoPair (int index) const override;
|
||||
bool isOutputChannelStereoPair (int index) const override;
|
||||
|
||||
bool acceptsMidi() const override;
|
||||
bool producesMidi() const override;
|
||||
bool silenceInProducesSilenceOut() const override;
|
||||
double getTailLengthSeconds() const override;
|
||||
|
||||
//==============================================================================
|
||||
int getNumPrograms() override;
|
||||
int getCurrentProgram() override;
|
||||
void setCurrentProgram (int index) override;
|
||||
const String getProgramName (int index) override;
|
||||
void changeProgramName (int index, const String& newName) override;
|
||||
|
||||
//==============================================================================
|
||||
void getStateInformation (MemoryBlock& destData) override;
|
||||
void setStateInformation (const void* data, int sizeInBytes) override;
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FILTERCLASSNAME)
|
||||
};
|
||||
|
||||
|
||||
#endif // HEADERGUARD
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Introjucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Introjucer version: %%version%%
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-13 by Raw Material Software Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
//[Headers] You can add your own extra header files here...
|
||||
//[/Headers]
|
||||
|
||||
%%includeFilesCPP%%
|
||||
|
||||
//[MiscUserDefs] You can add your own user definitions and misc code here...
|
||||
//[/MiscUserDefs]
|
||||
|
||||
//==============================================================================
|
||||
%%className%%::%%className%% (%%constructorParams%%)
|
||||
%%initialisers%%{
|
||||
%%constructor%%
|
||||
|
||||
//[Constructor] You can add your own custom stuff here..
|
||||
//[/Constructor]
|
||||
}
|
||||
|
||||
%%className%%::~%%className%%()
|
||||
{
|
||||
//[Destructor_pre]. You can add your own custom destruction code here..
|
||||
//[/Destructor_pre]
|
||||
|
||||
%%destructor%%
|
||||
|
||||
//[Destructor]. You can add your own custom destruction code here..
|
||||
//[/Destructor]
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
%%methodDefinitions%%
|
||||
|
||||
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
|
||||
//[/MiscUserCode]
|
||||
|
||||
|
||||
//==============================================================================
|
||||
#if 0
|
||||
/* -- Introjucer information section --
|
||||
|
||||
This is where the Introjucer stores the metadata that describe this GUI layout, so
|
||||
make changes in here at your peril!
|
||||
|
||||
BEGIN_JUCER_METADATA
|
||||
|
||||
%%metadata%%
|
||||
END_JUCER_METADATA
|
||||
*/
|
||||
#endif
|
||||
|
||||
%%staticMemberDefinitions%%
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This is an automatically generated GUI class created by the Introjucer!
|
||||
|
||||
Be careful when adding custom code to these files, as only the code within
|
||||
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
|
||||
and re-saved.
|
||||
|
||||
Created with Introjucer version: %%version%%
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-13 by Raw Material Software Ltd.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef %%headerGuard%%
|
||||
#define %%headerGuard%%
|
||||
|
||||
//[Headers] -- You can add your own extra header files here --
|
||||
#include "JuceHeader.h"
|
||||
//[/Headers]
|
||||
|
||||
%%includeFilesH%%
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
//[Comments]
|
||||
An auto-generated component, created by the Introjucer.
|
||||
|
||||
Describe your class and how it works here!
|
||||
//[/Comments]
|
||||
*/
|
||||
%%classDeclaration%%
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
%%className%% (%%constructorParams%%);
|
||||
~%%className%%();
|
||||
|
||||
//==============================================================================
|
||||
//[UserMethods] -- You can add your own custom methods in this section.
|
||||
//[/UserMethods]
|
||||
|
||||
%%publicMemberDeclarations%%
|
||||
|
||||
private:
|
||||
//[UserVariables] -- You can add your own custom variables in this section.
|
||||
//[/UserVariables]
|
||||
|
||||
//==============================================================================
|
||||
%%privateMemberDeclarations%%
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%className%%)
|
||||
};
|
||||
|
||||
//[EndFile] You can add extra defines here...
|
||||
//[/EndFile]
|
||||
|
||||
#endif // %%headerGuard%%
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated!
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
INCLUDE_CORRESPONDING_HEADER
|
||||
|
||||
|
||||
//==============================================================================
|
||||
CONTENTCOMPCLASS::CONTENTCOMPCLASS()
|
||||
{
|
||||
setSize (600, 400);
|
||||
}
|
||||
|
||||
CONTENTCOMPCLASS::~CONTENTCOMPCLASS()
|
||||
{
|
||||
}
|
||||
|
||||
void CONTENTCOMPCLASS::paint (Graphics& g)
|
||||
{
|
||||
g.fillAll (Colour (0xff001F36));
|
||||
|
||||
g.setFont (Font (16.0f));
|
||||
g.setColour (Colours::white);
|
||||
g.drawText ("Hello World!", getLocalBounds(), Justification::centred, true);
|
||||
}
|
||||
|
||||
void CONTENTCOMPCLASS::resized()
|
||||
{
|
||||
// This is called when the CONTENTCOMPCLASS is resized.
|
||||
// If you add any child components, this is where you should
|
||||
// update their positions.
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated!
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef HEADERGUARD
|
||||
#define HEADERGUARD
|
||||
|
||||
INCLUDE_JUCE
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
This component lives inside our window, and this is where you should put all
|
||||
your controls and content.
|
||||
*/
|
||||
class CONTENTCOMPCLASS : public Component
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
CONTENTCOMPCLASS();
|
||||
~CONTENTCOMPCLASS();
|
||||
|
||||
void paint (Graphics&);
|
||||
void resized();
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CONTENTCOMPCLASS)
|
||||
};
|
||||
|
||||
|
||||
#endif // HEADERGUARD
|
||||
@@ -0,0 +1,40 @@
|
||||
//==============================================================================
|
||||
class COMPONENTCLASS : public Component
|
||||
{
|
||||
public:
|
||||
COMPONENTCLASS()
|
||||
{
|
||||
// In your constructor, you should add any child components, and
|
||||
// initialise any special settings that your component needs.
|
||||
|
||||
}
|
||||
|
||||
~COMPONENTCLASS()
|
||||
{
|
||||
}
|
||||
|
||||
void paint (Graphics& g)
|
||||
{
|
||||
// You should replace everything in this method with your own drawing code..
|
||||
|
||||
g.fillAll (Colours::white); // clear the background
|
||||
|
||||
g.setColour (Colours::grey);
|
||||
g.drawRect (getLocalBounds(), 1); // draw an outline around the component
|
||||
|
||||
g.setColour (Colours::lightblue);
|
||||
g.setFont (14.0f);
|
||||
g.drawText ("COMPONENTCLASS", getLocalBounds(),
|
||||
Justification::centred, true); // draw some placeholder text
|
||||
}
|
||||
|
||||
void resized()
|
||||
{
|
||||
// This method is where you should set the bounds of any child
|
||||
// components that your component contains..
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS)
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated!
|
||||
|
||||
It contains the basic startup code for a Juce application.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
APPHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
|
||||
// ..your code goes here!
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic startup code for a Juce application.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
APPHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
class APPCLASSNAME : public JUCEApplication
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
APPCLASSNAME() {}
|
||||
|
||||
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||
bool moreThanOneInstanceAllowed() override { return ALLOWMORETHANONEINSTANCE; }
|
||||
|
||||
//==============================================================================
|
||||
void initialise (const String& commandLine) override
|
||||
{
|
||||
// Add your application's initialisation code here..
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
// Add your application's shutdown code here..
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void systemRequestedQuit() override
|
||||
{
|
||||
// This is called when the app is being asked to quit: you can ignore this
|
||||
// request and let the app carry on running, or call quit() to allow the app to close.
|
||||
quit();
|
||||
}
|
||||
|
||||
void anotherInstanceStarted (const String& commandLine) override
|
||||
{
|
||||
// When another instance of the app is launched while this one is running,
|
||||
// this method is invoked, and the commandLine parameter tells you what
|
||||
// the other instance's command-line arguments were.
|
||||
}
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
// This macro generates the main() routine that launches the app.
|
||||
START_JUCE_APPLICATION (APPCLASSNAME)
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic startup code for a Juce application.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
APPHEADERS
|
||||
|
||||
Component* createMainContentComponent();
|
||||
|
||||
//==============================================================================
|
||||
class APPCLASSNAME : public JUCEApplication
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
APPCLASSNAME() {}
|
||||
|
||||
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||
bool moreThanOneInstanceAllowed() override { return ALLOWMORETHANONEINSTANCE; }
|
||||
|
||||
//==============================================================================
|
||||
void initialise (const String& commandLine) override
|
||||
{
|
||||
// This method is where you should put your application's initialisation code..
|
||||
|
||||
mainWindow = new MainWindow (getApplicationName());
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
// Add your application's shutdown code here..
|
||||
|
||||
mainWindow = nullptr; // (deletes our window)
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void systemRequestedQuit() override
|
||||
{
|
||||
// This is called when the app is being asked to quit: you can ignore this
|
||||
// request and let the app carry on running, or call quit() to allow the app to close.
|
||||
quit();
|
||||
}
|
||||
|
||||
void anotherInstanceStarted (const String& commandLine) override
|
||||
{
|
||||
// When another instance of the app is launched while this one is running,
|
||||
// this method is invoked, and the commandLine parameter tells you what
|
||||
// the other instance's command-line arguments were.
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
This class implements the desktop window that contains an instance of
|
||||
our CONTENTCOMPCLASS class.
|
||||
*/
|
||||
class MainWindow : public DocumentWindow
|
||||
{
|
||||
public:
|
||||
MainWindow (String name) : DocumentWindow (name,
|
||||
Colours::lightgrey,
|
||||
DocumentWindow::allButtons)
|
||||
{
|
||||
setUsingNativeTitleBar (true);
|
||||
setContentOwned (createMainContentComponent(), true);
|
||||
setResizable (true, true);
|
||||
|
||||
centreWithSize (getWidth(), getHeight());
|
||||
setVisible (true);
|
||||
}
|
||||
|
||||
void closeButtonPressed() override
|
||||
{
|
||||
// This is called when the user tries to close this window. Here, we'll just
|
||||
// ask the app to quit when this happens, but you can change this to do
|
||||
// whatever you need.
|
||||
JUCEApplication::getInstance()->systemRequestedQuit();
|
||||
}
|
||||
|
||||
/* Note: Be careful if you override any DocumentWindow methods - the base
|
||||
class uses a lot of them, so by overriding you might break its functionality.
|
||||
It's best to do all your work in your content component instead, but if
|
||||
you really have to override any DocumentWindow methods, make sure your
|
||||
subclass also calls the superclass's method.
|
||||
*/
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||
};
|
||||
|
||||
private:
|
||||
ScopedPointer<MainWindow> mainWindow;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
// This macro generates the main() routine that launches the app.
|
||||
START_JUCE_APPLICATION (APPCLASSNAME)
|
||||
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated by the Introjucer!
|
||||
|
||||
It contains the basic startup code for a Juce application.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
APPHEADERS
|
||||
|
||||
|
||||
//==============================================================================
|
||||
class APPCLASSNAME : public JUCEApplication
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
APPCLASSNAME() {}
|
||||
|
||||
const String getApplicationName() override { return ProjectInfo::projectName; }
|
||||
const String getApplicationVersion() override { return ProjectInfo::versionString; }
|
||||
bool moreThanOneInstanceAllowed() override { return ALLOWMORETHANONEINSTANCE; }
|
||||
|
||||
//==============================================================================
|
||||
void initialise (const String& commandLine) override
|
||||
{
|
||||
// This method is where you should put your application's initialisation code..
|
||||
|
||||
mainWindow = new MainWindow (getApplicationName());
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
// Add your application's shutdown code here..
|
||||
|
||||
mainWindow = nullptr; // (deletes our window)
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void systemRequestedQuit() override
|
||||
{
|
||||
// This is called when the app is being asked to quit: you can ignore this
|
||||
// request and let the app carry on running, or call quit() to allow the app to close.
|
||||
quit();
|
||||
}
|
||||
|
||||
void anotherInstanceStarted (const String& commandLine) override
|
||||
{
|
||||
// When another instance of the app is launched while this one is running,
|
||||
// this method is invoked, and the commandLine parameter tells you what
|
||||
// the other instance's command-line arguments were.
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
This class implements the desktop window that contains an instance of
|
||||
our CONTENTCOMPCLASS class.
|
||||
*/
|
||||
class MainWindow : public DocumentWindow
|
||||
{
|
||||
public:
|
||||
MainWindow (String name) : DocumentWindow (name,
|
||||
Colours::lightgrey,
|
||||
DocumentWindow::allButtons)
|
||||
{
|
||||
setUsingNativeTitleBar (true);
|
||||
setContentOwned (new CONTENTCOMPCLASS(), true);
|
||||
|
||||
centreWithSize (getWidth(), getHeight());
|
||||
setVisible (true);
|
||||
}
|
||||
|
||||
void closeButtonPressed() override
|
||||
{
|
||||
// This is called when the user tries to close this window. Here, we'll just
|
||||
// ask the app to quit when this happens, but you can change this to do
|
||||
// whatever you need.
|
||||
JUCEApplication::getInstance()->systemRequestedQuit();
|
||||
}
|
||||
|
||||
/* Note: Be careful if you override any DocumentWindow methods - the base
|
||||
class uses a lot of them, so by overriding you might break its functionality.
|
||||
It's best to do all your work in your content component instead, but if
|
||||
you really have to override any DocumentWindow methods, make sure your
|
||||
subclass also calls the superclass's method.
|
||||
*/
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow)
|
||||
};
|
||||
|
||||
private:
|
||||
ScopedPointer<MainWindow> mainWindow;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
// This macro generates the main() routine that launches the app.
|
||||
START_JUCE_APPLICATION (APPCLASSNAME)
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FILENAME
|
||||
Created: DATE
|
||||
Author: AUTHOR
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
INCLUDE_JUCE
|
||||
INCLUDE_CORRESPONDING_HEADER
|
||||
|
||||
//==============================================================================
|
||||
COMPONENTCLASS::COMPONENTCLASS()
|
||||
{
|
||||
// In your constructor, you should add any child components, and
|
||||
// initialise any special settings that your component needs.
|
||||
|
||||
}
|
||||
|
||||
COMPONENTCLASS::~COMPONENTCLASS()
|
||||
{
|
||||
}
|
||||
|
||||
void COMPONENTCLASS::paint (Graphics& g)
|
||||
{
|
||||
/* This demo code just fills the component's background and
|
||||
draws some placeholder text to get you started.
|
||||
|
||||
You should replace everything in this method with your own
|
||||
drawing code..
|
||||
*/
|
||||
|
||||
g.fillAll (Colours::white); // clear the background
|
||||
|
||||
g.setColour (Colours::grey);
|
||||
g.drawRect (getLocalBounds(), 1); // draw an outline around the component
|
||||
|
||||
g.setColour (Colours::lightblue);
|
||||
g.setFont (14.0f);
|
||||
g.drawText ("COMPONENTCLASS", getLocalBounds(),
|
||||
Justification::centred, true); // draw some placeholder text
|
||||
}
|
||||
|
||||
void COMPONENTCLASS::resized()
|
||||
{
|
||||
// This method is where you should set the bounds of any child
|
||||
// components that your component contains..
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FILENAME
|
||||
Created: DATE
|
||||
Author: AUTHOR
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef HEADERGUARD
|
||||
#define HEADERGUARD
|
||||
|
||||
INCLUDE_JUCE
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
*/
|
||||
class COMPONENTCLASS : public Component
|
||||
{
|
||||
public:
|
||||
COMPONENTCLASS();
|
||||
~COMPONENTCLASS();
|
||||
|
||||
void paint (Graphics&);
|
||||
void resized();
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS)
|
||||
};
|
||||
|
||||
|
||||
#endif // HEADERGUARD
|
||||
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FILENAME
|
||||
Created: DATE
|
||||
Author: AUTHOR
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
INCLUDE_CORRESPONDING_HEADER
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FILENAME
|
||||
Created: DATE
|
||||
Author: AUTHOR
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef HEADERGUARD
|
||||
#define HEADERGUARD
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // HEADERGUARD
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
FILENAME
|
||||
Created: DATE
|
||||
Author: AUTHOR
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef HEADERGUARD
|
||||
#define HEADERGUARD
|
||||
|
||||
INCLUDE_JUCE
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
*/
|
||||
class COMPONENTCLASS : public Component
|
||||
{
|
||||
public:
|
||||
COMPONENTCLASS()
|
||||
{
|
||||
// In your constructor, you should add any child components, and
|
||||
// initialise any special settings that your component needs.
|
||||
|
||||
}
|
||||
|
||||
~COMPONENTCLASS()
|
||||
{
|
||||
}
|
||||
|
||||
void paint (Graphics& g)
|
||||
{
|
||||
/* This demo code just fills the component's background and
|
||||
draws some placeholder text to get you started.
|
||||
|
||||
You should replace everything in this method with your own
|
||||
drawing code..
|
||||
*/
|
||||
|
||||
g.fillAll (Colours::white); // clear the background
|
||||
|
||||
g.setColour (Colours::grey);
|
||||
g.drawRect (getLocalBounds(), 1); // draw an outline around the component
|
||||
|
||||
g.setColour (Colours::lightblue);
|
||||
g.setFont (14.0f);
|
||||
g.drawText ("COMPONENTCLASS", getLocalBounds(),
|
||||
Justification::centred, true); // draw some placeholder text
|
||||
}
|
||||
|
||||
void resized()
|
||||
{
|
||||
// This method is where you should set the bounds of any child
|
||||
// components that your component contains..
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (COMPONENTCLASS)
|
||||
};
|
||||
|
||||
|
||||
#endif // HEADERGUARD
|
||||
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
This file was auto-generated!
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef MAINCOMPONENT_H_INCLUDED
|
||||
#define MAINCOMPONENT_H_INCLUDED
|
||||
|
||||
INCLUDE_JUCE
|
||||
|
||||
//==============================================================================
|
||||
/*
|
||||
This component lives inside our window, and this is where you should put all
|
||||
your controls and content.
|
||||
*/
|
||||
class MainContentComponent : public OpenGLAppComponent
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
MainContentComponent()
|
||||
{
|
||||
setSize (800, 600);
|
||||
}
|
||||
|
||||
~MainContentComponent()
|
||||
{
|
||||
shutdownOpenGL();
|
||||
}
|
||||
|
||||
void initialise() override
|
||||
{
|
||||
}
|
||||
|
||||
void shutdown() override
|
||||
{
|
||||
}
|
||||
|
||||
void render() override
|
||||
{
|
||||
OpenGLHelpers::clear (Colours::black);
|
||||
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
// You can add your component specific drawing code here!
|
||||
// This will draw over the top of the openGL background.
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
// This is called when the MainContentComponent is resized.
|
||||
// If you add any child components, this is where you should
|
||||
// update their positions.
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
|
||||
// private member variables
|
||||
|
||||
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
|
||||
};
|
||||
|
||||
|
||||
// (This function is called by the app startup code to create our main component)
|
||||
Component* createMainContentComponent() { return new MainContentComponent(); }
|
||||
|
||||
|
||||
#endif // MAINCOMPONENT_H_INCLUDED
|
||||
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<g id="Layer_1_18_">
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="67.5"/>
|
||||
</g>
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29300" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="2.4"/>
|
||||
<circle fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" cx="80.3" cy="45" r="20.8"/>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M97.8,40.1c0.9,3.2,0,8-2.1,8.3
|
||||
c-2,0.2-10.5-2.2-14.8-3.6c2.9-3.4,8.9-10,10.8-10.8C93.5,33.2,96.9,36.9,97.8,40.1z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M93.3,57.7c-2.3,2.4-7,4-8.2,2.4
|
||||
c-1.2-1.6-3.4-10.2-4.3-14.6c4.4,0.8,13.1,2.8,14.7,4C97.2,50.5,95.6,55.3,93.3,57.7z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M75.7,62.6c-3.2-0.8-7-4.1-6.1-6
|
||||
c0.8-1.9,7.2-8,10.5-11.1c1.5,4.3,4.1,12.7,3.9,14.8C83.9,62.4,79,63.4,75.7,62.6z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M62.9,49.9c-0.9-3.2,0-8,2.1-8.3
|
||||
c2-0.2,10.5,2.2,14.8,3.6c-2.9,3.4-8.9,10-10.8,10.8C67.2,56.8,63.8,53.1,62.9,49.9z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M67.4,32.3c2.3-2.4,7-4,8.2-2.4
|
||||
c1.2,1.6,3.4,10.2,4.3,14.6c-4.4-0.8-13.1-2.8-14.7-4C63.5,39.4,65.1,34.7,67.4,32.3z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M84.8,27.4c3.2,0.8,7,4.1,6.1,6
|
||||
c-0.8,1.9-7.2,8-10.5,11.1c-1.5-4.3-4.1-12.7-3.9-14.8C76.7,27.6,81.6,26.6,84.8,27.4z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9
|
||||
C0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z"/>
|
||||
<path opacity="0.8" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M62.6,61.4
|
||||
c-9.1-9.1-9.1-23.7,0-32.8"/>
|
||||
<path opacity="0.5" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M55.9,57.3
|
||||
c-4.7-7.4-4.7-16.9-0.1-24.4"/>
|
||||
<line opacity="0.7" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" x1="57.7" y1="41.5" x2="37.8" y2="41.5"/>
|
||||
<line opacity="0.7" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" x1="57.7" y1="48.4" x2="34.2" y2="48.4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9
|
||||
C0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z"/>
|
||||
<rect x="16.5" y="10.9" fill="none" stroke="#F29300" stroke-width="1.3412" stroke-miterlimit="10" width="102.7" height="2.4"/>
|
||||
<rect x="16.5" y="10.9" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="102.9" height="67.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="17.1" y1="43.8" x2="17.1" y2="44.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="18.8" y1="43.6" x2="18.8" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="20.4" y1="43.8" x2="20.4" y2="44.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="22.1" y1="43.6" x2="22.1" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="23.8" y1="43.1" x2="23.8" y2="45.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="25.4" y1="42.3" x2="25.4" y2="46"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="27.1" y1="43.9" x2="27.1" y2="44.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="28.8" y1="43.3" x2="28.8" y2="45"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="30.4" y1="29.3" x2="30.4" y2="59"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="32.1" y1="40.9" x2="32.1" y2="47.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="33.8" y1="42.7" x2="33.8" y2="45.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="35.4" y1="36.6" x2="35.4" y2="51.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="37.1" y1="33.3" x2="37.1" y2="55.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="38.8" y1="42.6" x2="38.8" y2="45.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="40.4" y1="37.4" x2="40.4" y2="50.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="42.1" y1="27.4" x2="42.1" y2="60.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="43.8" y1="39.3" x2="43.8" y2="49"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="45.4" y1="41.1" x2="45.4" y2="47.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="47.1" y1="42.6" x2="47.1" y2="45.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="48.8" y1="36.2" x2="48.8" y2="52.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="50.4" y1="42.5" x2="50.4" y2="45.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="52.1" y1="39.3" x2="52.1" y2="49"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="53.8" y1="34.8" x2="53.8" y2="53.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="55.4" y1="42.2" x2="55.4" y2="46.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="57.1" y1="41" x2="57.1" y2="47.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="58.8" y1="35.4" x2="58.8" y2="53"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="60.4" y1="32.6" x2="60.4" y2="55.8"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="62.1" y1="37.4" x2="62.1" y2="50.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="63.8" y1="38.1" x2="63.8" y2="50.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="65.4" y1="42.2" x2="65.4" y2="46.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="67.1" y1="38.9" x2="67.1" y2="49.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="68.8" y1="43.6" x2="68.8" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="70.4" y1="41.4" x2="70.4" y2="47"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="72.1" y1="39" x2="72.1" y2="49.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="73.8" y1="40.9" x2="73.8" y2="47.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="75.4" y1="40.6" x2="75.4" y2="47.8"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="77.1" y1="38.4" x2="77.1" y2="49.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="78.8" y1="42" x2="78.8" y2="46.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="80.4" y1="42.2" x2="80.4" y2="46.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="82.1" y1="43.6" x2="82.1" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="83.8" y1="42.6" x2="83.8" y2="45.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="85.4" y1="43.3" x2="85.4" y2="45"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="87.1" y1="39.9" x2="87.1" y2="48.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="88.8" y1="42.9" x2="88.8" y2="45.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="90.4" y1="43.6" x2="90.4" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="92.1" y1="43.6" x2="92.1" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="93.8" y1="42.7" x2="93.8" y2="45.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="95.4" y1="41.1" x2="95.4" y2="47.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="97.1" y1="42.7" x2="97.1" y2="45.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="98.8" y1="43.6" x2="98.8" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="100.4" y1="43.1" x2="100.4" y2="45.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="102.1" y1="43.6" x2="102.1" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="103.8" y1="42" x2="103.8" y2="46.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="105.4" y1="43.6" x2="105.4" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="107.1" y1="43.8" x2="107.1" y2="44.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="108.8" y1="43.6" x2="108.8" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="110.4" y1="43.6" x2="110.4" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="112.1" y1="42.6" x2="112.1" y2="45.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="113.8" y1="43.1" x2="113.8" y2="45.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="115.4" y1="43.6" x2="115.4" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="117.1" y1="43.8" x2="117.1" y2="44.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="118.8" y1="43.8" x2="118.8" y2="44.5"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.6 KiB |
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<g id="Layer_1_23_">
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="67.5"/>
|
||||
</g>
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29300" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="2.4"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9
|
||||
C0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z"/>
|
||||
<g id="Layer_1_8_">
|
||||
<rect x="35.7" y="23.6" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="64.4" height="42.3"/>
|
||||
</g>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="36" y1="44.1" x2="36" y2="44.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="37.1" y1="44" x2="37.1" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="38.1" y1="44.1" x2="38.1" y2="44.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="39.2" y1="44" x2="39.2" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="40.2" y1="43.7" x2="40.2" y2="45"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="41.3" y1="43.2" x2="41.3" y2="45.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="42.3" y1="44.2" x2="42.3" y2="44.5"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="43.3" y1="43.8" x2="43.3" y2="44.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="44.4" y1="35.1" x2="44.4" y2="53.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="45.4" y1="42.3" x2="45.4" y2="46.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="46.5" y1="43.4" x2="46.5" y2="45.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="47.5" y1="39.6" x2="47.5" y2="49.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="48.6" y1="37.5" x2="48.6" y2="51.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="49.6" y1="43.4" x2="49.6" y2="45.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="50.6" y1="40.1" x2="50.6" y2="48.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="51.7" y1="33.9" x2="51.7" y2="54.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="52.7" y1="41.3" x2="52.7" y2="47.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="53.8" y1="42.5" x2="53.8" y2="46.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="54.8" y1="43.4" x2="54.8" y2="45.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="55.9" y1="39.4" x2="55.9" y2="49.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="56.9" y1="43.3" x2="56.9" y2="45.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="57.9" y1="41.3" x2="57.9" y2="47.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="59" y1="38.5" x2="59" y2="50.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="60" y1="43.1" x2="60" y2="45.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="61.1" y1="42.4" x2="61.1" y2="46.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="62.1" y1="38.8" x2="62.1" y2="49.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="63.2" y1="37.1" x2="63.2" y2="51.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="64.2" y1="40.1" x2="64.2" y2="48.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="65.2" y1="40.6" x2="65.2" y2="48.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="66.3" y1="43.1" x2="66.3" y2="45.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="67.3" y1="41.1" x2="67.3" y2="47.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="68.4" y1="44" x2="68.4" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="69.4" y1="42.6" x2="69.4" y2="46.1"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="70.5" y1="41.1" x2="70.5" y2="47.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="71.5" y1="42.3" x2="71.5" y2="46.4"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="72.5" y1="42.1" x2="72.5" y2="46.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="73.6" y1="40.8" x2="73.6" y2="47.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="74.6" y1="43" x2="74.6" y2="45.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="75.7" y1="43.1" x2="75.7" y2="45.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="76.7" y1="44" x2="76.7" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="77.8" y1="43.4" x2="77.8" y2="45.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="78.8" y1="43.8" x2="78.8" y2="44.9"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="79.9" y1="41.7" x2="79.9" y2="47"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="80.9" y1="43.6" x2="80.9" y2="45.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="81.9" y1="44" x2="81.9" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="83" y1="44" x2="83" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="84" y1="43.4" x2="84" y2="45.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="85.1" y1="42.5" x2="85.1" y2="46.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="86.1" y1="43.5" x2="86.1" y2="45.2"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="87.2" y1="44" x2="87.2" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="88.2" y1="43.7" x2="88.2" y2="45"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="89.2" y1="44" x2="89.2" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="90.3" y1="43" x2="90.3" y2="45.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="91.3" y1="44" x2="91.3" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="92.4" y1="44.2" x2="92.4" y2="44.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="93.4" y1="44" x2="93.4" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="94.5" y1="44" x2="94.5" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="95.5" y1="43.4" x2="95.5" y2="45.3"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="96.5" y1="43.7" x2="96.5" y2="45"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="97.6" y1="44" x2="97.6" y2="44.7"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="98.6" y1="44.2" x2="98.6" y2="44.6"/>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-linecap="round" stroke-miterlimit="10" x1="99.7" y1="44.2" x2="99.7" y2="44.6"/>
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-miterlimit="10" x1="16.3" y1="35.1" x2="35.8" y2="35.1"/>
|
||||
<g>
|
||||
<circle fill="#F29300" cx="35.7" cy="35.1" r="1.7"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-miterlimit="10" x1="16.3" y1="54.4" x2="35.8" y2="54.4"/>
|
||||
<g>
|
||||
<circle fill="#F29300" cx="35.7" cy="54.4" r="1.7"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-miterlimit="10" x1="119.7" y1="54.4" x2="100.2" y2="54.4"/>
|
||||
<g>
|
||||
<circle fill="#F29300" cx="100.3" cy="54.4" r="1.7"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29300" stroke-width="1.5" stroke-miterlimit="10" x1="119.7" y1="35.1" x2="100.2" y2="35.1"/>
|
||||
<g>
|
||||
<circle fill="#F29300" cx="100.3" cy="35.1" r="1.7"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9
|
||||
C0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z"/>
|
||||
<g id="Layer_1_22_">
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="102.9" height="67.5"/>
|
||||
</g>
|
||||
<g id="Layer_3_3_">
|
||||
<g opacity="0.8">
|
||||
<path fill="#F29300" d="M40.6,28.3l-14.4-6.6v-2.3l17.3,7.8v2.1l-17.3,7.8v-2.3L40.6,28.3z"/>
|
||||
<path fill="#F29300" d="M62,39.5v1.7H45v-1.7H62z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#F29300" d="M40.6,28.3l-14.4-6.6v-2.3l17.3,7.8v2.1l-17.3,7.8v-2.3L40.6,28.3z"/>
|
||||
<path fill="#F29300" d="M62,39.5v1.7H45v-1.7H62z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.9H6.9c-3.8,0-6.9-3.1-6.9-6.9V7
|
||||
c0-3.8,3.1-6.9,6.9-6.9H130c3.8,0,6.9,3.1,6.9,6.9V108C136.9,111.8,133.9,114.9,130,114.9z"/>
|
||||
<g id="Layer_1_19_">
|
||||
<rect x="16.3" y="11" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="102.9" height="67.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="39.6" y1="25" x2="39.6" y2="62.3"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="41.2" y1="25" x2="41.2" y2="62.3"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="42.8" y1="25" x2="42.8" y2="62.3"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="44.5" y1="25" x2="44.5" y2="62.3"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="46.1" y1="25" x2="46.1" y2="62.3"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="47.7" y1="25" x2="47.7" y2="62.3"/>
|
||||
</g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.0853" stroke-miterlimit="10" d="M49.9,23.9v38.6c0,0.9-0.7,1.6-1.6,1.6H39
|
||||
c-0.9,0-1.6-0.7-1.6-1.6V23.9"/>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="54.8" y1="27.5" x2="67.4" y2="62.6"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="56.3" y1="27" x2="69" y2="62"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="57.8" y1="26.4" x2="70.5" y2="61.5"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="59.4" y1="25.9" x2="72.1" y2="60.9"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="60.9" y1="25.3" x2="73.6" y2="60.4"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="62.4" y1="24.8" x2="75.1" y2="59.8"/>
|
||||
</g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.0853" stroke-miterlimit="10" d="M64.1,23l13.1,36.3c0.3,0.8-0.1,1.7-0.9,2
|
||||
l-8.8,3.2c-0.8,0.3-1.7-0.1-2-0.9L52.4,27.2"/>
|
||||
<g>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="72.5" y1="30.6" x2="93.5" y2="61.4"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="73.8" y1="29.7" x2="94.9" y2="60.5"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="75.2" y1="28.8" x2="96.2" y2="59.6"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="76.5" y1="27.9" x2="97.6" y2="58.6"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="77.9" y1="27" x2="98.9" y2="57.7"/>
|
||||
<line fill="none" stroke="#F29100" stroke-width="0.4307" stroke-miterlimit="10" x1="79.2" y1="26" x2="100.3" y2="56.8"/>
|
||||
</g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.0853" stroke-miterlimit="10" d="M80.4,23.9l21.8,31.9c0.5,0.7,0.3,1.7-0.4,2.2
|
||||
l-7.7,5.3c-0.7,0.5-1.7,0.3-2.2-0.4L70.1,31"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="67.5"/>
|
||||
<path fill="none" stroke="#F29300" stroke-width="0.7078" stroke-miterlimit="10" d="M55.2,62.5H23.4c-0.4,0-0.7-0.4-0.7-0.9l0,0
|
||||
c0-0.5,0.3-0.9,0.7-0.9h31.8c0.4,0,0.7,0.4,0.7,0.9l0,0C55.9,62.1,55.5,62.5,55.2,62.5z"/>
|
||||
<path fill="#F29300" d="M38.1,62.5H23.4c-0.4,0-0.7-0.4-0.7-0.9l0,0c0-0.5,0.3-0.9,0.7-0.9h14.7c0.4,0,0.7,0.4,0.7,0.9l0,0
|
||||
C38.7,62.1,38.4,62.5,38.1,62.5z"/>
|
||||
<path fill="none" stroke="#F29300" stroke-width="0.7078" stroke-miterlimit="10" d="M55.2,67.8H23.4c-0.4,0-0.7-0.4-0.7-0.9l0,0
|
||||
c0-0.5,0.3-0.9,0.7-0.9h31.8c0.4,0,0.7,0.4,0.7,0.9l0,0C55.9,67.4,55.5,67.8,55.2,67.8z"/>
|
||||
<path fill="#F29300" d="M44.2,67.8H23.4c-0.4,0-0.7-0.4-0.7-0.9l0,0c0-0.5,0.3-0.9,0.7-0.9h20.8c0.4,0,0.7,0.4,0.7,0.9l0,0
|
||||
C44.8,67.4,44.6,67.8,44.2,67.8z"/>
|
||||
<path fill="none" stroke="#F29300" stroke-width="0.7078" stroke-miterlimit="10" d="M55.2,73H23.4c-0.4,0-0.7-0.4-0.7-0.9l0,0
|
||||
c0-0.5,0.3-0.9,0.7-0.9h31.8c0.4,0,0.7,0.4,0.7,0.9l0,0C55.9,72.6,55.5,73,55.2,73z"/>
|
||||
<path fill="#F29300" d="M49.4,73h-26c-0.4,0-0.7-0.4-0.7-0.9l0,0c0-0.5,0.3-0.9,0.7-0.9h26c0.4,0,0.7,0.4,0.7,0.9l0,0
|
||||
C50.1,72.6,49.8,73,49.4,73z"/>
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29300" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="2.4"/>
|
||||
<circle fill="none" stroke="#F29300" stroke-width="1.3469" stroke-miterlimit="10" cx="69.3" cy="39.6" r="13.9"/>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29300" stroke-width="1.2523" stroke-miterlimit="10" d="M79.8,33.5c1.1,1.9,1.3,5.2,0,5.7
|
||||
c-1.3,0.5-7.2,0.3-10.2,0.2c1.3-2.7,4.1-7.9,5.2-8.8C75.9,29.7,78.7,31.6,79.8,33.5z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29300" stroke-width="1.2523" stroke-miterlimit="10" d="M79.8,45.6c-1.1,1.9-3.8,3.7-4.9,2.9
|
||||
c-1.1-0.9-3.9-6.1-5.2-8.8c3-0.2,8.9-0.4,10.2,0.1C81.2,40.4,80.9,43.7,79.8,45.6z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29300" stroke-width="1.2523" stroke-miterlimit="10" d="M69.3,51.7c-2.2,0-5.2-1.5-5-2.8
|
||||
s3.3-6.4,5-8.9c1.7,2.5,4.8,7.5,5,8.9S71.5,51.7,69.3,51.7z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29300" stroke-width="1.2523" stroke-miterlimit="10" d="M58.9,45.6c-1.1-1.9-1.3-5.2,0-5.7
|
||||
c1.3-0.5,7.2-0.3,10.2-0.2c-1.3,2.7-4.1,7.9-5.2,8.8C62.8,49.4,60,47.6,58.9,45.6z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29300" stroke-width="1.2523" stroke-miterlimit="10" d="M58.9,33.5c1.1-1.9,3.8-3.7,4.9-2.9
|
||||
c1.1,0.9,3.9,6.1,5.2,8.8c-3,0.2-8.9,0.4-10.2-0.1C57.5,38.8,57.8,35.5,58.9,33.5z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="none" stroke="#F29300" stroke-width="1.2523" stroke-miterlimit="10" d="M69.3,27.5c2.2,0,5.2,1.5,5,2.8
|
||||
s-3.3,6.4-5,8.9c-1.7-2.5-4.8-7.5-5-8.9S67.1,27.5,69.3,27.5z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9
|
||||
C0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<path opacity="0.2" fill="#F29300" d="M130.1,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9C0,3.1,3.1,0,6.9,0h123.2c3.8,0,6.9,3.1,6.9,6.9
|
||||
V108C136.9,111.8,133.9,114.8,130.1,114.8z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 638 B |
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 136.9 114.8" enable-background="new 0 0 136.9 114.8" xml:space="preserve">
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="67.5"/>
|
||||
<rect x="16.3" y="10.9" fill="none" stroke="#F29300" stroke-width="1.3469" stroke-miterlimit="10" width="103.6" height="2.4"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M75.8,31.5c8.7,4.7,14.8,13.2,13.5,20
|
||||
c-1.6,8.5-13.8,11.4-26.8,4.3S45.3,36.9,51.6,30.9C56.7,26.1,67.1,26.7,75.8,31.5z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M86.1,43.6c1,2.4,0.5,5.5-1.3,5
|
||||
c-1.9-0.5-9.8-5-13.8-7.4c2.9-1.2,8.2-3.2,9.8-3.2C82.2,38.2,85.2,41.4,86.1,43.6z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M83,55.3c-2.3,1.3-7.3,1.2-8.6-0.7
|
||||
c-1.2-1.9-2.9-9.5-3.5-12.9c4.2,2.1,12.2,6.3,13.8,7.7C86.3,50.7,85.2,54,83,55.3z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M63.6,53.5c-3.6-2-7.3-6.3-5.9-7.6
|
||||
c1.3-1.2,9-3.5,12.5-4.4c1.2,3.5,3.4,11.2,3.1,13C73,56.3,67.3,55.5,63.6,53.5z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M51.9,38.3c-0.1-2.5,2-5.2,4.1-4.6
|
||||
c2.1,0.6,9.9,5.1,13.9,7.5c-3.2,1.3-10.5,4.1-12.8,4.1C54.9,45.1,52,40.9,51.9,38.3z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M60,29.3c2.4-0.4,6.6,0.3,7.5,1.5
|
||||
c0.9,1.2,2.1,6.8,2.6,9.9c-4.2-2.1-12.3-6.3-13.7-7.6C55,31.8,57.4,29.8,60,29.3z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M75.2,32.5c2.5,1.4,5.6,4.3,5,5
|
||||
c-0.7,0.8-6.3,2.5-9.5,3.3c-1.1-3.2-2.7-8.9-2.4-9.9C68.6,30,72.6,31.1,75.2,32.5z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M130,114.8H6.9c-3.8,0-6.9-3.1-6.9-6.9V6.9
|
||||
C0,3.1,3.1,0,6.9,0H130c3.8,0,6.9,3.1,6.9,6.9v101.1C136.9,111.7,133.9,114.8,130,114.8z"/>
|
||||
<path fill="none" stroke="#F29100" stroke-width="1.3469" stroke-miterlimit="10" d="M87.4,55.5c-6.6,10.4-20.4,14.6-30.8,8
|
||||
s-13.4-19.6-6.9-30"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |