Libraryless. Click here for Pure Java version (837L/7K/22K).
1 | !747 |
2 | !awt {
|
3 | |
4 | m {
|
5 | static JTextArea textArea; |
6 | static float fontSize = 24f; |
7 | static S fontSnippet = |
8 | //"#1000970" |
9 | "#1000973" // Classic Trash 1 |
10 | ; |
11 | static S thinking = "[...]"; |
12 | static S chatID; |
13 | |
14 | p {
|
15 | chatID = (S) get(getJavaX(), "chatSend_id"); |
16 | print("Chat ID: " + chatID);
|
17 | |
18 | textArea = new JTextArea(); |
19 | textArea.setLineWrap(true); |
20 | textArea.setWrapStyleWord(true); |
21 | textArea.setFont(loadFont()); |
22 | textArea.setMargin(new Insets(10, 10, 10, 10)); |
23 | |
24 | textArea.addKeyListener(new KeyAdapter() {
|
25 | public void keyPressed(KeyEvent e) {
|
26 | if (e.getKeyCode() == KeyEvent.VK_ENTER && e.getModifiers() == 0) {
|
27 | enterPressed(); |
28 | } |
29 | } |
30 | }); |
31 | |
32 | makeFrame("Dialog 3", new JScrollPane(textArea));
|
33 | |
34 | daemon {
|
35 | while (true) {
|
36 | S line = suckFromChatNoHistory(); |
37 | if (line == null) break; |
38 | L<S> tok = javaTok(line); |
39 | S text = unquote(tok.get(tok.size()-2)); |
40 | S guy = tok.get(1); |
41 | S prefix = chatID + ":"; |
42 | if (text.startsWith(prefix)) |
43 | answer(text.substring(prefix.length()).trim()); |
44 | } |
45 | } |
46 | |
47 | sleep(); // important for auto-logging as of now |
48 | } |
49 | |
50 | static void enterPressed() {
|
51 | S text = textArea.getText(); |
52 | int idx = textArea.getCaretPosition(); |
53 | |
54 | // move to end of line first |
55 | while (idx < text.length() && text.charAt(idx) != '\n') ++idx; |
56 | textArea.setCaretPosition(idx); |
57 | |
58 | //print(quote(text.substring(0, idx))); |
59 | int lineStart = text.lastIndexOf("\n", idx-1);
|
60 | //print(lineStart + " " + idx); |
61 | final S line = text.substring(lineStart+1, idx); |
62 | print("?? " + line);
|
63 | type(thinking); |
64 | thread {
|
65 | processLine(line); |
66 | } |
67 | } |
68 | |
69 | static Font loadFont() ctex {
|
70 | return Font.createFont(Font.TRUETYPE_FONT, loadLibrary(fontSnippet)).deriveFont(fontSize); |
71 | } |
72 | |
73 | static void processLine(S line) {
|
74 | // nothing to do, just wait for answers |
75 | } |
76 | |
77 | static void answer(final S s) {
|
78 | awt {
|
79 | print("!! " + s);
|
80 | S text = textArea.getText(); |
81 | int idx = text.indexOf(thinking); |
82 | if (idx < 0) {
|
83 | print("Weird! Maybe user edited?");
|
84 | return; |
85 | } |
86 | int cursor = textArea.getCaretPosition(); |
87 | textArea.replaceRange(s, idx, idx+thinking.length()); |
88 | if (cursor > idx+thinking.length()) |
89 | textArea.setCaretPosition(cursor+s.length()-thinking.length()); |
90 | } |
91 | } |
92 | |
93 | static void type(S bla) {
|
94 | print("!! " + bla);
|
95 | textArea.insert("\n" + bla, textArea.getCaretPosition());
|
96 | } |
97 | } |
Began life as a copy of #1000974
download show line numbers debug dex old transpilations
Travelled to 15 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, teubizvjbppd, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1000976 |
| Snippet name: | Dialog 3 (sucking chat for answers) |
| Eternal ID of this version: | #1000976/1 |
| Text MD5: | 83c67f88d2e6c03f75bc41dc9163a8fc |
| Transpilation MD5: | 7e40aea5f033275810f247cef5fc0293 |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX source code |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2015-09-13 03:33:22 |
| Source code size: | 2638 bytes / 97 lines |
| Pitched / IR pitched: | No / Yes |
| Views / Downloads: | 857 / 934 |
| Referenced in: | [show references] |