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