digitalmars.D.dwt - HelloWorld in Harmonia
- Andrew Fedoniouk (129/129) Feb 07 2006 Just in case someone would like to compare with others.
- Dannerbeck Dieter (3/167) Feb 17 2006 I like harmonia( can't really use it because there's no docs ) but i'm
- Andrew Fedoniouk (5/7) Feb 17 2006 Well let's start together then.
Just in case someone would like to compare with others.
Here are 3 "hello world"s
hello1. d --------------------------------------------
module samples.hello1;
// HTML Hello World.
import harmonia.ui.application;
import harmonia.ui.window;
import harmonia.html.view;
// HTML behavior can be attached to any container
// This time to the window.
alias HtmlPanelT!(Window) HtmlWindow;
void HelloWorldStart()
{
HtmlWindow w = new HtmlWindow;
w.html =
"<HTML back-color='edit info'
text-align=center
vertical-align=middle>Hello World!</HTML>";
w.state = Window.STATE.SHOWN;
}
static this()
{
Application.onStart = &HelloWorldStart;
}
EOF: --------------------------------
hello2.d --------------------------------------------
module samples.hello1;
// Hello World with custom draw.
import harmonia.ui.application;
import harmonia.ui.window;
import harmonia.gx.graphics;
class MyWindow:Window
{
this() { windowCaption = "Hello2"; }
const wchar[] message = "Hello World!";
override void draw(Graphics g)
{
// client rect is a rect with origin (0,0)
rect clientRc = rect(this.place.dim);
// fill background by gradient colors
g.fillRect(clientRc, 0x8ce8ff, 0x8ce8ff, 0x0066cc, 0x0066cc);
// create font or get it from font cache
// and select it into the Graphics
g.font = Font.create("Century Gothic", 36);
// textColor
g.textColor = 0x003399;
// draw chars
g.drawChars(message, clientRc, Graphics.DRAW.CENTER |
Graphics.DRAW.MIDDLE);
}
}
static this()
{
Application.onStart =
function void()
{
// create MyWindow and show it
(new MyWindow()).state = Window.STATE.SHOWN;
};
}
EOF: ------------------------------------------------
module samples.browser;
import harmonia.ui.application;
import harmonia.ui.frame;
import harmonia.html.view;
import harmonia.io.mmfile;
//|
//| static module ctor
//|
//| Harmonia way to setup GUI application
//|
static this()
{
Application.onStart =
// Runtime started. Statics were intitalized.
// Voulez-vous dancer?
function void()
{
// create MainWindow here
(new MyFrame()).state = Window.STATE.SHOWN;
};
}
// Frame is a template parametrized by class name of it central View widget
class MyFrame: Frame!(HtmlView)
{
this()
{
// menu initialization
menu ~=
new Menu("File")
~ FileCommand.Open
~ Menu.Separator
~ FileCommand.Exit;
view.html = initialHtml; //a.k.a. about:blank
}
void openFile()
{
static FileDialog dlg;
if(!dlg)
{
dlg = new FileDialog();
dlg.addFilter("HTML Files", "*.htm;*.html");
dlg.dialogCaption = "Select HTML file to open:";
}
if(!dlg.selectFileToOpen(this))
return;
MMFile data = MMFile.open(dlg.filePathNameExt);
this.view.html = cast(char[])data[];
}
bool on(EventCommand evt)
{
if(evt.cmd is FileCommand.Open)
{
if( evt.type == EventCommand.DO ) openFile();
return true;
}
else if(evt.cmd is FileCommand.Exit)
{
if( evt.type == EventCommand.DO ) this.state = STATE.CLOSED;
return true;
}
return false;
}
static char[] initialHtml = "<HTML> </HTML>";
}
EOF: ------------------------------------------
Feb 07 2006
Andrew Fedoniouk schrieb:
Just in case someone would like to compare with others.
Here are 3 "hello world"s
hello1. d --------------------------------------------
module samples.hello1;
// HTML Hello World.
import harmonia.ui.application;
import harmonia.ui.window;
import harmonia.html.view;
// HTML behavior can be attached to any container
// This time to the window.
alias HtmlPanelT!(Window) HtmlWindow;
void HelloWorldStart()
{
HtmlWindow w = new HtmlWindow;
w.html =
"<HTML back-color='edit info'
text-align=center
vertical-align=middle>Hello World!</HTML>";
w.state = Window.STATE.SHOWN;
}
static this()
{
Application.onStart = &HelloWorldStart;
}
EOF: --------------------------------
hello2.d --------------------------------------------
module samples.hello1;
// Hello World with custom draw.
import harmonia.ui.application;
import harmonia.ui.window;
import harmonia.gx.graphics;
class MyWindow:Window
{
this() { windowCaption = "Hello2"; }
const wchar[] message = "Hello World!";
override void draw(Graphics g)
{
// client rect is a rect with origin (0,0)
rect clientRc = rect(this.place.dim);
// fill background by gradient colors
g.fillRect(clientRc, 0x8ce8ff, 0x8ce8ff, 0x0066cc, 0x0066cc);
// create font or get it from font cache
// and select it into the Graphics
g.font = Font.create("Century Gothic", 36);
// textColor
g.textColor = 0x003399;
// draw chars
g.drawChars(message, clientRc, Graphics.DRAW.CENTER |
Graphics.DRAW.MIDDLE);
}
}
static this()
{
Application.onStart =
function void()
{
// create MyWindow and show it
(new MyWindow()).state = Window.STATE.SHOWN;
};
}
EOF: ------------------------------------------------
module samples.browser;
import harmonia.ui.application;
import harmonia.ui.frame;
import harmonia.html.view;
import harmonia.io.mmfile;
//|
//| static module ctor
//|
//| Harmonia way to setup GUI application
//|
static this()
{
Application.onStart =
// Runtime started. Statics were intitalized.
// Voulez-vous dancer?
function void()
{
// create MainWindow here
(new MyFrame()).state = Window.STATE.SHOWN;
};
}
// Frame is a template parametrized by class name of it central View widget
class MyFrame: Frame!(HtmlView)
{
this()
{
// menu initialization
menu ~=
new Menu("File")
~ FileCommand.Open
~ Menu.Separator
~ FileCommand.Exit;
view.html = initialHtml; //a.k.a. about:blank
}
void openFile()
{
static FileDialog dlg;
if(!dlg)
{
dlg = new FileDialog();
dlg.addFilter("HTML Files", "*.htm;*.html");
dlg.dialogCaption = "Select HTML file to open:";
}
if(!dlg.selectFileToOpen(this))
return;
MMFile data = MMFile.open(dlg.filePathNameExt);
this.view.html = cast(char[])data[];
}
bool on(EventCommand evt)
{
if(evt.cmd is FileCommand.Open)
{
if( evt.type == EventCommand.DO ) openFile();
return true;
}
else if(evt.cmd is FileCommand.Exit)
{
if( evt.type == EventCommand.DO ) this.state = STATE.CLOSED;
return true;
}
return false;
}
static char[] initialHtml = "<HTML> </HTML>";
}
EOF: ------------------------------------------
I like harmonia( can't really use it because there's no docs ) but i'm
sure it's the most portable toolkit there.
Feb 17 2006
I like harmonia( can't really use it because there's no docs ) but i'm sure it's the most portable toolkit there.Well let's start together then. I've added following page into HarmoniaWiki: http://www.terrainformatica.com/wiki/pmwiki.php/Harmonia/Documentation Feel free to add there names of chapters you would like to see there. Andrew.
Feb 17 2006








"Andrew Fedoniouk" <news terrainformatica.com>