Skip to content

Commit 76ae35d

Browse files
committed
Fixed Bug, Finished TextEdit and added Button
1 parent 9bc5fcb commit 76ae35d

File tree

6 files changed

+114
-12
lines changed

6 files changed

+114
-12
lines changed

src/main/java/de/x7airworker/lcuij/library/LCUI.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,30 @@ public interface LCUI extends Library {
2020

2121
Widget LCUIWidget_GetById(Pointer id);
2222

23+
void Button_SetTextW(Widget widget, Pointer wstr);
24+
void Button_SetText(Widget widget, Pointer str);
25+
26+
void TextEdit_EnableStyleTag(Widget widget, boolean enable);
27+
void TextEdit_EnableMultiline(Widget widget, boolean enable);
28+
void TextEdit_MoveCaret(Widget widget, int row, int col);
2329
void TextEdit_ClearText(Widget widget);
2430
void TextEdit_GetTextW(Widget widget, Size_t start, Size_t end, Pointer buf);
2531
Size_t TextEdit_GetTextLength(Widget widget);
26-
27-
void TextView_SetTextW(Widget widget, char[] str);
32+
void TextEdit_SetCaretBlink(Widget widget, boolean visible, int time);
33+
int TextEdit_SetTextW(Widget widget, Pointer wstr);
34+
int TextEdit_SetText(Widget widget, Pointer utf8_str);
35+
int TextEdit_AppendTextW(Widget widget, Pointer wstr);
36+
int TextEdit_InsertTextW(Widget widget, Pointer wstr);
37+
int TextEdit_SetPlaceHolderW(Widget widget, Pointer wstr);
38+
int TextEdit_SetPlaceHolder(Widget widget, Pointer str);
39+
void TextEdit_SetPasswordChar(Widget widget, char c);
40+
41+
int TextView_SetTextW(Widget widget, Pointer str);
42+
int TextView_SetText(Widget widget, Pointer utf8_text);
43+
void TextView_SetLineHeight(Widget widget, int height);
44+
void TextView_SetTextAlign(Widget widget, int align);
45+
void TextView_SetAutoWrap(Widget widget, boolean enable);
46+
void TextView_SetMulitiline(Widget widget, boolean enable);
2847

2948
@Structure.FieldOrder({"hash", "state", "id", "type", "classes", "status", "title", "dicts", "disabled", "event_blocked", "layout_x", "layout_y", "x", "y", "width", "height", "max_content_width", "max_content_height"})
3049
final class Widget extends Structure {

src/main/java/de/x7airworker/lcuij/library/NativeString.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,19 @@ public NativeString(String string, boolean wide) {
4848
if (wide) {
4949
int len = (string.length() + 1 ) * Native.WCHAR_SIZE;
5050
pointer = new Memory(len);
51-
pointer.setString(0, string, "UTF-8");
52-
}
53-
else {
51+
pointer.setWideString(0, string);
52+
} else {
5453
byte[] data = Native.toByteArray(string);
5554
pointer = new Memory(data.length + 1);
5655
pointer.write(0, data, 0, data.length);
5756
pointer.setByte(data.length, (byte)0);
5857
}
5958
}
6059

60+
public NativeString(int size) {
61+
pointer = new Memory(size);
62+
}
63+
6164
public int hashCode() {
6265
return toString().hashCode();
6366
}
@@ -80,6 +83,10 @@ public Pointer getPointer() {
8083
return pointer;
8184
}
8285

86+
public String getString() {
87+
return pointer.getString(0);
88+
}
89+
8390
public char charAt(int index) {
8491
return toString().charAt(index);
8592
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package de.x7airworker.lcuij.widget;
2+
3+
import de.x7airworker.lcuij.library.LCUI;
4+
import de.x7airworker.lcuij.library.NativeString;
5+
6+
public class Button extends Widget {
7+
protected Button(LCUI.Widget handle) {
8+
super(handle);
9+
}
10+
11+
public void setTextW(String text) {
12+
NativeString ns = new NativeString(text, true);
13+
LCUI.INSTANCE.Button_SetTextW(handle, ns.getPointer());
14+
}
15+
16+
public void setText(String text) {
17+
NativeString ns = new NativeString(text);
18+
LCUI.INSTANCE.Button_SetText(handle, ns.getPointer());
19+
}
20+
}

src/main/java/de/x7airworker/lcuij/widget/TextEdit.java

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,76 @@
44
import com.sun.jna.Native;
55
import com.sun.jna.Pointer;
66
import de.x7airworker.lcuij.library.LCUI;
7+
import de.x7airworker.lcuij.library.NativeString;
78
import de.x7airworker.lcuij.library.Size_t;
89

910
public class TextEdit extends Widget {
1011
protected TextEdit(LCUI.Widget handle) {
1112
super(handle);
1213
}
1314

15+
public void enableStyleTag(boolean enable) {
16+
LCUI.INSTANCE.TextEdit_EnableStyleTag(handle, enable);
17+
}
18+
19+
public void enableMultiline(boolean enable){
20+
LCUI.INSTANCE.TextEdit_EnableMultiline(handle, enable);
21+
}
22+
23+
public void moveCaret(int row, int col) {
24+
LCUI.INSTANCE.TextEdit_MoveCaret(handle, row, col);
25+
}
26+
27+
public void clear() {
28+
LCUI.INSTANCE.TextEdit_ClearText(handle);
29+
}
30+
1431
public String getText() {
1532
int size = getLength();
16-
Pointer m = new Memory((size + 1) * Native.WCHAR_SIZE);
17-
LCUI.INSTANCE.TextEdit_GetTextW(handle, new Size_t(0), new Size_t(size), m);
18-
return m.getWideString(0);
33+
NativeString ns = new NativeString((size + 1) * Native.WCHAR_SIZE);
34+
LCUI.INSTANCE.TextEdit_GetTextW(handle, new Size_t(0), new Size_t(size), ns.getPointer());
35+
return ns.getPointer().getWideString(0);
1936
}
2037

2138
public int getLength() {
2239
return LCUI.INSTANCE.TextEdit_GetTextLength(handle).intValue();
2340
}
41+
42+
public void setCaretBlink(boolean visibile, int time) {
43+
LCUI.INSTANCE.TextEdit_SetCaretBlink(handle, visibile, time);
44+
}
45+
46+
public int setTextW(String text) {
47+
NativeString ns = new NativeString(text, true);
48+
return LCUI.INSTANCE.TextEdit_SetTextW(handle, ns.getPointer());
49+
}
50+
51+
public int setText(String text) {
52+
NativeString ns = new NativeString(text);
53+
return LCUI.INSTANCE.TextEdit_SetText(handle, ns.getPointer());
54+
}
55+
56+
public int appendTextW(String text) {
57+
NativeString ns = new NativeString(text, true);
58+
return LCUI.INSTANCE.TextEdit_AppendTextW(handle, ns.getPointer());
59+
}
60+
61+
public int insertTextW(String text) {
62+
NativeString ns = new NativeString(text, true);
63+
return LCUI.INSTANCE.TextEdit_InsertTextW(handle, ns.getPointer());
64+
}
65+
66+
public int setPlaceHolderW(String text) {
67+
NativeString ns = new NativeString(text, true);
68+
return LCUI.INSTANCE.TextEdit_SetPlaceHolderW(handle, ns.getPointer());
69+
}
70+
71+
public int setPlaceHolder(String text) {
72+
NativeString ns = new NativeString(text);
73+
return LCUI.INSTANCE.TextEdit_SetPlaceHolder(handle, ns.getPointer());
74+
}
75+
76+
public void setPasswordChar(char c) {
77+
LCUI.INSTANCE.TextEdit_SetPasswordChar(handle, c);
78+
}
2479
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
package de.x7airworker.lcuij.widget;
22

33
import de.x7airworker.lcuij.library.LCUI;
4-
5-
import java.util.Arrays;
4+
import de.x7airworker.lcuij.library.NativeString;
65

76
public class TextView extends Widget {
87
protected TextView(LCUI.Widget handle) {
98
super(handle);
109
}
1110

1211
public void setText(final String text) {
13-
char[] str = text.toCharArray();
14-
LCUI.INSTANCE.TextView_SetTextW(handle, str);
12+
NativeString ns = new NativeString(text, true);
13+
LCUI.INSTANCE.TextView_SetTextW(handle, ns.getPointer());
1514
}
1615
}

src/main/java/de/x7airworker/lcuij/widget/Widget.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ private static Widget autoCast(LCUI.Widget lWidget) {
6363
return new TextEdit(lWidget);
6464
} else if (type.equals("textview")) {
6565
return new TextView(lWidget);
66+
} else if (type.equals("button")) {
67+
return new Button(lWidget);
6668
}
6769

6870
return new Widget(lWidget);

0 commit comments

Comments
 (0)