diff --git a/src/dlangide.d b/src/dlangide.d index 1532c56..dd85e45 100644 --- a/src/dlangide.d +++ b/src/dlangide.d @@ -17,6 +17,8 @@ extern (C) int UIAppMain(string[] args) { // embed non-standard resources listed in views/resources.list into executable embeddedResourceList.addResources(embedResourcesFromList!("resources.list")()); + Platform.instance.uiTheme = "ide_theme_default"; + // you can override default hinting mode here //FontManager.hintingMode = HintingMode.Light; //FontManager.hintingMode = HintingMode.AutoHint; diff --git a/src/dlangide/ui/dsourceedit.d b/src/dlangide/ui/dsourceedit.d index 2f5e824..3813404 100644 --- a/src/dlangide/ui/dsourceedit.d +++ b/src/dlangide/ui/dsourceedit.d @@ -24,7 +24,7 @@ class DSourceEdit : SourceEdit { this(string ID) { super(ID); styleId = null; - backgroundColor = 0xFFFFFF; + backgroundColor = style.customColor("edit_background"); setTokenHightlightColor(TokenCategory.Comment, 0x008000); // green setTokenHightlightColor(TokenCategory.Keyword, 0x0000FF); // blue setTokenHightlightColor(TokenCategory.String, 0xA31515); // brown @@ -42,6 +42,12 @@ class DSourceEdit : SourceEdit { this() { this("SRCEDIT"); } + + /// handle theme change: e.g. reload some themed resources + override void onThemeChanged() { + backgroundColor = style.customColor("edit_background"); + } + protected IDESettings _settings; @property DSourceEdit settings(IDESettings s) { _settings = s; diff --git a/src/dlangide/ui/frame.d b/src/dlangide/ui/frame.d index ed50cb7..d0a7f13 100644 --- a/src/dlangide/ui/frame.d +++ b/src/dlangide/ui/frame.d @@ -424,7 +424,7 @@ class IDEFrame : AppFrame { mainMenuItems.add(helpItem); MainMenu mainMenu = new MainMenu(mainMenuItems); - mainMenu.backgroundColor = 0xd6dbe9; + //mainMenu.backgroundColor = 0xd6dbe9; return mainMenu; } diff --git a/src/dlangide/ui/homescreen.d b/src/dlangide/ui/homescreen.d index deaf2f5..ed09043 100644 --- a/src/dlangide/ui/homescreen.d +++ b/src/dlangide/ui/homescreen.d @@ -14,8 +14,9 @@ class HomeScreen : ScrollWidget { protected VerticalLayout _recentItems; this(string ID, IDEFrame frame) { super(ID); - backgroundColor = 0xFFFFFF; + styleId = STYLE_EDIT_BOX; _frame = frame; + uint linkColor = currentTheme.customColor("link_color", 0x2020FF); _content = new HorizontalLayout("HOME_SCREEN_BODY"); _content.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT); VerticalLayout _column1 = new VerticalLayout(); @@ -24,11 +25,11 @@ class HomeScreen : ScrollWidget { _column2.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT).padding(Rect(20, 20, 20, 20)); _content.addChild(_column1); _content.addChild(_column2); - _column1.addChild((new TextWidget(null, "Dlang IDE"d)).fontSize(32).textColor(0x000080)); + _column1.addChild((new TextWidget(null, "Dlang IDE"d)).fontSize(32).textColor(linkColor)); _column1.addChild((new TextWidget(null, "D language IDE written in D"d)).fontSize(20)); - _column1.addChild((new TextWidget(null, "(c) Vadim Lopatin 2015"d)).fontSize(22).textColor(0x000080)); + _column1.addChild((new TextWidget(null, "(c) Vadim Lopatin 2015"d)).fontSize(22).textColor(linkColor)); _column1.addChild(new VSpacer()); - _column1.addChild((new TextWidget(null, "Start with:"d)).fontSize(20).textColor(0x000040)); + _column1.addChild((new TextWidget(null, "Start with:"d)).fontSize(20).textColor(linkColor)); _startItems = new VerticalLayout(); _recentItems = new VerticalLayout(); _startItems.addChild(new ImageTextButton(ACTION_FILE_OPEN_WORKSPACE)); @@ -36,11 +37,11 @@ class HomeScreen : ScrollWidget { _startItems.addChild(new ImageTextButton(ACTION_FILE_NEW_PROJECT)); _column1.addChild(_startItems); _column1.addChild(new VSpacer()); - _column1.addChild((new TextWidget(null, "Recent:"d)).fontSize(20).textColor(0x000040)); + _column1.addChild((new TextWidget(null, "Recent:"d)).fontSize(20).textColor(linkColor)); _recentItems.addChild((new TextWidget(null, "No recent items"d))); _column1.addChild(_recentItems); _column1.addChild(new VSpacer()); - _column2.addChild((new TextWidget(null, "Useful Links:"d)).fontSize(20).textColor(0x000040)); + _column2.addChild((new TextWidget(null, "Useful Links:"d)).fontSize(20).textColor(linkColor)); _column2.addChild(new UrlImageTextButton(null, "D Programming Language"d, "http://dlang.org/")); _column2.addChild(new UrlImageTextButton(null, "DUB repository"d, "http://code.dlang.org/")); _column2.addChild(new UrlImageTextButton(null, "DLangUI on GitHub"d, "https://github.com/buggins/dlangui")); diff --git a/src/dlangide/ui/settings.d b/src/dlangide/ui/settings.d index 2f7c9f2..5c51ffe 100644 --- a/src/dlangide/ui/settings.d +++ b/src/dlangide/ui/settings.d @@ -143,7 +143,9 @@ SettingsPage createSettingsPages() { texted.addCheckbox("editors/textEditor/smartIndents", UIString("Smart indents"d)); texted.addCheckbox("editors/textEditor/smartIndentsAfterPaste", UIString("Smart indent after paste"d)); SettingsPage ui = res.addChild("interface", UIString("Interface"d)); - ui.addStringComboBox("interface/theme", UIString("Theme"d), [StringListValue("theme_default", "Default"d), StringListValue("theme_dark", "Dark"d)]); + ui.addStringComboBox("interface/theme", UIString("Theme"d), [ + StringListValue("ide_theme_default", "Default"d), + StringListValue("ide_theme_dark", "Dark"d)]); ui.addStringComboBox("interface/language", UIString("Language"d), [StringListValue("en", "English"d), StringListValue("ru", "Russian"d)]); ui.addIntComboBox("interface/hintingMode", UIString("Font hinting mode"d), [StringListValue(0, "Normal"d), StringListValue(1, "Force Auto Hint"d), StringListValue(2, "Disabled"d), StringListValue(3, "Light"d)]); diff --git a/views/res/ide_theme_dark.xml b/views/res/ide_theme_dark.xml new file mode 100644 index 0000000..bb43ee9 --- /dev/null +++ b/views/res/ide_theme_dark.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/views/res/ide_theme_default.xml b/views/res/ide_theme_default.xml new file mode 100644 index 0000000..b3561b8 --- /dev/null +++ b/views/res/ide_theme_default.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/views/resources.list b/views/resources.list index 2d7728f..51eb8d2 100644 --- a/views/resources.list +++ b/views/resources.list @@ -1,3 +1,5 @@ +res/ide_theme_default.xml +res/ide_theme_dark.xml res/i18n/en.ini res/i18n/ru.ini res/mdpi/cr3_logo.png