From 1cf68bb1fe2ebabb470dc072f300fbf7d3f7d5fa Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sat, 17 Jun 2023 00:19:29 -0600 Subject: custom alert first pass, with GPT-4 help --- config.h | 2 +- plugins/style/style.c | 2 +- plugins/style/style.h | 2 +- plugins/style/style.js | 63 ++++++++++++++++++++++++++++++++++++++++++++++++- rose | Bin 47896 -> 47896 bytes rose.c | 10 ++++++++ 6 files changed, 75 insertions(+), 4 deletions(-) diff --git a/config.h b/config.h index cfaefc1..05fad90 100644 --- a/config.h +++ b/config.h @@ -21,7 +21,7 @@ #define ZOOM_VAL .1 /* Zooming value in zoomin/zoomout functions */ #define BG_COLOR "#FEFEFE" /* "FEFEFE", "#1E1E2E" */ #define DEBUG false -#define MAX_NUM_TABS 10 // set to 0 or false if you want unlimited tabs, or look at the relevant rose.c code. +#define MAX_NUM_TABS 8 // set to 0 or false if you want unlimited tabs, or look at the relevant rose.c code. typedef enum { goback, diff --git a/plugins/style/style.c b/plugins/style/style.c index a89bd6e..34f7f35 100644 --- a/plugins/style/style.c +++ b/plugins/style/style.c @@ -1,7 +1,7 @@ #include #include #include -#define STYLE_N 1781 + 1 +#define STYLE_N 3640 + 1 void read_style_js(char* string) { diff --git a/plugins/style/style.h b/plugins/style/style.h index 1fe1a37..75dd3ee 100644 --- a/plugins/style/style.h +++ b/plugins/style/style.h @@ -1,7 +1,7 @@ #ifndef STYLE #define STYLE -#define STYLE_N 1781 + 1 +#define STYLE_N 3640 + 1 void read_style_js(char* string); diff --git a/plugins/style/style.js b/plugins/style/style.js index ed62991..cc98fa9 100644 --- a/plugins/style/style.js +++ b/plugins/style/style.js @@ -70,5 +70,66 @@ if(styles != null){ console.log('Style changed') } -document.body.style.visibility = "visible" +// Replace default alert with new function +// whose style can be changed! +window.alert = function(message) { + // Check if the alert dialog already exists + var alertDiv = document.getElementById('customAlert'); + if (!alertDiv) { + // Create the alert dialog + alertDiv = document.createElement('div'); + alertDiv.id = 'customAlert'; + alertDiv.className = 'custom-alert hidden'; + + var contentDiv = document.createElement('div'); + contentDiv.className = 'custom-alert-content'; + + var alertMessage = document.createElement('p'); + alertMessage.id = 'alertMessage'; + + var okButton = document.createElement('button'); + okButton.id = 'alertOkButton'; + okButton.textContent = 'OK'; + okButton.onclick = function() { + alertDiv.classList.add('hidden'); + }; + + contentDiv.appendChild(alertMessage); + contentDiv.appendChild(okButton); + alertDiv.appendChild(contentDiv); + document.body.appendChild(alertDiv); + + // Inject CSS + var style = document.createElement('style'); + style.innerHTML = ` + .custom-alert { + position: fixed; + z-index: 999; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgba(0,0,0,0.4); + } + .custom-alert-content { + background-color: #fefefe; + margin: 15% auto; + padding: 20px; + border: 1px solid #888; + width: 80%; + } + .hidden { + display: none; + }`; + document.head.appendChild(style); + } + + // Show the alert dialog + document.getElementById('alertMessage').textContent = message; + alertDiv.classList.remove('hidden'); +} + +// alert("Hello world!") +document.body.style.visibility = "visible" diff --git a/rose b/rose index 8a271d3..4649d3d 100755 Binary files a/rose and b/rose differ diff --git a/rose.c b/rose.c index 8d7ce42..f764f6c 100644 --- a/rose.c +++ b/rose.c @@ -235,6 +235,15 @@ void notebook_append(GtkNotebook* notebook, const char* uri) gtk_widget_hide(GTK_WIDGET(bar)); webkit_web_view_set_background_color(view, &rgba); load_uri(view, (uri) ? uri : HOME); + + if (CUSTOM_STYLE_ENABLED) { + char* style_js = malloc(STYLE_N + 1); + read_style_js(style_js); + webkit_web_view_run_javascript(notebook_get_webview(notebook), style_js, + NULL, NULL, NULL); + free(style_js); + } + gtk_notebook_set_current_page(notebook, n); gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(view), "-"); webkit_web_view_set_zoom_level(view, ZOOM); @@ -329,6 +338,7 @@ int handle_key(func id, GtkNotebook* notebook) 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: -- cgit v1.2.3