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 */
|
/* private */
|
||||||
/* functions */
|
/* functions */
|
||||||
/* callbacks */
|
/* callbacks */
|
||||||
|
|
|
@ -46,4 +46,8 @@ void terminaltab_delete(TerminalTab * tab);
|
||||||
GtkWidget * terminaltab_get_label(TerminalTab * tab);
|
GtkWidget * terminaltab_get_label(TerminalTab * tab);
|
||||||
GtkWidget * terminaltab_get_widget(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 */
|
#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 */
|
/* callbacks */
|
||||||
static void _terminalwidget_on_close(gpointer data);
|
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_fullscreen(gpointer data);
|
||||||
static void _terminalwidget_on_new_tab(gpointer data);
|
static void _terminalwidget_on_new_tab(gpointer data);
|
||||||
static void _terminalwidget_on_new_window(gpointer data);
|
static void _terminalwidget_on_new_window(gpointer data);
|
||||||
|
static void _terminalwidget_on_paste(gpointer data);
|
||||||
|
|
||||||
#ifndef EMBEDDED
|
#ifndef EMBEDDED
|
||||||
static void _terminalwidget_on_file_close(gpointer data);
|
static void _terminalwidget_on_file_close(gpointer data);
|
||||||
static void _terminalwidget_on_file_close_all(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_tab(gpointer data);
|
||||||
static void _terminalwidget_on_file_new_window(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_view_fullscreen(gpointer data);
|
||||||
static void _terminalwidget_on_help_about(gpointer data);
|
static void _terminalwidget_on_help_about(gpointer data);
|
||||||
static void _terminalwidget_on_help_contents(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 }
|
{ 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[] =
|
static const DesktopMenu _terminalwidget_view_menu[] =
|
||||||
{
|
{
|
||||||
{ N_("_Fullscreen"), G_CALLBACK(_terminalwidget_on_view_fullscreen),
|
{ N_("_Fullscreen"), G_CALLBACK(_terminalwidget_on_view_fullscreen),
|
||||||
|
@ -143,6 +156,7 @@ static const DesktopMenu _terminalwidget_help_menu[] =
|
||||||
static const DesktopMenubar _terminalwidget_menubar[] =
|
static const DesktopMenubar _terminalwidget_menubar[] =
|
||||||
{
|
{
|
||||||
{ N_("_File"), _terminalwidget_file_menu },
|
{ N_("_File"), _terminalwidget_file_menu },
|
||||||
|
{ N_("_Edit"), _terminalwidget_edit_menu },
|
||||||
{ N_("_View"), _terminalwidget_view_menu },
|
{ N_("_View"), _terminalwidget_view_menu },
|
||||||
{ N_("_Help"), _terminalwidget_help_menu },
|
{ N_("_Help"), _terminalwidget_help_menu },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
|
@ -156,6 +170,11 @@ static DesktopToolbar _terminalwidget_toolbar[] =
|
||||||
{ N_("New window"), G_CALLBACK(_terminalwidget_on_new_window),
|
{ N_("New window"), G_CALLBACK(_terminalwidget_on_new_window),
|
||||||
"window-new", 0, 0, NULL },
|
"window-new", 0, 0, NULL },
|
||||||
{ "", NULL, NULL, 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 }
|
{ 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 */
|
/* terminalwidget_on_fullscreen */
|
||||||
static void _terminalwidget_on_fullscreen(gpointer data)
|
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
|
#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 */
|
/* terminalwidget_on_file_close */
|
||||||
static void _terminalwidget_on_file_close(gpointer data)
|
static void _terminalwidget_on_file_close(gpointer data)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user