Numerous bug fixes to all platforms
Works both installed and not installed
This commit is contained in:
parent
c913f9f99a
commit
a81ea73566
68 changed files with 384 additions and 35286 deletions
|
@ -1,109 +0,0 @@
|
|||
/* MinWin Label class
|
||||
*
|
||||
* Static text label
|
||||
*
|
||||
* Written by Ben Hinkle and released to the public domain, as
|
||||
* explained at http://creativecommons.org/licenses/publicdomain
|
||||
* Report comments and bugs at dsource: http://www.dsource.org/projects/minwin
|
||||
*/
|
||||
|
||||
module minwin.label;
|
||||
|
||||
public import minwin.component;
|
||||
|
||||
private {
|
||||
import minwin.app;
|
||||
import minwin.window;
|
||||
import minwin.peerimpl;
|
||||
import std.string;
|
||||
import minwin.logging;
|
||||
}
|
||||
|
||||
version (MinWin32) {
|
||||
|
||||
private import minwin.mswindows;
|
||||
|
||||
template LabelPrefSizeImpl() {
|
||||
Point preferredSize() {
|
||||
HDC dc = GetDC(peer);
|
||||
sysAssert(dc !is null, "Failed to get label DC in preferredSize");
|
||||
SIZE s;
|
||||
try {
|
||||
Font f = standardFont(StandardFont.Gui);
|
||||
HFONT oldfont = SelectObject(dc,f.peer);
|
||||
sysAssert(oldfont !is null, "Failed to get Label font in preferredSize");
|
||||
BOOL ok = GetTextExtentPoint32X(dc,text_data,text_data.length,&s);
|
||||
SelectObject(dc,oldfont);
|
||||
sysAssert(ok != false, "Failed to get font extents in preferredSize");
|
||||
} finally {
|
||||
ReleaseDC(peer,dc);
|
||||
}
|
||||
POINT p;
|
||||
p.x = s.cx;
|
||||
p.y = s.cy;
|
||||
if (userPreferredWidth > 0)
|
||||
p.x = userPreferredWidth;
|
||||
if (userPreferredHeight > 0)
|
||||
p.y = userPreferredHeight;
|
||||
return toPoint(p);
|
||||
}
|
||||
}
|
||||
|
||||
class Label : WindowChild {
|
||||
private char[] text_data;
|
||||
this(Component parent, char[] text, char[] name = "") {
|
||||
PeerForAdd parentp = parent.getPeerForAdd();
|
||||
peer = CreateWindowX("STATIC",text,
|
||||
SS_LEFTNOWORDWRAP | WS_CHILD | WS_VISIBLE,
|
||||
0,0,10,10,parentp,
|
||||
cast(HMENU)0,gApp.hInstance,null);
|
||||
sysAssert(peer !is null, "Failed to create peer Label");
|
||||
this.name = name;
|
||||
text_data = text;
|
||||
Font f = standardFont(StandardFont.Gui);
|
||||
SendMessageA(peer,WM_SETFONT,cast(WPARAM)f.peer,0);
|
||||
setWindowChildPeer(this,peer,OWNS_PEER);
|
||||
parent.addChild(this);
|
||||
}
|
||||
char[] text() {return text_data;}
|
||||
void text(char[] c) {
|
||||
text_data = c;
|
||||
SendMessageX(peer,WM_SETTEXT,0,c);
|
||||
}
|
||||
mixin LabelPrefSizeImpl!();
|
||||
mixin WindowChildImpl!();
|
||||
}
|
||||
|
||||
} else version (GTK) {
|
||||
|
||||
private import minwin.gtk;
|
||||
private import std.c.string;
|
||||
|
||||
class Label : WindowChild {
|
||||
this(Component parent, char[] text, char[] name = "") {
|
||||
PeerForAdd parentp = parent.getPeerForAdd();
|
||||
this.name = name;
|
||||
char* str = toStringz(text);
|
||||
peer = gtk_label_new(str);
|
||||
gtk_container_add(cast(GtkContainer*)parentp,peer);
|
||||
setWindowChildPeer(this,peer,OWNS_PEER);
|
||||
parent.addChild(this);
|
||||
gtk_widget_realize(peer);
|
||||
visible = true;
|
||||
}
|
||||
|
||||
mixin WindowChildImpl!();
|
||||
|
||||
char[] text() {
|
||||
char* str = gtk_label_get_text(cast(GtkLabel*)peer);
|
||||
if (str is null)
|
||||
return "";
|
||||
else
|
||||
return str[0..strlen(str)].dup;
|
||||
}
|
||||
|
||||
void text(char[] c) {
|
||||
gtk_label_set_text(cast(GtkLabel*)peer,toStringz(c));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue