[Top][All Lists]
[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 *
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Antiright-devel] antiright/gtkshell terminal.c terminal_struct.h,
Jeffrey Bedard <=