more fengshui
This commit is contained in:
		
							parent
							
								
									b138c2c83a
								
							
						
					
					
						commit
						bdfddd3a3a
					
				
							
								
								
									
										56
									
								
								rosenrot4.c
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								rosenrot4.c
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -37,7 +37,7 @@ WebKitWebView* notebook_get_webview(GtkNotebook* notebook) /* TODO: Think throug
 | 
			
		|||
void load_uri(WebKitWebView* view, const char* uri)
 | 
			
		||||
{
 | 
			
		||||
    bool is_empty_uri = (strlen(uri) == 0);
 | 
			
		||||
    bool has_direct_uri_prefix = (g_str_has_prefix(uri, "http://") || g_str_has_prefix(uri, "https://") || g_str_has_prefix(uri, "file://") || g_str_has_prefix(uri, "about:"));
 | 
			
		||||
    bool has_direct_uri_prefix = g_str_has_prefix(uri, "http://") || g_str_has_prefix(uri, "https://") || g_str_has_prefix(uri, "file://") || g_str_has_prefix(uri, "about:");
 | 
			
		||||
    bool has_common_domain_extension = (strstr(uri, ".com") || strstr(uri, ".org"));
 | 
			
		||||
    bool has_shortcut;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -260,12 +260,9 @@ int handle_shortcut(func id)
 | 
			
		|||
            webkit_web_view_go_forward(view);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case toggle_custom_style: /* Ctrl s + Ctrl Shift R to reload */
 | 
			
		||||
            if (custom_style_enabled)
 | 
			
		||||
                custom_style_enabled = 0;
 | 
			
		||||
            else
 | 
			
		||||
                custom_style_enabled = 1;
 | 
			
		||||
            // break; passthrough
 | 
			
		||||
        case toggle_custom_style: 
 | 
			
		||||
            custom_style_enabled ^= 1; 
 | 
			
		||||
            // fallthrough
 | 
			
		||||
        case refresh:
 | 
			
		||||
            webkit_web_view_reload(view);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			@ -294,28 +291,23 @@ int handle_shortcut(func id)
 | 
			
		|||
            // 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);
 | 
			
		||||
            int o = (n + k - 1) % n;
 | 
			
		||||
            gtk_notebook_set_current_page(notebook, o);
 | 
			
		||||
            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);
 | 
			
		||||
            int l = gtk_notebook_get_current_page(notebook);
 | 
			
		||||
            int p = (l + 1) % m;
 | 
			
		||||
            gtk_notebook_set_current_page(notebook, p);
 | 
			
		||||
            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);
 | 
			
		||||
                    break;
 | 
			
		||||
                case 1:
 | 
			
		||||
                    gtk_notebook_set_show_tabs(notebook, false);
 | 
			
		||||
                    break;
 | 
			
		||||
            if (!gtk_notebook_get_n_pages(notebook)) {
 | 
			
		||||
                exit(0);
 | 
			
		||||
            } else {
 | 
			
		||||
                gtk_notebook_set_show_tabs(notebook, false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            break;
 | 
			
		||||
        case toggle_fullscreen:
 | 
			
		||||
            if (is_fullscreen)
 | 
			
		||||
| 
						 | 
				
			
			@ -352,7 +344,6 @@ int handle_shortcut(func id)
 | 
			
		|||
        case halve_window:
 | 
			
		||||
            gtk_window_set_default_size(window, FULL_WIDTH/2, HEIGHT_GTK4);
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        case rebig_window:
 | 
			
		||||
            gtk_window_set_default_size(window, FULL_WIDTH, HEIGHT_GTK4);
 | 
			
		||||
            break;
 | 
			
		||||
| 
						 | 
				
			
			@ -394,9 +385,10 @@ static int handle_signal_keypress(void* self, int keyval, int keycode,
 | 
			
		|||
 | 
			
		||||
int main(int argc, char** argv)
 | 
			
		||||
{
 | 
			
		||||
    /* Initialize GTK in general */
 | 
			
		||||
    // Initialize GTK in general
 | 
			
		||||
    gtk_init();
 | 
			
		||||
    g_object_set(gtk_settings_get_default(), GTK_SETTINGS_CONFIG_H, NULL); // https://docs.gtk.org/gobject/method.Object.set.html
 | 
			
		||||
    g_object_set(gtk_settings_get_default(), GTK_SETTINGS_CONFIG_H, NULL); 
 | 
			
		||||
    // https://docs.gtk.org/gobject/method.Object.set.html
 | 
			
		||||
    GtkCssProvider* css = gtk_css_provider_new();
 | 
			
		||||
    gtk_css_provider_load_from_path(css, "/opt/rosenrot/style-gtk4.css");
 | 
			
		||||
    gtk_style_context_add_provider_for_display(gdk_display_get_default(), GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_USER);
 | 
			
		||||
| 
						 | 
				
			
			@ -411,17 +403,17 @@ int main(int argc, char** argv)
 | 
			
		|||
    gtk_notebook_set_show_border(notebook, false);
 | 
			
		||||
    gtk_window_set_child(window, GTK_WIDGET(notebook));
 | 
			
		||||
 | 
			
		||||
    // Bar
 | 
			
		||||
    // Set up top bar
 | 
			
		||||
    bar.line_text = GTK_ENTRY_BUFFER(gtk_entry_buffer_new("", 0));
 | 
			
		||||
    bar.line = GTK_ENTRY(gtk_entry_new_with_buffer(bar.line_text));
 | 
			
		||||
    gtk_entry_set_alignment(bar.line, 0.48);
 | 
			
		||||
    gtk_entry_set_alignment(bar.line, 0.5);
 | 
			
		||||
    gtk_widget_set_size_request(GTK_WIDGET(bar.line), BAR_WIDTH, -1);
 | 
			
		||||
 | 
			
		||||
    bar.widget = GTK_HEADER_BAR(gtk_header_bar_new());
 | 
			
		||||
    gtk_header_bar_set_title_widget(bar.widget, GTK_WIDGET(bar.line));
 | 
			
		||||
    gtk_window_set_titlebar(window, GTK_WIDGET(bar.widget));
 | 
			
		||||
 | 
			
		||||
    // Signals
 | 
			
		||||
    // Setup signals
 | 
			
		||||
    GtkEventController* event_controller = gtk_event_controller_key_new();
 | 
			
		||||
    g_signal_connect(event_controller, "key-pressed", G_CALLBACK(handle_signal_keypress), NULL);
 | 
			
		||||
    gtk_widget_add_controller(GTK_WIDGET(window), event_controller);
 | 
			
		||||
| 
						 | 
				
			
			@ -429,17 +421,17 @@ int main(int argc, char** argv)
 | 
			
		|||
    g_signal_connect(bar.line, "activate", G_CALLBACK(handle_signal_bar_press_enter), notebook); 
 | 
			
		||||
    g_signal_connect(GTK_WIDGET(window), "destroy", G_CALLBACK(exit), notebook);
 | 
			
		||||
 | 
			
		||||
    // Show the application window
 | 
			
		||||
    gtk_window_present(window);
 | 
			
		||||
 | 
			
		||||
    // Parse first tab
 | 
			
		||||
    char* first_uri = argc > 1 ? argv[1] : HOME;
 | 
			
		||||
    notebook_create_new_tab(notebook, first_uri);
 | 
			
		||||
 | 
			
		||||
    /* Show to user */
 | 
			
		||||
    // Show to user 
 | 
			
		||||
    // The first two commands are redundant with notebook_create_new_tab
 | 
			
		||||
    gtk_window_present(window); 
 | 
			
		||||
    gtk_widget_set_visible(GTK_WIDGET(window), 1);
 | 
			
		||||
    if (argc != 0) gtk_widget_set_visible(GTK_WIDGET(bar.widget), 0);
 | 
			
		||||
 | 
			
		||||
    /* Deal with more tabs */
 | 
			
		||||
    // Deal with more tabs, if any 
 | 
			
		||||
    if (argc > 2) {
 | 
			
		||||
        gtk_notebook_set_show_tabs(notebook, true);
 | 
			
		||||
        for (int i = 2; i < argc; i++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user