Add copy and paste functionality
This commit is contained in:
parent
fd59fd9733
commit
0f282167e1
21
src/tab.c
21
src/tab.c
|
@ -165,6 +165,27 @@ GtkWidget * terminaltab_get_widget(TerminalTab * tab)
|
|||
}
|
||||
|
||||
|
||||
/* useful */
|
||||
/* terminaltab_clipboard_copy */
|
||||
void terminaltab_clipboard_copy(TerminalTab * tab)
|
||||
{
|
||||
#ifdef WITH_XTERM
|
||||
#else
|
||||
vte_terminal_copy_clipboard(VTE_TERMINAL(tab->socket));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* terminaltab_clipboard_paste */
|
||||
void terminaltab_clipboard_paste(TerminalTab * tab)
|
||||
{
|
||||
#ifdef WITH_XTERM
|
||||
#else
|
||||
vte_terminal_paste_clipboard(VTE_TERMINAL(tab->socket));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* private */
|
||||
/* functions */
|
||||
/* callbacks */
|
||||
|
|
|
@ -46,4 +46,8 @@ void terminaltab_delete(TerminalTab * tab);
|
|||
GtkWidget * terminaltab_get_label(TerminalTab * tab);
|
||||
GtkWidget * terminaltab_get_widget(TerminalTab * tab);
|
||||
|
||||
/* useful */
|
||||
void terminaltab_clipboard_copy(TerminalTab * tab);
|
||||
void terminaltab_clipboard_paste(TerminalTab * tab);
|
||||
|
||||
#endif /* !TERMINAL_TAB_H */
|
||||
|
|
63
src/widget.c
63
src/widget.c
|
@ -77,15 +77,19 @@ static void _terminalwidget_tab_close(TerminalWidget * widget, unsigned int i);
|
|||
|
||||
/* callbacks */
|
||||
static void _terminalwidget_on_close(gpointer data);
|
||||
static void _terminalwidget_on_copy(gpointer data);
|
||||
static void _terminalwidget_on_fullscreen(gpointer data);
|
||||
static void _terminalwidget_on_new_tab(gpointer data);
|
||||
static void _terminalwidget_on_new_window(gpointer data);
|
||||
static void _terminalwidget_on_paste(gpointer data);
|
||||
|
||||
#ifndef EMBEDDED
|
||||
static void _terminalwidget_on_file_close(gpointer data);
|
||||
static void _terminalwidget_on_file_close_all(gpointer data);
|
||||
static void _terminalwidget_on_file_new_tab(gpointer data);
|
||||
static void _terminalwidget_on_file_new_window(gpointer data);
|
||||
static void _terminalwidget_on_edit_copy(gpointer data);
|
||||
static void _terminalwidget_on_edit_paste(gpointer data);
|
||||
static void _terminalwidget_on_view_fullscreen(gpointer data);
|
||||
static void _terminalwidget_on_help_about(gpointer data);
|
||||
static void _terminalwidget_on_help_contents(gpointer data);
|
||||
|
@ -115,6 +119,15 @@ static const DesktopMenu _terminalwidget_file_menu[] =
|
|||
{ NULL, NULL, NULL, 0, 0 }
|
||||
};
|
||||
|
||||
static const DesktopMenu _terminalwidget_edit_menu[] =
|
||||
{
|
||||
{ N_("_Copy"), G_CALLBACK(_terminalwidget_on_edit_copy),
|
||||
GTK_STOCK_COPY, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_KEY_C },
|
||||
{ N_("_Paste"), G_CALLBACK(_terminalwidget_on_edit_paste),
|
||||
GTK_STOCK_PASTE, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_KEY_V },
|
||||
{ NULL, NULL, NULL, 0, 0 }
|
||||
};
|
||||
|
||||
static const DesktopMenu _terminalwidget_view_menu[] =
|
||||
{
|
||||
{ N_("_Fullscreen"), G_CALLBACK(_terminalwidget_on_view_fullscreen),
|
||||
|
@ -143,6 +156,7 @@ static const DesktopMenu _terminalwidget_help_menu[] =
|
|||
static const DesktopMenubar _terminalwidget_menubar[] =
|
||||
{
|
||||
{ N_("_File"), _terminalwidget_file_menu },
|
||||
{ N_("_Edit"), _terminalwidget_edit_menu },
|
||||
{ N_("_View"), _terminalwidget_view_menu },
|
||||
{ N_("_Help"), _terminalwidget_help_menu },
|
||||
{ NULL, NULL }
|
||||
|
@ -156,6 +170,11 @@ static DesktopToolbar _terminalwidget_toolbar[] =
|
|||
{ N_("New window"), G_CALLBACK(_terminalwidget_on_new_window),
|
||||
"window-new", 0, 0, NULL },
|
||||
{ "", NULL, NULL, 0, 0, NULL },
|
||||
{ N_("Copy"), G_CALLBACK(_terminalwidget_on_copy), GTK_STOCK_COPY, 0,
|
||||
0, NULL },
|
||||
{ N_("Paste"), G_CALLBACK(_terminalwidget_on_paste), GTK_STOCK_PASTE, 0,
|
||||
0, NULL },
|
||||
{ "", NULL, NULL, 0, 0, NULL },
|
||||
{ NULL, NULL, NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
|
@ -426,6 +445,19 @@ static void _terminalwidget_on_close(gpointer data)
|
|||
}
|
||||
|
||||
|
||||
/* terminalwidget_on_copy */
|
||||
static void _terminalwidget_on_copy(gpointer data)
|
||||
{
|
||||
TerminalWidget * widget = data;
|
||||
int i;
|
||||
|
||||
i = gtk_notebook_get_current_page(GTK_NOTEBOOK(widget->notebook));
|
||||
if(i < 0)
|
||||
return;
|
||||
terminaltab_clipboard_copy(widget->tabs[i]);
|
||||
}
|
||||
|
||||
|
||||
/* terminalwidget_on_fullscreen */
|
||||
static void _terminalwidget_on_fullscreen(gpointer data)
|
||||
{
|
||||
|
@ -457,7 +489,38 @@ static void _terminalwidget_on_new_window(gpointer data)
|
|||
}
|
||||
|
||||
|
||||
/* terminalwidget_on_paste */
|
||||
static void _terminalwidget_on_paste(gpointer data)
|
||||
{
|
||||
TerminalWidget * widget = data;
|
||||
int i;
|
||||
|
||||
i = gtk_notebook_get_current_page(GTK_NOTEBOOK(widget->notebook));
|
||||
if(i < 0)
|
||||
return;
|
||||
terminaltab_clipboard_paste(widget->tabs[i]);
|
||||
}
|
||||
|
||||
|
||||
#ifndef EMBEDDED
|
||||
/* terminalwidget_on_edit_copy */
|
||||
static void _terminalwidget_on_edit_copy(gpointer data)
|
||||
{
|
||||
TerminalWidget * widget = data;
|
||||
|
||||
_terminalwidget_on_copy(widget);
|
||||
}
|
||||
|
||||
|
||||
/* terminalwidget_on_edit_paste */
|
||||
static void _terminalwidget_on_edit_paste(gpointer data)
|
||||
{
|
||||
TerminalWidget * widget = data;
|
||||
|
||||
_terminalwidget_on_paste(widget);
|
||||
}
|
||||
|
||||
|
||||
/* terminalwidget_on_file_close */
|
||||
static void _terminalwidget_on_file_close(gpointer data)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user