From 768d418eec7f4e4a423dbeef4fe0c61cd4b6bc3b Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Mon, 30 Nov 2015 10:31:51 +0300 Subject: [PATCH] spreadsheet example --- .../spreadsheet/spreadsheet-msvc.visualdproj | 5 ++ .../src/dlangui/widgets/spreadsheet.d | 66 ++++++++++++++++++ examples/spreadsheet/src/spreadsheetapp.d | 42 ++++------- .../res/mdpi/tab_sheet_down_background.9.png | Bin 0 -> 173 bytes .../res/mdpi/tab_sheet_down_normal.9.png | Bin 0 -> 341 bytes .../res/mdpi/tab_sheet_down_selected.9.png | Bin 0 -> 276 bytes .../spreadsheet/views/res/tab_sheet_down.xml | 11 +++ .../spreadsheet/views/res/theme_custom.xml | 26 +++++++ examples/spreadsheet/views/resources.list | 5 ++ 9 files changed, 125 insertions(+), 30 deletions(-) create mode 100644 examples/spreadsheet/views/res/mdpi/tab_sheet_down_background.9.png create mode 100644 examples/spreadsheet/views/res/mdpi/tab_sheet_down_normal.9.png create mode 100644 examples/spreadsheet/views/res/mdpi/tab_sheet_down_selected.9.png create mode 100644 examples/spreadsheet/views/res/tab_sheet_down.xml create mode 100644 examples/spreadsheet/views/res/theme_custom.xml diff --git a/examples/spreadsheet/spreadsheet-msvc.visualdproj b/examples/spreadsheet/spreadsheet-msvc.visualdproj index 3962f2c4..16e8e2cf 100644 --- a/examples/spreadsheet/spreadsheet-msvc.visualdproj +++ b/examples/spreadsheet/spreadsheet-msvc.visualdproj @@ -410,6 +410,11 @@ + + + + + diff --git a/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d b/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d index f51a9ecf..05f7b91c 100644 --- a/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d +++ b/examples/spreadsheet/src/dlangui/widgets/spreadsheet.d @@ -1 +1,67 @@ module dlangui.widgets.spreadsheet; + +import dlangui.core.types; +import dlangui.widgets.styles; +import dlangui.widgets.widget; +import dlangui.widgets.layouts; +import dlangui.widgets.controls; +import dlangui.widgets.tabs; +import dlangui.widgets.editors; +import dlangui.widgets.grid; + +/// standard style id for Tab with Up alignment +immutable string STYLE_TAB_SHEET_DOWN = "TAB_SHEET_DOWN"; +/// standard style id for button of Tab with Up alignment +immutable string STYLE_TAB_SHEET_DOWN_BUTTON = "TAB_SHEET_DOWN_BUTTON"; +/// standard style id for button of Tab with Up alignment +immutable string STYLE_TAB_SHEET_DOWN_BUTTON_TEXT = "TAB_SHEET_DOWN_BUTTON_TEXT"; + +class SheetTabs : TabControl { + /// create with ID parameter + this(string ID = null) { + super(ID, Align.Bottom); + setStyles(STYLE_TAB_SHEET_DOWN, STYLE_TAB_SHEET_DOWN_BUTTON, STYLE_TAB_SHEET_DOWN_BUTTON_TEXT); + } +} + +class SheetEditControl : HorizontalLayout { + EditLine _edPosition; + EditLine _edText; + this(string ID = "sheetEdit") { + _edPosition = new EditLine("edPosition"); + _edText = new EditLine("edText"); + _edPosition.maxWidth = 100; + _edPosition.minWidth = 100; + _edText.layoutWidth = FILL_PARENT; + addChild(_edPosition); + addChild(_edText); + } +} + +class SpreadSheetWidget : VerticalLayout { + + SheetEditControl _editControl; + StringGridWidget _grid; + SheetTabs _tabs; + + this(string ID = "spreadsheet") { + _editControl = new SheetEditControl(); + _editControl.layoutWidth = FILL_PARENT; + _grid = new StringGridWidget("grid"); + _grid.layoutWidth = FILL_PARENT; + _grid.layoutHeight = FILL_PARENT; + _grid.resize(50, 50); + _tabs = new SheetTabs(); + _tabs.layoutWidth = FILL_PARENT; + _tabs.addTab("Sheet1", "Sheet1"d); + _tabs.addTab("Sheet2", "Sheet2"d); + _tabs.addTab("Sheet3", "Sheet3"d); + layoutWidth = FILL_PARENT; + layoutHeight = FILL_PARENT; + backgroundColor = 0xFFE0E0E0; + minHeight = 100; + addChild(_editControl); + addChild(_grid); + addChild(_tabs); + } +} diff --git a/examples/spreadsheet/src/spreadsheetapp.d b/examples/spreadsheet/src/spreadsheetapp.d index 3fb19314..d2720d7a 100644 --- a/examples/spreadsheet/src/spreadsheetapp.d +++ b/examples/spreadsheet/src/spreadsheetapp.d @@ -3,7 +3,7 @@ module spreadsheet; import dlangui; import dlangui.dialogs.filedlg; import dlangui.dialogs.dialog; -import dlangui.dml.dmlhighlight; +import dlangui.widgets.spreadsheet; import std.array : replaceFirst; mixin APP_ENTRY_POINT; @@ -42,35 +42,12 @@ const Action ACTION_EDIT_PREFERENCES = (new Action(IDEActions.EditPreferences, " const Action ACTION_DEBUG_START = new Action(IDEActions.DebugStart, "MENU_DEBUG_UPDATE_PREVIEW"c, "debug-run"c, KeyCode.F5, 0); const Action ACTION_HELP_ABOUT = new Action(IDEActions.HelpAbout, "MENU_HELP_ABOUT"c); -/// DIDE source file editor -class DMLSourceEdit : SourceEdit { - this(string ID) { - super(ID); - MenuItem editPopupItem = new MenuItem(null); - editPopupItem.add(ACTION_EDIT_COPY, ACTION_EDIT_PASTE, ACTION_EDIT_CUT, ACTION_EDIT_UNDO, ACTION_EDIT_REDO, ACTION_EDIT_INDENT, ACTION_EDIT_UNINDENT, ACTION_EDIT_TOGGLE_LINE_COMMENT, ACTION_DEBUG_START); - popupMenu = editPopupItem; - content.syntaxSupport = new DMLSyntaxSupport(""); - setTokenHightlightColor(TokenCategory.Comment, 0x008000); // green - setTokenHightlightColor(TokenCategory.Keyword, 0x0000FF); // blue - setTokenHightlightColor(TokenCategory.String, 0xa31515); // brown - setTokenHightlightColor(TokenCategory.Integer, 0xa315C0); // - setTokenHightlightColor(TokenCategory.Float, 0xa315C0); // - setTokenHightlightColor(TokenCategory.Error, 0xFF0000); // red - setTokenHightlightColor(TokenCategory.Op, 0x503000); - setTokenHightlightColor(TokenCategory.Identifier_Class, 0x000080); // blue - - } - this() { - this("DMLEDIT"); - } -} - class EditFrame : AppFrame { MenuItem mainMenuItems; override protected void init() { - _appName = "DMLEdit"; + _appName = "DlangUISpreadSheet"; super.init(); } @@ -231,15 +208,15 @@ class EditFrame : AppFrame { } } + SpreadSheetWidget _spreadsheet; + /// create app body widget override protected Widget createBody() { VerticalLayout bodyWidget = new VerticalLayout(); bodyWidget.layoutWidth = FILL_PARENT; bodyWidget.layoutHeight = FILL_PARENT; - HorizontalLayout hlayout = new HorizontalLayout(); - hlayout.layoutWidth = FILL_PARENT; - hlayout.layoutHeight = FILL_PARENT; - bodyWidget.addChild(hlayout); + _spreadsheet = new SpreadSheetWidget(); + bodyWidget.addChild(_spreadsheet); return bodyWidget; } @@ -255,8 +232,13 @@ extern (C) int UIAppMain(string[] args) { FontManager.fontGamma = 0.8; FontManager.hintingMode = HintingMode.Normal; + // select translation file - for english language + Platform.instance.uiLanguage = "en"; + // load theme from file "theme_custom.xml" + Platform.instance.uiTheme = "theme_custom"; + // create window - Window window = Platform.instance.createWindow("DlangUI ML editor"d, null, WindowFlag.Resizable, 700, 470); + Window window = Platform.instance.createWindow("DlangUI SpreadSheet example"d, null, WindowFlag.Resizable, 700, 470); // create some widget to show in window window.windowIcon = drawableCache.getImage("dlangui-logo1"); diff --git a/examples/spreadsheet/views/res/mdpi/tab_sheet_down_background.9.png b/examples/spreadsheet/views/res/mdpi/tab_sheet_down_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..76e6abc02542907d31e29119424deefc11cfacef GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^f71se<)SPoXVeJjwAa(Sr1-nyvU*+5f4#b|Zh z+&?QARDQa#nlc35?B8q^kn{S`oFlL6G7K*s?C3es@uz2sf5t?)gTe~DWM4f4No{t literal 0 HcmV?d00001 diff --git a/examples/spreadsheet/views/res/mdpi/tab_sheet_down_normal.9.png b/examples/spreadsheet/views/res/mdpi/tab_sheet_down_normal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..105ef441814f918f034ace867eafcda6fdf0ec85 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^5weH`{#SfTY)9<#Q_&CK>3#kD;L`NF lOzWQ=e9`vAyPfxd`AUVDOuw17zkvb3;OXk;vd$@?2>>zHl8OKT literal 0 HcmV?d00001 diff --git a/examples/spreadsheet/views/res/mdpi/tab_sheet_down_selected.9.png b/examples/spreadsheet/views/res/mdpi/tab_sheet_down_selected.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b9d31a867ffc65bc9b4befddb6036eb051271a GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoP!3HGP>6I=3Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP;iT8)37xegofus%?qzdm~TJcHmihZ9qZZyxKclnt7_ zL(k;jNoHNSFO58tCLFO;nq)IU#Kev9fWbMI1B=xQ*L{c!p1+U1$i1!b*z2DH3;~HY zw{AQ;w)^{qV`>c@0bgfSGR(PcpqtGy$$qEsi>5!!vnFag2p5U2aPw-=S|Xz1meruN zMC`zopr01GZ^EC2ui literal 0 HcmV?d00001 diff --git a/examples/spreadsheet/views/res/tab_sheet_down.xml b/examples/spreadsheet/views/res/tab_sheet_down.xml new file mode 100644 index 00000000..96315e86 --- /dev/null +++ b/examples/spreadsheet/views/res/tab_sheet_down.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/examples/spreadsheet/views/res/theme_custom.xml b/examples/spreadsheet/views/res/theme_custom.xml new file mode 100644 index 00000000..65580a4e --- /dev/null +++ b/examples/spreadsheet/views/res/theme_custom.xml @@ -0,0 +1,26 @@ + + + + +