mirror of https://github.com/buggins/dlangui.git
add AppFrame and StatusLine classes
This commit is contained in:
parent
4c1615ffa6
commit
96a0213145
|
@ -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" />
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue