| @@ -43,6 +43,7 @@ ifeq ($(CONFIG),Release) | |||
| endif | |||
| OBJECTS := \ | |||
| $(OBJDIR)/jucer_AppearanceSettings_788d9889.o \ | |||
| $(OBJDIR)/jucer_CommandLine_f35de107.o \ | |||
| $(OBJDIR)/jucer_DocumentEditorComponent_695dff1d.o \ | |||
| $(OBJDIR)/jucer_FilePreviewComponent_55512f53.o \ | |||
| @@ -92,6 +93,11 @@ clean: | |||
| -@rm -rf $(OBJDIR)/* | |||
| -@rm -rf $(OBJDIR) | |||
| $(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" | |||
| @@ -12,6 +12,7 @@ | |||
| 11D42F7EC6E6539D79A7F4B1 = { isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; }; | |||
| B980464FA2761CCD64B1FAD6 = { isa = PBXBuildFile; fileRef = CF6C8BD0DA3D8CD4E99EBADA; }; | |||
| 1321E6C1C6170B6C898AD09D = { isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; }; | |||
| 357A6AA6960EF95D92929BEE = { isa = PBXBuildFile; fileRef = 441CFEA771BAA50E187342E9; }; | |||
| 954A036F5DDB375DB23FFB3E = { isa = PBXBuildFile; fileRef = 0400CB0E056A1D840304D2DE; }; | |||
| 3EB3D569250C4BA4CA9AF578 = { isa = PBXBuildFile; fileRef = C7608A3967D9AB9481848F2B; }; | |||
| 9A4D477F1924C31A52AF5C79 = { isa = PBXBuildFile; fileRef = F2FA27430D90E92F0C9EBEDF; }; | |||
| @@ -152,6 +153,7 @@ | |||
| 21FAFA7F2C5D0E8D99876EA8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Direct2DGraphicsContext.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_Direct2DGraphicsContext.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 2210EB5F41023B53ADD0DFBD = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | |||
| 221C1BAC4138F261F97121AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GIFLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_GIFLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 223C4209F18A221EB183A056 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_AppearanceSettings.h"; path = "../../Source/Application/jucer_AppearanceSettings.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| 2247EE920DF0610CAF9F4513 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_OpenDocumentManager.cpp"; path = "../../Source/Application/jucer_OpenDocumentManager.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 2252F2B96709F3C7CE07B5E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Application.h"; path = "../../../../modules/juce_gui_basics/application/juce_Application.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| 225414095942818432AAE07D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -231,6 +233,7 @@ | |||
| 430239E0574C157689D83206 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CodeDocument.h"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| 43B98AB307841FAAB076B882 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Justification.cpp"; path = "../../../../modules/juce_graphics/placement/juce_Justification.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 441A0EA83E44264CB977F21B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_mac_CarbonViewWrapperComponent.h"; path = "../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| 441CFEA771BAA50E187342E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_AppearanceSettings.cpp"; path = "../../Source/Application/jucer_AppearanceSettings.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 442031AD0C8A280B68CE9EF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ResizableCornerComponent.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 4437785A3DFF4AB2D6A78DB3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_StretchableLayoutResizerBar.cpp"; path = "../../../../modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 444CA4B9CAD1F5ED5C45448B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ToolbarItemPalette.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -559,7 +562,6 @@ | |||
| BA5C7DE347A73A87F687703C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandTarget.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BA95268EEE80F9509EC1F76F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileBasedDocument.h"; path = "../../../../modules/juce_gui_extra/documents/juce_FileBasedDocument.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BAC43B20E14A340CCF14119C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_Project.cpp"; path = "../../Source/Project/jucer_Project.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| BBA6060656F685ED7FA52045 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewTypes.h"; path = "../../Source/Project/jucer_TreeViewTypes.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BC17B02633EF1E31024051C2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_CodeDocument.cpp"; path = "../../../../modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| BCAD13352CE76BA81629A6E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DrawableText.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableText.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BD7C18F07DE633B97B4478E7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -599,9 +601,7 @@ | |||
| C7E19F79947BEFC7DB7A9CE7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_GlowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_GlowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| C83992DA0BE30EA3CD06EA98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ProgressBar.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ProgressBar.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C85B4D62B96F4A44890F20E2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SortedSet.h"; path = "../../../../modules/juce_core/containers/juce_SortedSet.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C8A229ACD244F402C57286CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C90C66C5727759D5CBD5FB07 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AbstractFifo.cpp"; path = "../../../../modules/juce_core/containers/juce_AbstractFifo.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| C9616830BB2474066AC8C910 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C9871C46DEDD05103443DC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_NewLine.h"; path = "../../../../modules/juce_core/text/juce_NewLine.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C9DCA94BF8A4C583E5392755 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MultiTimer.cpp"; path = "../../../../modules/juce_events/timers/juce_MultiTimer.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| CA62F9F7C5F0D77D8E33D91F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SplashScreen.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SplashScreen.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -619,54 +619,54 @@ | |||
| CE1DFE4E3908943656E180AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_UnitTest.cpp"; path = "../../../../modules/juce_core/unit_tests/juce_UnitTest.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| CF0615A1AF1A514A60322B50 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MouseCursor.h"; path = "../../../../modules/juce_gui_basics/mouse/juce_MouseCursor.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| CF6C8BD0DA3D8CD4E99EBADA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; | |||
| CF8011B3C67B609032974DA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D00F311BFC3C2625C457CB9B = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; | |||
| D0F1614CC861E8E0B59B7A06 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Messaging.cpp"; path = "../../../../modules/juce_events/native/juce_linux_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D10D51A0A2D63F38B4D86A60 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D141433D3FE81F20490DE928 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Desktop.h"; path = "../../../../modules/juce_gui_basics/components/juce_Desktop.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D1F9B0E9F5D54FE48BEB46EA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; | |||
| D253F74B7F5734984E568CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Files.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D2F1CF252F7EC62B35A21CB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D2F80DA0946A5EE01FC016CA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D376B9B54EC944E766AFEC45 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PopupMenu.cpp"; path = "../../../../modules/juce_gui_basics/menus/juce_PopupMenu.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D4697A0232AECE5DAC5E332E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChoicePropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D4E56676E2EF83404EDCBA8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D4F2D42C58F4D86E00E76F31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandID.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandID.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D503780AB98993E8F0BA1311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D5057D7B18ABD5E810A6F830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D53B54D1786A1FFC024BF064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_cryptography.mm"; path = "../../../../modules/juce_cryptography/juce_cryptography.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| D5A6D00DEFDC650AF432A698 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Initialisation.h"; path = "../../../../modules/juce_gui_basics/application/juce_Initialisation.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D678882D133090214AF681BC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ThreadLocalValue.h"; path = "../../../../modules/juce_core/threads/juce_ThreadLocalValue.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D6C91E2BF537F75A80F5C1DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D75EAC16FAECCC51E3669193 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ApplicationCommandInfo.h"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D780ED33573AED5AD383A036 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CaretComponent.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_CaretComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D782DA091AD3ECE158FC6A5F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ButtonPropertyComponent.h"; path = "../../../../modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D800DE818BEDBF4579D15B1D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_AppleRemote.mm"; path = "../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| D926E13AB5AD647A7A00F486 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Network.cpp"; path = "../../../../modules/juce_core/native/juce_linux_Network.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D9342535EA61901A1AD816C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| DC5E7FF30B01118F6DAEC38F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Time.cpp"; path = "../../../../modules/juce_core/time/juce_Time.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DF7BB5B6B394EDEEF5F5B4B8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DCCB75165B7C73A589498E87 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DD2494D5F1C081898D616AF5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DD985A60FB76E976AF91852D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DE5F3C9EF6BFFDE73AF9E7FC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E5D6C36496F5BC84D7213BE8 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; | |||
| E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E7F7033084AC10FB77B0F77A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ConfigPage.cpp"; path = "../../Source/Project/jucer_ConfigPage.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E96597BBC6A98255B51B94DC = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; | |||
| 25F52316D256B4534BED16D1 = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Introjucer.app; sourceTree = "BUILT_PRODUCTS_DIR"; }; | |||
| CF8011B3C67B609032974DA5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_NewCppFileTemplate.cpp"; path = "../../Source/BinaryData/jucer_NewCppFileTemplate.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D2F1CF252F7EC62B35A21CB6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DropShadowEffect.cpp"; path = "../../../../modules/juce_graphics/effects/juce_DropShadowEffect.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D2F80DA0946A5EE01FC016CA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D526C38D581425949BA0E4AC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_FilePreviewComponent.h"; path = "../../Source/Application/jucer_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BBA6060656F685ED7FA52045 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_TreeViewTypes.h"; path = "../../Source/Project/jucer_TreeViewTypes.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C8A229ACD244F402C57286CD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectExport_MSVC.h"; path = "../../Source/Project Saving/jucer_ProjectExport_MSVC.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C9616830BB2474066AC8C910 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ResourceFile.h"; path = "../../Source/Project Saving/jucer_ResourceFile.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D10D51A0A2D63F38B4D86A60 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ResourceFile.cpp"; path = "../../Source/Project Saving/jucer_ResourceFile.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D4E56676E2EF83404EDCBA8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_TextEditor.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_TextEditor.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D503780AB98993E8F0BA1311 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ImageComponent.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_ImageComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D5057D7B18ABD5E810A6F830 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_DirectWriteTypeface.cpp"; path = "../../../../modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D6C91E2BF537F75A80F5C1DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ListBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ListBox.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D7A7F1AA9F313B0CCAAA73A0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MathsFunctions.h"; path = "../../../../modules/juce_core/maths/juce_MathsFunctions.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D9342535EA61901A1AD816C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| D95D7B49EC6C6BDCB5A1B988 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_MessageManager.mm"; path = "../../../../modules/juce_events/native/juce_ios_MessageManager.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| D9B077E2ECDDA94961E134D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringPairArray.h"; path = "../../../../modules/juce_core/text/juce_StringPairArray.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| D9E59DE07A815AB303A297D9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_data_structures.mm"; path = "../../../../modules/juce_data_structures/juce_data_structures.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| DB20268A566DABEAE3F2CBEE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RectanglePlacement.cpp"; path = "../../../../modules/juce_graphics/placement/juce_RectanglePlacement.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DB876F7873F42DC685A58CA7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_JPEGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_JPEGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DCCB75165B7C73A589498E87 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_Windowing.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DD00494140C86144306A9356 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Array.h"; path = "../../../../modules/juce_core/containers/juce_Array.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DD2494D5F1C081898D616AF5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KeyListener.cpp"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DD985A60FB76E976AF91852D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DE40B42B57F29C650CB7F2AD = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_RecentlyOpenedFilesList.h"; path = "../../../../modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DE5F3C9EF6BFFDE73AF9E7FC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DirectoryContentsDisplayComponent.cpp"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DE8DF5D263F40F65581CFDE4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DEF579B1433EB8DEE7AB50F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Drawable.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| DF7BB5B6B394EDEEF5F5B4B8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CallbackMessage.h"; path = "../../../../modules/juce_events/messages/juce_CallbackMessage.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DFC6364D81D9C60BD4CA9D12 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeTime.cpp"; path = "../../../../modules/juce_core/time/juce_RelativeTime.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E07C56267CBB46FC44EF2026 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Image.cpp"; path = "../../../../modules/juce_graphics/images/juce_Image.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E1C16C872E34BCB144B469F9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -680,10 +680,12 @@ | |||
| E530742870F07704E9616358 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ToolbarItemComponent.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E54D0994D31E20A0A05EBA2B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SystemTrayIconComponent.h"; path = "../../../../modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E570E57CC1FCEF78B54A7084 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileOutputStream.h"; path = "../../../../modules/juce_core/files/juce_FileOutputStream.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E60E28D1B7491047DEA236AE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_ProjectContentComponent.h"; path = "../../Source/Project/jucer_ProjectContentComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E642193A9990C48CFB6479A9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FileListComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FileListComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E654E3A3CD45A888C5F773DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MenuBarModel.h"; path = "../../../../modules/juce_gui_basics/menus/juce_MenuBarModel.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E65A820D34BF39478B7C5925 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "jucer_DocumentEditorComponent.h"; path = "../../Source/Application/jucer_DocumentEditorComponent.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E6F5CEC32EDC917B054467EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ReadWriteLock.cpp"; path = "../../../../modules/juce_core/threads/juce_ReadWriteLock.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E70CA21960A64CCB835725FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ProjectType.cpp"; path = "../../Source/Project/jucer_ProjectType.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E73C7E17116F6085765622E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E7A4604F766ABC8BE26C94A1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RelativeParallelogram.cpp"; path = "../../../../modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E7B6A0CBA0D27A095E83F5B7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_WebBrowserComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -691,6 +693,7 @@ | |||
| E7E122AE104E79BB641B07B3 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_data_structures/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | |||
| E7E1C4F416CFA44BE7DD1A74 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KeyboardFocusTraverser.h"; path = "../../../../modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| E7E1D60BC7AEF79AA7B65B7C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_String.cpp"; path = "../../../../modules/juce_core/text/juce_String.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E7F7033084AC10FB77B0F77A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "jucer_ConfigPage.cpp"; path = "../../Source/Project/jucer_ConfigPage.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E82C9EF1A74D867BBFF2090D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_RSAKey.cpp"; path = "../../../../modules/juce_cryptography/encryption/juce_RSAKey.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E99F5A31373E9BDEAC40792F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_FileChooser.cpp"; path = "../../../../modules/juce_gui_basics/native/juce_android_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E9B8C3CA480AE94BEA852EA9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_ios_Windowing.mm"; path = "../../../../modules/juce_gui_basics/native/juce_ios_Windowing.mm"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -748,6 +751,8 @@ | |||
| FF10E9B389909FB45E229D5B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ComboBox.h"; path = "../../../../modules/juce_gui_basics/widgets/juce_ComboBox.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| FF1F954094B14C1900C9495D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| ACBAFA7D92DD82AD44ABE68A = { isa = PBXGroup; children = ( | |||
| 441CFEA771BAA50E187342E9, | |||
| 223C4209F18A221EB183A056, | |||
| EE690110171E1648FF2118B8, | |||
| 23A8DE16C0CDB8EED18B008B, | |||
| 0400CB0E056A1D840304D2DE, | |||
| @@ -1678,6 +1683,7 @@ | |||
| C009859650B4628FDD068941 = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( | |||
| 1321E6C1C6170B6C898AD09D ); runOnlyForDeploymentPostprocessing = 0; }; | |||
| 84449D044096A03F2582904B = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( | |||
| 357A6AA6960EF95D92929BEE, | |||
| 954A036F5DDB375DB23FFB3E, | |||
| 3EB3D569250C4BA4CA9AF578, | |||
| 9A4D477F1924C31A52AF5C79, | |||
| @@ -130,6 +130,8 @@ | |||
| <Files> | |||
| <Filter Name="The Introjucer"> | |||
| <Filter Name="Application"> | |||
| <File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.cpp"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.h"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_Application.h"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_CommandIDs.h"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/> | |||
| @@ -130,6 +130,8 @@ | |||
| <Files> | |||
| <Filter Name="The Introjucer"> | |||
| <Filter Name="Application"> | |||
| <File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.cpp"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_AppearanceSettings.h"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_Application.h"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_CommandIDs.h"/> | |||
| <File RelativePath="..\..\Source\Application\jucer_CommandLine.cpp"/> | |||
| @@ -126,6 +126,7 @@ | |||
| </Bscmake> | |||
| </ItemDefinitionGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\Application\jucer_AppearanceSettings.cpp"/> | |||
| <ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"/> | |||
| <ClCompile Include="..\..\Source\Application\jucer_DocumentEditorComponent.cpp"/> | |||
| <ClCompile Include="..\..\Source\Application\jucer_FilePreviewComponent.cpp"/> | |||
| @@ -965,6 +966,7 @@ | |||
| <ClCompile Include="..\..\..\..\modules\juce_gui_extra\juce_gui_extra.cpp"/> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\Application\jucer_AppearanceSettings.h"/> | |||
| <ClInclude Include="..\..\Source\Application\jucer_Application.h"/> | |||
| <ClInclude Include="..\..\Source\Application\jucer_CommandIDs.h"/> | |||
| <ClInclude Include="..\..\Source\Application\jucer_CommandLine.h"/> | |||
| @@ -229,6 +229,9 @@ | |||
| </Filter> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClCompile Include="..\..\Source\Application\jucer_AppearanceSettings.cpp"> | |||
| <Filter>The Introjucer\Application</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\Source\Application\jucer_CommandLine.cpp"> | |||
| <Filter>The Introjucer\Application</Filter> | |||
| </ClCompile> | |||
| @@ -1194,6 +1197,9 @@ | |||
| </ClCompile> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="..\..\Source\Application\jucer_AppearanceSettings.h"> | |||
| <Filter>The Introjucer\Application</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\Source\Application\jucer_Application.h"> | |||
| <Filter>The Introjucer\Application</Filter> | |||
| </ClInclude> | |||
| @@ -65,6 +65,10 @@ | |||
| </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="lHd3UQJ" name="jucer_CommandIDs.h" compile="0" resource="0" | |||
| @@ -0,0 +1,360 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||
| Copyright 2004-11 by Raw Material Software Ltd. | |||
| ------------------------------------------------------------------------------ | |||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||
| Public License (Version 2), as published by the Free Software Foundation. | |||
| A copy of the license is included in the JUCE distribution, or can be found | |||
| online 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.rawmaterialsoftware.com/juce for more information. | |||
| ============================================================================== | |||
| */ | |||
| #include "jucer_Application.h" | |||
| #include "jucer_AppearanceSettings.h" | |||
| //============================================================================== | |||
| AppearanceSettings::AppearanceSettings (const CodeEditorComponent& editor) | |||
| : settings ("COLOUR_SCHEME") | |||
| { | |||
| getColourValue ("Background") = editor.findColour (CodeEditorComponent::backgroundColourId).toString(); | |||
| getColourValue ("Plain Text") = editor.findColour (CodeEditorComponent::defaultTextColourId).toString(); | |||
| getColourValue ("Selected Background") = editor.findColour (CodeEditorComponent::highlightColourId).toString(); | |||
| 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(); | |||
| } | |||
| Font f (editor.getFont()); | |||
| f.setTypefaceName (f.getTypeface()->getName()); | |||
| getCodeFontValue() = f.toString(); | |||
| } | |||
| bool AppearanceSettings::readFromFile (const File& file) | |||
| { | |||
| const ScopedPointer<XmlElement> xml (XmlDocument::parse (file)); | |||
| if (xml != nullptr && xml->hasTagName (settings.getType().toString())) | |||
| { | |||
| settings = ValueTree::fromXml (*xml); | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| bool AppearanceSettings::writeToFile (const File& file) const | |||
| { | |||
| const ScopedPointer<XmlElement> xml (settings.createXml()); | |||
| return xml != nullptr && xml->writeToFile (file, String::empty); | |||
| } | |||
| 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::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); | |||
| Colour col; | |||
| if (getColour ("Plain Text", col)) editor.setColour (CodeEditorComponent::defaultTextColourId, col); | |||
| if (getColour ("Selected Background", col)) editor.setColour (CodeEditorComponent::highlightColourId, col); | |||
| if (getColour ("Background", col)) | |||
| { | |||
| col = Colours::white.overlaidWith (col); | |||
| editor.setColour (CodeEditorComponent::backgroundColourId, col); | |||
| editor.setColour (CaretComponent::caretColourId, col.contrasting()); | |||
| } | |||
| editor.setFont (getCodeFont()); | |||
| } | |||
| Font AppearanceSettings::getCodeFont() const | |||
| { | |||
| const String fontString (settings [Ids::font].toString()); | |||
| if (fontString.isEmpty()) | |||
| { | |||
| #if JUCE_MAC | |||
| Font font (13.0f); | |||
| font.setTypefaceName ("Menlo"); | |||
| #else | |||
| Font font (10.0f); | |||
| font.setTypefaceName (Font::getDefaultMonospacedFontName()); | |||
| #endif | |||
| return font; | |||
| } | |||
| 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 Window : public DialogWindow | |||
| { | |||
| public: | |||
| Window() : DialogWindow ("Appearance Settings", Colours::black, true, true) | |||
| { | |||
| setUsingNativeTitleBar (true); | |||
| setContentOwned (new EditorPanel(), false); | |||
| setResizable (true, true); | |||
| const int width = 350; | |||
| setResizeLimits (width, 200, width, 1000); | |||
| String windowState (getAppProperties().getValue (getWindowPosName())); | |||
| if (windowState.isNotEmpty()) | |||
| restoreWindowStateFromString (windowState); | |||
| else | |||
| centreAroundComponent (Component::getCurrentlyFocusedComponent(), width, 500); | |||
| setVisible (true); | |||
| } | |||
| ~Window() | |||
| { | |||
| getAppProperties().setValue (getWindowPosName(), getWindowStateAsString()); | |||
| } | |||
| void closeButtonPressed() | |||
| { | |||
| JucerApplication::getApp()->appearanceEditorWindow = nullptr; | |||
| } | |||
| private: | |||
| static const char* getWindowPosName() { return "colourSchemeEditorPos"; } | |||
| JUCE_DECLARE_NON_COPYABLE (Window); | |||
| }; | |||
| //============================================================================== | |||
| class EditorPanel : public Component, | |||
| private Button::Listener | |||
| { | |||
| public: | |||
| EditorPanel() | |||
| : loadButton ("Load Scheme..."), | |||
| saveButton ("Save Scheme...") | |||
| { | |||
| setOpaque (true); | |||
| rebuildProperties(); | |||
| addAndMakeVisible (&panel); | |||
| loadButton.setColour (TextButton::buttonColourId, Colours::grey); | |||
| saveButton.setColour (TextButton::buttonColourId, Colours::grey); | |||
| 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 paint (Graphics& g) | |||
| { | |||
| g.fillAll (Colours::black); | |||
| } | |||
| void resized() | |||
| { | |||
| Rectangle<int> r (getLocalBounds()); | |||
| panel.setBounds (r.removeFromTop (getHeight() - 26).reduced (4, 3)); | |||
| loadButton.setBounds (r.removeFromLeft (getWidth() / 2).reduced (10, 3)); | |||
| saveButton.setBounds (r.reduced (10, 3)); | |||
| } | |||
| private: | |||
| PropertyPanel panel; | |||
| TextButton loadButton, saveButton; | |||
| void buttonClicked (Button* b) | |||
| { | |||
| if (b == &loadButton) | |||
| loadScheme(); | |||
| else | |||
| saveScheme(); | |||
| } | |||
| void saveScheme() | |||
| { | |||
| FileChooser fc ("Select a file in which to save this colour-scheme...", | |||
| getAppSettings().getSchemesFolder().getNonexistentChildFile ("Scheme", ".editorscheme"), | |||
| "*.editorscheme"); | |||
| if (fc.browseForFileToSave (true)) | |||
| { | |||
| File file (fc.getResult().withFileExtension (".editorscheme")); | |||
| getAppSettings().appearance.writeToFile (file); | |||
| } | |||
| } | |||
| void loadScheme() | |||
| { | |||
| FileChooser fc ("Please select a colour-scheme file to load...", | |||
| getAppSettings().getSchemesFolder(), | |||
| "*.editorscheme"); | |||
| 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 | |||
| { | |||
| return Font::fromString (sourceValue.toString()).getTypefaceName(); | |||
| } | |||
| void setValue (const var& newValue) | |||
| { | |||
| Font font (Font::fromString (sourceValue.toString())); | |||
| font.setTypefaceName (newValue.toString()); | |||
| sourceValue = font.toString(); | |||
| } | |||
| static ChoicePropertyComponent* createProperty (const String& title, const Value& value) | |||
| { | |||
| const StringArray& fontNames = getAppSettings().getFontNames(); | |||
| Array<var> values; | |||
| for (int i = 0; i < fontNames.size(); ++i) | |||
| values.add (fontNames[i]); | |||
| return new ChoicePropertyComponent (Value (new FontNameValueSource (value)), | |||
| title, fontNames, values); | |||
| } | |||
| }; | |||
| //============================================================================== | |||
| class FontSizeValueSource : public ValueSourceFilter | |||
| { | |||
| public: | |||
| FontSizeValueSource (const Value& source) : ValueSourceFilter (source) {} | |||
| var getValue() const | |||
| { | |||
| return Font::fromString (sourceValue.toString()).getHeight(); | |||
| } | |||
| void setValue (const var& newValue) | |||
| { | |||
| 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); | |||
| } | |||
| }; | |||
| }; | |||
| Component* AppearanceSettings::createEditorWindow() | |||
| { | |||
| return new AppearanceEditor::Window(); | |||
| } | |||
| @@ -0,0 +1,53 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||
| Copyright 2004-11 by Raw Material Software Ltd. | |||
| ------------------------------------------------------------------------------ | |||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||
| Public License (Version 2), as published by the Free Software Foundation. | |||
| A copy of the license is included in the JUCE distribution, or can be found | |||
| online 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.rawmaterialsoftware.com/juce for more information. | |||
| ============================================================================== | |||
| */ | |||
| #ifndef __JUCER_APPEARANCESETTINGS_H_34D762C7__ | |||
| #define __JUCER_APPEARANCESETTINGS_H_34D762C7__ | |||
| class AppearanceSettings | |||
| { | |||
| public: | |||
| AppearanceSettings (const CodeEditorComponent& editorToCopyFrom); | |||
| bool readFromFile (const File& file); | |||
| bool writeToFile (const File& file) const; | |||
| 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 Component* createEditorWindow(); | |||
| }; | |||
| #endif | |||
| @@ -30,6 +30,7 @@ | |||
| #include "jucer_MainWindow.h" | |||
| #include "jucer_JuceUpdater.h" | |||
| #include "jucer_CommandLine.h" | |||
| #include "../Code Editor/jucer_SourceCodeEditor.h" | |||
| //============================================================================== | |||
| @@ -80,14 +81,15 @@ public: | |||
| void shutdown() | |||
| { | |||
| appearanceEditorWindow = nullptr; | |||
| #if JUCE_MAC | |||
| MenuBarModel::setMacMainMenu (nullptr); | |||
| #endif | |||
| menuModel = nullptr; | |||
| mainWindowList.forceCloseAllWindows(); | |||
| OpenDocumentManager::deleteInstance(); | |||
| openDocumentManager.clear(); | |||
| commandManager = nullptr; | |||
| settings.flush(); | |||
| } | |||
| @@ -204,7 +206,7 @@ public: | |||
| menu.addCommandItem (commandManager, CommandIDs::showProjectSettings); | |||
| menu.addSeparator(); | |||
| menu.addCommandItem (commandManager, CommandIDs::test); | |||
| menu.addCommandItem (commandManager, CommandIDs::showAppearanceSettings); | |||
| menu.addSeparator(); | |||
| menu.addCommandItem (commandManager, CommandIDs::showGrid); | |||
| @@ -223,11 +225,11 @@ public: | |||
| menu.addCommandItem (commandManager, CommandIDs::closeWindow); | |||
| menu.addSeparator(); | |||
| const int numDocs = jmin (50, OpenDocumentManager::getInstance()->getNumOpenDocuments()); | |||
| const int numDocs = jmin (50, getApp()->openDocumentManager.getNumOpenDocuments()); | |||
| for (int i = 0; i < numDocs; ++i) | |||
| { | |||
| OpenDocumentManager::Document* doc = OpenDocumentManager::getInstance()->getOpenDocument(i); | |||
| OpenDocumentManager::Document* doc = getApp()->openDocumentManager.getOpenDocument(i); | |||
| menu.addItem (300 + i, doc->getName()); | |||
| } | |||
| @@ -255,7 +257,7 @@ public: | |||
| } | |||
| else if (menuItemID >= 300 && menuItemID < 400) | |||
| { | |||
| OpenDocumentManager::Document* doc = OpenDocumentManager::getInstance()->getOpenDocument (menuItemID - 300); | |||
| OpenDocumentManager::Document* doc = getApp()->openDocumentManager.getOpenDocument (menuItemID - 300); | |||
| jassert (doc != nullptr); | |||
| getApp()->mainWindowList.openDocument (doc); | |||
| @@ -274,6 +276,7 @@ public: | |||
| CommandIDs::closeAllDocuments, | |||
| CommandIDs::saveAll, | |||
| CommandIDs::updateModules, | |||
| CommandIDs::showAppearanceSettings, | |||
| CommandIDs::showUTF8Tool }; | |||
| commands.addArray (ids, numElementsInArray (ids)); | |||
| @@ -298,14 +301,18 @@ public: | |||
| result.defaultKeypresses.add (KeyPress (',', 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::getInstance()->getNumOpenDocuments() > 0); | |||
| result.setActive (openDocumentManager.getNumOpenDocuments() > 0); | |||
| break; | |||
| case CommandIDs::saveAll: | |||
| result.setInfo ("Save All", "Saves all open documents", CommandCategories::general, 0); | |||
| result.setActive (OpenDocumentManager::getInstance()->anyFilesNeedSaving()); | |||
| result.setActive (openDocumentManager.anyFilesNeedSaving()); | |||
| break; | |||
| case CommandIDs::updateModules: | |||
| @@ -326,15 +333,17 @@ public: | |||
| { | |||
| switch (info.commandID) | |||
| { | |||
| case CommandIDs::newProject: createNewProject(); break; | |||
| case CommandIDs::open: askUserToOpenFile(); break; | |||
| case CommandIDs::showPrefs: showPrefsPanel(); break; | |||
| case CommandIDs::saveAll: OpenDocumentManager::getInstance()->saveAll(); break; | |||
| case CommandIDs::closeAllDocuments: closeAllDocuments (true); break; | |||
| case CommandIDs::showUTF8Tool: showUTF8ToolWindow(); break; | |||
| case CommandIDs::updateModules: runModuleUpdate (String::empty); break; | |||
| default: return JUCEApplication::perform (info); | |||
| case CommandIDs::newProject: createNewProject(); break; | |||
| case CommandIDs::open: askUserToOpenFile(); break; | |||
| case CommandIDs::showPrefs: showPrefsPanel(); break; | |||
| case CommandIDs::saveAll: openDocumentManager.saveAll(); break; | |||
| case CommandIDs::closeAllDocuments: closeAllDocuments (true); break; | |||
| case CommandIDs::showUTF8Tool: showUTF8ToolWindow(); break; | |||
| case CommandIDs::showAppearanceSettings: showAppearanceEditorWindow(); break; | |||
| case CommandIDs::updateModules: runModuleUpdate (String::empty); break; | |||
| default: | |||
| return JUCEApplication::perform (info); | |||
| } | |||
| return true; | |||
| @@ -371,7 +380,7 @@ public: | |||
| bool closeAllDocuments (bool askUserToSave) | |||
| { | |||
| return OpenDocumentManager::getInstance()->closeAll (askUserToSave); | |||
| return openDocumentManager.closeAll (askUserToSave); | |||
| } | |||
| bool makeSureUserHasSelectedModuleFolder() | |||
| @@ -403,6 +412,14 @@ public: | |||
| return ModuleList::isJuceOrModulesFolder (list.getModulesFolder()); | |||
| } | |||
| void showAppearanceEditorWindow() | |||
| { | |||
| if (appearanceEditorWindow == nullptr) | |||
| appearanceEditorWindow = AppearanceSettings::createEditorWindow(); | |||
| appearanceEditorWindow->toFront (true); | |||
| } | |||
| //============================================================================== | |||
| virtual void doExtraInitialisation() {} | |||
| virtual void addExtraConfigItems (Project&, TreeViewItem&) {} | |||
| @@ -417,7 +434,11 @@ public: | |||
| Icons icons; | |||
| ScopedPointer<MainMenuModel> menuModel; | |||
| MainWindowList mainWindowList; | |||
| OpenDocumentManager openDocumentManager; | |||
| ScopedPointer<Component> appearanceEditorWindow; | |||
| private: | |||
| class AsyncQuitRetrier : public Timer | |||
| @@ -40,6 +40,7 @@ namespace CommandIDs | |||
| static const int showProjectSettings = 0x200074; | |||
| static const int updateModules = 0x200075; | |||
| static const int showUTF8Tool = 0x200076; | |||
| static const int showAppearanceSettings = 0x200077; | |||
| static const int saveAll = 0x200080; | |||
| static const int undo = 0x200090; | |||
| @@ -48,7 +49,6 @@ namespace CommandIDs | |||
| static const int closeWindow = 0x201001; | |||
| static const int closeAllDocuments = 0x201000; | |||
| static const int test = 0x202090; | |||
| static const int toFront = 0x2020a0; | |||
| static const int toBack = 0x2030a1; | |||
| static const int showOrHideProperties = 0x2030b0; | |||
| @@ -71,21 +71,11 @@ namespace CommandIDs | |||
| static const int showGrid = 0x2020e0; | |||
| static const int enableSnapToGrid = 0x2020f0; | |||
| static const int editCompLayout = 0x202100; | |||
| static const int editCompGraphics = 0x202110; | |||
| static const int bringBackLostItems = 0x202120; | |||
| static const int zoomIn = 0x202130; | |||
| static const int zoomOut = 0x202140; | |||
| static const int zoomNormal = 0x202150; | |||
| static const int spaceBarDrag = 0x202160; | |||
| static const int compOverlay0 = 0x202200; | |||
| static const int compOverlay33 = 0x202210; | |||
| static const int compOverlay66 = 0x202220; | |||
| static const int compOverlay100 = 0x202230; | |||
| static const int bringBackLostItems = 0x202120; | |||
| static const int newDocumentBase = 0x322010; | |||
| static const int newComponentBase = 0x302010; | |||
| @@ -25,18 +25,19 @@ | |||
| #include "jucer_DocumentEditorComponent.h" | |||
| #include "../Project/jucer_ProjectContentComponent.h" | |||
| #include "../Application/jucer_Application.h" | |||
| //============================================================================== | |||
| DocumentEditorComponent::DocumentEditorComponent (OpenDocumentManager::Document* document_) | |||
| : document (document_) | |||
| { | |||
| OpenDocumentManager::getInstance()->addListener (this); | |||
| JucerApplication::getApp()->openDocumentManager.addListener (this); | |||
| } | |||
| DocumentEditorComponent::~DocumentEditorComponent() | |||
| { | |||
| OpenDocumentManager::getInstance()->removeListener (this); | |||
| JucerApplication::getApp()->openDocumentManager.removeListener (this); | |||
| } | |||
| void DocumentEditorComponent::documentAboutToClose (OpenDocumentManager::Document* closingDoc) | |||
| @@ -126,7 +126,7 @@ bool MainWindow::closeProject (Project* project) | |||
| getAppProperties().setValue (getProjectWindowPosName(), getWindowStateAsString()); | |||
| if (! OpenDocumentManager::getInstance()->closeAllDocumentsUsingProject (*project, true)) | |||
| if (! JucerApplication::getApp()->openDocumentManager.closeAllDocumentsUsingProject (*project, true)) | |||
| return false; | |||
| ProjectContentComponent* const pcc = getProjectContentComponent(); | |||
| @@ -174,7 +174,7 @@ void MainWindow::restoreWindowPosition() | |||
| bool MainWindow::canOpenFile (const File& file) const | |||
| { | |||
| return file.hasFileExtension (Project::projectFileExtension) | |||
| || OpenDocumentManager::getInstance()->canOpenFile (file); | |||
| || JucerApplication::getApp()->openDocumentManager.canOpenFile (file); | |||
| } | |||
| bool MainWindow::openFile (const File& file) | |||
| @@ -227,7 +227,7 @@ void MainWindow::activeWindowStatusChanged() | |||
| if (getProjectContentComponent() != nullptr) | |||
| getProjectContentComponent()->updateMissingFileStatuses(); | |||
| OpenDocumentManager::getInstance()->reloadModifiedFiles(); | |||
| JucerApplication::getApp()->openDocumentManager.reloadModifiedFiles(); | |||
| } | |||
| void MainWindow::updateTitle (const String& documentName) | |||
| @@ -91,10 +91,13 @@ OpenDocumentManager::OpenDocumentManager() | |||
| OpenDocumentManager::~OpenDocumentManager() | |||
| { | |||
| clearSingletonInstance(); | |||
| } | |||
| juce_ImplementSingleton_SingleThreaded (OpenDocumentManager); | |||
| void OpenDocumentManager::clear() | |||
| { | |||
| documents.clear(); | |||
| types.clear(); | |||
| } | |||
| //============================================================================== | |||
| void OpenDocumentManager::registerType (DocumentType* type) | |||
| @@ -38,8 +38,6 @@ public: | |||
| OpenDocumentManager(); | |||
| ~OpenDocumentManager(); | |||
| juce_DeclareSingleton_SingleThreaded_Minimal (OpenDocumentManager); | |||
| //============================================================================== | |||
| class Document | |||
| { | |||
| @@ -68,6 +66,7 @@ public: | |||
| int getNumOpenDocuments() const; | |||
| Document* getOpenDocument (int index) const; | |||
| void moveDocumentToTopOfStack (Document* doc); | |||
| void clear(); | |||
| bool canOpenFile (const File& file); | |||
| Document* openFile (Project* project, const File& file); | |||
| @@ -37,7 +37,7 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* document_, | |||
| addAndMakeVisible (&editor); | |||
| #if JUCE_MAC | |||
| Font font (10.6f); | |||
| Font font (13.0f); | |||
| font.setTypefaceName ("Menlo"); | |||
| #else | |||
| Font font (10.0f); | |||
| @@ -46,10 +46,14 @@ SourceCodeEditor::SourceCodeEditor (OpenDocumentManager::Document* document_, | |||
| editor.setFont (font); | |||
| editor.setTabSize (4, true); | |||
| updateColourScheme(); | |||
| getAppSettings().appearance.settings.addListener (this); | |||
| } | |||
| SourceCodeEditor::~SourceCodeEditor() | |||
| { | |||
| getAppSettings().appearance.settings.removeListener (this); | |||
| } | |||
| void SourceCodeEditor::resized() | |||
| @@ -71,6 +75,17 @@ CodeTokeniser* SourceCodeEditor::getTokeniserFor (const File& file) | |||
| SourceCodeEditor* SourceCodeEditor::createFor (OpenDocumentManager::Document* document, | |||
| CodeDocument& codeDocument) | |||
| { | |||
| return new SourceCodeEditor (document, codeDocument, | |||
| getTokeniserFor (document->getFile())); | |||
| return new SourceCodeEditor (document, codeDocument, getTokeniserFor (document->getFile())); | |||
| } | |||
| void SourceCodeEditor::valueTreePropertyChanged (ValueTree&, const Identifier&) { updateColourScheme(); } | |||
| void SourceCodeEditor::valueTreeChildAdded (ValueTree&, ValueTree&) { updateColourScheme(); } | |||
| void SourceCodeEditor::valueTreeChildRemoved (ValueTree&, ValueTree&) { updateColourScheme(); } | |||
| void SourceCodeEditor::valueTreeChildOrderChanged (ValueTree&) { updateColourScheme(); } | |||
| void SourceCodeEditor::valueTreeParentChanged (ValueTree&) { updateColourScheme(); } | |||
| void SourceCodeEditor::valueTreeRedirected (ValueTree&) { updateColourScheme(); } | |||
| void SourceCodeEditor::updateColourScheme() | |||
| { | |||
| getAppSettings().appearance.applyToCodeEditor (editor); | |||
| } | |||
| @@ -29,11 +29,9 @@ | |||
| #include "../Project/jucer_Project.h" | |||
| #include "../Application/jucer_DocumentEditorComponent.h" | |||
| //============================================================================== | |||
| /** | |||
| */ | |||
| class SourceCodeEditor : public DocumentEditorComponent | |||
| class SourceCodeEditor : public DocumentEditorComponent, | |||
| private ValueTree::Listener | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| @@ -54,6 +52,15 @@ public: | |||
| CodeEditorComponent editor; | |||
| private: | |||
| void valueTreePropertyChanged (ValueTree&, const Identifier&); | |||
| void valueTreeChildAdded (ValueTree&, ValueTree&); | |||
| void valueTreeChildRemoved (ValueTree&, ValueTree&); | |||
| void valueTreeChildOrderChanged (ValueTree&); | |||
| void valueTreeParentChanged (ValueTree&); | |||
| void valueTreeRedirected (ValueTree&); | |||
| void updateColourScheme(); | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SourceCodeEditor); | |||
| }; | |||
| @@ -66,7 +66,7 @@ Project::Project (const File& file_) | |||
| Project::~Project() | |||
| { | |||
| projectRoot.removeListener (this); | |||
| OpenDocumentManager::getInstance()->closeAllDocumentsUsingProject (*this, false); | |||
| JucerApplication::getApp()->openDocumentManager.closeAllDocumentsUsingProject (*this, false); | |||
| } | |||
| //============================================================================== | |||
| @@ -537,7 +537,7 @@ bool Project::Item::renameFile (const File& newFile) | |||
| || (newFile.exists() && ! oldFile.exists())) | |||
| { | |||
| setFile (newFile); | |||
| OpenDocumentManager::getInstance()->fileHasBeenRenamed (oldFile, newFile); | |||
| JucerApplication::getApp()->openDocumentManager.fileHasBeenRenamed (oldFile, newFile); | |||
| return true; | |||
| } | |||
| @@ -25,6 +25,7 @@ | |||
| #include "jucer_ProjectContentComponent.h" | |||
| #include "../Application/jucer_MainWindow.h" | |||
| #include "../Application/jucer_Application.h" | |||
| #include "../Code Editor/jucer_SourceCodeEditor.h" | |||
| #include "jucer_ConfigPage.h" | |||
| #include "jucer_TreeViewTypes.h" | |||
| @@ -109,6 +110,25 @@ void ProjectContentComponent::paint (Graphics& g) | |||
| g.fillAll (Colour::greyLevel (0.8f)); | |||
| } | |||
| void ProjectContentComponent::resized() | |||
| { | |||
| Rectangle<int> r (getLocalBounds()); | |||
| treeViewTabs.setBounds (r.removeFromLeft (treeViewTabs.getWidth())); | |||
| if (resizerBar != nullptr) | |||
| resizerBar->setBounds (r.removeFromLeft (4)); | |||
| if (contentView != nullptr) | |||
| contentView->setBounds (r); | |||
| } | |||
| void ProjectContentComponent::childBoundsChanged (Component* child) | |||
| { | |||
| if (child == &treeViewTabs) | |||
| resized(); | |||
| } | |||
| void ProjectContentComponent::setProject (Project* newProject) | |||
| { | |||
| if (project != newProject) | |||
| @@ -121,38 +141,44 @@ void ProjectContentComponent::setProject (Project* newProject) | |||
| contentView = nullptr; | |||
| resizerBar = nullptr; | |||
| treeViewTabs.clearTabs(); | |||
| if (project != nullptr && treeViewTabs.isShowing()) | |||
| { | |||
| if (treeViewTabs.getWidth() > 0) | |||
| settings.setValue ("projectTreeviewWidth_" + project->getProjectUID(), treeViewTabs.getWidth()); | |||
| if (treeViewTabs.isShowing() && treeViewTabs.getWidth() > 0) | |||
| settings.setValue ("projectTreeviewWidth", treeViewTabs.getWidth()); | |||
| settings.setValue ("lastTab_" + project->getProjectUID(), treeViewTabs.getCurrentTabName()); | |||
| } | |||
| treeViewTabs.clearTabs(); | |||
| project = newProject; | |||
| if (project != nullptr) | |||
| { | |||
| treeViewTabs.setVisible (true); | |||
| addChildAndSetID (&treeViewTabs, "tree"); | |||
| addAndMakeVisible (&treeViewTabs); | |||
| createProjectTabs(); | |||
| String lastTreeWidth (settings.getValue ("projectTreeviewWidth")); | |||
| if (lastTreeWidth.getIntValue() < 150) | |||
| lastTreeWidth = "250"; | |||
| const String lastTabName (settings.getValue ("lastTab_" + project->getProjectUID())); | |||
| int lastTabIndex = treeViewTabs.getTabNames().indexOf (lastTabName); | |||
| treeViewTabs.setBounds ("0, 0, left + " + lastTreeWidth + ", parent.height"); | |||
| if (lastTabIndex < 0 || lastTabIndex > treeViewTabs.getNumTabs()) | |||
| lastTabIndex = 1; | |||
| addChildAndSetID (resizerBar = new ResizableEdgeComponent (&treeViewTabs, &treeSizeConstrainer, | |||
| ResizableEdgeComponent::rightEdge), | |||
| "resizer"); | |||
| treeViewTabs.setCurrentTabIndex (lastTabIndex); | |||
| resizerBar->setBounds ("tree.right, 0, tree.right + 4, parent.height"); | |||
| int lastTreeWidth = settings.getValue ("projectTreeviewWidth_" + project->getProjectUID()).getIntValue(); | |||
| if (lastTreeWidth < 150) | |||
| lastTreeWidth = 250; | |||
| project->addChangeListener (this); | |||
| treeViewTabs.setBounds (0, 0, lastTreeWidth, getHeight()); | |||
| addAndMakeVisible (resizerBar = new ResizableEdgeComponent (&treeViewTabs, &treeSizeConstrainer, | |||
| ResizableEdgeComponent::rightEdge)); | |||
| if (currentDocument == nullptr) | |||
| invokeDirectly (CommandIDs::showProjectSettings, true); | |||
| project->addChangeListener (this); | |||
| updateMissingFileStatuses(); | |||
| resized(); | |||
| } | |||
| else | |||
| { | |||
| @@ -163,6 +189,7 @@ void ProjectContentComponent::setProject (Project* newProject) | |||
| void ProjectContentComponent::createProjectTabs() | |||
| { | |||
| jassert (project != nullptr); | |||
| treeViewTabs.addTab ("Files", Colour::greyLevel (0.93f), new FileTreeTab (*project), true); | |||
| treeViewTabs.addTab ("Config", Colour::greyLevel (0.93f), new ConfigTreeTab (*project), true); | |||
| } | |||
| @@ -205,7 +232,7 @@ void ProjectContentComponent::updateMissingFileStatuses() | |||
| bool ProjectContentComponent::showEditorForFile (const File& f) | |||
| { | |||
| return showDocument (OpenDocumentManager::getInstance()->openFile (project, f)); | |||
| return showDocument (JucerApplication::getApp()->openDocumentManager.openFile (project, f)); | |||
| } | |||
| bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc) | |||
| @@ -213,7 +240,7 @@ bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc) | |||
| if (doc == nullptr) | |||
| return false; | |||
| OpenDocumentManager::getInstance()->moveDocumentToTopOfStack (doc); | |||
| JucerApplication::getApp()->openDocumentManager.moveDocumentToTopOfStack (doc); | |||
| if (doc->hasFileBeenModifiedExternally()) | |||
| doc->reloadFromFile(); | |||
| @@ -242,11 +269,10 @@ bool ProjectContentComponent::setEditorComponent (Component* editor, OpenDocumen | |||
| contentView = editor; | |||
| currentDocument = doc; | |||
| addAndMakeVisible (editor); | |||
| editor->setBounds ("resizer.right, 0, parent.right, parent.height"); | |||
| resized(); | |||
| updateMainWindowTitle(); | |||
| commandManager->commandStatusChanged(); | |||
| return true; | |||
| } | |||
| @@ -419,7 +445,7 @@ bool ProjectContentComponent::perform (const InvocationInfo& info) | |||
| case CommandIDs::closeDocument: | |||
| if (currentDocument != nullptr) | |||
| OpenDocumentManager::getInstance()->closeDocument (currentDocument, true); | |||
| JucerApplication::getApp()->openDocumentManager.closeDocument (currentDocument, true); | |||
| break; | |||
| case CommandIDs::openInIDE: | |||
| @@ -42,8 +42,6 @@ public: | |||
| ProjectContentComponent(); | |||
| ~ProjectContentComponent(); | |||
| void paint (Graphics& g); | |||
| Project* getProject() const noexcept { return project; } | |||
| virtual void setProject (Project* project); | |||
| void saveTreeViewState(); | |||
| @@ -68,6 +66,10 @@ public: | |||
| bool isCommandActive (const CommandID commandID); | |||
| bool perform (const InvocationInfo& info); | |||
| void paint (Graphics& g); | |||
| void resized(); | |||
| void childBoundsChanged (Component* child); | |||
| protected: | |||
| Project* project; | |||
| OpenDocumentManager::Document* currentDocument; | |||
| @@ -24,7 +24,7 @@ | |||
| */ | |||
| #include "jucer_ProjectTreeViewBase.h" | |||
| #include "../Application/jucer_OpenDocumentManager.h" | |||
| #include "../Application/jucer_Application.h" | |||
| //============================================================================== | |||
| @@ -220,11 +220,13 @@ void ProjectTreeViewBase::deleteAllSelectedItems() | |||
| if (treeRootItem != nullptr) | |||
| { | |||
| OpenDocumentManager& om = JucerApplication::getApp()->openDocumentManager; | |||
| for (int i = filesToTrash.size(); --i >= 0;) | |||
| { | |||
| const File f (*filesToTrash.getUnchecked(i)); | |||
| OpenDocumentManager::getInstance()->closeFile (f, false); | |||
| om.closeFile (f, false); | |||
| if (! f.moveToTrash()) | |||
| { | |||
| @@ -238,7 +240,7 @@ void ProjectTreeViewBase::deleteAllSelectedItems() | |||
| if (itemToRemove != nullptr) | |||
| { | |||
| OpenDocumentManager::getInstance()->closeFile (itemToRemove->getFile(), false); | |||
| om.closeFile (itemToRemove->getFile(), false); | |||
| itemToRemove->deleteItem(); | |||
| } | |||
| } | |||
| @@ -112,6 +112,7 @@ public: | |||
| tree.setDefaultOpenness (true); | |||
| tree.setColour (TreeView::backgroundColourId, Colours::transparentBlack); | |||
| tree.setIndentSize (14); | |||
| tree.getViewport()->setScrollBarThickness (14); | |||
| } | |||
| ~TreePanelBase() | |||
| @@ -468,7 +468,7 @@ class CallOutBoxCallback : public ModalComponentManager::Callback | |||
| public: | |||
| CallOutBoxCallback (Component& attachTo, Component* content_) | |||
| : content (content_), | |||
| callout (*content_, attachTo, attachTo.getTopLevelComponent()) | |||
| callout (*content_, attachTo, nullptr) | |||
| { | |||
| callout.setVisible (true); | |||
| callout.enterModalState (true, this); | |||
| @@ -146,3 +146,204 @@ protected: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ValueSourceFilter); | |||
| }; | |||
| //============================================================================== | |||
| class PopupColourSelector : public Component, | |||
| public ChangeListener, | |||
| public Value::Listener, | |||
| public ButtonListener | |||
| { | |||
| public: | |||
| PopupColourSelector (const Value& colourValue_, | |||
| const Colour& defaultColour_, | |||
| const bool canResetToDefault) | |||
| : defaultButton ("Reset to Default"), | |||
| colourValue (colourValue_), | |||
| defaultColour (defaultColour_) | |||
| { | |||
| addAndMakeVisible (&selector); | |||
| selector.setName ("Colour"); | |||
| selector.setCurrentColour (getColour()); | |||
| selector.addChangeListener (this); | |||
| if (canResetToDefault) | |||
| { | |||
| addAndMakeVisible (&defaultButton); | |||
| defaultButton.addListener (this); | |||
| } | |||
| colourValue.addListener (this); | |||
| setSize (300, 400); | |||
| } | |||
| void resized() | |||
| { | |||
| if (defaultButton.isVisible()) | |||
| { | |||
| selector.setBounds (0, 0, getWidth(), getHeight() - 30); | |||
| defaultButton.changeWidthToFitText (22); | |||
| defaultButton.setTopLeftPosition (10, getHeight() - 26); | |||
| } | |||
| else | |||
| { | |||
| selector.setBounds (0, 0, getWidth(), getHeight()); | |||
| } | |||
| } | |||
| Colour getColour() const | |||
| { | |||
| if (colourValue.toString().isEmpty()) | |||
| return defaultColour; | |||
| return Colour::fromString (colourValue.toString()); | |||
| } | |||
| void setColour (const Colour& newColour) | |||
| { | |||
| if (getColour() != newColour) | |||
| { | |||
| if (newColour == defaultColour && defaultButton.isVisible()) | |||
| colourValue = var::null; | |||
| else | |||
| colourValue = newColour.toDisplayString (true); | |||
| } | |||
| } | |||
| void buttonClicked (Button*) | |||
| { | |||
| setColour (defaultColour); | |||
| selector.setCurrentColour (defaultColour); | |||
| } | |||
| void changeListenerCallback (ChangeBroadcaster*) | |||
| { | |||
| if (selector.getCurrentColour() != getColour()) | |||
| setColour (selector.getCurrentColour()); | |||
| } | |||
| void valueChanged (Value&) | |||
| { | |||
| selector.setCurrentColour (getColour()); | |||
| } | |||
| private: | |||
| StoredSettings::ColourSelectorWithSwatches selector; | |||
| TextButton defaultButton; | |||
| Value colourValue; | |||
| Colour defaultColour; | |||
| }; | |||
| //============================================================================== | |||
| /** | |||
| A component that shows a colour swatch with hex ARGB value, and which pops up | |||
| a colour selector when you click it. | |||
| */ | |||
| class ColourEditorComponent : public Component, | |||
| public Value::Listener | |||
| { | |||
| public: | |||
| ColourEditorComponent (UndoManager* undoManager_, const Value& colourValue_, | |||
| const Colour& defaultColour_, const bool canResetToDefault_) | |||
| : undoManager (undoManager_), colourValue (colourValue_), defaultColour (defaultColour_), | |||
| canResetToDefault (canResetToDefault_) | |||
| { | |||
| colourValue.addListener (this); | |||
| } | |||
| void paint (Graphics& g) | |||
| { | |||
| const Colour colour (getColour()); | |||
| g.fillAll (Colours::grey); | |||
| g.fillCheckerBoard (getLocalBounds().reduced (2, 2), | |||
| 10, 10, | |||
| Colour (0xffdddddd).overlaidWith (colour), | |||
| Colour (0xffffffff).overlaidWith (colour)); | |||
| g.setColour (Colours::white.overlaidWith (colour).contrasting()); | |||
| g.setFont (Font (getHeight() * 0.6f, Font::bold)); | |||
| g.drawFittedText (colour.toDisplayString (true), | |||
| 2, 1, getWidth() - 4, getHeight() - 1, | |||
| Justification::centred, 1); | |||
| } | |||
| Colour getColour() const | |||
| { | |||
| if (colourValue.toString().isEmpty()) | |||
| return defaultColour; | |||
| return Colour::fromString (colourValue.toString()); | |||
| } | |||
| void setColour (const Colour& newColour) | |||
| { | |||
| if (getColour() != newColour) | |||
| { | |||
| if (newColour == defaultColour && canResetToDefault) | |||
| colourValue = var::null; | |||
| else | |||
| colourValue = newColour.toDisplayString (true); | |||
| } | |||
| } | |||
| void resetToDefault() | |||
| { | |||
| setColour (defaultColour); | |||
| } | |||
| void refresh() | |||
| { | |||
| const Colour col (getColour()); | |||
| if (col != lastColour) | |||
| { | |||
| lastColour = col; | |||
| repaint(); | |||
| } | |||
| } | |||
| void mouseDown (const MouseEvent&) | |||
| { | |||
| if (undoManager != nullptr) | |||
| undoManager->beginNewTransaction(); | |||
| launchAsyncCallOutBox (*this, new PopupColourSelector (colourValue, defaultColour, canResetToDefault)); | |||
| } | |||
| void valueChanged (Value&) | |||
| { | |||
| refresh(); | |||
| } | |||
| private: | |||
| UndoManager* undoManager; | |||
| Value colourValue; | |||
| Colour lastColour; | |||
| const Colour defaultColour; | |||
| const bool canResetToDefault; | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ColourEditorComponent); | |||
| }; | |||
| //============================================================================== | |||
| class ColourPropertyComponent : public PropertyComponent | |||
| { | |||
| public: | |||
| ColourPropertyComponent (UndoManager* undoManager, const String& name, const Value& colour, | |||
| const Colour& defaultColour, bool canResetToDefault) | |||
| : PropertyComponent (name), | |||
| colourEditor (undoManager, colour, defaultColour, canResetToDefault) | |||
| { | |||
| addAndMakeVisible (&colourEditor); | |||
| } | |||
| void resized() | |||
| { | |||
| colourEditor.setBounds (getLookAndFeel().getPropertyComponentContentPosition (*this)); | |||
| } | |||
| void refresh() {} | |||
| protected: | |||
| ColourEditorComponent colourEditor; | |||
| }; | |||
| @@ -117,6 +117,8 @@ namespace Ids | |||
| DECLARE_ID (androidKeyStorePass); | |||
| DECLARE_ID (androidKeyAlias); | |||
| DECLARE_ID (androidKeyAliasPass); | |||
| DECLARE_ID (font); | |||
| DECLARE_ID (colour); | |||
| const Identifier class_ ("class"); | |||
| #undef DECLARE_ID | |||
| @@ -38,10 +38,24 @@ PropertiesFile& getAppProperties() | |||
| return getAppSettings().getProps(); | |||
| } | |||
| static AppearanceSettings getDefaultScheme() | |||
| { | |||
| CodeDocument doc; | |||
| CPlusPlusCodeTokeniser tokeniser; | |||
| CodeEditorComponent defaultComp (doc, &tokeniser); | |||
| return AppearanceSettings (defaultComp); | |||
| } | |||
| //============================================================================== | |||
| StoredSettings::StoredSettings() | |||
| : appearance (getDefaultScheme()) | |||
| { | |||
| reload(); | |||
| const File defaultSchemeFile (getSchemesFolder().getChildFile ("Default").withFileExtension (getSchemeFileSuffix())); | |||
| if (! defaultSchemeFile.exists()) | |||
| appearance.writeToFile (defaultSchemeFile); | |||
| } | |||
| StoredSettings::~StoredSettings() | |||
| @@ -59,6 +73,11 @@ void StoredSettings::flush() | |||
| { | |||
| if (props != nullptr) | |||
| { | |||
| { | |||
| const ScopedPointer<XmlElement> xml (appearance.settings.createXml()); | |||
| props->setValue ("editorColours", xml); | |||
| } | |||
| props->setValue ("recentFiles", recentFiles.toString()); | |||
| props->removeValue ("keyMappings"); | |||
| @@ -109,6 +128,10 @@ void StoredSettings::reload() | |||
| recentFiles.restoreFromString (props->getValue ("recentFiles")); | |||
| recentFiles.removeNonExistentFiles(); | |||
| const ScopedPointer<XmlElement> xml (props->getXmlValue ("editorColours")); | |||
| if (xml != nullptr) | |||
| appearance.settings = ValueTree::fromXml (*xml); | |||
| loadSwatchColours(); | |||
| } | |||
| @@ -178,6 +201,13 @@ void StoredSettings::ColourSelectorWithSwatches::setSwatchColour (int index, con | |||
| getAppSettings().swatchColours.set (index, newColour); | |||
| } | |||
| File StoredSettings::getSchemesFolder() | |||
| { | |||
| File f (getProps().getFile().getSiblingFile ("Colour Schemes")); | |||
| f.createDirectory(); | |||
| return f; | |||
| } | |||
| //============================================================================== | |||
| const Icons& getIcons() | |||
| { | |||
| @@ -26,16 +26,13 @@ | |||
| #ifndef __JUCER_STOREDSETTINGS_JUCEHEADER__ | |||
| #define __JUCER_STOREDSETTINGS_JUCEHEADER__ | |||
| #include "../Application/jucer_AppearanceSettings.h" | |||
| //============================================================================== | |||
| /** | |||
| A singleton to hold persistent settings, and to save them in a | |||
| suitable PropertiesFile. | |||
| */ | |||
| class StoredSettings | |||
| { | |||
| public: | |||
| //============================================================================== | |||
| StoredSettings(); | |||
| ~StoredSettings(); | |||
| @@ -64,6 +61,12 @@ public: | |||
| void setSwatchColour (int index, const Colour& newColour) const; | |||
| }; | |||
| //============================================================================== | |||
| AppearanceSettings appearance; | |||
| const char* getSchemeFileSuffix() const { return ".editorscheme"; } | |||
| File getSchemesFolder(); | |||
| private: | |||
| ScopedPointer<PropertiesFile> props; | |||
| StringArray fontNames; | |||
| @@ -1011,6 +1011,8 @@ ValueTree ValueTree::readFromGZIPData (const void* const data, const size_t numB | |||
| return readFromStream (gzipStream); | |||
| } | |||
| void ValueTree::Listener::valueTreeRedirected (ValueTree&) {} | |||
| //============================================================================== | |||
| #if JUCE_UNIT_TESTS | |||
| @@ -416,7 +416,7 @@ public: | |||
| When operator= is used to make a ValueTree refer to a different object, this callback | |||
| will be made. | |||
| */ | |||
| virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged) {} | |||
| virtual void valueTreeRedirected (ValueTree& treeWhichHasBeenChanged); | |||
| }; | |||
| /** Adds a listener to receive callbacks when this node is changed. | |||
| @@ -45,7 +45,7 @@ | |||
| object, or if you keep the ComponentBuilder around, it'll monitor any changes in the | |||
| ValueTree and automatically update the component to reflect these changes. | |||
| */ | |||
| class JUCE_API ComponentBuilder : public ValueTree::Listener | |||
| class JUCE_API ComponentBuilder : private ValueTree::Listener | |||
| { | |||
| public: | |||
| /** Creates a ComponentBuilder that will use the given state. | |||
| @@ -235,16 +235,6 @@ public: | |||
| //============================================================================= | |||
| /** @internal */ | |||
| void valueTreePropertyChanged (ValueTree& treeWhosePropertyHasChanged, const Identifier& property); | |||
| /** @internal */ | |||
| void valueTreeChildAdded (ValueTree& parentTree, ValueTree& childWhichHasBeenAdded); | |||
| /** @internal */ | |||
| void valueTreeChildRemoved (ValueTree& parentTree, ValueTree& childWhichHasBeenRemoved); | |||
| /** @internal */ | |||
| void valueTreeChildOrderChanged (ValueTree& parentTree); | |||
| /** @internal */ | |||
| void valueTreeParentChanged (ValueTree& treeWhoseParentHasChanged); | |||
| /** @internal */ | |||
| static void refreshBasicComponentProperties (Component&, const ValueTree&); | |||
| /** @internal */ | |||
| static RelativeRectangle getComponentBounds (const ValueTree&); | |||
| @@ -258,6 +248,12 @@ private: | |||
| WeakReference<Component> componentRef; | |||
| #endif | |||
| void valueTreePropertyChanged (ValueTree&, const Identifier&); | |||
| void valueTreeChildAdded (ValueTree&, ValueTree&); | |||
| void valueTreeChildRemoved (ValueTree&, ValueTree&); | |||
| void valueTreeChildOrderChanged (ValueTree&); | |||
| void valueTreeParentChanged (ValueTree&); | |||
| static const Identifier positionID; | |||
| void initialiseRecursively (Component&, const ValueTree&); | |||
| @@ -519,7 +519,7 @@ CodeEditorComponent::ColourScheme CPlusPlusCodeTokeniser::getDefaultColourScheme | |||
| CodeEditorComponent::ColourScheme cs; | |||
| for (int i = 0; i < sizeof (types) / sizeof (types[0]); ++i) // (NB: numElementsInArray doesn't work here in GCC4.2) | |||
| cs.add (types[i].name, Colour (types[i].colour)); | |||
| cs.set (types[i].name, Colour (types[i].colour)); | |||
| return cs; | |||
| } | |||
| @@ -333,8 +333,8 @@ void CodeEditorComponent::codeDocumentChanged (const CodeDocument::Position& aff | |||
| void CodeEditorComponent::resized() | |||
| { | |||
| linesOnScreen = (getHeight() - scrollbarThickness) / lineHeight; | |||
| columnsOnScreen = (int) ((getWidth() - scrollbarThickness) / charWidth); | |||
| linesOnScreen = jmax (1, (getHeight() - scrollbarThickness) / lineHeight); | |||
| columnsOnScreen = jmax (1, (int) ((getWidth() - scrollbarThickness) / charWidth)); | |||
| lines.clear(); | |||
| rebuildLineTokens(); | |||
| updateCaretPosition(); | |||
| @@ -1087,8 +1087,18 @@ void CodeEditorComponent::setFont (const Font& newFont) | |||
| resized(); | |||
| } | |||
| void CodeEditorComponent::ColourScheme::add (const String& name, const Colour& colour) | |||
| void CodeEditorComponent::ColourScheme::set (const String& name, const Colour& colour) | |||
| { | |||
| for (int i = 0; i < types.size(); ++i) | |||
| { | |||
| TokenType& tt = types.getReference(i); | |||
| if (tt.name == name) | |||
| { | |||
| tt.colour = colour; | |||
| return; | |||
| } | |||
| } | |||
| TokenType tt; | |||
| tt.name = name; | |||
| tt.colour = colour; | |||
| @@ -183,7 +183,7 @@ public: | |||
| Array<TokenType> types; | |||
| void add (const String& name, const Colour& colour); | |||
| void set (const String& name, const Colour& colour); | |||
| }; | |||
| /** Changes the syntax highlighting scheme. | |||