Adopt Dracula theme in code editor

pull/170/head
James Ball 2023-08-27 17:47:30 +01:00
rodzic 8bb67e3c8d
commit 616e33c291
4 zmienionych plików z 51 dodań i 5 usunięć

Wyświetl plik

@ -27,9 +27,12 @@ OscirenderLookAndFeel::OscirenderLookAndFeel() {
setColour(effectComponentBackgroundColourId, juce::Colours::transparentBlack);
setColour(effectComponentHandleColourId, Colours::veryDark);
setColour(juce::CodeEditorComponent::backgroundColourId, Colours::darker);
setColour(juce::CodeEditorComponent::defaultTextColourId, juce::Colours::white);
setColour(juce::CodeEditorComponent::defaultTextColourId, Dracula::foreground);
setColour(juce::CodeEditorComponent::lineNumberBackgroundId, Colours::veryDark);
setColour(juce::CodeEditorComponent::lineNumberTextId, juce::Colours::white);
setColour(juce::CodeEditorComponent::lineNumberTextId, Dracula::foreground);
setColour(juce::CodeEditorComponent::highlightColourId, Colours::grey);
setColour(juce::CaretComponent::caretColourId, Dracula::foreground);
setColour(juce::TextEditor::highlightColourId, Colours::grey);
getCurrentColourScheme().setUIColour(ColourScheme::widgetBackground, Colours::veryDark);
}
@ -163,4 +166,28 @@ void OscirenderLookAndFeel::drawMenuBarBackground(juce::Graphics& g, int width,
g.setColour(menuBar.findColour(juce::TextButton::buttonColourId));
g.fillRect(r);
}
}
juce::CodeEditorComponent::ColourScheme OscirenderLookAndFeel::getDefaultColourScheme() {
juce::CodeEditorComponent::ColourScheme cs;
static const juce::CodeEditorComponent::ColourScheme::TokenType types[] = {
{"Error", juce::Colour(Dracula::red)},
{"Comment", juce::Colour(Dracula::comment)},
{"Keyword", juce::Colour(Dracula::pink)},
{"Operator", juce::Colour(Dracula::foreground)},
{"Identifier", juce::Colour(Dracula::foreground)},
{"Integer", juce::Colour(Dracula::purple)},
{"Float", juce::Colour(Dracula::purple)},
{"String", juce::Colour(Dracula::yellow)},
{"Bracket", juce::Colour(Dracula::foreground)},
{"Punctuation", juce::Colour(Dracula::pink)},
{"Preprocessor Text", juce::Colour(Dracula::comment)}
};
for (auto& t : types) {
cs.set(t.name, juce::Colour(t.colour));
}
return cs;
}

Wyświetl plik

@ -15,7 +15,22 @@ namespace Colours {
const juce::Colour darker{0xff212121};
const juce::Colour veryDark{0xff111111};
const juce::Colour grey{0xff555555};
const juce::Colour accentColor{0xff00CC00};
const juce::Colour accentColor{0xff00cc00};
}
namespace Dracula {
const juce::Colour background{0xff282a36};
const juce::Colour currentLine{0xff44475a};
const juce::Colour selection{0xff44475a};
const juce::Colour foreground{0xfff8f8f2};
const juce::Colour comment{0xff6272a4};
const juce::Colour cyan{0xff8be9fd};
const juce::Colour green{0xff50fa7b};
const juce::Colour orange{0xffffb86c};
const juce::Colour pink{0xffff79c6};
const juce::Colour purple{0xffbd93f9};
const juce::Colour red{0xffff5555};
const juce::Colour yellow{0xfff1fa8c};
}
class OscirenderLookAndFeel : public juce::LookAndFeel_V4 {
@ -43,5 +58,5 @@ public:
bool shouldDrawButtonAsDown) override;
void drawMenuBarBackground(juce::Graphics& g, int width, int height, bool, juce::MenuBarComponent& menuBar) override;
juce::CodeEditorComponent::ColourScheme getDefaultColourScheme();
};

Wyświetl plik

@ -32,6 +32,8 @@ OscirenderAudioProcessorEditor::OscirenderAudioProcessorEditor(OscirenderAudioPr
path.addTriangle(0.0f, 0.5f, 1.0f, 1.0f, 1.0f, 0.0f);
collapseButton.setShape(path, false, true, true);
colourScheme = lookAndFeel.getDefaultColourScheme();
{
juce::SpinLock::ScopedLockType lock(audioProcessor.parsersLock);
initialiseCodeEditors();
@ -171,6 +173,7 @@ void OscirenderAudioProcessorEditor::addCodeEditor(int index) {
editor->setAccessible(false);
// listen for changes to the code editor
codeDocument->addListener(this);
editor->setColourScheme(colourScheme);
}
void OscirenderAudioProcessorEditor::removeCodeEditor(int index) {

Wyświetl plik

@ -47,6 +47,7 @@ private:
VolumeComponent volume{audioProcessor};
std::vector<std::shared_ptr<juce::CodeDocument>> codeDocuments;
std::vector<std::shared_ptr<juce::CodeEditorComponent>> codeEditors;
juce::CodeEditorComponent::ColourScheme colourScheme;
juce::LuaTokeniser luaTokeniser;
juce::XmlTokeniser xmlTokeniser;
juce::ShapeButton collapseButton;