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 00000000..76e6abc0 Binary files /dev/null and b/examples/spreadsheet/views/res/mdpi/tab_sheet_down_background.9.png differ 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 00000000..105ef441 Binary files /dev/null and b/examples/spreadsheet/views/res/mdpi/tab_sheet_down_normal.9.png differ 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 00000000..c0b9d31a Binary files /dev/null and b/examples/spreadsheet/views/res/mdpi/tab_sheet_down_selected.9.png differ 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 @@ + + + + +