diff options
author | NunoSempere <nuno.semperelh@protonmail.com> | 2024-03-23 17:48:42 -0300 |
---|---|---|
committer | NunoSempere <nuno.semperelh@protonmail.com> | 2024-03-23 17:48:42 -0300 |
commit | 5097a1982bb7687b778255c9321407642320d24a (patch) | |
tree | 23a771f3c613753a594509fe74851eae7b38e61a | |
parent | 978c7ca1ccda4fc1138c607b2ffaa9fede60bf08 (diff) |
formatting & tweaks pass
-rw-r--r-- | makefile | 2 | ||||
-rw-r--r-- | plugins/libre_redirect/libre_redirect.c | 22 | ||||
-rw-r--r-- | plugins/readability/readability.h | 5 | ||||
-rw-r--r-- | plugins/strings/strings.h | 2 | ||||
-rw-r--r-- | plugins/style/style.h | 5 | ||||
-rw-r--r-- | rosenrot.c | 323 |
6 files changed, 165 insertions, 194 deletions
@@ -19,7 +19,7 @@ include plugins/plugins.mk # PLUGINS=./plugins/stand_in/stand_in.c ## Formatter -STYLE_BLUEPRINT="{BasedOnStyle: webkit, AllowShortIfStatementsOnASingleLine: true}" +STYLE_BLUEPRINT="{BasedOnStyle: webkit, AllowShortIfStatementsOnASingleLine: true, IndentCaseLabels: true}" FORMATTER=clang-format -i -style=$(STYLE_BLUEPRINT) # Runtime files diff --git a/plugins/libre_redirect/libre_redirect.c b/plugins/libre_redirect/libre_redirect.c index e6ec5fc..a4fabdf 100644 --- a/plugins/libre_redirect/libre_redirect.c +++ b/plugins/libre_redirect/libre_redirect.c @@ -49,17 +49,17 @@ int libre_redirect(const char* uri, char* output) int replace_check = str_replace_start(uri, annoying_sites[i], alternatives[i], output); switch (replace_check) { - case 0: // no match found - break; - case 1: // str_replace_start somehow failed - printf("str_replace_start failed\n"); - return 1; - break; - case 2: // match succeeded - return 2; - break; - default: - printf("Unreachable state"); + case 0: // no match found + break; + case 1: // str_replace_start somehow failed + printf("str_replace_start failed\n"); + return 1; + break; + case 2: // match succeeded + return 2; + break; + default: + printf("Unreachable state"); } } strcpy(output, uri); diff --git a/plugins/readability/readability.h b/plugins/readability/readability.h index 90d8ba0..9dab8c1 100644 --- a/plugins/readability/readability.h +++ b/plugins/readability/readability.h @@ -1,8 +1,5 @@ -#ifndef READABILITY -#define READABILITY +#pragma once #define READABILITY_N 88067 + 1000 void read_readability_js(char* string); - -#endif diff --git a/plugins/strings/strings.h b/plugins/strings/strings.h index df08c75..02054d5 100644 --- a/plugins/strings/strings.h +++ b/plugins/strings/strings.h @@ -1,2 +1,4 @@ +#pragma once + void str_init(char* str, int n); int str_replace_start(const char* string, const char* target, const char* replacement, char* output); diff --git a/plugins/style/style.h b/plugins/style/style.h index 1faab7a..42fe798 100644 --- a/plugins/style/style.h +++ b/plugins/style/style.h @@ -1,8 +1,5 @@ -#ifndef STYLE -#define STYLE +#pragma once #define STYLE_N 7624 + 1000 void read_style_js(char* string); - -#endif @@ -41,7 +41,6 @@ void load_uri(WebKitWebView* view, const char* uri) char tmp[strlen("https://") + strlen(uri)]; snprintf(tmp, sizeof(tmp), "https://%s", uri); webkit_web_view_load_uri(view, tmp); - } else { // Check for shortcuts int l = SHORTCUT_N + strlen(uri) + 1; @@ -68,10 +67,7 @@ void redirect_if_annoying(WebKitWebView* view, const char* uri) str_init(uri_filtered, l); int check = libre_redirect(uri, uri_filtered); - - if (check == 2) { - webkit_web_view_load_uri(view, uri_filtered); - } + if (check == 2) webkit_web_view_load_uri(view, uri_filtered); } } void set_custom_style(WebKitWebView* view) @@ -87,38 +83,33 @@ void handle_signal_load_changed(WebKitWebView* self, WebKitLoadEvent load_event, GtkNotebook* notebook) { switch (load_event) { - /* see <https://webkitgtk.org/reference/webkit2gtk/2.5.1/WebKitWebView.html> - */ - case WEBKIT_LOAD_STARTED: - set_custom_style(self); - redirect_if_annoying(self, webkit_web_view_get_uri(self)); - break; - case WEBKIT_LOAD_REDIRECTED: - redirect_if_annoying(self, webkit_web_view_get_uri(self)); - break; - case WEBKIT_LOAD_COMMITTED: - redirect_if_annoying(self, webkit_web_view_get_uri(self)); - set_custom_style(self); - break; - case WEBKIT_LOAD_FINISHED: { - /* Add gtk tab title */ - const char* webpage_title = webkit_web_view_get_title(self); - const int max_length = 25; - char tab_title[max_length + 1]; - if (webpage_title != NULL) { - for (int i = 0; i < (max_length); i++) { - tab_title[i] = webpage_title[i]; - if (webpage_title[i] == '\0') { - break; + /* see <https://webkitgtk.org/reference/webkit2gtk/2.5.1/WebKitWebView.html> + */ + case WEBKIT_LOAD_STARTED: + case WEBKIT_LOAD_COMMITTED: + set_custom_style(self); + case WEBKIT_LOAD_REDIRECTED: + redirect_if_annoying(self, webkit_web_view_get_uri(self)); + break; + case WEBKIT_LOAD_FINISHED: { + /* Add gtk tab title */ + const char* webpage_title = webkit_web_view_get_title(self); + const int max_length = 25; + char tab_title[max_length + 1]; + if (webpage_title != NULL) { + for (int i = 0; i < (max_length); i++) { + tab_title[i] = webpage_title[i]; + if (webpage_title[i] == '\0') { + break; + } } + tab_title[max_length] = '\0'; } - tab_title[max_length] = '\0'; - } - gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(self), - webpage_title == NULL ? "—" : tab_title); - // gtk_widget_hide(GTK_WIDGET(bar)); - } + gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(self), + webpage_title == NULL ? "—" : tab_title); + // gtk_widget_hide(GTK_WIDGET(bar)); + } } } @@ -137,11 +128,10 @@ GtkWidget* handle_signal_create_new_tab(WebKitWebView* self, printf("Creating new window: %s\n", uri); notebook_create_new_tab(notebook, uri); gtk_notebook_set_show_tabs(notebook, true); - return NULL; } else { webkit_web_view_evaluate_javascript(self, "alert('Too many tabs, not opening a new one')", -1, NULL, "rosenrot-alert-numtabs", NULL, NULL, NULL); - return NULL; } + return NULL; /* WebKitGTK documentation recommends returning the new webview. I imagine that this might allow e.g., to go back in a new tab @@ -171,25 +161,20 @@ WebKitWebView* create_new_webview() contentmanager = webkit_user_content_manager_new(); cookiemanager = webkit_web_context_get_cookie_manager(web_context); - webkit_cookie_manager_set_persistent_storage( - cookiemanager, DATA_DIR "/cookies.sqlite", - WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE); + webkit_cookie_manager_set_persistent_storage(cookiemanager, DATA_DIR "/cookies.sqlite", WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE); - webkit_cookie_manager_set_accept_policy(cookiemanager, - WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS); + webkit_cookie_manager_set_accept_policy(cookiemanager, WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS); - if (g_file_get_contents("~/.config/rose/style.css", &style, NULL, NULL)) + if (g_file_get_contents("~/.config/rose/style.css", &style, NULL, NULL)) { webkit_user_content_manager_add_style_sheet( contentmanager, webkit_user_style_sheet_new(style, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, NULL, NULL)); + } - return g_object_new(WEBKIT_TYPE_WEB_VIEW, "settings", settings, "web-context", - web_context, "user-content-manager", contentmanager, - NULL); + return g_object_new(WEBKIT_TYPE_WEB_VIEW, "settings", settings, "web-context", web_context, "user-content-manager", contentmanager, NULL); } void notebook_create_new_tab(GtkNotebook* notebook, const char* uri) { if (num_tabs < MAX_NUM_TABS || MAX_NUM_TABS == 0) { - WebKitWebView* view = create_new_webview(); g_signal_connect(view, "load_changed", G_CALLBACK(handle_signal_load_changed), notebook); @@ -208,7 +193,6 @@ void notebook_create_new_tab(GtkNotebook* notebook, const char* uri) webkit_web_view_set_zoom_level(view, ZOOM); num_tabs += 1; } else { - webkit_web_view_evaluate_javascript(notebook_get_webview(notebook), "alert('Too many tabs, not opening a new one')", -1, NULL, "rosenrot-alert-numtabs", NULL, NULL, NULL); } } @@ -217,31 +201,30 @@ void notebook_create_new_tab(GtkNotebook* notebook, const char* uri) void toggle_bar(GtkNotebook* notebook) { switch (bar.entry_mode) { - case _SEARCH: { - const char* url = webkit_web_view_get_uri(notebook_get_webview(notebook)); - gtk_entry_set_placeholder_text(bar.line, "Search"); - gtk_entry_buffer_set_text(bar.line_text, url, strlen(url)); - gtk_widget_show(GTK_WIDGET(bar.widget)); - gtk_window_set_focus(window, GTK_WIDGET(bar.line)); - break; - } - case _FIND: { - const char* search_text = webkit_find_controller_get_search_text( - webkit_web_view_get_find_controller(notebook_get_webview(notebook))); + case _SEARCH: { + const char* url = webkit_web_view_get_uri(notebook_get_webview(notebook)); + gtk_entry_set_placeholder_text(bar.line, "Search"); + gtk_entry_buffer_set_text(bar.line_text, url, strlen(url)); + gtk_widget_show(GTK_WIDGET(bar.widget)); + gtk_window_set_focus(window, GTK_WIDGET(bar.line)); + break; + } + case _FIND: { + const char* search_text = webkit_find_controller_get_search_text( + webkit_web_view_get_find_controller(notebook_get_webview(notebook))); - if (search_text != NULL) - gtk_entry_buffer_set_text(bar.line_text, search_text, strlen(search_text)); + if (search_text != NULL) + gtk_entry_buffer_set_text(bar.line_text, search_text, strlen(search_text)); - gtk_entry_set_placeholder_text(bar.line, "Find"); - gtk_widget_show(GTK_WIDGET(bar.widget)); - gtk_window_set_focus(window, GTK_WIDGET(bar.line)); - break; - } - default: - // fallthrough - case _HIDDEN: - gtk_widget_hide(GTK_WIDGET(bar.widget)); - break; // not needed now, but might reorder + gtk_entry_set_placeholder_text(bar.line, "Find"); + gtk_widget_show(GTK_WIDGET(bar.widget)); + gtk_window_set_focus(window, GTK_WIDGET(bar.line)); + break; + } + default: + // fallthrough + case _HIDDEN: + gtk_widget_hide(GTK_WIDGET(bar.widget)); } } // Handle what happens when the user is on the bar and presses enter @@ -270,119 +253,113 @@ int handle_shortcut(func id, GtkNotebook* notebook) WebKitWebView* view = notebook_get_webview(notebook); switch (id) { - case goback: - webkit_web_view_go_back(view); - break; - case goforward: - webkit_web_view_go_forward(view); - break; - - case refresh: - webkit_web_view_reload(view); - break; - case refresh_force: - webkit_web_view_reload_bypass_cache(view); - break; - - case back_to_home: - load_uri(view, HOME); - break; - - case zoomin: - webkit_web_view_set_zoom_level(view, - (zoom += ZOOM_VAL)); - break; - - case zoomout: - webkit_web_view_set_zoom_level(view, - (zoom -= ZOOM_VAL)); - break; - - case zoom_reset: - webkit_web_view_set_zoom_level(view, - (zoom = ZOOM)); - break; - - case prev_tab:; // declarations aren't statements - // <https://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a-switch-statement> - int n = gtk_notebook_get_n_pages(notebook); - int k = gtk_notebook_get_current_page(notebook); - int l = (n + k - 1) % n; - gtk_notebook_set_current_page(notebook, l); - break; - - case next_tab:; - int m = gtk_notebook_get_n_pages(notebook); - int i = gtk_notebook_get_current_page(notebook); - int j = (i + 1) % m; - gtk_notebook_set_current_page(notebook, j); - break; - - case close_tab: - gtk_notebook_remove_page(notebook, gtk_notebook_get_current_page(notebook)); - num_tabs -= 1; - - switch (gtk_notebook_get_n_pages(notebook)) { - case 0: - exit(0); + case goback: + webkit_web_view_go_back(view); break; - case 1: - gtk_notebook_set_show_tabs(notebook, false); + case goforward: + webkit_web_view_go_forward(view); break; - } - break; + case refresh: + webkit_web_view_reload(view); + break; + case refresh_force: + webkit_web_view_reload_bypass_cache(view); + break; - case toggle_fullscreen: - if (is_fullscreen) - gtk_window_unfullscreen(window); - else - gtk_window_fullscreen(window); + case back_to_home: + load_uri(view, HOME); + break; - is_fullscreen = !is_fullscreen; - break; + case zoomin: + webkit_web_view_set_zoom_level(view, + (zoom += ZOOM_VAL)); + break; + case zoomout: + webkit_web_view_set_zoom_level(view, + (zoom -= ZOOM_VAL)); + break; + case zoom_reset: + webkit_web_view_set_zoom_level(view, + (zoom = ZOOM)); + break; - case show_searchbar: - bar.entry_mode = _SEARCH; - toggle_bar(notebook); - break; + case prev_tab:; // declarations aren't statements + // <https://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a-switch-statement> + int n = gtk_notebook_get_n_pages(notebook); + int k = gtk_notebook_get_current_page(notebook); + int l = (n + k - 1) % n; + gtk_notebook_set_current_page(notebook, l); + break; + case next_tab:; + int m = gtk_notebook_get_n_pages(notebook); + int i = gtk_notebook_get_current_page(notebook); + int j = (i + 1) % m; + gtk_notebook_set_current_page(notebook, j); + break; + case close_tab: + gtk_notebook_remove_page(notebook, gtk_notebook_get_current_page(notebook)); + num_tabs -= 1; - case show_finder: - bar.entry_mode = _FIND; - toggle_bar(notebook); - break; + switch (gtk_notebook_get_n_pages(notebook)) { + case 0: + exit(0); + break; + case 1: + gtk_notebook_set_show_tabs(notebook, false); + break; + } - case finder_next: - webkit_find_controller_search_next( - webkit_web_view_get_find_controller(view)); - break; + break; - case finder_prev: - webkit_find_controller_search_previous( - webkit_web_view_get_find_controller(view)); - break; + case toggle_fullscreen: + if (is_fullscreen) + gtk_window_unfullscreen(window); + else + gtk_window_fullscreen(window); - case new_tab: - notebook_create_new_tab(notebook, NULL); - gtk_notebook_set_show_tabs(notebook, true); - bar.entry_mode = _SEARCH; - toggle_bar(notebook); - break; + is_fullscreen = !is_fullscreen; + break; - case hide_bar: - bar.entry_mode = _HIDDEN; - toggle_bar(notebook); - break; - - case prettify: { - if (READABILITY_ENABLED) { - char* readability_js = malloc(READABILITY_N + 1); - read_readability_js(readability_js); - webkit_web_view_evaluate_javascript(view, readability_js, -1, NULL, "rosenrot-readability-plugin", NULL, NULL, NULL); - free(readability_js); + case show_searchbar: + bar.entry_mode = _SEARCH; + toggle_bar(notebook); + break; + case show_finder: + bar.entry_mode = _FIND; + toggle_bar(notebook); + break; + + case finder_next: + webkit_find_controller_search_next( + webkit_web_view_get_find_controller(view)); + break; + case finder_prev: + webkit_find_controller_search_previous( + webkit_web_view_get_find_controller(view)); + break; + + case new_tab: + notebook_create_new_tab(notebook, NULL); + gtk_notebook_set_show_tabs(notebook, true); + bar.entry_mode = _SEARCH; + toggle_bar(notebook); + break; + + case hide_bar: + bar.entry_mode = _HIDDEN; + toggle_bar(notebook); + break; + + case prettify: { + if (READABILITY_ENABLED) { + char* readability_js = malloc(READABILITY_N + 1); + read_readability_js(readability_js); + webkit_web_view_evaluate_javascript(view, readability_js, -1, NULL, "rosenrot-readability-plugin", NULL, NULL, NULL); + free(readability_js); + } + break; } - break; - } } return 1; @@ -462,9 +439,7 @@ int main(int argc, char** argv) /* Show to user */ gtk_widget_show_all(GTK_WIDGET(window)); - if (argc != 0) { - gtk_widget_hide(GTK_WIDGET(bar.widget)); - } + if (argc != 0) gtk_widget_hide(GTK_WIDGET(bar.widget)); /* Deal with more tabs */ if (argc > 2) { |