Mercurial
annotate postdog/main.c @ 163:058de208e640
[Config] Adding os ignore files.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Mon, 19 Jan 2026 04:52:02 -0800 |
| parents | 87d8d3eb3491 |
| children | 0face9898d04 |
| rev | line source |
|---|---|
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1 #include <stdio.h> |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2 #include <stdlib.h> |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
3 #include <string.h> |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
4 #include <time.h> |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
5 #include <sys/stat.h> |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
6 #include <uv.h> |
|
58
ccb42d5bf8fd
[PostDog] Somewhat working copy. That would use for testing.
June Park <parkjune1995@gmail.com>
parents:
57
diff
changeset
|
7 |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
8 #ifdef _WIN32 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
9 #include <direct.h> |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
10 #include <io.h> |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
11 #define mkdir(path, mode) _mkdir(path) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
12 #define access _access |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
13 #define F_OK 0 |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
14 #else |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
15 #include <sys/stat.h> |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
16 #include <dirent.h> |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
17 #include <unistd.h> |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
18 #endif |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
19 |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
20 |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
21 #include "dowa/dowa.h" |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
22 #include "seobeo/seobeo.h" |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
23 #include "third_party/raylib/include/raylib.h" |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
24 #include "third_party/raylib/include/raygui.h" |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
25 #include "third_party/raylib/custom.h" |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
26 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
27 #ifndef POSTDOG_PATHS |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
28 #define POSTDOG_PATHS "/Users/mrjunejune/zenbu/postdog/history" |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
29 #endif |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
30 |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
31 #define SCREEN_WIDTH 1280 |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
32 #define SCREEN_HEIGHT 780 |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
33 #define MAX_SCROLL_HEIGHT 10000 |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
34 |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
35 #define HEADER_BUFFER_LENGTH 1024 * 4 |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
36 #define DEFAULT_TEXT_BUFFER_LENGTH 1024 * 4 |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
37 #define URL_TEXT_BUFFER_LENGTH 1024 * 10 |
|
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
38 #define BODY_BUFFER_LENGTH 1024 * 1024 * 5 |
|
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
39 #define RESULT_BUFFER_LENGTH 1024 * 1024 * 5 |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
40 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
41 #define URL_TEXT_DEFAULT "https://httpbin.org/get" |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
42 #define HEADER_TEXT_DEFAULT "Content-Type: application/json" |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
43 #define BODY_TEXT_DEFAULT "" |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
44 #define GET_PARAM_TEXT_DEFAULT "foo bar" |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
45 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
46 // ============================================================================ |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
47 // TextArea Component |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
48 // ============================================================================ |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
49 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
50 #define TEXT_SIZE_DEFAULT 10 // used to calcualte spacing |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
51 #define TEXT_AREA_LINE_HEIGHT GuiGetStyle(DEFAULT, TEXT_SIZE) |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
52 #define TEXT_AREA_PADDING 30 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
53 #define TEXT_AREA_CURSOR_WIDTH 2 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
54 #define TEXT_AREA_MAX_UNDO_STATES 64 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
55 #define TEXT_AREA_MAX_INSTANCES 8 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
56 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
57 typedef struct { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
58 char *text; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
59 int cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
60 int selection_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
61 int selection_end; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
62 } TextAreaUndoEntry; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
63 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
64 // Cached line info for fast rendering |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
65 typedef struct { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
66 int start_pos; // Character position where this line starts |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
67 int end_pos; // Character position where this line ends (exclusive) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
68 int char_count; // Number of characters in this line |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
69 } LineInfo; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
70 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
71 typedef struct { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
72 int id; // Unique ID for this text area |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
73 int cursor_pos; // Current cursor position in text |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
74 int selection_start; // Selection start (-1 if no selection) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
75 int selection_end; // Selection end (-1 if no selection) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
76 float scroll_offset_y; // Vertical scroll offset |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
77 float scroll_offset_x; // Horizontal scroll offset (for non-wrap mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
78 boolean is_selecting; // Currently dragging to select |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
79 boolean is_initialized; // State has been initialized |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
80 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
81 // Undo history |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
82 TextAreaUndoEntry *undo_stack; // Dowa array of undo entries |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
83 int undo_index; // Current position in undo stack |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
84 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
85 // Internal tracking |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
86 double last_blink_time; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
87 boolean cursor_visible; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
88 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
89 // Line cache for fast rendering |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
90 LineInfo *line_cache; // Dowa array of line info |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
91 int cached_text_len; // Text length when cache was built |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
92 int cached_text_hash; // Simple hash to detect text changes |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
93 float cached_content_width; // Content width when cache was built |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
94 boolean cache_valid; // Whether cache is valid |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
95 } TextAreaState; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
96 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
97 static TextAreaState g_text_area_states[TEXT_AREA_MAX_INSTANCES] = {0}; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
98 static int g_text_area_state_count = 0; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
99 static char *g_clipboard_text = NULL; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
100 static Dowa_Arena *g_text_area_arena = NULL; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
101 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
102 // Helper functions |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
103 static int TA_Min_Int(int a, int b) { return a < b ? a : b; } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
104 static int TA_Max_Int(int a, int b) { return a > b ? a : b; } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
105 static float TA_Min_Float(float a, float b) { return a < b ? a : b; } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
106 static float TA_Max_Float(float a, float b) { return a > b ? a : b; } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
107 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
108 // Sanitize text for display - replace tabs with spaces, remove other non-printable chars |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
109 static void SanitizeTextForDisplay(char *text) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
110 if (!text) return; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
111 char *read = text; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
112 char *write = text; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
113 while (*read) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
114 if (*read == '\t') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
115 // Replace tab with 2 spaces |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
116 *write++ = ' '; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
117 *write++ = ' '; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
118 } else if (*read == '\n' || *read == '\r') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
119 // Keep newlines and carriage returns |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
120 *write++ = *read; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
121 } else if ((unsigned char)*read >= 32 && (unsigned char)*read < 127) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
122 // Keep printable ASCII |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
123 *write++ = *read; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
124 } else if ((unsigned char)*read >= 128) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
125 // Keep UTF-8 characters (high bit set) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
126 *write++ = *read; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
127 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
128 // Skip other non-printable characters |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
129 read++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
130 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
131 *write = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
132 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
133 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
134 static TextAreaState* GetTextAreaState(int id) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
135 for (int i = 0; i < g_text_area_state_count; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
136 if (g_text_area_states[i].id == id && g_text_area_states[i].is_initialized) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
137 return &g_text_area_states[i]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
138 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
139 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
140 return NULL; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
141 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
142 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
143 static TextAreaState* CreateTextAreaState(int id) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
144 // First, check if there's an existing slot with this ID (possibly reset) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
145 for (int i = 0; i < g_text_area_state_count; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
146 if (g_text_area_states[i].id == id) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
147 TextAreaState *state = &g_text_area_states[i]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
148 // Reuse this slot - clear it but keep the id |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
149 memset(state, 0, sizeof(TextAreaState)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
150 state->id = id; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
151 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
152 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
153 state->undo_index = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
154 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
155 state->is_initialized = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
156 return state; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
157 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
158 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
159 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
160 // No existing slot, create a new one |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
161 if (g_text_area_state_count >= TEXT_AREA_MAX_INSTANCES) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
162 return &g_text_area_states[0]; // Reuse first slot as fallback |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
163 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
164 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
165 TextAreaState *state = &g_text_area_states[g_text_area_state_count++]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
166 memset(state, 0, sizeof(TextAreaState)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
167 state->id = id; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
168 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
169 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
170 state->undo_index = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
171 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
172 state->is_initialized = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
173 return state; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
174 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
175 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
176 static void GetLineAndColumn(const char *text, int pos, int *out_line, int *out_column) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
177 int line = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
178 int column = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
179 for (int i = 0; i < pos && text[i] != '\0'; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
180 if (text[i] == '\n') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
181 line++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
182 column = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
183 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
184 column++; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
185 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
186 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
187 *out_line = line; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
188 *out_column = column; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
189 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
190 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
191 static int GetPosFromLineColumn(const char *text, int line, int column) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
192 int current_line = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
193 int current_col = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
194 int i = 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
195 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
196 while (text[i] != '\0') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
197 if (current_line == line && current_col == column) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
198 return i; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
199 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
200 if (text[i] == '\n') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
201 if (current_line == line) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
202 return i; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
203 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
204 current_line++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
205 current_col = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
206 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
207 current_col++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
208 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
209 i++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
210 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
211 return i; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
212 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
213 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
214 static int GetLineStart(const char *text, int pos) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
215 int i = pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
216 while (i > 0 && text[i - 1] != '\n') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
217 i--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
218 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
219 return i; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
220 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
221 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
222 static int GetLineEnd(const char *text, int pos) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
223 int i = pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
224 int len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
225 while (i < len && text[i] != '\n') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
226 i++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
227 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
228 return i; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
229 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
230 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
231 static int CountLines(const char *text) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
232 int count = 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
233 for (int i = 0; text[i] != '\0'; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
234 if (text[i] == '\n') count++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
235 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
236 return count; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
237 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
238 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
239 // Simple hash to detect text changes (djb2) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
240 static int SimpleTextHash(const char *text, int len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
241 int hash = 5381; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
242 int sample_count = len < 100 ? len : 100; // Sample first 100 chars |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
243 for (int i = 0; i < sample_count; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
244 hash = ((hash << 5) + hash) + text[i]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
245 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
246 // Also sample some chars from middle and end |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
247 if (len > 200) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
248 for (int i = len/2; i < len/2 + 50 && i < len; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
249 hash = ((hash << 5) + hash) + text[i]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
250 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
251 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
252 return hash; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
253 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
254 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
255 // Build line cache - O(n) once, then O(1) for rendering |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
256 static void BuildLineCache(TextAreaState *state, const char *text, float content_width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
257 int font_size, boolean wrap, Dowa_Arena *arena) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
258 int text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
259 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
260 // Check if cache is still valid |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
261 int new_hash = SimpleTextHash(text, text_len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
262 if (state->cache_valid && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
263 state->cached_text_len == text_len && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
264 state->cached_text_hash == new_hash && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
265 state->cached_content_width == content_width) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
266 return; // Cache is valid, no need to rebuild |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
267 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
268 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
269 // Clear old cache |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
270 if (state->line_cache) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
271 Dowa_Array_Free(state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
272 state->line_cache = NULL; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
273 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
274 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
275 // Approximate character width (for non-monospace, use average) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
276 float avg_char_width = font_size * 0.6f; // Reasonable approximation for most fonts |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
277 int max_chars_per_line = (int)(content_width / avg_char_width); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
278 if (max_chars_per_line < 1) max_chars_per_line = 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
279 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
280 Dowa_Array_Reserve(state->line_cache, text_len / max_chars_per_line + 10); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
281 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
282 int line_start = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
283 int i = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
284 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
285 while (i <= text_len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
286 boolean is_end = (i == text_len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
287 boolean is_newline = (!is_end && text[i] == '\n'); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
288 int chars_in_line = i - line_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
289 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
290 // Check if we need to wrap (based on character count approximation) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
291 boolean should_wrap = wrap && !is_end && !is_newline && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
292 chars_in_line >= max_chars_per_line; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
293 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
294 if (is_end || is_newline || should_wrap) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
295 LineInfo line = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
296 .start_pos = line_start, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
297 .end_pos = i, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
298 .char_count = chars_in_line |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
299 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
300 Dowa_Array_Push(state->line_cache, line); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
301 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
302 if (is_newline) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
303 line_start = i + 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
304 } else if (should_wrap) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
305 // Try to find a space to wrap at |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
306 int wrap_pos = i; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
307 for (int j = i - 1; j > line_start && j > i - 20; j--) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
308 if (text[j] == ' ') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
309 wrap_pos = j; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
310 break; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
311 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
312 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
313 // Update the last line entry with correct end |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
314 state->line_cache[Dowa_Array_Length(state->line_cache) - 1].end_pos = wrap_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
315 state->line_cache[Dowa_Array_Length(state->line_cache) - 1].char_count = wrap_pos - line_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
316 line_start = (text[wrap_pos] == ' ') ? wrap_pos + 1 : wrap_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
317 i = line_start - 1; // Will be incremented at end of loop |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
318 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
319 line_start = i + 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
320 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
321 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
322 i++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
323 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
324 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
325 // Ensure at least one line exists |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
326 if (Dowa_Array_Length(state->line_cache) == 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
327 LineInfo empty_line = { .start_pos = 0, .end_pos = 0, .char_count = 0 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
328 Dowa_Array_Push(state->line_cache, empty_line); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
329 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
330 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
331 // Update cache metadata |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
332 state->cached_text_len = text_len; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
333 state->cached_text_hash = new_hash; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
334 state->cached_content_width = content_width; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
335 state->cache_valid = TRUE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
336 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
337 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
338 static int MeasureTextRange(const char *text, int start, int end, int font_size) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
339 if (start >= end) return 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
340 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
341 char temp[1024]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
342 int len = TA_Min_Int(end - start, 1023); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
343 strncpy(temp, text + start, len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
344 temp[len] = '\0'; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
345 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
346 return MeasureTextEx(GuiGetFont(), temp, font_size, TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE)).x; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
347 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
348 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
349 static int GetCharIndexFromPos(const char *text, Rectangle bounds, Vector2 pos, |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
350 boolean wrap, float scroll_y, int font_size, int line_height) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
351 if (!text || strlen(text) == 0) return 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
352 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
353 float content_x = bounds.x + TEXT_AREA_PADDING; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
354 float content_y = bounds.y + TEXT_AREA_PADDING - scroll_y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
355 float content_width = bounds.width - TEXT_AREA_PADDING * 2; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
356 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
357 int text_len = strlen(text); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
358 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
359 float click_line_y = (pos.y - content_y) / line_height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
360 int target_visual_line = (int)click_line_y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
361 if (target_visual_line < 0) target_visual_line = 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
362 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
363 int current_visual_line = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
364 int i = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
365 int line_char_start = 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
366 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
367 while (i <= text_len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
368 boolean is_newline = (i < text_len && text[i] == '\n'); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
369 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
370 if (wrap && i > line_char_start) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
371 int line_width = MeasureTextRange(text, line_char_start, i, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
372 if (line_width > content_width && i > line_char_start + 1) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
373 int wrap_pos = i - 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
374 for (int j = i - 1; j > line_char_start; j--) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
375 if (text[j] == ' ') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
376 wrap_pos = j; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
377 break; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
378 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
379 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
380 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
381 if (current_visual_line == target_visual_line) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
382 float click_x = pos.x - content_x; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
383 int best_pos = line_char_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
384 float best_dist = 99999; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
385 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
386 for (int k = line_char_start; k <= wrap_pos; k++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
387 int char_x = MeasureTextRange(text, line_char_start, k, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
388 float dist = (float)(click_x - char_x); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
389 if (dist < 0) dist = -dist; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
390 if (dist < best_dist) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
391 best_dist = dist; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
392 best_pos = k; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
393 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
394 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
395 return best_pos; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
396 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
397 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
398 current_visual_line++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
399 line_char_start = (text[wrap_pos] == ' ') ? wrap_pos + 1 : wrap_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
400 i = line_char_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
401 continue; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
402 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
403 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
404 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
405 if (is_newline || i == text_len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
406 if (current_visual_line == target_visual_line || i == text_len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
407 float click_x = pos.x - content_x; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
408 int line_end = i; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
409 int best_pos = line_char_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
410 float best_dist = 99999; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
411 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
412 for (int k = line_char_start; k <= line_end; k++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
413 int char_x = MeasureTextRange(text, line_char_start, k, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
414 float dist = (float)(click_x - char_x); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
415 if (dist < 0) dist = -dist; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
416 if (dist < best_dist) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
417 best_dist = dist; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
418 best_pos = k; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
419 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
420 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
421 return TA_Min_Int(best_pos, text_len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
422 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
423 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
424 current_visual_line++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
425 line_char_start = i + 1; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
426 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
427 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
428 i++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
429 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
430 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
431 return text_len; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
432 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
433 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
434 // Get character index from mouse position using line cache |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
435 static int GetCharIndexFromPosWithCache(const char *text, Rectangle bounds, Vector2 pos, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
436 float scroll_y, int font_size, int line_height, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
437 LineInfo *line_cache) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
438 if (!text || strlen(text) == 0) return 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
439 if (!line_cache || Dowa_Array_Length(line_cache) == 0) return 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
440 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
441 float content_x = bounds.x + TEXT_AREA_PADDING; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
442 float content_y = bounds.y + TEXT_AREA_PADDING - scroll_y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
443 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
444 int text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
445 int line_count = Dowa_Array_Length(line_cache); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
446 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
447 // Find which visual line was clicked |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
448 float click_line_y = (pos.y - content_y) / line_height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
449 int target_line = (int)click_line_y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
450 if (target_line < 0) target_line = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
451 if (target_line >= line_count) target_line = line_count - 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
452 if (target_line < 0) return 0; // Safety check |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
453 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
454 LineInfo *line = &line_cache[target_line]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
455 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
456 // Find character position within the line |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
457 float click_x = pos.x - content_x; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
458 if (click_x < 0) return line->start_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
459 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
460 // Linear search for the character closest to click position |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
461 int best_pos = line->start_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
462 float best_dist = 99999; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
463 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
464 for (int k = line->start_pos; k <= line->end_pos; k++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
465 int char_x = MeasureTextRange(text, line->start_pos, k, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
466 float dist = click_x - char_x; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
467 if (dist < 0) dist = -dist; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
468 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
469 if (dist < best_dist) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
470 best_dist = dist; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
471 best_pos = k; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
472 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
473 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
474 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
475 return TA_Min_Int(best_pos, text_len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
476 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
477 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
478 // Get cursor position using line cache (fast O(log n) or O(n) worst case) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
479 static Vector2 GetCursorScreenPosFromCache(const char *text, int cursor_pos, Rectangle bounds, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
480 float scroll_y, int font_size, int line_height, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
481 LineInfo *line_cache) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
482 float content_x = bounds.x + TEXT_AREA_PADDING; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
483 float content_y = bounds.y + TEXT_AREA_PADDING - scroll_y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
484 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
485 if (!text || cursor_pos == 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
486 return (Vector2){content_x, content_y}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
487 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
488 if (!line_cache || Dowa_Array_Length(line_cache) == 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
489 return (Vector2){content_x, content_y}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
490 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
491 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
492 int text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
493 cursor_pos = TA_Min_Int(cursor_pos, text_len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
494 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
495 // Find which line contains the cursor |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
496 int line_count = Dowa_Array_Length(line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
497 for (int i = 0; i < line_count; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
498 LineInfo *line = &line_cache[i]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
499 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
500 // Cursor is within this line or at the end of this line |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
501 if (cursor_pos >= line->start_pos && cursor_pos <= line->end_pos) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
502 float x = content_x + MeasureTextRange(text, line->start_pos, cursor_pos, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
503 float y = content_y + i * line_height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
504 return (Vector2){x, y}; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
505 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
506 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
507 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
508 // Fallback: cursor at the end |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
509 int last_line = line_count > 0 ? line_count - 1 : 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
510 LineInfo *line = &line_cache[last_line]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
511 float x = content_x + MeasureTextRange(text, line->start_pos, cursor_pos, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
512 float y = content_y + last_line * line_height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
513 return (Vector2){x, y}; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
514 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
515 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
516 static float GetContentHeight(const char *text, Rectangle bounds, boolean wrap, |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
517 int font_size, int line_height) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
518 if (!text || strlen(text) == 0) return line_height; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
519 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
520 float content_width = bounds.width - TEXT_AREA_PADDING * 2; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
521 int visual_lines = 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
522 int line_char_start = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
523 int text_len = strlen(text); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
524 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
525 for (int i = 0; i <= text_len; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
526 if (i == text_len || text[i] == '\n') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
527 visual_lines++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
528 line_char_start = i + 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
529 } else if (wrap) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
530 int line_width = MeasureTextRange(text, line_char_start, i + 1, font_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
531 if (line_width > content_width && i > line_char_start) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
532 int wrap_pos = i; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
533 for (int j = i; j > line_char_start; j--) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
534 if (text[j] == ' ') { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
535 wrap_pos = j; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
536 break; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
537 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
538 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
539 visual_lines++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
540 line_char_start = (text[wrap_pos] == ' ') ? wrap_pos + 1 : wrap_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
541 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
542 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
543 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
544 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
545 return visual_lines * line_height; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
546 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
547 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
548 static void PushUndoState(TextAreaState *state, const char *text, Dowa_Arena *arena) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
549 TextAreaUndoEntry entry; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
550 entry.text = Dowa_String_Copy_Arena((char*)text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
551 entry.cursor_pos = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
552 entry.selection_start = state->selection_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
553 entry.selection_end = state->selection_end; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
554 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
555 if (state->undo_index < (int)Dowa_Array_Length(state->undo_stack) - 1) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
556 dowa__header(state->undo_stack)->length = state->undo_index + 1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
557 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
558 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
559 Dowa_Array_Push_Arena(state->undo_stack, entry, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
560 state->undo_index = Dowa_Array_Length(state->undo_stack) - 1; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
561 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
562 if (Dowa_Array_Length(state->undo_stack) > TEXT_AREA_MAX_UNDO_STATES) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
563 for (int i = 0; i < (int)Dowa_Array_Length(state->undo_stack) - 1; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
564 state->undo_stack[i] = state->undo_stack[i + 1]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
565 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
566 dowa__header(state->undo_stack)->length--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
567 state->undo_index--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
568 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
569 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
570 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
571 static boolean PerformUndo(TextAreaState *state, char *text, int text_size) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
572 if (state->undo_index <= 0) return FALSE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
573 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
574 state->undo_index--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
575 TextAreaUndoEntry *entry = &state->undo_stack[state->undo_index]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
576 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
577 strncpy(text, entry->text, text_size - 1); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
578 text[text_size - 1] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
579 state->cursor_pos = entry->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
580 state->selection_start = entry->selection_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
581 state->selection_end = entry->selection_end; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
582 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
583 return TRUE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
584 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
585 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
586 static boolean PerformRedo(TextAreaState *state, char *text, int text_size) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
587 if (state->undo_index >= (int)Dowa_Array_Length(state->undo_stack) - 1) return FALSE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
588 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
589 state->undo_index++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
590 TextAreaUndoEntry *entry = &state->undo_stack[state->undo_index]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
591 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
592 strncpy(text, entry->text, text_size - 1); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
593 text[text_size - 1] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
594 state->cursor_pos = entry->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
595 state->selection_start = entry->selection_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
596 state->selection_end = entry->selection_end; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
597 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
598 return TRUE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
599 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
600 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
601 static void InsertTextAtCursor(char *text, int text_size, int cursor_pos, |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
602 const char *insert_text, int *new_cursor_pos) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
603 int text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
604 int insert_len = strlen(insert_text); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
605 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
606 if (text_len + insert_len >= text_size - 1) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
607 insert_len = text_size - 1 - text_len; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
608 if (insert_len <= 0) return; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
609 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
610 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
611 memmove(text + cursor_pos + insert_len, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
612 text + cursor_pos, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
613 text_len - cursor_pos + 1); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
614 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
615 memcpy(text + cursor_pos, insert_text, insert_len); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
616 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
617 *new_cursor_pos = cursor_pos + insert_len; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
618 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
619 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
620 static void DeleteTextRange(char *text, int start, int end) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
621 if (start >= end) return; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
622 int text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
623 if (start < 0) start = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
624 if (end > text_len) end = text_len; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
625 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
626 memmove(text + start, text + end, text_len - end + 1); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
627 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
628 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
629 static char* GetSelectedText(const char *text, int sel_start, int sel_end, Dowa_Arena *arena) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
630 if (sel_start < 0 || sel_end < 0 || sel_start >= sel_end) return NULL; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
631 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
632 int len = sel_end - sel_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
633 char *result = Dowa_Arena_Allocate(arena, len + 1); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
634 strncpy(result, text + sel_start, len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
635 result[len] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
636 return result; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
637 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
638 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
639 boolean GuiTextArea(int id, Rectangle bounds, char *text, int text_size, boolean is_edit_mode, |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
640 boolean should_text_wrap, boolean readonly, Dowa_Arena *arena) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
641 boolean should_toggle_edit_mode = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
642 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
643 // Get or create state for this text area |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
644 TextAreaState *state = GetTextAreaState(id); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
645 if (!state) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
646 state = CreateTextAreaState(id); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
647 state->cursor_pos = readonly ? 0 : strlen(text); // Readonly starts at beginning |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
648 state->last_blink_time = GetTime(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
649 if (!readonly) PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
650 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
651 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
652 int text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
653 Vector2 mouse_pos = GetMousePosition(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
654 boolean mouse_in_bounds = CheckCollisionPointRec(mouse_pos, bounds); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
655 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
656 // Handle click to enter/exit edit mode (readonly still allows selection mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
657 if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
658 if (mouse_in_bounds && !is_edit_mode) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
659 should_toggle_edit_mode = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
660 } else if (!mouse_in_bounds && is_edit_mode) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
661 should_toggle_edit_mode = TRUE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
662 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
663 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
664 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
665 // Content area - build/update line cache |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
666 float content_width = bounds.width - TEXT_AREA_PADDING * 2; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
667 BuildLineCache(state, text, content_width, GuiGetStyle(DEFAULT, TEXT_SIZE), should_text_wrap, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
668 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
669 // Calculate content height from cache (O(1)) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
670 int total_lines = Dowa_Array_Length(state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
671 float content_height = total_lines * TEXT_AREA_LINE_HEIGHT; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
672 float visible_height = bounds.height - TEXT_AREA_PADDING * 2; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
673 float max_scroll = TA_Max_Float(0, content_height - visible_height); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
674 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
675 // Handle scrolling |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
676 float wheel = GetMouseWheelMove(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
677 if (mouse_in_bounds && wheel != 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
678 state->scroll_offset_y -= wheel * TEXT_AREA_LINE_HEIGHT * 3; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
679 state->scroll_offset_y = TA_Max_Float(0, TA_Min_Float(state->scroll_offset_y, max_scroll)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
680 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
681 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
682 if (is_edit_mode) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
683 boolean ctrl_pressed = IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL) || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
684 IsKeyDown(KEY_LEFT_SUPER) || IsKeyDown(KEY_RIGHT_SUPER); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
685 boolean shift_pressed = IsKeyDown(KEY_LEFT_SHIFT) || IsKeyDown(KEY_RIGHT_SHIFT); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
686 boolean text_changed = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
687 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
688 double current_time = GetTime(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
689 if (current_time - state->last_blink_time > 0.5) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
690 state->cursor_visible = !state->cursor_visible; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
691 state->last_blink_time = current_time; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
692 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
693 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
694 // Mouse Selection (use line cache for accurate position) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
695 if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) && mouse_in_bounds) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
696 int click_pos = GetCharIndexFromPosWithCache(text, bounds, mouse_pos, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
697 state->scroll_offset_y, GuiGetStyle(DEFAULT, TEXT_SIZE), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
698 TEXT_AREA_LINE_HEIGHT, state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
699 state->cursor_pos = click_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
700 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
701 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
702 state->is_selecting = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
703 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
704 state->last_blink_time = current_time; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
705 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
706 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
707 if (state->is_selecting && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
708 int drag_pos = GetCharIndexFromPosWithCache(text, bounds, mouse_pos, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
709 state->scroll_offset_y, GuiGetStyle(DEFAULT, TEXT_SIZE), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
710 TEXT_AREA_LINE_HEIGHT, state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
711 if (drag_pos != state->cursor_pos) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
712 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
713 state->selection_start = state->cursor_pos; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
714 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
715 state->selection_end = drag_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
716 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
717 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
718 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
719 if (IsMouseButtonReleased(MOUSE_BUTTON_LEFT)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
720 state->is_selecting = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
721 if (state->selection_start >= 0 && state->selection_end >= 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
722 if (state->selection_start > state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
723 int temp = state->selection_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
724 state->selection_start = state->selection_end; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
725 state->selection_end = temp; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
726 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
727 if (state->selection_start == state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
728 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
729 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
730 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
731 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
732 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
733 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
734 // Ctrl+A: Select All |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
735 if (ctrl_pressed && IsKeyPressed(KEY_A)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
736 state->selection_start = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
737 state->selection_end = text_len; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
738 state->cursor_pos = text_len; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
739 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
740 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
741 // Ctrl+C: Copy |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
742 if (ctrl_pressed && IsKeyPressed(KEY_C)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
743 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
744 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
745 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
746 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
747 char *selected = GetSelectedText(text, sel_min, sel_max, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
748 if (selected) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
749 if (g_clipboard_text) free(g_clipboard_text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
750 g_clipboard_text = strdup(selected); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
751 SetClipboardText(g_clipboard_text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
752 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
753 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
754 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
755 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
756 // Ctrl+X: Cut (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
757 if (!readonly && ctrl_pressed && IsKeyPressed(KEY_X)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
758 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
759 state->selection_start != state->selection_end) { |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
760 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
761 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
762 char *selected = GetSelectedText(text, sel_min, sel_max, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
763 if (selected) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
764 if (g_clipboard_text) free(g_clipboard_text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
765 g_clipboard_text = strdup(selected); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
766 SetClipboardText(g_clipboard_text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
767 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
768 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
769 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
770 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
771 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
772 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
773 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
774 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
775 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
776 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
777 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
778 // Ctrl+V: Paste (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
779 if (!readonly && ctrl_pressed && IsKeyPressed(KEY_V)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
780 const char *clipboard = GetClipboardText(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
781 if (clipboard && strlen(clipboard) > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
782 // Skip leading whitespace (spaces, tabs, newlines) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
783 while (*clipboard && (*clipboard == ' ' || *clipboard == '\t' || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
784 *clipboard == '\n' || *clipboard == '\r')) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
785 clipboard++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
786 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
787 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
788 if (strlen(clipboard) > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
789 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
790 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
791 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
792 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
793 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
794 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
795 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
796 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
797 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
798 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
799 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
800 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
801 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
802 int new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
803 InsertTextAtCursor(text, text_size, state->cursor_pos, clipboard, &new_cursor); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
804 state->cursor_pos = new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
805 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
806 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
807 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
808 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
809 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
810 // Ctrl+Z: Undo / Ctrl+Shift+Z: Redo (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
811 if (!readonly && ctrl_pressed && IsKeyPressed(KEY_Z)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
812 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
813 PerformRedo(state, text, text_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
814 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
815 PerformUndo(state, text, text_size); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
816 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
817 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
818 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
819 // Arrow Keys Navigation |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
820 if (IsKeyPressed(KEY_LEFT) || IsKeyPressedRepeat(KEY_LEFT)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
821 if (state->selection_start >= 0 && !shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
822 state->cursor_pos = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
823 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
824 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
825 } else if (state->cursor_pos > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
826 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
827 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
828 state->selection_start = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
829 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
830 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
831 state->cursor_pos--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
832 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
833 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
834 state->cursor_pos--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
835 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
836 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
837 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
838 state->last_blink_time = current_time; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
839 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
840 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
841 if (IsKeyPressed(KEY_RIGHT) || IsKeyPressedRepeat(KEY_RIGHT)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
842 if (state->selection_start >= 0 && !shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
843 state->cursor_pos = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
844 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
845 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
846 } else if (state->cursor_pos < text_len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
847 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
848 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
849 state->selection_start = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
850 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
851 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
852 state->cursor_pos++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
853 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
854 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
855 state->cursor_pos++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
856 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
857 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
858 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
859 state->last_blink_time = current_time; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
860 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
861 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
862 if (IsKeyPressed(KEY_UP) || IsKeyPressedRepeat(KEY_UP)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
863 int line, col; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
864 GetLineAndColumn(text, state->cursor_pos, &line, &col); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
865 if (line > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
866 int new_pos = GetPosFromLineColumn(text, line - 1, col); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
867 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
868 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
869 state->selection_start = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
870 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
871 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
872 state->selection_end = new_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
873 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
874 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
875 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
876 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
877 state->cursor_pos = new_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
878 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
879 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
880 state->last_blink_time = current_time; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
881 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
882 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
883 if (IsKeyPressed(KEY_DOWN) || IsKeyPressedRepeat(KEY_DOWN)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
884 int line, col; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
885 GetLineAndColumn(text, state->cursor_pos, &line, &col); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
886 int total_lines = CountLines(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
887 if (line < total_lines - 1) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
888 int new_pos = GetPosFromLineColumn(text, line + 1, col); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
889 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
890 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
891 state->selection_start = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
892 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
893 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
894 state->selection_end = new_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
895 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
896 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
897 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
898 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
899 state->cursor_pos = new_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
900 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
901 state->cursor_visible = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
902 state->last_blink_time = current_time; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
903 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
904 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
905 // Home/End keys |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
906 if (IsKeyPressed(KEY_HOME)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
907 int line_start = GetLineStart(text, state->cursor_pos); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
908 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
909 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
910 state->selection_start = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
911 state->selection_end = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
912 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
913 state->selection_end = line_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
914 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
915 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
916 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
917 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
918 state->cursor_pos = line_start; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
919 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
920 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
921 if (IsKeyPressed(KEY_END)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
922 int line_end = GetLineEnd(text, state->cursor_pos); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
923 if (shift_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
924 if (state->selection_start < 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
925 state->selection_start = state->cursor_pos; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
926 state->selection_end = state->cursor_pos; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
927 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
928 state->selection_end = line_end; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
929 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
930 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
931 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
932 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
933 state->cursor_pos = line_end; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
934 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
935 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
936 // Text Input (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
937 if (!readonly && !ctrl_pressed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
938 int key = GetCharPressed(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
939 while (key > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
940 if (key >= 32 && key <= 126) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
941 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
942 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
943 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
944 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
945 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
946 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
947 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
948 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
949 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
950 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
951 } else if (!text_changed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
952 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
953 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
954 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
955 char insert_str[2] = {(char)key, '\0'}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
956 int new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
957 InsertTextAtCursor(text, text_size, state->cursor_pos, insert_str, &new_cursor); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
958 state->cursor_pos = new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
959 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
960 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
961 key = GetCharPressed(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
962 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
963 } else if (readonly) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
964 // Consume key presses to prevent them from being handled elsewhere |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
965 while (GetCharPressed() > 0) {} |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
966 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
967 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
968 // Enter key (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
969 if (!readonly && (IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER))) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
970 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
971 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
972 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
973 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
974 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
975 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
976 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
977 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
978 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
979 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
980 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
981 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
982 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
983 int new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
984 InsertTextAtCursor(text, text_size, state->cursor_pos, "\n", &new_cursor); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
985 state->cursor_pos = new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
986 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
987 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
988 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
989 // Backspace (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
990 if (!readonly && (IsKeyPressed(KEY_BACKSPACE) || IsKeyPressedRepeat(KEY_BACKSPACE))) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
991 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
992 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
993 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
994 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
995 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
996 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
997 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
998 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
999 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1000 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1001 } else if (state->cursor_pos > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1002 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1003 DeleteTextRange(text, state->cursor_pos - 1, state->cursor_pos); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1004 state->cursor_pos--; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1005 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1006 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1007 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1008 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1009 // Delete key (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1010 if (!readonly && (IsKeyPressed(KEY_DELETE) || IsKeyPressedRepeat(KEY_DELETE))) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1011 text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1012 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1013 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1014 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1015 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1016 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1017 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1018 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1019 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1020 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1021 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1022 } else if (state->cursor_pos < text_len) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1023 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1024 DeleteTextRange(text, state->cursor_pos, state->cursor_pos + 1); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1025 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1026 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1027 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1028 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1029 // Tab key (not allowed in readonly mode) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1030 if (!readonly && IsKeyPressed(KEY_TAB)) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1031 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1032 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1033 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1034 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1035 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1036 DeleteTextRange(text, sel_min, sel_max); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1037 state->cursor_pos = sel_min; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1038 state->selection_start = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1039 state->selection_end = -1; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1040 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1041 PushUndoState(state, text, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1042 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1043 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1044 int new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1045 InsertTextAtCursor(text, text_size, state->cursor_pos, " ", &new_cursor); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1046 state->cursor_pos = new_cursor; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1047 text_changed = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1048 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1049 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1050 // Auto-scroll to keep cursor visible |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1051 // Rebuild cache if text changed during editing |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1052 if (text_changed) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1053 state->cache_valid = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1054 BuildLineCache(state, text, content_width, GuiGetStyle(DEFAULT, TEXT_SIZE), should_text_wrap, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1055 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1056 Vector2 cursor_screen = GetCursorScreenPosFromCache(text, state->cursor_pos, bounds, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1057 state->scroll_offset_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1058 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_AREA_LINE_HEIGHT, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1059 state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1060 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1061 float visible_top = bounds.y + TEXT_AREA_PADDING; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1062 float visible_bottom = bounds.y + bounds.height - TEXT_AREA_PADDING - TEXT_AREA_LINE_HEIGHT; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1063 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1064 if (cursor_screen.y < visible_top) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1065 state->scroll_offset_y -= visible_top - cursor_screen.y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1066 } else if (cursor_screen.y > visible_bottom) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1067 state->scroll_offset_y += cursor_screen.y - visible_bottom; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1068 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1069 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1070 state->scroll_offset_y = TA_Max_Float(0, TA_Min_Float(state->scroll_offset_y, max_scroll)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1071 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1072 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1073 // Drawing |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1074 DrawRectangleSelectiveRounded(bounds, 0.2, 1, g_colors.secondary, FALSE, FALSE, TRUE, TRUE); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1075 DrawRectangleRec(AddPadding(bounds, 10), WHITE); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1076 // DrawRectangleRec(bounds, is_edit_mode ? DARKGRAY : (Color){40, 40, 40, 255}); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1077 // DrawRectangleLinesEx(bounds, 1, is_edit_mode ? WHITE : GRAY); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1078 // DrawRectangleRoundedLines(bounds, 0.2, 1, is_edit_mode ? BLACK : GRAY); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1079 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1080 BeginScissorMode((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1081 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1082 float content_x = bounds.x + TEXT_AREA_PADDING; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1083 float content_y = bounds.y + TEXT_AREA_PADDING - state->scroll_offset_y; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1084 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1085 text_len = strlen(text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1086 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1087 // Calculate visible line range (only render what's visible) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1088 int first_visible_line = (int)(state->scroll_offset_y / TEXT_AREA_LINE_HEIGHT); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1089 int last_visible_line = first_visible_line + (int)(visible_height / TEXT_AREA_LINE_HEIGHT) + 2; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1090 int line_count = Dowa_Array_Length(state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1091 if (first_visible_line < 0) first_visible_line = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1092 if (last_visible_line > line_count) last_visible_line = line_count; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1093 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1094 // Draw selection highlight (only for visible lines) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1095 if (state->selection_start >= 0 && state->selection_end >= 0 && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1096 state->selection_start != state->selection_end) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1097 int sel_min = TA_Min_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1098 int sel_max = TA_Max_Int(state->selection_start, state->selection_end); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1099 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1100 for (int line_idx = first_visible_line; line_idx < last_visible_line; line_idx++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1101 LineInfo *line = &state->line_cache[line_idx]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1102 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1103 // Check if selection intersects this line |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1104 if (sel_min < line->end_pos && sel_max > line->start_pos) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1105 int highlight_start = TA_Max_Int(sel_min, line->start_pos); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1106 int highlight_end = TA_Min_Int(sel_max, line->end_pos); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1107 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1108 float x1 = content_x + MeasureTextRange(text, line->start_pos, highlight_start, GuiGetStyle(DEFAULT, TEXT_SIZE)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1109 float x2 = content_x + MeasureTextRange(text, line->start_pos, highlight_end, GuiGetStyle(DEFAULT, TEXT_SIZE)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1110 float y = content_y + line_idx * TEXT_AREA_LINE_HEIGHT; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1111 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1112 DrawRectangle((int)x1, (int)y, (int)(x2 - x1), TEXT_AREA_LINE_HEIGHT, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1113 Fade(SKYBLUE, 0.5f)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1114 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1115 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1116 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1117 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1118 // Draw text using line cache (only visible lines) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1119 Color text_color = should_text_wrap ? BLACK : WHITE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1120 for (int line_idx = first_visible_line; line_idx < last_visible_line; line_idx++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1121 LineInfo *line = &state->line_cache[line_idx]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1122 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1123 if (line->char_count > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1124 char line_buffer[1024]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1125 int line_len = TA_Min_Int(line->end_pos - line->start_pos, 1023); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1126 strncpy(line_buffer, text + line->start_pos, line_len); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1127 line_buffer[line_len] = '\0'; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1128 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1129 Vector2 draw_text_vector = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1130 .x = content_x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1131 .y = content_y + line_idx * TEXT_AREA_LINE_HEIGHT |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1132 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1133 DrawTextEx(GuiGetFont(), line_buffer, draw_text_vector, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1134 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE), text_color); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1135 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1136 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1137 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1138 // Draw cursor |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1139 if (is_edit_mode && state->cursor_visible) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1140 Vector2 cursor_pos = GetCursorScreenPosFromCache(text, state->cursor_pos, bounds, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1141 state->scroll_offset_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1142 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_AREA_LINE_HEIGHT, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1143 state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1144 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1145 DrawRectangle((int)cursor_pos.x, (int)cursor_pos.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1146 TEXT_AREA_CURSOR_WIDTH, TEXT_AREA_LINE_HEIGHT, BLACK); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1147 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1148 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1149 EndScissorMode(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1150 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1151 // Draw scrollbar if needed |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1152 if (max_scroll > 0) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1153 float scrollbar_height = (visible_height / content_height) * visible_height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1154 float scrollbar_y = bounds.y + TEXT_AREA_PADDING + |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1155 (state->scroll_offset_y / max_scroll) * (visible_height - scrollbar_height); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1156 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1157 DrawRectangle((int)(bounds.x + bounds.width - 8), (int)scrollbar_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1158 6, (int)scrollbar_height, Fade(WHITE, 0.3f)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1159 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1160 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1161 return should_toggle_edit_mode; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1162 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1163 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1164 void GuiTextAreaResetState(int id) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1165 TextAreaState *state = GetTextAreaState(id); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1166 if (state) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1167 if (state->undo_stack) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1168 Dowa_Array_Free(state->undo_stack); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1169 state->undo_stack = NULL; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1170 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1171 if (state->line_cache) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1172 Dowa_Array_Free(state->line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1173 state->line_cache = NULL; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1174 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1175 state->cache_valid = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1176 state->is_initialized = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1177 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1178 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1179 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1180 void GuiTextAreaResetAllStates(void) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1181 for (int i = 0; i < g_text_area_state_count; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1182 if (g_text_area_states[i].undo_stack) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1183 Dowa_Array_Free(g_text_area_states[i].undo_stack); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1184 g_text_area_states[i].undo_stack = NULL; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1185 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1186 if (g_text_area_states[i].line_cache) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1187 Dowa_Array_Free(g_text_area_states[i].line_cache); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1188 g_text_area_states[i].line_cache = NULL; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1189 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1190 g_text_area_states[i].cache_valid = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1191 g_text_area_states[i].is_initialized = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1192 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1193 g_text_area_state_count = 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1194 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1195 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1196 // ============================================================================ |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1197 // End TextArea Component |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1198 // ============================================================================ |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1199 |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1200 typedef Dowa_KV(char*, char*) INPUT_HASHMAP; |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1201 |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1202 typedef struct { |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1203 char *data; |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1204 size_t size; |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1205 } ResponseBuffer; |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1206 |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1207 typedef struct { |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1208 char *filename; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1209 char *title; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1210 Rectangle rect; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1211 long time_modified; |
|
117
b91f2dd6f84d
[PostDog] Fixed delete logic.
June Park <parkjune1995@gmail.com>
parents:
116
diff
changeset
|
1212 boolean deleted; |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1213 } HistoryItem; |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1214 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1215 typedef struct { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1216 Rectangle rectangle; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1217 char *label; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1218 bool active; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1219 } TabItem; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1220 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1221 typedef enum { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1222 TAB_HEADER = 0, |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1223 TAB_BODY, |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1224 TAB_GET_PARAMS, |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1225 TAB_WEBSOCKET, |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1226 TAB_LENGTH |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1227 } PostDog_Tab_Enum; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1228 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1229 typedef enum { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1230 RESULT_TAB_BODY = 0, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1231 RESULT_TAB_HEADERS, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1232 RESULT_TAB_LENGTH |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1233 } PostDog_ResultTab_Enum; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1234 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1235 // Text area IDs |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1236 #define TEXT_AREA_ID_INPUT_HEADER 1 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1237 #define TEXT_AREA_ID_INPUT_BODY 2 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1238 #define TEXT_AREA_ID_INPUT_PARAMS 3 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1239 #define TEXT_AREA_ID_INPUT_WS 4 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1240 #define TEXT_AREA_ID_RESULT_BODY 5 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1241 #define TEXT_AREA_ID_RESULT_HEADERS 6 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1242 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1243 static uint32 counter = 0; |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1244 static uv_mutex_t history_mutex; |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1245 static uv_loop_t *main_loop = NULL; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1246 HistoryItem *history_items = NULL; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1247 HistoryItem *new_history_items = NULL; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1248 |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1249 // Global UI state |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1250 char *url_input_text = NULL; |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1251 char **result_body_array = NULL; // [RESULT_TAB_BODY, RESULT_TAB_HEADERS] |
|
155
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
1252 char **input_body_array = NULL; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1253 int active_method_dropdown = 0; |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1254 int active_input_tab = 0; |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1255 int active_result_tab = 0; |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1256 Seobeo_WebSocket *ws = NULL; |
|
153
790930d9bb90
[PostDog] Adding websocket to be more usable.
June Park <parkjune1995@gmail.com>
parents:
152
diff
changeset
|
1257 boolean WS_BREAK = FALSE; |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1258 uv_thread_t websocket_thread_id; |
|
155
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
1259 Color TEXT_COLOR = BLACK; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1260 boolean LOADING = FALSE; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1261 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1262 int CompareHistoryItemsByDate(const void *a, const void *b) { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1263 HistoryItem *itemA = (HistoryItem *)a; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1264 HistoryItem *itemB = (HistoryItem *)b; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1265 return (itemB->time_modified - itemA->time_modified); |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1266 } |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1267 |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1268 char *PostDog_Extract_Title(const char *filename) |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1269 { |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1270 char full_file_path[512] = {0}; |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1271 snprintf(full_file_path, 512, "%s/%s", POSTDOG_PATHS, filename); |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1272 FILE *file = fopen(full_file_path, "r"); |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1273 if (!file) |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1274 return strdup(filename); |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1275 |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1276 char *title = malloc(sizeof(char) * 512); |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1277 if (!fgets(title, 512, file)) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1278 fclose(file); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1279 free(title); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1280 return strdup(filename); |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1281 } |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1282 fclose(file); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1283 |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1284 // Strip trailing newline |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1285 title[strcspn(title, "\n")] = '\0'; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1286 |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1287 return title; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1288 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1289 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1290 // TODO: Make this into generic fucntion so I can use it across different thing. |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1291 void PostDog_List_Directory(const char *path, HistoryItem **p_file_arr) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1292 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1293 HistoryItem *file_arr = *p_file_arr; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1294 #ifdef _WIN32 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1295 struct _finddata_t fileinfo; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1296 intptr_t handle; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1297 char search_path[256]; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1298 sprintf(search_path, "%s\\*", path); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1299 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1300 if ((handle = _findfirst(search_path, &fileinfo)) == -1L) { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1301 printf("Directory is empty or cannot be read.\n"); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1302 } else { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1303 do { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1304 HistoryItem item = {0}; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1305 item.filename = strdup(fileinfo.name); |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1306 item.title = PostDog_Extract_Title(fileinfo.name); |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1307 item.time_modified = fileinfo.time_write; |
|
117
b91f2dd6f84d
[PostDog] Fixed delete logic.
June Park <parkjune1995@gmail.com>
parents:
116
diff
changeset
|
1308 item.deleted = FALSE; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1309 Dowa_Array_Push(file_arr, item); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1310 } while (_findnext(handle, &fileinfo) == 0); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1311 _findclose(handle); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1312 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1313 #else |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1314 struct dirent *entry; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1315 struct stat file_stat; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1316 DIR *dp = opendir(path); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1317 if (dp == NULL) return; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1318 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1319 char full_path[256]; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1320 while ((entry = readdir(dp))) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1321 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1322 if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1323 continue; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1324 snprintf(full_path, sizeof(full_path), "%s/%s", path, entry->d_name); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1325 if (stat(full_path, &file_stat) == 0) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1326 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1327 HistoryItem item = {0}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1328 item.filename = strdup(entry->d_name); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1329 item.title = PostDog_Extract_Title(entry->d_name); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1330 item.time_modified = file_stat.st_mtime; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1331 item.deleted = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1332 Dowa_Array_Push(file_arr, item); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1333 } |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1334 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1335 closedir(dp); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1336 #endif |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1337 |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1338 // Update the caller's pointer in case array was reallocated |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1339 *p_file_arr = file_arr; |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1340 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1341 int count = Dowa_Array_Length(file_arr); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1342 if (count > 1) { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1343 qsort(file_arr, count, sizeof(HistoryItem), CompareHistoryItemsByDate); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1344 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1345 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1346 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1347 int PostDog_History_Load(HistoryItem **p_history_files) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1348 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1349 if (access(POSTDOG_PATHS, F_OK) == -1) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1350 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1351 printf("Directory '%s' not found. Creating it...\n", POSTDOG_PATHS); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1352 if (mkdir(POSTDOG_PATHS, 0777) != 0) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1353 return -1; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1354 return 0; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1355 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1356 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1357 printf("Directory '%s' already exists.\n", POSTDOG_PATHS); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1358 PostDog_List_Directory(POSTDOG_PATHS, p_history_files); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1359 return 0; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1360 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1361 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1362 bool InArea(Vector2 mouse_position, Rectangle area) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1363 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1364 return ( |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1365 mouse_position.x >= area.x && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1366 mouse_position.x < area.x + area.width && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1367 mouse_position.y >= area.y && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1368 mouse_position.y < area.y + area.height |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1369 ); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1370 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1371 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1372 bool Clicked(Vector2 mouse_position, Rectangle area) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1373 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1374 return (InArea(mouse_position, area) && IsMouseButtonPressed(MOUSE_BUTTON_LEFT)); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1375 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1376 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1377 // -------- END of UI ---- // |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1378 |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1379 char *PostDog_Enum_To_String(int active_enum) |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1380 { |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1381 switch(active_enum) |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1382 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1383 case 0: return "GET"; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1384 case 1: return "POST"; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1385 case 2: return "PUT"; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1386 case 3: return "DELETE"; |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1387 } |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1388 return 0; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1389 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1390 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1391 char *PostDog_Construct_URL(char *filename, char *out_buffer, size_t buffer_size) |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1392 { |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1393 snprintf(out_buffer, buffer_size, "%s/%s", POSTDOG_PATHS, filename); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1394 return out_buffer; |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1395 } |
|
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1396 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1397 boolean PostDog_History_CreateFile(char *filename, char* values) |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1398 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1399 char full_file_path[512] = {0}; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1400 snprintf(full_file_path, 512, "%s/%s", POSTDOG_PATHS, filename); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1401 FILE *file = fopen(full_file_path, "w"); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1402 if (!file) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1403 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1404 fprintf(stderr, "Failed to create a file: %s\n", full_file_path); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1405 return FALSE; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1406 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1407 fwrite(values, 1, strlen(values), file); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1408 fclose(file); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1409 return TRUE; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1410 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1411 |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1412 void PostDog_Request_SaveFile(void) |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1413 { |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1414 const char *method = PostDog_Enum_To_String(active_method_dropdown); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1415 size_t new_file_size = 1024 * 1024; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1416 Dowa_Arena *arena = Dowa_Arena_Create(1024 * 1024 * 2); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1417 char *new_file = Dowa_Arena_Allocate(arena, 1024 * 1024); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1418 char *title = Dowa_Arena_Allocate(arena, strlen(method) + strlen(url_input_text) + 2); |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1419 sprintf(title, "%s %s", method, url_input_text); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1420 snprintf( |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1421 new_file, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1422 new_file_size, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1423 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1424 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1425 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1426 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1427 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1428 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1429 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1430 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1431 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1432 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1433 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1434 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1435 "%s\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1436 "---\n" |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1437 "%s\n", |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1438 title, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1439 url_input_text, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1440 method, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1441 input_body_array[TAB_HEADER], |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1442 input_body_array[TAB_BODY], |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1443 input_body_array[TAB_GET_PARAMS], |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1444 input_body_array[TAB_WEBSOCKET], |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1445 result_body_array[RESULT_TAB_BODY] |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1446 ); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1447 char *filename = Dowa_Arena_Allocate(arena, 1024); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1448 if (!filename) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1449 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1450 perror("Error opening file"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1451 exit(EXIT_FAILURE); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1452 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1453 char *uuid4 = (char *)Dowa_Arena_Allocate(arena, 37); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1454 if (!uuid4) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1455 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1456 perror("Error uuid"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1457 exit(EXIT_FAILURE); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1458 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1459 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1460 uv_mutex_lock(&history_mutex); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1461 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1462 int32 seed = (uint32)time(NULL) ^ counter++; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1463 Dowa_String_UUID(seed, uuid4); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1464 snprintf(filename, 1024, "%s.txt", uuid4); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1465 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1466 if (PostDog_History_CreateFile(filename, new_file)) |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1467 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1468 HistoryItem item = {0}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1469 item.filename = strdup(filename); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1470 item.title = strdup(title); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1471 item.deleted = FALSE; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1472 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1473 Dowa_Array_Push(new_history_items, item); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1474 } |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1475 |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1476 uv_mutex_unlock(&history_mutex); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1477 Dowa_Arena_Free(arena); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1478 } |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1479 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1480 void PostDog_Websocket_Listen(void) |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1481 { |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1482 while (TRUE) |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1483 { |
|
153
790930d9bb90
[PostDog] Adding websocket to be more usable.
June Park <parkjune1995@gmail.com>
parents:
152
diff
changeset
|
1484 if (WS_BREAK) break; |
|
790930d9bb90
[PostDog] Adding websocket to be more usable.
June Park <parkjune1995@gmail.com>
parents:
152
diff
changeset
|
1485 |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1486 Seobeo_WebSocket_Message *p_msg = Seobeo_WebSocket_Receive(ws); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1487 if (p_msg) |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1488 { |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1489 if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT) |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1490 { |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1491 printf("Response: %.*s\n", (int)p_msg->length, (char*)p_msg->data); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1492 char *body = result_body_array[RESULT_TAB_BODY]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1493 size_t current_len = strlen(body); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1494 snprintf(body + current_len, RESULT_BUFFER_LENGTH - current_len, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1495 "\n%s", (char*)p_msg->data); |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1496 } |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1497 Seobeo_WebSocket_Message_Destroy(p_msg); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1498 } |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1499 usleep(10000); |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1500 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1501 return; |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1502 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1503 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1504 void PostDog_Websocket_Connect(void) |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1505 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1506 // Pass headers from the Headers tab when connecting |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1507 const char *headers = input_body_array[TAB_HEADER]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1508 if (headers && strlen(headers) > 0) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1509 ws = Seobeo_WebSocket_Connect_With_Headers(url_input_text, headers); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1510 else |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1511 ws = Seobeo_WebSocket_Connect(url_input_text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1512 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1513 result_body_array[RESULT_TAB_BODY][0] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1514 result_body_array[RESULT_TAB_HEADERS][0] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1515 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1516 // Reset result text area states |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1517 GuiTextAreaResetState(TEXT_AREA_ID_RESULT_BODY); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1518 GuiTextAreaResetState(TEXT_AREA_ID_RESULT_HEADERS); |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1519 } |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1520 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1521 int PostDog_Websocket_Send(void) |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1522 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1523 char *body = result_body_array[RESULT_TAB_BODY]; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1524 if (Seobeo_WebSocket_Send_Text(ws, input_body_array[active_input_tab]) < 0) |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1525 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1526 snprintf(body + strlen(body), RESULT_BUFFER_LENGTH - strlen(body), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1527 "Failed to send message\n"); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1528 return -1; |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1529 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1530 snprintf(body + strlen(body), RESULT_BUFFER_LENGTH - strlen(body), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1531 "\n%s", input_body_array[active_input_tab]); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1532 return 0; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1533 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1534 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1535 void PostDog_Websocket_Destroy(uv_thread_t thread_id) |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1536 { |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1537 Seobeo_WebSocket_Destroy(ws); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1538 uv_thread_join(&thread_id); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1539 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1540 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1541 void PostDog_Websocket_Start(void *arg) |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1542 { |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1543 PostDog_Websocket_Connect(); |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1544 PostDog_Websocket_Listen(); |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1545 } |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1546 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1547 uv_thread_t PostDog_Websocket_Start_Thread() |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1548 { |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1549 uv_thread_t thread_id; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1550 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1551 if (uv_thread_create(&thread_id, PostDog_Websocket_Start, NULL) != 0) |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1552 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1553 perror("Failed to create thread"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1554 memset(&thread_id, 0, sizeof(thread_id)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1555 return thread_id; |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1556 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1557 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1558 return thread_id; |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1559 } |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1560 |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1561 int PostDog_Http_Request(void) |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1562 { |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1563 Seobeo_Client_Request *req = Seobeo_Client_Request_Create(url_input_text); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1564 printf("URL: %s\n", url_input_text); |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1565 Seobeo_Client_Response *res; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1566 switch (active_method_dropdown) |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1567 { |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1568 case 0: |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1569 { |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1570 Seobeo_Client_Request_Set_Method(req, "GET"); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1571 break; |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1572 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1573 case 1: |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1574 { |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1575 Seobeo_Client_Request_Set_Method(req, "POST"); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1576 break; |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1577 } |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1578 case 2: |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1579 { |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1580 Seobeo_Client_Request_Set_Method(req, "PUT"); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1581 break; |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1582 } |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1583 case 3: |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1584 { |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1585 Seobeo_Client_Request_Set_Method(req, "DELETE"); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1586 break; |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1587 } |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1588 } |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1589 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1590 if (input_body_array[TAB_HEADER] && strlen(input_body_array[TAB_HEADER]) > 0) |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1591 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1592 char *headersCopy = strdup(input_body_array[TAB_HEADER]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1593 char *line = strtok(headersCopy, "\n"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1594 while (line != NULL) |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1595 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1596 while (*line == ' ' || *line == '\t') line++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1597 if (strlen(line) > 0) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1598 Seobeo_Client_Request_Add_Header_Array(req, line); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1599 line = strtok(NULL, "\n"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1600 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1601 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1602 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1603 Seobeo_Client_Request_Set_Follow_Redirects(req, TRUE, 5); // TODO: remove magic number; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1604 res = Seobeo_Client_Request_Execute(req); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1605 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1606 if (res == NULL) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1607 snprintf(result_body_array[RESULT_TAB_BODY], RESULT_BUFFER_LENGTH, "Error: Failed to send the request\n"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1608 result_body_array[RESULT_TAB_HEADERS][0] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1609 } else { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1610 // Store response body |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1611 snprintf(result_body_array[RESULT_TAB_BODY], RESULT_BUFFER_LENGTH, "%s", |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1612 res->body ? res->body : ""); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1613 // Sanitize body for display (replace tabs, remove non-printable chars) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1614 SanitizeTextForDisplay(result_body_array[RESULT_TAB_BODY]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1615 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1616 // Store response headers |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1617 int offset = snprintf(result_body_array[RESULT_TAB_HEADERS], RESULT_BUFFER_LENGTH, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1618 "HTTP Status: %d %s\n\n", |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1619 res->status_code, res->status_text ? res->status_text : ""); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1620 if (res->headers) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1621 size_t header_count = Dowa_Array_Length(res->headers); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1622 for (size_t i = 0; i < header_count && offset < RESULT_BUFFER_LENGTH - 100; i++) { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1623 offset += snprintf(result_body_array[RESULT_TAB_HEADERS] + offset, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1624 RESULT_BUFFER_LENGTH - offset, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1625 "%s: %s\n", res->headers[i].key, res->headers[i].value); |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1626 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1627 } |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1628 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1629 printf("Body: %s\n", res ? res->body : "NULL"); |
|
152
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1630 Seobeo_Client_Request_Destroy(req); |
|
7387eec8e7f8
[Postdog] Updated to use Seobeo_Client instead of CURL. Updated to handle websocket connection.
June Park <parkjune1995@gmail.com>
parents:
118
diff
changeset
|
1631 Seobeo_Client_Response_Destroy(res); |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1632 PostDog_Request_SaveFile(); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1633 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1634 // Reset result text area states so scroll/cursor don't carry over |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1635 GuiTextAreaResetState(TEXT_AREA_ID_RESULT_BODY); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1636 GuiTextAreaResetState(TEXT_AREA_ID_RESULT_HEADERS); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1637 |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1638 return 0; |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1639 } |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1640 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1641 void PostDog_Http_Work(uv_work_t *req) |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1642 { |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1643 PostDog_Http_Request(); |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1644 printf("HTTP request finished.\n"); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1645 } |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1646 |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1647 void PostDog_Http_Work_Done(uv_work_t *req, int status) |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1648 { |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1649 LOADING = FALSE; |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1650 free(req); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1651 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1652 |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1653 void PostDog_Http_Thread_Request() |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1654 { |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1655 uv_work_t *work_req = malloc(sizeof(uv_work_t)); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1656 if (!work_req) |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1657 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1658 perror("Failed to allocate work request"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1659 return; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1660 } |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1661 LOADING = TRUE; |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1662 if (uv_queue_work(main_loop, work_req, PostDog_Http_Work, PostDog_Http_Work_Done) != 0) |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1663 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1664 perror("Failed to queue work"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1665 free(work_req); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1666 LOADING = FALSE; |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
1667 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1668 } |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1669 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1670 void PostDog_Update_URL(boolean is_url_updated) |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1671 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1672 char *params_start = strchr(url_input_text, '?'); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1673 if (is_url_updated) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1674 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1675 if (!params_start) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1676 return; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1677 params_start++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1678 Dowa_Arena *arena = Dowa_Arena_Create(1024*1024); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1679 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1680 char buffer[4096] = ""; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1681 char **lines = Dowa_String_Split(params_start, "&", URL_TEXT_BUFFER_LENGTH, 1, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1682 for (int i = 0; i < Dowa_Array_Length(lines); i++) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1683 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1684 char *line = lines[i]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1685 char **key_value = Dowa_String_Split(line, "=", (int)strlen(line), 1, arena); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1686 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1687 if (Dowa_Array_Length(key_value) < 2) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1688 break; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1689 snprintf(buffer + strlen(buffer), 4096 - strlen(buffer), "%s %s\n", key_value[0], key_value[1]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1690 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1691 snprintf(input_body_array[TAB_GET_PARAMS], URL_TEXT_BUFFER_LENGTH, "%s", buffer); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1692 int length = strlen(input_body_array[TAB_GET_PARAMS]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1693 input_body_array[TAB_GET_PARAMS][length--] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1694 Dowa_Arena_Free(arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1695 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1696 else |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1697 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1698 if (params_start) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1699 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1700 size_t length = params_start - url_input_text; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1701 url_input_text[length] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1702 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1703 int get_params_length = (int)strlen(input_body_array[TAB_GET_PARAMS]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1704 if (get_params_length == 0) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1705 return; |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1706 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1707 char *separator = "?"; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1708 Dowa_Arena *arena = Dowa_Arena_Create(1024*1024); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1709 char **lines = Dowa_String_Split(input_body_array[TAB_GET_PARAMS], "\n", get_params_length, 1, arena); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1710 for (int i = 0; i < Dowa_Array_Length(lines); i++) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1711 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1712 char *line = lines[i]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1713 char **key_value = Dowa_String_Split(line, " ", (int)strlen(line), 1, arena); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1714 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1715 if (Dowa_Array_Length(key_value) < 2) |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1716 break; |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1717 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1718 strcat(url_input_text, separator); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1719 strcat(url_input_text, key_value[0]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1720 strcat(url_input_text, "="); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1721 for (int i = 1; i < Dowa_Array_Length(key_value); i++) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1722 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1723 if (!key_value[i] || key_value[i][0] == '\0') |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1724 break; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1725 if (i > 1) strcat(url_input_text, "%20"); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1726 strcat(url_input_text, key_value[i]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1727 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1728 separator = "&"; |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1729 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1730 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1731 Dowa_Arena_Free(arena); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1732 } |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1733 } |
|
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
1734 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1735 int PostDog_String_To_MethodEnum(char *value) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1736 { |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1737 if (strstr(value, "GET")) |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1738 return 0; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1739 if (strstr(value, "POST")) |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1740 return 1; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1741 if (strstr(value, "PUT")) |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1742 return 2; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1743 if (strstr(value, "DELETE")) |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1744 return 3; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1745 return 0; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1746 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1747 |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1748 void PostDog_Params_Reset(void) |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1749 { |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1750 url_input_text[0] = '\0'; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1751 active_method_dropdown = 0; |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1752 active_result_tab = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1753 |
|
155
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
1754 for (int i = 0; i < Dowa_Array_Length(input_body_array); i++) |
|
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
1755 input_body_array[i][0] = '\0'; |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1756 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1757 for (int i = 0; i < Dowa_Array_Length(result_body_array); i++) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1758 result_body_array[i][0] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1759 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1760 // Reset text area states when clearing |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1761 GuiTextAreaResetAllStates(); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1762 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1763 |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1764 void PostDog_Load_File(const char *filename) |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1765 { |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1766 char full_file_path[512] = {0}; |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1767 snprintf(full_file_path, 512, "%s/%s", POSTDOG_PATHS, filename); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1768 FILE *file = fopen(full_file_path, "r"); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1769 if (!file) |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1770 return; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1771 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1772 fseek(file, 0, SEEK_END); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1773 size_t file_size = ftell(file); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1774 fseek(file, 0, SEEK_SET); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1775 |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1776 Dowa_Arena *init_arena = Dowa_Arena_Create(file_size + 2); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1777 Dowa_Arena *split_arena = Dowa_Arena_Create(file_size * 2); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1778 char *file_buffer = Dowa_Arena_Allocate(init_arena, file_size+1); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1779 fread(file_buffer, 1, file_size, file); |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1780 fclose(file); |
|
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1781 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1782 char **values = Dowa_String_Split(file_buffer, "---\n", file_size, 4, split_arena); |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1783 |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1784 for (int i = 0; i < Dowa_Array_Length(values); i++) |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1785 { |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1786 switch (i) |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1787 { |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1788 case 0: // Title - skip |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1789 break; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1790 |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1791 case 1: // URL |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1792 snprintf(url_input_text, strlen(values[i]) + 1, "%s", values[i]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1793 url_input_text[strcspn(url_input_text, "\n")] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1794 break; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1795 |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1796 case 2: // Method |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1797 active_method_dropdown = PostDog_String_To_MethodEnum(values[i]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1798 break; |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1799 |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1800 case 3: // Headers (TAB_HEADER) |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1801 case 4: // Body (TAB_BODY) |
|
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1802 case 5: // Get Params (TAB_GET_PARAMS) |
|
155
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
1803 case 6: // Websocket (TAB_WEBSOCKET) |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1804 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1805 int map_index = i - 3; // 3->0, 4->1, 5->2, 6->3 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1806 snprintf(input_body_array[map_index], strlen(values[i]) + 1, "%s", values[i]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1807 // Trim trailing newlines |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1808 for (int j = strlen(values[i]); j > 0; j--) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1809 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1810 if (input_body_array[map_index][j] == '\n') |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1811 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1812 input_body_array[map_index][j] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1813 break; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1814 } |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1815 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1816 break; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1817 } |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
1818 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1819 default: // Response (index 7+) - load into body tab for backward compatibility |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1820 snprintf(result_body_array[RESULT_TAB_BODY], strlen(values[i]) + 1, "%s", values[i]); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1821 break; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1822 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1823 } |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1824 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1825 // Reset result tab to body |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1826 active_result_tab = RESULT_TAB_BODY; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1827 |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1828 // Reset text area states when loading new file |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1829 GuiTextAreaResetAllStates(); |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
1830 |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1831 Dowa_Arena_Free(init_arena); |
|
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
1832 Dowa_Arena_Free(split_arena); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1833 } |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
1834 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1835 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1836 // UI LAYOUT STRUCTURE - All rectangles for the UI |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1837 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1838 typedef struct { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1839 // Main areas |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1840 Rectangle screen; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1841 Rectangle sidebar; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1842 Rectangle content; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1843 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1844 // Sidebar sections |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1845 Rectangle logo_area; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1846 Rectangle history_list; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1847 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1848 // URL bar section |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1849 Rectangle url_bar; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1850 Rectangle method_dropdown; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1851 Rectangle url_input; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1852 Rectangle send_button; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1853 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1854 // Body section (input + result split) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1855 Rectangle body_area; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1856 Rectangle input_panel; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1857 Rectangle result_panel; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1858 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1859 // Input panel internals |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1860 Rectangle input_tabs; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1861 Rectangle input_body; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1862 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1863 // Result panel internals |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1864 Rectangle result_tabs; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1865 Rectangle result_body; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1866 } UILayout; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1867 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1868 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1869 // UI STATE - All interactive state |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1870 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1871 typedef struct { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1872 boolean url_edit_mode; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1873 boolean method_edit_mode; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1874 boolean input_body_edit_mode; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1875 boolean result_body_edit_mode; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1876 int prev_input_tab; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1877 float history_scroll_offset; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1878 } UIState; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1879 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1880 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1881 // LAYOUT CALCULATION FUNCTIONS |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1882 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1883 static UILayout CalculateLayout(int screen_width, int screen_height, float padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1884 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1885 UILayout layout = {0}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1886 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1887 // Screen |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1888 layout.screen = (Rectangle){0, 0, screen_width, screen_height}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1889 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1890 // Main split: sidebar (20%) | content (80%) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1891 layout.sidebar = LeftColumn(layout.screen, 0.20f, 0); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1892 layout.content = RightColumn(layout.screen, layout.sidebar, 0); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1893 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1894 // Sidebar sections |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1895 layout.logo_area = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1896 .x = layout.sidebar.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1897 .y = layout.sidebar.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1898 .width = layout.sidebar.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1899 .height = 120 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1900 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1901 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1902 layout.history_list = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1903 .x = layout.sidebar.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1904 .y = layout.logo_area.y + layout.logo_area.height + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1905 .width = layout.sidebar.width - (2 * padding), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1906 .height = layout.sidebar.height - layout.logo_area.height - (2 * padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1907 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1908 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1909 // URL bar section (top of content area) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1910 float url_bar_height = 60; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1911 layout.url_bar = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1912 .x = layout.content.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1913 .y = layout.content.y + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1914 .width = layout.content.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1915 .height = url_bar_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1916 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1917 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1918 // URL bar components (method dropdown + URL input + send button) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1919 float dropdown_width = 100; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1920 float button_width = 80; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1921 float url_bar_inner_padding = 8; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1922 float control_height = 36; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1923 float control_y = layout.url_bar.y + (layout.url_bar.height - control_height) / 2; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1924 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1925 layout.method_dropdown = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1926 .x = layout.url_bar.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1927 .y = control_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1928 .width = dropdown_width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1929 .height = control_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1930 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1931 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1932 layout.url_input = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1933 .x = layout.method_dropdown.x + layout.method_dropdown.width + url_bar_inner_padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1934 .y = control_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1935 .width = layout.url_bar.width - dropdown_width - button_width - (4 * padding) - (2 * url_bar_inner_padding), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1936 .height = control_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1937 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1938 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1939 layout.send_button = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1940 .x = layout.url_input.x + layout.url_input.width + url_bar_inner_padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1941 .y = control_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1942 .width = button_width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1943 .height = control_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1944 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1945 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1946 // Body area (below URL bar) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1947 layout.body_area = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1948 .x = layout.content.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1949 .y = layout.url_bar.y + layout.url_bar.height + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1950 .width = layout.content.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1951 .height = layout.content.height - layout.url_bar.height - (3 * padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1952 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1953 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1954 // Split body into input (left) and result (right) panels |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1955 float split_ratio = 0.5f; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1956 layout.input_panel = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1957 .x = layout.body_area.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1958 .y = layout.body_area.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1959 .width = layout.body_area.width * split_ratio, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1960 .height = layout.body_area.height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1961 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1962 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1963 layout.result_panel = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1964 .x = layout.body_area.x + layout.input_panel.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1965 .y = layout.body_area.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1966 .width = layout.body_area.width - layout.input_panel.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1967 .height = layout.body_area.height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1968 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1969 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1970 // Input panel internals |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1971 float tab_height = 40; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1972 layout.input_tabs = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1973 .x = layout.input_panel.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1974 .y = layout.input_panel.y + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1975 .width = layout.input_panel.width - (2 * padding), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1976 .height = tab_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1977 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1978 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1979 layout.input_body = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1980 .x = layout.input_panel.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1981 .y = layout.input_tabs.y + layout.input_tabs.height, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1982 .width = layout.input_panel.width - (2 * padding), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1983 .height = layout.input_panel.height - tab_height - (2 * padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1984 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1985 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1986 // Result panel internals |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1987 layout.result_tabs = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1988 .x = layout.result_panel.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1989 .y = layout.result_panel.y + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1990 .width = layout.result_panel.width - (2 * padding), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1991 .height = tab_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1992 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1993 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1994 layout.result_body = (Rectangle){ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1995 .x = layout.result_panel.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1996 .y = layout.result_tabs.y + layout.result_tabs.height, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1997 .width = layout.result_panel.width - (2 * padding), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1998 .height = layout.result_panel.height - tab_height - (2 * padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
1999 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2000 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2001 return layout; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2002 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2003 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2004 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2005 // DRAWING FUNCTIONS - Separated for clarity |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2006 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2007 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2008 static void DrawSidebar(UILayout *layout, Texture2D logo_texture, float padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2009 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2010 // Sidebar background with rounded left corners |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2011 DrawRectangleRec(layout->sidebar, g_colors.primary); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2012 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2013 // Logo |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2014 Rectangle logo_inner = AddPadding(layout->logo_area, padding); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2015 float logo_size = logo_inner.height < logo_inner.width ? logo_inner.height : logo_inner.width; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2016 Rectangle dest_rect = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2017 .x = logo_inner.x + (logo_inner.width - logo_size) / 2, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2018 .y = logo_inner.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2019 .width = logo_size, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2020 .height = logo_size |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2021 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2022 Rectangle source_rect = {0, 0, logo_texture.width, logo_texture.height}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2023 DrawTexturePro(logo_texture, source_rect, dest_rect, (Vector2){0, 0}, 0.0f, WHITE); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2024 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2025 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2026 static void DrawHistoryList(UILayout *layout, Vector2 mouse_pos, float padding, float scroll_offset) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2027 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2028 int32 new_len = Dowa_Array_Length(new_history_items); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2029 int32 history_len = Dowa_Array_Length(history_items); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2030 int32 total = new_len + history_len; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2031 float item_height = 70; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2032 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2033 BeginScissorMode(layout->history_list.x, layout->history_list.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2034 layout->history_list.width, layout->history_list.height); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2035 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2036 int32 visible_index = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2037 for (int i = 0; i < total; i++) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2038 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2039 HistoryItem *item = i < new_len ? |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2040 &new_history_items[new_len - i - 1] : &history_items[i - new_len]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2041 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2042 if (item->deleted) continue; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2043 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2044 // Calculate item rectangle |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2045 Rectangle item_rect = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2046 .x = layout->history_list.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2047 .y = layout->history_list.y + (padding + item_height) * visible_index + scroll_offset, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2048 .width = layout->history_list.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2049 .height = item_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2050 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2051 item->rect = item_rect; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2052 visible_index++; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2053 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2054 // Skip if not visible |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2055 if (item_rect.y + item_rect.height < layout->history_list.y || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2056 item_rect.y > layout->history_list.y + layout->history_list.height) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2057 continue; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2058 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2059 // Draw item background |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2060 DrawRectangleRounded(item_rect, 0.3f, 8, g_colors.secondary); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2061 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2062 // Title area (top 60%) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2063 Rectangle title_rect = item_rect; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2064 title_rect.height = item_rect.height * 0.55f; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2065 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2066 // Draw title text |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2067 Rectangle title_text_rect = AddPadding(title_rect, 8); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2068 if (item->title) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2069 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2070 DrawTextEx(GuiGetFont(), item->title, (Vector2){ .x=title_text_rect.x, .y=title_text_rect.y + 4 }, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2071 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE), g_colors.text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2072 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2073 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2074 // Button area (bottom 40%) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2075 Rectangle button_area = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2076 .x = item_rect.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2077 .y = title_rect.y + title_rect.height, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2078 .width = item_rect.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2079 .height = item_rect.height - title_rect.height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2080 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2081 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2082 Rectangle btn_view = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2083 .x = button_area.x + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2084 .y = button_area.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2085 .width = (button_area.width - 3 * padding) / 2, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2086 .height = button_area.height - padding |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2087 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2088 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2089 Rectangle btn_delete = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2090 .x = btn_view.x + btn_view.width + padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2091 .y = btn_view.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2092 .width = btn_view.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2093 .height = btn_view.height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2094 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2095 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2096 // Hover cursor for buttons |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2097 if (CheckCollisionPointRec(mouse_pos, btn_view) || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2098 CheckCollisionPointRec(mouse_pos, btn_delete)) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2099 SetMouseCursor(MOUSE_CURSOR_POINTING_HAND); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2100 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2101 if (GuiButton(btn_view, "View")) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2102 PostDog_Load_File(item->filename); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2103 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2104 if (GuiButton(btn_delete, "Delete")) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2105 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2106 char delete_path[512]; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2107 if (!remove(PostDog_Construct_URL(item->filename, delete_path, sizeof(delete_path)))) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2108 item->deleted = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2109 else |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2110 fprintf(stderr, "Couldn't delete file: %s\n", item->filename); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2111 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2112 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2113 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2114 EndScissorMode(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2115 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2116 // Scrollbar |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2117 float content_height = visible_index * (item_height + padding); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2118 if (content_height > layout->history_list.height) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2119 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2120 float scrollbar_height = (layout->history_list.height / content_height) * layout->history_list.height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2121 float scrollbar_y = layout->history_list.y - (scroll_offset / content_height) * layout->history_list.height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2122 Rectangle scrollbar_rect = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2123 layout->history_list.x + layout->history_list.width - 6, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2124 scrollbar_y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2125 4, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2126 scrollbar_height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2127 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2128 DrawRectangleRounded(scrollbar_rect, 0.5f, 4, Fade(g_colors.text_light, 0.5f)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2129 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2130 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2131 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2132 static void DrawURLBar(UILayout *layout, UIState *state, float padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2133 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2134 // URL bar background |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2135 Rectangle url_bar_bg = AddPadding(layout->url_bar, padding / 2); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2136 DrawRectangleRounded(url_bar_bg, 0.3f, 8, g_colors.secondary); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2137 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2138 // Combined method dropdown + URL input with rounded corners |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2139 Rectangle combined_input = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2140 .x = layout->method_dropdown.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2141 .y = layout->method_dropdown.y, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2142 .width = layout->url_input.x + layout->url_input.width - layout->method_dropdown.x, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2143 .height = layout->method_dropdown.height |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2144 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2145 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2146 // Method colors: GET=Green, POST=Blue, PUT=Orange, DELETE=Red |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2147 Color method_colors[] = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2148 (Color){76, 175, 80, 255}, // GET - Green |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2149 (Color){33, 150, 243, 255}, // POST - Blue |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2150 (Color){255, 152, 0, 255}, // PUT - Orange |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2151 (Color){244, 67, 54, 255} // DELETE - Red |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2152 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2153 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2154 // Method dropdown + URL input combined component |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2155 DropdownTextBoxConfig url_config = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2156 .dropdown_items = "GET;POST;PUT;DELETE", |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2157 .dropdown_active = &active_method_dropdown, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2158 .dropdown_edit_mode = &state->method_edit_mode, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2159 .dropdown_width = layout->method_dropdown.width, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2160 .text_buffer = url_input_text, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2161 .text_buffer_size = URL_TEXT_BUFFER_LENGTH, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2162 .text_edit_mode = &state->url_edit_mode, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2163 .corner_radius = 0.2f, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2164 .background_color = g_colors.background, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2165 .border_color = g_colors.border, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2166 .text_color = g_colors.text, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2167 .item_colors = method_colors, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2168 .item_count = 4 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2169 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2170 PostDog_DropdownTextBox(combined_input, url_config); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2171 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2172 // Handle Enter key in URL input |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2173 if (state->url_edit_mode && IsKeyPressed(KEY_ENTER)) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2174 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2175 PostDog_Http_Thread_Request(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2176 state->url_edit_mode = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2177 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2178 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2179 // Send button |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2180 DrawRectangleRounded(layout->send_button, 0.3f, 8, g_colors.primary); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2181 Rectangle btn_text_rect = layout->send_button; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2182 const char *btn_text = "Send"; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2183 int text_width = MeasureText(btn_text, GuiGetStyle(DEFAULT, TEXT_SIZE)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2184 DrawTextEx(GuiGetFont(), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2185 btn_text, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2186 (Vector2){ .x=btn_text_rect.x + (btn_text_rect.width - text_width) / 2, .y=btn_text_rect.y + (btn_text_rect.height - GuiGetStyle(DEFAULT, TEXT_SIZE)) / 2 }, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2187 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE), g_colors.text_light); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2188 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2189 if (CheckCollisionPointRec(GetMousePosition(), layout->send_button) && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2190 IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2191 PostDog_Http_Thread_Request(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2192 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2193 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2194 static void DrawBodyPanels(UILayout *layout, UIState *state, float padding) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2195 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2196 // Draw split panel background (input left, result right) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2197 DrawRectangleSelectiveRounded(layout->input_panel, 12, 8, g_colors.background, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2198 TRUE, FALSE, FALSE, TRUE); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2199 DrawRectangleSelectiveRounded(layout->result_panel, 12, 8, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2200 LOADING ? Fade(g_colors.error, 0.3f) : g_colors.secondary, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2201 FALSE, TRUE, TRUE, FALSE); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2202 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2203 // Tab labels |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2204 const char *tab_labels[] = {"Headers", "Body", "Params", "WebSocket"}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2205 int tab_count = 4; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2206 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2207 // Draw custom tabs |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2208 PostDog_TabBarSimple(layout->input_tabs, tab_labels, tab_count, &active_input_tab); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2209 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2210 // Input body text area |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2211 int text_area_id = TEXT_AREA_ID_INPUT_HEADER + active_input_tab; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2212 if (GuiTextArea(text_area_id, layout->input_body, input_body_array[active_input_tab], |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2213 BODY_BUFFER_LENGTH, state->input_body_edit_mode, TRUE, FALSE, g_text_area_arena)) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2214 state->input_body_edit_mode = !state->input_body_edit_mode; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2215 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2216 // WebSocket send button (only on WebSocket tab) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2217 if (active_input_tab == TAB_WEBSOCKET) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2218 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2219 WS_BREAK = FALSE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2220 Rectangle ws_send_btn = { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2221 .x = layout->input_body.x + layout->input_body.width - 90 - padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2222 .y = layout->input_body.y + layout->input_body.height - 35 - padding, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2223 .width = 90, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2224 .height = 35 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2225 }; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2226 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2227 DrawRectangleRounded(ws_send_btn, 0.3f, 8, g_colors.highlight); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2228 const char *ws_text = "Send"; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2229 int ws_text_width = MeasureText(ws_text, GuiGetStyle(DEFAULT, TEXT_SIZE)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2230 DrawTextEx(GuiGetFont(), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2231 ws_text, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2232 (Vector2) { .x=ws_send_btn.x + (ws_send_btn.width - ws_text_width) / 2, .y=ws_send_btn.y + (ws_send_btn.height - GuiGetStyle(DEFAULT, TEXT_SIZE)) / 2 }, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2233 GuiGetStyle(DEFAULT, TEXT_SIZE), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2234 TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE), |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2235 g_colors.text); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2236 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2237 if ((CheckCollisionPointRec(GetMousePosition(), ws_send_btn) && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2238 IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2239 (state->input_body_edit_mode && IsKeyDown(KEY_LEFT_SHIFT) && IsKeyPressed(KEY_ENTER))) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2240 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2241 if (!ws) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2242 websocket_thread_id = PostDog_Websocket_Start_Thread(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2243 usleep(10000); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2244 PostDog_Websocket_Send(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2245 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2246 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2247 else |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2248 { |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2249 WS_BREAK = TRUE; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2250 if (websocket_thread_id) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2251 PostDog_Websocket_Destroy(websocket_thread_id); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2252 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2253 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2254 // Result tabs |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2255 const char *result_tab_labels[] = {"Body", "Headers"}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2256 int result_tab_count = 2; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2257 PostDog_TabBarSimple(layout->result_tabs, result_tab_labels, result_tab_count, &active_result_tab); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2258 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2259 // Result body text area |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2260 int result_text_area_id = TEXT_AREA_ID_RESULT_BODY + active_result_tab; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2261 // Result text area is readonly (selectable/copyable but not editable) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2262 if (GuiTextArea(result_text_area_id, layout->result_body, result_body_array[active_result_tab], |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2263 RESULT_BUFFER_LENGTH, state->result_body_edit_mode, TRUE, TRUE, g_text_area_arena)) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2264 state->result_body_edit_mode = !state->result_body_edit_mode; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2265 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2266 PostDog_Update_URL(state->url_edit_mode); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2267 } |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2268 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2269 // ============================================================================ |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2270 // MAIN FUNCTION |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2271 // ============================================================================ |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2272 int main() |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2273 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2274 // ======================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2275 // INITIALIZATION |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2276 // ======================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2277 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2278 // Initialize libuv |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2279 main_loop = uv_default_loop(); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2280 uv_mutex_init(&history_mutex); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2281 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2282 // Initialize color scheme |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2283 PostDog_InitColorScheme(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2284 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2285 // Initialize window |
|
111
48f260576059
[PostDog] Rewriting it from scratch as it is unreadable for me.
June Park <parkjune1995@gmail.com>
parents:
63
diff
changeset
|
2286 InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "PostDog"); |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2287 SetWindowState(FLAG_WINDOW_RESIZABLE); |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2288 SetTargetFPS(60); |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2289 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2290 // Load resources |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2291 Font customFont = LoadFontEx("postdog/Roboto-Regular.ttf", 20, 0, 0); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2292 GuiSetFont(customFont); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2293 GuiSetStyle(DEFAULT, TEXT_SIZE, 16); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2294 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2295 Image logo_original = LoadImage("postdog/logo_bigger.png"); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2296 ImageResize(&logo_original, 200, 200); |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
2297 SetWindowIcon(logo_original); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2298 Texture2D logo_texture = LoadTextureFromImage(logo_original); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2299 // ToggleBorderlessWindowed(); |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
2300 UnloadImage(logo_original); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2301 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2302 // Initialize text area arena |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2303 g_text_area_arena = Dowa_Arena_Create(1024 * 1024 * 4); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2304 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2305 // Initialize history |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2306 Dowa_Array_Reserve(history_items, 10); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2307 Dowa_Array_Reserve(new_history_items, 10); |
|
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2308 PostDog_History_Load(&history_items); |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2309 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2310 // Initialize text buffers |
|
118
249881ceff7b
[PostDog] Updated some core logic. Will create a bookmark for postdog until the launch as this is annoying to deal with.
June Park <parkjune1995@gmail.com>
parents:
117
diff
changeset
|
2311 url_input_text = (char *)malloc(sizeof(char) * URL_TEXT_BUFFER_LENGTH); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2312 snprintf(url_input_text, URL_TEXT_BUFFER_LENGTH, URL_TEXT_DEFAULT); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
2313 |
|
155
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
2314 Dowa_Array_Push(input_body_array, (char *)malloc(sizeof(char) * HEADER_BUFFER_LENGTH)); |
|
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
2315 Dowa_Array_Push(input_body_array, (char *)malloc(sizeof(char) * BODY_BUFFER_LENGTH)); |
|
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
2316 Dowa_Array_Push(input_body_array, (char *)malloc(sizeof(char) * DEFAULT_TEXT_BUFFER_LENGTH)); |
|
3bb45eb67906
[Postdog] Updated variables names and padding sizes. Needs more work.
June Park <parkjune1995@gmail.com>
parents:
153
diff
changeset
|
2317 Dowa_Array_Push(input_body_array, (char *)malloc(sizeof(char) * DEFAULT_TEXT_BUFFER_LENGTH)); |
|
112
d6d578b49a19
[PostDog] Got CRUD working.
June Park <parkjune1995@gmail.com>
parents:
111
diff
changeset
|
2318 |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2319 snprintf(input_body_array[TAB_HEADER], HEADER_BUFFER_LENGTH, HEADER_TEXT_DEFAULT); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2320 snprintf(input_body_array[TAB_BODY], BODY_BUFFER_LENGTH, BODY_TEXT_DEFAULT); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2321 snprintf(input_body_array[TAB_GET_PARAMS], DEFAULT_TEXT_BUFFER_LENGTH, GET_PARAM_TEXT_DEFAULT); |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2322 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2323 // Initialize result buffers (body and headers tabs) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2324 Dowa_Array_Push(result_body_array, (char *)malloc(sizeof(char) * RESULT_BUFFER_LENGTH)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2325 Dowa_Array_Push(result_body_array, (char *)malloc(sizeof(char) * RESULT_BUFFER_LENGTH)); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2326 result_body_array[RESULT_TAB_BODY][0] = '\0'; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2327 result_body_array[RESULT_TAB_HEADERS][0] = '\0'; |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2328 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2329 // Initialize UI state |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2330 UIState ui_state = {0}; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2331 float padding = 10.0f; |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2332 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2333 // ======================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2334 // MAIN LOOP |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2335 // ======================================================================== |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2336 while (!WindowShouldClose()) |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2337 { |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2338 // Process libuv events (non-blocking) |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2339 uv_run(main_loop, UV_RUN_NOWAIT); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2340 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2341 // Handle keyboard shortcuts |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2342 DefaultBehaviours(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2343 |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2344 // ==================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2345 // LAYOUT CALCULATION |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2346 // ==================================================================== |
|
111
48f260576059
[PostDog] Rewriting it from scratch as it is unreadable for me.
June Park <parkjune1995@gmail.com>
parents:
63
diff
changeset
|
2347 int screen_width = GetScreenWidth(); |
|
48f260576059
[PostDog] Rewriting it from scratch as it is unreadable for me.
June Park <parkjune1995@gmail.com>
parents:
63
diff
changeset
|
2348 int screen_height = GetScreenHeight(); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2349 UILayout layout = CalculateLayout(screen_width, screen_height, padding); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2350 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2351 // ==================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2352 // INPUT HANDLING |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2353 // ==================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2354 Vector2 mouse_pos = GetMousePosition(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2355 float mouse_wheel = GetMouseWheelMove(); |
|
115
96db6c3f38d6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
114
diff
changeset
|
2356 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2357 // Reset cursor |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2358 SetMouseCursor(MOUSE_CURSOR_DEFAULT); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2359 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2360 // History scroll |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2361 if (CheckCollisionPointRec(mouse_pos, layout.history_list) && mouse_wheel != 0) |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2362 { |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2363 ui_state.history_scroll_offset += mouse_wheel * 30; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2364 int32 total = Dowa_Array_Length(new_history_items) + Dowa_Array_Length(history_items); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2365 float content_height = total * 80; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2366 float max_scroll = content_height - layout.history_list.height; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2367 if (ui_state.history_scroll_offset > 0) ui_state.history_scroll_offset = 0; |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2368 if (max_scroll > 0 && ui_state.history_scroll_offset < -max_scroll) |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2369 ui_state.history_scroll_offset = -max_scroll; |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2370 } |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2371 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2372 // Cursor changes for interactive areas |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2373 if (CheckCollisionPointRec(mouse_pos, layout.send_button) || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2374 CheckCollisionPointRec(mouse_pos, layout.input_tabs) || |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2375 CheckCollisionPointRec(mouse_pos, layout.logo_area)) |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2376 SetMouseCursor(MOUSE_CURSOR_POINTING_HAND); |
|
114
e2a73e64e8e6
[Postdog] Got history working.
June Park <parkjune1995@gmail.com>
parents:
112
diff
changeset
|
2377 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2378 // Logo click resets |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2379 if (CheckCollisionPointRec(mouse_pos, layout.logo_area) && |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2380 IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2381 PostDog_Params_Reset(); |
|
116
7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
June Park <parkjune1995@gmail.com>
parents:
115
diff
changeset
|
2382 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2383 // ==================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2384 // DRAWING |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2385 // ==================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2386 BeginDrawing(); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2387 ClearBackground(g_colors.background); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2388 DrawRectangleSelectiveRounded(layout.content, 12, 8, g_colors.secondary, |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2389 FALSE, TRUE, TRUE, FALSE); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2390 DrawSidebar(&layout, logo_texture, padding); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2391 DrawHistoryList(&layout, mouse_pos, padding, ui_state.history_scroll_offset); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2392 DrawBodyPanels(&layout, &ui_state, padding); |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2393 DrawURLBar(&layout, &ui_state, padding); |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2394 |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2395 EndDrawing(); |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2396 } |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2397 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2398 // ======================================================================== |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2399 // CLEANUP |
|
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2400 // ======================================================================== |
|
159
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2401 GuiTextAreaResetAllStates(); |
|
05cf9467a1c3
[Postdog] Updated to use text area that can handle like html text area.
June Park <parkjune1995@gmail.com>
parents:
155
diff
changeset
|
2402 Dowa_Arena_Free(g_text_area_arena); |
|
161
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2403 |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2404 uv_mutex_destroy(&history_mutex); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2405 uv_loop_close(main_loop); |
|
87d8d3eb3491
[PostDog] WIP to make it more mordern looking
June Park <parkjune1995@gmail.com>
parents:
159
diff
changeset
|
2406 |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2407 UnloadTexture(logo_texture); |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2408 CloseWindow(); |
|
163
058de208e640
[Config] Adding os ignore files.
June Park <parkjune1995@gmail.com>
parents:
161
diff
changeset
|
2409 |
|
54
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2410 return 0; |
|
b3e82d22f961
[PostDog] Initial commit BROKEN
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2411 } |