Mercurial
comparison postdog/main.c @ 172:0face9898d04
[PostDog] Small changes.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 19 Jan 2026 18:56:54 -0800 |
| parents | 058de208e640 |
| children |
comparison
equal
deleted
inserted
replaced
| 169:295ac2e5ec00 | 172:0face9898d04 |
|---|---|
| 23 #include "third_party/raylib/include/raylib.h" | 23 #include "third_party/raylib/include/raylib.h" |
| 24 #include "third_party/raylib/include/raygui.h" | 24 #include "third_party/raylib/include/raygui.h" |
| 25 #include "third_party/raylib/custom.h" | 25 #include "third_party/raylib/custom.h" |
| 26 | 26 |
| 27 #ifndef POSTDOG_PATHS | 27 #ifndef POSTDOG_PATHS |
| 28 #define POSTDOG_PATHS "/Users/mrjunejune/zenbu/postdog/history" | 28 #define POSTDOG_PATHS "/home/june/zenbu/postdog/history" |
| 29 #endif | 29 #endif |
| 30 | 30 |
| 31 #define SCREEN_WIDTH 1280 | 31 #define SCREEN_WIDTH 1280 |
| 32 #define SCREEN_HEIGHT 780 | 32 #define SCREEN_HEIGHT 780 |
| 33 #define MAX_SCROLL_HEIGHT 10000 | 33 #define MAX_SCROLL_HEIGHT 10000 |
| 36 #define DEFAULT_TEXT_BUFFER_LENGTH 1024 * 4 | 36 #define DEFAULT_TEXT_BUFFER_LENGTH 1024 * 4 |
| 37 #define URL_TEXT_BUFFER_LENGTH 1024 * 10 | 37 #define URL_TEXT_BUFFER_LENGTH 1024 * 10 |
| 38 #define BODY_BUFFER_LENGTH 1024 * 1024 * 5 | 38 #define BODY_BUFFER_LENGTH 1024 * 1024 * 5 |
| 39 #define RESULT_BUFFER_LENGTH 1024 * 1024 * 5 | 39 #define RESULT_BUFFER_LENGTH 1024 * 1024 * 5 |
| 40 | 40 |
| 41 #define URL_TEXT_DEFAULT "https://httpbin.org/get" | 41 // #define URL_TEXT_DEFAULT "https://httpbin.org/get" |
| 42 #define URL_TEXT_DEFAULT "wss://mrjunejune.com/echo" | |
| 42 #define HEADER_TEXT_DEFAULT "Content-Type: application/json" | 43 #define HEADER_TEXT_DEFAULT "Content-Type: application/json" |
| 43 #define BODY_TEXT_DEFAULT "" | 44 #define BODY_TEXT_DEFAULT "" |
| 44 #define GET_PARAM_TEXT_DEFAULT "foo bar" | 45 #define GET_PARAM_TEXT_DEFAULT "foo bar" |
| 45 | 46 |
| 46 // ============================================================================ | 47 // ============================================================================ |
| 47 // TextArea Component | 48 // TextArea Component |
| 48 // ============================================================================ | 49 // ============================================================================ |
| 49 | 50 |
| 50 #define TEXT_SIZE_DEFAULT 10 // used to calcualte spacing | 51 #define TEXT_SIZE_DEFAULT 20 // used to calcualte spacing |
| 51 #define TEXT_AREA_LINE_HEIGHT GuiGetStyle(DEFAULT, TEXT_SIZE) | 52 #define TEXT_AREA_LINE_HEIGHT GuiGetStyle(DEFAULT, TEXT_SIZE) |
| 52 #define TEXT_AREA_PADDING 30 | 53 #define TEXT_AREA_PADDING 30 |
| 53 #define TEXT_AREA_CURSOR_WIDTH 2 | 54 #define TEXT_AREA_CURSOR_WIDTH 2 |
| 54 #define TEXT_AREA_MAX_UNDO_STATES 64 | 55 #define TEXT_AREA_MAX_UNDO_STATES 64 |
| 55 #define TEXT_AREA_MAX_INSTANCES 8 | 56 #define TEXT_AREA_MAX_INSTANCES 8 |
| 1548 { | 1549 { |
| 1549 uv_thread_t thread_id; | 1550 uv_thread_t thread_id; |
| 1550 | 1551 |
| 1551 if (uv_thread_create(&thread_id, PostDog_Websocket_Start, NULL) != 0) | 1552 if (uv_thread_create(&thread_id, PostDog_Websocket_Start, NULL) != 0) |
| 1552 { | 1553 { |
| 1553 perror("Failed to create thread"); | 1554 perror("Failed to create thread"); |
| 1554 memset(&thread_id, 0, sizeof(thread_id)); | 1555 memset(&thread_id, 0, sizeof(thread_id)); |
| 1555 return thread_id; | 1556 return thread_id; |
| 1556 } | 1557 } |
| 1557 | 1558 |
| 1558 return thread_id; | 1559 return thread_id; |
| 1559 } | 1560 } |
| 1560 | 1561 |
| 2177 } | 2178 } |
| 2178 | 2179 |
| 2179 // Send button | 2180 // Send button |
| 2180 DrawRectangleRounded(layout->send_button, 0.3f, 8, g_colors.primary); | 2181 DrawRectangleRounded(layout->send_button, 0.3f, 8, g_colors.primary); |
| 2181 Rectangle btn_text_rect = layout->send_button; | 2182 Rectangle btn_text_rect = layout->send_button; |
| 2182 const char *btn_text = "Send"; | 2183 char *btn_text = "Send"; |
| 2183 int text_width = MeasureText(btn_text, GuiGetStyle(DEFAULT, TEXT_SIZE)); | 2184 int text_width = MeasureText(btn_text, GuiGetStyle(DEFAULT, TEXT_SIZE)); |
| 2184 DrawTextEx(GuiGetFont(), | 2185 DrawTextEx(GuiGetFont(), |
| 2185 btn_text, | 2186 btn_text, |
| 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 }, | 2187 (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 }, |
| 2187 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE), g_colors.text_light); | 2188 GuiGetStyle(DEFAULT, TEXT_SIZE), TEXT_SIZE_DEFAULT/GuiGetStyle(DEFAULT, TEXT_SIZE), g_colors.text_light); |
| 2223 .width = 90, | 2224 .width = 90, |
| 2224 .height = 35 | 2225 .height = 35 |
| 2225 }; | 2226 }; |
| 2226 | 2227 |
| 2227 DrawRectangleRounded(ws_send_btn, 0.3f, 8, g_colors.highlight); | 2228 DrawRectangleRounded(ws_send_btn, 0.3f, 8, g_colors.highlight); |
| 2228 const char *ws_text = "Send"; | 2229 char *ws_text = !ws ? "Connect" : "Send"; |
| 2229 int ws_text_width = MeasureText(ws_text, GuiGetStyle(DEFAULT, TEXT_SIZE)); | 2230 int ws_text_width = MeasureText(ws_text, GuiGetStyle(DEFAULT, TEXT_SIZE)); |
| 2230 DrawTextEx(GuiGetFont(), | 2231 DrawTextEx(GuiGetFont(), |
| 2231 ws_text, | 2232 ws_text, |
| 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 }, | 2233 (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 }, |
| 2233 GuiGetStyle(DEFAULT, TEXT_SIZE), | 2234 GuiGetStyle(DEFAULT, TEXT_SIZE), |
| 2245 } | 2246 } |
| 2246 } | 2247 } |
| 2247 else | 2248 else |
| 2248 { | 2249 { |
| 2249 WS_BREAK = TRUE; | 2250 WS_BREAK = TRUE; |
| 2250 if (websocket_thread_id) | |
| 2251 PostDog_Websocket_Destroy(websocket_thread_id); | |
| 2252 } | 2251 } |
| 2253 | 2252 |
| 2254 // Result tabs | 2253 // Result tabs |
| 2255 const char *result_tab_labels[] = {"Body", "Headers"}; | 2254 const char *result_tab_labels[] = {"Body", "Headers"}; |
| 2256 int result_tab_count = 2; | 2255 int result_tab_count = 2; |
| 2272 int main() | 2271 int main() |
| 2273 { | 2272 { |
| 2274 // ======================================================================== | 2273 // ======================================================================== |
| 2275 // INITIALIZATION | 2274 // INITIALIZATION |
| 2276 // ======================================================================== | 2275 // ======================================================================== |
| 2276 SetConfigFlags(FLAG_WINDOW_UNDECORATED); | |
| 2277 | 2277 |
| 2278 // Initialize libuv | 2278 // Initialize libuv |
| 2279 main_loop = uv_default_loop(); | 2279 main_loop = uv_default_loop(); |
| 2280 uv_mutex_init(&history_mutex); | 2280 uv_mutex_init(&history_mutex); |
| 2281 | 2281 |
| 2288 SetTargetFPS(60); | 2288 SetTargetFPS(60); |
| 2289 | 2289 |
| 2290 // Load resources | 2290 // Load resources |
| 2291 Font customFont = LoadFontEx("postdog/Roboto-Regular.ttf", 20, 0, 0); | 2291 Font customFont = LoadFontEx("postdog/Roboto-Regular.ttf", 20, 0, 0); |
| 2292 GuiSetFont(customFont); | 2292 GuiSetFont(customFont); |
| 2293 GuiSetStyle(DEFAULT, TEXT_SIZE, 16); | 2293 GuiSetStyle(DEFAULT, TEXT_SIZE, TEXT_SIZE_DEFAULT); |
| 2294 | 2294 |
| 2295 Image logo_original = LoadImage("postdog/logo_bigger.png"); | 2295 Image logo_original = LoadImage("postdog/logo_bigger.png"); |
| 2296 ImageResize(&logo_original, 200, 200); | 2296 ImageResize(&logo_original, 200, 200); |
| 2297 SetWindowIcon(logo_original); | 2297 SetWindowIcon(logo_original); |
| 2298 Texture2D logo_texture = LoadTextureFromImage(logo_original); | 2298 Texture2D logo_texture = LoadTextureFromImage(logo_original); |
| 2317 Dowa_Array_Push(input_body_array, (char *)malloc(sizeof(char) * DEFAULT_TEXT_BUFFER_LENGTH)); | 2317 Dowa_Array_Push(input_body_array, (char *)malloc(sizeof(char) * DEFAULT_TEXT_BUFFER_LENGTH)); |
| 2318 | 2318 |
| 2319 snprintf(input_body_array[TAB_HEADER], HEADER_BUFFER_LENGTH, HEADER_TEXT_DEFAULT); | 2319 snprintf(input_body_array[TAB_HEADER], HEADER_BUFFER_LENGTH, HEADER_TEXT_DEFAULT); |
| 2320 snprintf(input_body_array[TAB_BODY], BODY_BUFFER_LENGTH, BODY_TEXT_DEFAULT); | 2320 snprintf(input_body_array[TAB_BODY], BODY_BUFFER_LENGTH, BODY_TEXT_DEFAULT); |
| 2321 snprintf(input_body_array[TAB_GET_PARAMS], DEFAULT_TEXT_BUFFER_LENGTH, GET_PARAM_TEXT_DEFAULT); | 2321 snprintf(input_body_array[TAB_GET_PARAMS], DEFAULT_TEXT_BUFFER_LENGTH, GET_PARAM_TEXT_DEFAULT); |
| 2322 snprintf(input_body_array[TAB_WEBSOCKET], DEFAULT_TEXT_BUFFER_LENGTH, GET_PARAM_TEXT_DEFAULT); | |
| 2322 | 2323 |
| 2323 // Initialize result buffers (body and headers tabs) | 2324 // Initialize result buffers (body and headers tabs) |
| 2324 Dowa_Array_Push(result_body_array, (char *)malloc(sizeof(char) * RESULT_BUFFER_LENGTH)); | 2325 Dowa_Array_Push(result_body_array, (char *)malloc(sizeof(char) * RESULT_BUFFER_LENGTH)); |
| 2325 Dowa_Array_Push(result_body_array, (char *)malloc(sizeof(char) * RESULT_BUFFER_LENGTH)); | 2326 Dowa_Array_Push(result_body_array, (char *)malloc(sizeof(char) * RESULT_BUFFER_LENGTH)); |
| 2326 result_body_array[RESULT_TAB_BODY][0] = '\0'; | 2327 result_body_array[RESULT_TAB_BODY][0] = '\0'; |
| 2389 FALSE, TRUE, TRUE, FALSE); | 2390 FALSE, TRUE, TRUE, FALSE); |
| 2390 DrawSidebar(&layout, logo_texture, padding); | 2391 DrawSidebar(&layout, logo_texture, padding); |
| 2391 DrawHistoryList(&layout, mouse_pos, padding, ui_state.history_scroll_offset); | 2392 DrawHistoryList(&layout, mouse_pos, padding, ui_state.history_scroll_offset); |
| 2392 DrawBodyPanels(&layout, &ui_state, padding); | 2393 DrawBodyPanels(&layout, &ui_state, padding); |
| 2393 DrawURLBar(&layout, &ui_state, padding); | 2394 DrawURLBar(&layout, &ui_state, padding); |
| 2394 | |
| 2395 EndDrawing(); | 2395 EndDrawing(); |
| 2396 } | 2396 } |
| 2397 | 2397 |
| 2398 // ======================================================================== | 2398 // ======================================================================== |
| 2399 // CLEANUP | 2399 // CLEANUP |