add AppFrame and StatusLine classes

This commit is contained in:
Vadim Lopatin 2015-01-15 15:30:03 +03:00
parent 4c1615ffa6
commit 96a0213145
6 changed files with 139 additions and 5 deletions

View File

@ -89,7 +89,6 @@
<resfile />
<exefile>$(OutDir)\$(ProjectName).lib</exefile>
<useStdLibPath>1</useStdLibPath>
<cRuntime>2</cRuntime>
<additionalOptions />
<preBuildCommand />
<postBuildCommand />
@ -184,7 +183,6 @@
<resfile />
<exefile>$(OutDir)\$(ProjectName).lib</exefile>
<useStdLibPath>1</useStdLibPath>
<cRuntime>1</cRuntime>
<additionalOptions />
<preBuildCommand />
<postBuildCommand />
@ -380,6 +378,7 @@
</Folder>
</Folder>
<Folder name="widgets">
<File path="src\dlangui\widgets\appframe.d" />
<File path="src\dlangui\widgets\combobox.d" />
<File path="src\dlangui\widgets\controls.d" />
<File path="src\dlangui\widgets\editors.d" />
@ -389,6 +388,7 @@
<File path="src\dlangui\widgets\menu.d" />
<File path="src\dlangui\widgets\popup.d" />
<File path="src\dlangui\widgets\scroll.d" />
<File path="src\dlangui\widgets\statusline.d" />
<File path="src\dlangui\widgets\styles.d" />
<File path="src\dlangui\widgets\tabs.d" />
<File path="src\dlangui\widgets\tree.d" />

View File

@ -131,6 +131,7 @@
<style id="MAIN_MENU"
layoutWidth="FILL_PARENT"
backgroundColor="#EFEFF2"
layoutWeight="0"
/>
<style id="MAIN_MENU_ITEM"
padding="4,2,4,2"
@ -215,6 +216,13 @@
layoutWidth="FILL_PARENT"
layoutHeight="FILL_PARENT"
/>
<style id="STATUS_LINE"
backgroundColor="#D0D0D0"
layoutWidth="FILL_PARENT"
layoutHeight="WRAP_CONTENT"
padding="4,4,4,4"
layoutWeight="0"
/>
<style id="TREE_ITEM"
padding="2,2,2,2"
margins="0,0,0,0"

View File

@ -52,6 +52,9 @@ public import dlangui.core.i18n;
public import dlangui.core.files;
public import dlangui.core.stdaction;
public import dlangui.graphics.images;
public import dlangui.graphics.colors;
public import dlangui.graphics.fonts;
public import dlangui.graphics.drawbuf;
public import dlangui.widgets.widget;
public import dlangui.widgets.controls;
public import dlangui.widgets.layouts;
@ -64,9 +67,8 @@ public import dlangui.widgets.grid;
public import dlangui.widgets.tree;
public import dlangui.widgets.combobox;
public import dlangui.widgets.popup;
public import dlangui.graphics.colors;
public import dlangui.graphics.fonts;
public import dlangui.graphics.drawbuf;
public import dlangui.widgets.appframe;
public import dlangui.widgets.statusline;
public import dlangui.platforms.common.platform;
// some useful imports from Phobos

View File

@ -0,0 +1,75 @@
// Written in the D programming language.
/**
This module contains definition for main widget for usual application - with menu and status bar.
When you need MainMenu, StatusBar, Toolbars in your app, reuse this class.
Synopsis:
----
import dlangui.widgets.appframe;
----
Copyright: Vadim Lopatin, 2015
License: Boost License 1.0
Authors: Vadim Lopatin, coolreader.org@gmail.com
*/
module dlangui.widgets.appframe;
import dlangui.widgets.widget;
import dlangui.widgets.menu;
import dlangui.widgets.layouts;
import dlangui.widgets.statusline;
class AppFrame : VerticalLayout, MenuItemClickHandler {
protected MainMenu _mainMenu;
protected StatusLine _statusLine;
protected Widget _body;
/// main menu widget
@property MainMenu mainMenu() { return _mainMenu; }
/// status line widget
@property StatusLine statusLine() { return _statusLine; }
/// body widget
@property Widget frameBody() { return _body; }
this() {
super("APP_FRAME");
layoutWidth = FILL_PARENT;
layoutHeight = FILL_PARENT;
init();
}
protected void init() {
_mainMenu = createMainMenu();
_mainMenu.onMenuItemClickListener = &onMenuItemClick;
_statusLine = createStatusLine();
_body = createBody();
addChild(_mainMenu);
addChild(_body);
addChild(_statusLine);
}
/// override to handle main menu commands
override bool onMenuItemClick(MenuItem item) {
return false;
}
/// create main menu
protected MainMenu createMainMenu() {
return new MainMenu(new MenuItem());
}
/// create app status line widget
protected StatusLine createStatusLine() {
return new StatusLine();
}
/// create app body widget
protected Widget createBody() {
Widget res = new Widget("APP_FRAME_BODY");
res.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT);
return res;
}
}

View File

@ -0,0 +1,47 @@
// Written in the D programming language.
/**
This module contains definition for status line control.
Status line is usually shown in the bottom of window, and shows status of app.
Contains one or more text and/or icon items
Synopsis:
----
import dlangui.widgets.statusline;
----
Copyright: Vadim Lopatin, 2015
License: Boost License 1.0
Authors: Vadim Lopatin, coolreader.org@gmail.com
*/
module dlangui.widgets.statusline;
import dlangui.widgets.layouts;
import dlangui.widgets.controls;
/// Status line control
class StatusLine : HorizontalLayout {
TextWidget _defStatus;
this() {
super("STATUS_LINE");
styleId = STYLE_STATUS_LINE;
init();
}
void init() {
_defStatus = new TextWidget("STATUS_LINE_TEXT");
_defStatus.layoutWidth(FILL_PARENT);
addChild(_defStatus);
}
/// set text to show in status line in specific panel
void setStatusText(string itemId, dstring value) {
_defStatus.text = value;
}
/// set text to show in status line
void setStatusText(dstring value) {
setStatusText(null, value);
}
}

View File

@ -116,6 +116,8 @@ immutable string STYLE_COMBO_BOX = "COMBO_BOX";
immutable string STYLE_COMBO_BOX_BUTTON = "COMBO_BOX_BUTTON";
/// standard style id for combo box body (current item)
immutable string STYLE_COMBO_BOX_BODY = "COMBO_BOX_BODY";
/// standard style id for app frame status line
immutable string STYLE_STATUS_LINE = "STATUS_LINE";
// Layout size constants
/// layout option, to occupy all available place