alerts v2, formatting
This commit is contained in:
parent
1cf68bb1fe
commit
98f6d5630f
|
@ -32,7 +32,7 @@ int libre_redirect(const char* uri, char* output)
|
||||||
char* annoying_sites[] = {
|
char* annoying_sites[] = {
|
||||||
"https://www.reddit.com",
|
"https://www.reddit.com",
|
||||||
"https://www.youtube.com",
|
"https://www.youtube.com",
|
||||||
"https://google.com"
|
"https://google.com"
|
||||||
"https://medium.com",
|
"https://medium.com",
|
||||||
"https://translate.google.com",
|
"https://translate.google.com",
|
||||||
"https://www.bloomberg.com",
|
"https://www.bloomberg.com",
|
||||||
|
@ -43,7 +43,7 @@ int libre_redirect(const char* uri, char* output)
|
||||||
char* alternatives[] = {
|
char* alternatives[] = {
|
||||||
"https://teddit.nunosempere.com",
|
"https://teddit.nunosempere.com",
|
||||||
"https://yt.artemislena.eu",
|
"https://yt.artemislena.eu",
|
||||||
"https://search.nunosempere.com"
|
"https://search.nunosempere.com"
|
||||||
"https://scribe.rip",
|
"https://scribe.rip",
|
||||||
"https://translate.riverside.rocks/",
|
"https://translate.riverside.rocks/",
|
||||||
"https://archive.is/https://www.bloomberg.com",
|
"https://archive.is/https://www.bloomberg.com",
|
||||||
|
|
|
@ -4,4 +4,3 @@ void str_init(char* str, int n)
|
||||||
str[i] = ' ';
|
str[i] = ' ';
|
||||||
str[n] = '\0';
|
str[n] = '\0';
|
||||||
} // could also use <https://manpages.ubuntu.com/manpages/impish/man3/strinit.3pub.html>
|
} // could also use <https://manpages.ubuntu.com/manpages/impish/man3/strinit.3pub.html>
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "../libre_redirect/str_replace_start.h"
|
|
||||||
#include "../libre_redirect/str_init.h"
|
#include "../libre_redirect/str_init.h"
|
||||||
|
#include "../libre_redirect/str_replace_start.h"
|
||||||
|
|
||||||
#define SHORTCUT_N 41
|
#define SHORTCUT_N 41
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ int shortcut_expand(const char* uri, char* output)
|
||||||
char* shortcuts[] = {
|
char* shortcuts[] = {
|
||||||
"!fnf",
|
"!fnf",
|
||||||
"!fnc",
|
"!fnc",
|
||||||
"!hn",
|
"!hn",
|
||||||
"!hnb"
|
"!hnb"
|
||||||
};
|
};
|
||||||
|
|
||||||
char* expansions[] = {
|
char* expansions[] = {
|
||||||
|
@ -45,7 +45,7 @@ int shortcut_expand(const char* uri, char* output)
|
||||||
};
|
};
|
||||||
|
|
||||||
// len = sizeof(shortcuts) / sizeof(shortcuts[0]);
|
// len = sizeof(shortcuts) / sizeof(shortcuts[0]);
|
||||||
len = sizeof(shortcuts) / sizeof(char *);
|
len = sizeof(shortcuts) / sizeof(char*);
|
||||||
|
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
int replace_check = str_replace_start(tmp_uri, shortcuts[i],
|
int replace_check = str_replace_start(tmp_uri, shortcuts[i],
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#define STYLE_N 3640 + 1
|
#define STYLE_N 3858 + 1
|
||||||
|
|
||||||
void read_style_js(char* string)
|
void read_style_js(char* string)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef STYLE
|
#ifndef STYLE
|
||||||
#define STYLE
|
#define STYLE
|
||||||
|
|
||||||
#define STYLE_N 3640 + 1
|
#define STYLE_N 3858 + 1
|
||||||
|
|
||||||
void read_style_js(char* string);
|
void read_style_js(char* string);
|
||||||
|
|
||||||
|
|
|
@ -73,63 +73,61 @@ if(styles != null){
|
||||||
|
|
||||||
// Replace default alert with new function
|
// Replace default alert with new function
|
||||||
// whose style can be changed!
|
// whose style can be changed!
|
||||||
window.alert = function(message) {
|
window.alert = (message) => {
|
||||||
// Check if the alert dialog already exists
|
let alertDiv = document.getElementById('customAlert');
|
||||||
var alertDiv = document.getElementById('customAlert');
|
|
||||||
if (!alertDiv) {
|
if (!alertDiv) {
|
||||||
// Create the alert dialog
|
const html = `
|
||||||
alertDiv = document.createElement('div');
|
<div id="customAlert" class="custom-alert">
|
||||||
alertDiv.id = 'customAlert';
|
<div class="custom-alert-content">
|
||||||
alertDiv.className = 'custom-alert hidden';
|
<p id="alertMessage"></p>
|
||||||
|
<button id="alertOkButton">OK</button>
|
||||||
var contentDiv = document.createElement('div');
|
</div>
|
||||||
contentDiv.className = 'custom-alert-content';
|
</div>
|
||||||
|
<style>
|
||||||
var alertMessage = document.createElement('p');
|
.custom-alert {
|
||||||
alertMessage.id = 'alertMessage';
|
display: none;
|
||||||
|
position: fixed;
|
||||||
var okButton = document.createElement('button');
|
z-index: 999;
|
||||||
okButton.id = 'alertOkButton';
|
left: 0;
|
||||||
okButton.textContent = 'OK';
|
top: 0;
|
||||||
okButton.onclick = function() {
|
width: 100%;
|
||||||
alertDiv.classList.add('hidden');
|
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%;
|
||||||
|
font-family: monospace; /* Use monospace font */
|
||||||
|
}
|
||||||
|
.visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
`;
|
||||||
|
document.body.insertAdjacentHTML('beforeend', html);
|
||||||
|
alertDiv = document.getElementById('customAlert');
|
||||||
|
document.getElementById('alertOkButton').onclick = () => {
|
||||||
|
alertDiv.classList.remove('visible');
|
||||||
|
document.removeEventListener('keydown', dismissAlert);
|
||||||
};
|
};
|
||||||
|
|
||||||
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
|
const dismissAlert = (event) => {
|
||||||
|
if (event.key === 'Enter' /*&& event.ctrlKey*/ && alertDiv.classList.contains('visible')) {
|
||||||
|
alertDiv.classList.remove('visible');
|
||||||
|
document.removeEventListener('keydown', dismissAlert);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('keydown', dismissAlert);
|
||||||
document.getElementById('alertMessage').textContent = message;
|
document.getElementById('alertMessage').textContent = message;
|
||||||
alertDiv.classList.remove('hidden');
|
alertDiv.classList.add('visible');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// alert("Hello world!")
|
// alert("Hello world!")
|
||||||
document.body.style.visibility = "visible"
|
document.body.style.visibility = "visible"
|
||||||
|
|
113
rose.c
113
rose.c
|
@ -98,20 +98,19 @@ void load_uri(WebKitWebView* view, const char* uri)
|
||||||
if (g_str_has_prefix(uri, "http://") || g_str_has_prefix(uri, "https://") || g_str_has_prefix(uri, "file://") || g_str_has_prefix(uri, "about:")) {
|
if (g_str_has_prefix(uri, "http://") || g_str_has_prefix(uri, "https://") || g_str_has_prefix(uri, "file://") || g_str_has_prefix(uri, "about:")) {
|
||||||
webkit_web_view_load_uri(view, uri);
|
webkit_web_view_load_uri(view, uri);
|
||||||
} else {
|
} else {
|
||||||
// Check for shortcuts
|
// Check for shortcuts
|
||||||
int l = SHORTCUT_N + strlen(uri) + 1;
|
int l = SHORTCUT_N + strlen(uri) + 1;
|
||||||
char uri_expanded[l];
|
char uri_expanded[l];
|
||||||
str_init(uri_expanded, l);
|
str_init(uri_expanded, l);
|
||||||
int check = shortcut_expand(uri, uri_expanded);
|
int check = shortcut_expand(uri, uri_expanded);
|
||||||
if (check == 2) {
|
if (check == 2) {
|
||||||
webkit_web_view_load_uri(view, uri_expanded);
|
webkit_web_view_load_uri(view, uri_expanded);
|
||||||
} else {
|
} else {
|
||||||
// Feed into search engine.
|
// Feed into search engine.
|
||||||
char tmp[strlen(uri) + strlen(SEARCH)];
|
char tmp[strlen(uri) + strlen(SEARCH)];
|
||||||
snprintf(tmp, sizeof(tmp), SEARCH, uri);
|
snprintf(tmp, sizeof(tmp), SEARCH, uri);
|
||||||
webkit_web_view_load_uri(view, tmp);
|
webkit_web_view_load_uri(view, tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,18 +193,18 @@ void notebook_append(GtkNotebook* notebook, const char* uri);
|
||||||
GtkWidget* handle_create_new_tab(WebKitWebView* self,
|
GtkWidget* handle_create_new_tab(WebKitWebView* self,
|
||||||
WebKitNavigationAction* navigation_action,
|
WebKitNavigationAction* navigation_action,
|
||||||
GtkNotebook* notebook)
|
GtkNotebook* notebook)
|
||||||
{
|
{
|
||||||
if(NUM_TABS < MAX_NUM_TABS || NUM_TABS == 0){
|
if (NUM_TABS < MAX_NUM_TABS || NUM_TABS == 0) {
|
||||||
WebKitURIRequest* uri_request = webkit_navigation_action_get_request(navigation_action);
|
WebKitURIRequest* uri_request = webkit_navigation_action_get_request(navigation_action);
|
||||||
const char* uri = webkit_uri_request_get_uri(uri_request);
|
const char* uri = webkit_uri_request_get_uri(uri_request);
|
||||||
printf("Creating new window: %s\n", uri);
|
printf("Creating new window: %s\n", uri);
|
||||||
notebook_append(notebook, uri);
|
notebook_append(notebook, uri);
|
||||||
gtk_notebook_set_show_tabs(notebook, true);
|
gtk_notebook_set_show_tabs(notebook, true);
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
webkit_web_view_run_javascript(notebook_get_webview(notebook),
|
webkit_web_view_run_javascript(notebook_get_webview(notebook),
|
||||||
"alert('Too many tabs, not opening a new one')", NULL, NULL, NULL);
|
"alert('Too many tabs, not opening a new one')", NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
/* WebKitGTK documentation recommends returning the new webview.
|
/* WebKitGTK documentation recommends returning the new webview.
|
||||||
* I imagine that this might allow e.g., to go back in a new tab
|
* I imagine that this might allow e.g., to go back in a new tab
|
||||||
* or generally to keep track of history.
|
* or generally to keep track of history.
|
||||||
|
@ -216,42 +215,42 @@ GtkWidget* handle_create_new_tab(WebKitWebView* self,
|
||||||
|
|
||||||
void notebook_append(GtkNotebook* notebook, const char* uri)
|
void notebook_append(GtkNotebook* notebook, const char* uri)
|
||||||
{
|
{
|
||||||
if(NUM_TABS < MAX_NUM_TABS || NUM_TABS == 0){
|
if (NUM_TABS < MAX_NUM_TABS || NUM_TABS == 0) {
|
||||||
GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(window));
|
GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(window));
|
||||||
GdkVisual* rgba_visual = gdk_screen_get_rgba_visual(screen);
|
GdkVisual* rgba_visual = gdk_screen_get_rgba_visual(screen);
|
||||||
GdkRGBA rgba;
|
GdkRGBA rgba;
|
||||||
|
|
||||||
gdk_rgba_parse(&rgba, BG_COLOR);
|
gdk_rgba_parse(&rgba, BG_COLOR);
|
||||||
|
|
||||||
WebKitWebView* view = webview_new();
|
WebKitWebView* view = webview_new();
|
||||||
|
|
||||||
gtk_widget_set_visual(GTK_WIDGET(window), rgba_visual);
|
gtk_widget_set_visual(GTK_WIDGET(window), rgba_visual);
|
||||||
g_signal_connect(view, "load_changed", G_CALLBACK(load_changed), notebook);
|
g_signal_connect(view, "load_changed", G_CALLBACK(load_changed), notebook);
|
||||||
g_signal_connect(view, "create", G_CALLBACK(handle_create_new_tab), notebook);
|
g_signal_connect(view, "create", G_CALLBACK(handle_create_new_tab), notebook);
|
||||||
|
|
||||||
int n = gtk_notebook_append_page(notebook, GTK_WIDGET(view), NULL);
|
int n = gtk_notebook_append_page(notebook, GTK_WIDGET(view), NULL);
|
||||||
gtk_notebook_set_tab_reorderable(notebook, GTK_WIDGET(view), true);
|
gtk_notebook_set_tab_reorderable(notebook, GTK_WIDGET(view), true);
|
||||||
gtk_widget_show_all(GTK_WIDGET(window));
|
gtk_widget_show_all(GTK_WIDGET(window));
|
||||||
gtk_widget_hide(GTK_WIDGET(bar));
|
gtk_widget_hide(GTK_WIDGET(bar));
|
||||||
webkit_web_view_set_background_color(view, &rgba);
|
webkit_web_view_set_background_color(view, &rgba);
|
||||||
load_uri(view, (uri) ? uri : HOME);
|
load_uri(view, (uri) ? uri : HOME);
|
||||||
|
|
||||||
if (CUSTOM_STYLE_ENABLED) {
|
if (CUSTOM_STYLE_ENABLED) {
|
||||||
char* style_js = malloc(STYLE_N + 1);
|
char* style_js = malloc(STYLE_N + 1);
|
||||||
read_style_js(style_js);
|
read_style_js(style_js);
|
||||||
webkit_web_view_run_javascript(notebook_get_webview(notebook), style_js,
|
webkit_web_view_run_javascript(notebook_get_webview(notebook), style_js,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
free(style_js);
|
free(style_js);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_notebook_set_current_page(notebook, n);
|
gtk_notebook_set_current_page(notebook, n);
|
||||||
gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(view), "-");
|
gtk_notebook_set_tab_label_text(notebook, GTK_WIDGET(view), "-");
|
||||||
webkit_web_view_set_zoom_level(view, ZOOM);
|
webkit_web_view_set_zoom_level(view, ZOOM);
|
||||||
NUM_TABS+=1;
|
NUM_TABS += 1;
|
||||||
} else {
|
} else {
|
||||||
webkit_web_view_run_javascript(notebook_get_webview(notebook),
|
webkit_web_view_run_javascript(notebook_get_webview(notebook),
|
||||||
"alert('Too many tabs, not opening a new one')", NULL, NULL, NULL);
|
"alert('Too many tabs, not opening a new one')", NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_bar(GtkNotebook* notebook)
|
void show_bar(GtkNotebook* notebook)
|
||||||
|
@ -338,7 +337,7 @@ int handle_key(func id, GtkNotebook* notebook)
|
||||||
|
|
||||||
case close_tab:
|
case close_tab:
|
||||||
gtk_notebook_remove_page(notebook, gtk_notebook_get_current_page(notebook));
|
gtk_notebook_remove_page(notebook, gtk_notebook_get_current_page(notebook));
|
||||||
NUM_TABS-=1;
|
NUM_TABS -= 1;
|
||||||
|
|
||||||
switch (gtk_notebook_get_n_pages(notebook)) {
|
switch (gtk_notebook_get_n_pages(notebook)) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user