antiright-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Antiright-devel] antiright/gtkshell terminal.c terminal_struct.h


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright/gtkshell terminal.c terminal_struct.h
Date: Mon, 03 Dec 2007 19:40:21 +0000

CVSROOT:        /sources/antiright
Module name:    antiright
Changes by:     Jeffrey Bedard <jefbed> 07/12/03 19:40:21

Modified files:
        gtkshell       : terminal.c terminal_struct.h 

Log message:
        Work on tab code.  Do not create tabbed terminal by default.  

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/terminal.c?cvsroot=antiright&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/antiright/gtkshell/terminal_struct.h?cvsroot=antiright&r1=1.11&r2=1.12

Patches:
Index: terminal.c
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/terminal.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- terminal.c  29 Nov 2007 20:56:17 -0000      1.30
+++ terminal.c  3 Dec 2007 19:40:21 -0000       1.31
@@ -22,16 +22,15 @@
 
 #include "gtkshell.h"
 
-#ifdef HAVE_VTE
-#define VSET(element, widget, ...)\
-       vte_terminal_set_##element(VTE_TERMINAL(widget), __VA_ARGS__)
-#endif /* HAVE_VTE */
-
-#define GT term
+/* Uncomment to use experimental tabbed terminal.  */
+/*     # USE_TABS */
 
 #ifdef HAVE_VTE
+#include <vte/reaper.h>
 #define VSETW(element, ...)\
        VSET(element, term->widget, __VA_ARGS__)
+#define VSET(element, widget, ...)\
+       vte_terminal_set_##element(VTE_TERMINAL(widget), __VA_ARGS__)
 #endif /* HAVE_VTE */
 
 #ifdef HAVE_VTE
@@ -74,17 +73,12 @@
 }
 
 static void
-handle_child_exited(
-#ifdef HAVE_VTE
-       VteReaper * vtereaper, 
-#else /* ! HAVE_VTE */
-       gpointer * reaper,
-#endif /* HAVE_VTE */
-       gint arg1, gint arg2, gpointer user_data)
+handle_child_exited(GtkWidget * widget, gpointer user_data)
 {
        struct GSH_Terminal * term = user_data;
-       gtk_widget_destroy(term->widget->parent);
-       gtk_widget_destroy(term->widget);
+       GtkNotebook * notebook = GTK_NOTEBOOK(term->__notebook);
+
+       gtk_notebook_remove_page(notebook, gtk_notebook_page_num(notebook, 
widget));
 }
 
 static void
@@ -197,30 +191,32 @@
        if(!widget)
                return;
        /* Exit from the application if the terminal process dies.  */
+#ifndef USE_TABS
        GSHCONNECT(widget, "child-exited", gtk_main_quit, NULL);
+#endif /* USE_TABS */
        connect_terminal_signals_with_data(gsh, widget);
 }
-
-struct TabData 
-{
-       struct GSH_Terminal * term;
-       gint tab_id;
-};
+#ifdef USE_TABS
 
 static void
 tab_button_close_cb(GtkWidget * button, gpointer data)
 {
-       struct TabData * close_data=data;
+       struct GSH_Terminal * term=data;
        GtkWidget * terminal;
-       GtkNotebook * notebook = GTK_NOTEBOOK(close_data->term->__notebook);
-       const gint tab_id=close_data->tab_id;
+       GtkNotebook * notebook = GTK_NOTEBOOK(term->__notebook);
+       const gint tab_id=term->__notebook_page;
 
        terminal=gtk_notebook_get_nth_page(notebook, tab_id);
-       gtk_notebook_remove_page(notebook, tab_id);
-       /*
                gtk_widget_destroy(terminal);
-               free(close_data); 
-       */
+       gtk_notebook_remove_page(notebook, tab_id);
+}
+
+static void
+change_page_cb(GtkWidget * notebook, gpointer user_data)
+{
+       struct GSH_Terminal * term = (struct GSH_Terminal *)user_data;
+       term->__notebook_page=
+               gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
 }
 
 static void
@@ -239,10 +235,8 @@
        GtkWidget * label;
        GtkWidget * new_image;
        GtkWidget * close_image;
-       struct TabData * close_data= malloc(sizeof(struct TabData));
 
-       close_data->term=term;
-       close_data->tab_id=tab_id;
+       term->__notebook_page=tab_id;
        gtk_widget_show(label=gtk_label_new(command));
        GSHCA(hbox, label);
        gtk_widget_show(new_image=gtk_image_new_from_stock("gtk-new", 
@@ -256,7 +250,7 @@
        gtk_button_set_image(GTK_BUTTON(close_button), close_image);
        gtk_widget_show(close_button);
        GSHCA(hbox, close_button);
-       GSHCONNECT(close_button, "clicked", tab_button_close_cb, close_data);
+       GSHCONNECT(close_button, "clicked", tab_button_close_cb, term);
 
        gtk_button_set_relief(GTK_BUTTON(close_button), GTK_RELIEF_NONE);
        gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
@@ -265,6 +259,7 @@
        GSHCONNECT(button, "clicked", tab_button_callback, term);
        GSHCA(hbox, button);
 }
+#endif /* USE_TABS */
 
 static void
 new_terminal_tab(struct GSH_Terminal * term, const gchar * command)
@@ -274,9 +269,16 @@
 
        gtk_widget_show(hbox=gtk_hbox_new(FALSE, 0));
        gtk_widget_show(term->widget=vte_terminal_new());
-       tab_id=gtk_notebook_append_page(GTK_NOTEBOOK(term->__notebook), 
+       tab_id=term->__notebook_page
+               =gtk_notebook_append_page(GTK_NOTEBOOK(term->__notebook), 
                term->widget, hbox);
+#ifdef USE_TABS
+       GSHCONNECT(term->__notebook, "change-current-page", change_page_cb, 
term);
        make_tab_label(term, command, hbox, tab_id);
+#else /* !USE_TABS */
+       gtk_notebook_set_show_tabs(GTK_NOTEBOOK(term->__notebook), FALSE);
+       command=NULL;
+#endif /* USE_TABLS */
 }
 
 static GtkWidget *

Index: terminal_struct.h
===================================================================
RCS file: /sources/antiright/antiright/gtkshell/terminal_struct.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- terminal_struct.h   24 Nov 2007 10:53:41 -0000      1.11
+++ terminal_struct.h   3 Dec 2007 19:40:21 -0000       1.12
@@ -34,6 +34,7 @@
        gpointer gsh;
        GtkWidget * __notebook;
        gchar * __tab_command;
+       gint __notebook_page;
 };
 
 struct GSH_Terminal *




reply via email to

[Prev in Thread] Current Thread [Next in Thread]