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 @@
+
+
+
+
+
+
diff --git a/examples/spreadsheet/views/resources.list b/examples/spreadsheet/views/resources.list
index d8a1b540..4aa19aed 100644
--- a/examples/spreadsheet/views/resources.list
+++ b/examples/spreadsheet/views/resources.list
@@ -16,5 +16,10 @@ res/mdpi/edit-paste.png
res/mdpi/edit-redo.png
res/mdpi/edit-undo.png
res/mdpi/edit-unindent.png
+res/mdpi/tab_sheet_down_background.9.png
+res/mdpi/tab_sheet_down_normal.9.png
+res/mdpi/tab_sheet_down_selected.9.png
res/mdpi/text-dml.png
res/mdpi/tx_fabric.jpg
+res/tab_sheet_down.xml
+res/theme_custom.xml