diff --git a/src/include/terminal.h b/src/include/terminal.h index a1ba8f9..b9021bd 100644 --- a/src/include/terminal.h +++ b/src/include/terminal.h @@ -131,7 +131,7 @@ G_BEGIN_DECLS int baddr; ///< @brief Selection address. GdkAtom target; ///< @brief A GdkAtom which identifies the clipboard to use. GDK_SELECTION_CLIPBOARD gives the default clipboard. - V3270_SELECT_FORMAT format; ///< @brief Copy format. + V3270_COPY_MODE format; ///< @brief Copy mode. GList * blocks; ///< @brief Selection blocks. } selection; diff --git a/src/include/v3270.h b/src/include/v3270.h index 1e97bd0..e25484f 100644 --- a/src/include/v3270.h +++ b/src/include/v3270.h @@ -197,42 +197,41 @@ LIB3270_EXPORT gchar * v3270_get_lunames(GtkWidget *widget); // Clipboard - typedef enum _v3270_select_format + typedef enum _v3270_copy_mode { - V3270_SELECT_NONE, ///< @brief No selected format, use default. - V3270_SELECT_TEXT, ///< @brief Single text format, don't process. - V3270_SELECT_TABLE, ///< @brief Parse contents as table (only for text formats). + V3270_COPY_FORMATTED, ///< @brief Copy formatted data; keep attributes. + V3270_COPY_TEXT, ///< @brief Single text format, ignore attributes. + V3270_COPY_TABLE, ///< @brief Copy as table. - V3270_SELECT_MAX - } V3270_SELECT_FORMAT; + } V3270_COPY_MODE; + + LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut); + LIB3270_EXPORT void v3270_clipboard_append(GtkWidget *widget, gboolean cut); + + LIB3270_EXPORT void v3270_clipboard_get_from_url(GtkWidget *widget, const gchar *url); + + LIB3270_EXPORT void v3270_paste(GtkWidget *widget) G_GNUC_DEPRECATED; + LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) G_GNUC_DEPRECATED; + LIB3270_EXPORT void v3270_paste_from_file(GtkWidget *widget) G_GNUC_DEPRECATED; + LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) G_GNUC_DEPRECATED; + LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) G_GNUC_DEPRECATED; + + + // Selections LIB3270_EXPORT gchar * v3270_get_selected(GtkWidget *widget, gboolean cut); LIB3270_EXPORT gchar * v3270_get_copy(GtkWidget *widget); -// LIB3270_EXPORT void v3270_set_copy(GtkWidget *widget, const gchar *text); LIB3270_EXPORT gchar * v3270_get_text(GtkWidget *widget,int offset, int len); LIB3270_EXPORT gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all); LIB3270_EXPORT void v3270_set_string(GtkWidget *widget, const gchar *str); - LIB3270_EXPORT void v3270_tab(GtkWidget *widget); - LIB3270_EXPORT void v3270_backtab(GtkWidget *widget); - // Selections LIB3270_EXPORT gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end); LIB3270_EXPORT void v3270_unselect(GtkWidget *widget); LIB3270_EXPORT void v3270_select_all(GtkWidget *widget); LIB3270_EXPORT void v3270_select_region(GtkWidget *widget, gint start, gint end); - LIB3270_EXPORT void v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut); - LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut); - LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut); - - LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url); - - LIB3270_EXPORT void v3270_paste(GtkWidget *widget) G_GNUC_DEPRECATED; - LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) G_GNUC_DEPRECATED; - LIB3270_EXPORT void v3270_paste_from_file(GtkWidget *widget) G_GNUC_DEPRECATED; - LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const gchar *encoding); // Colors @@ -273,8 +272,10 @@ LIB3270_EXPORT void v3270_set_remap_filename(GtkWidget *widget, const gchar *path); LIB3270_EXPORT const gchar * v3270_get_remap_filename(GtkWidget *widget); - // Keyboard & Mouse special actions + // Actions LIB3270_EXPORT void v3270_set_scroll_action(GtkWidget *widget, GdkScrollDirection direction, GtkAction *action); + LIB3270_EXPORT void v3270_tab(GtkWidget *widget); + LIB3270_EXPORT void v3270_backtab(GtkWidget *widget); // SSL & Security LIB3270_EXPORT const gchar * v3270_get_ssl_state_icon_name(GtkWidget *widget); diff --git a/src/selection/copy.c b/src/selection/copy.c index 762599f..1cfc1cd 100644 --- a/src/selection/copy.c +++ b/src/selection/copy.c @@ -41,7 +41,7 @@ } - LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_SELECT_FORMAT format, gboolean cut) + LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) { g_return_if_fail(GTK_IS_V3270(widget)); @@ -50,14 +50,13 @@ // Have data? Clear it? v3270_clear_selection(terminal); - terminal->selection.format = format; + terminal->selection.format = mode; do_copy(terminal,cut); v3270_update_system_clipboard(widget); - } - LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) + LIB3270_EXPORT void v3270_clipboard_append(GtkWidget *widget, gboolean cut) { g_return_if_fail(GTK_IS_V3270(widget)); @@ -66,6 +65,16 @@ do_copy(terminal,cut); v3270_update_system_clipboard(widget); + } + + LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE format, gboolean cut) + { + v3270_clipboard_set(widget,format,cut); + } + + LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) + { + v3270_clipboard_append(widget,cut); } diff --git a/src/selection/html.c b/src/selection/html.c index 8e72e6d..9999ae7 100644 --- a/src/selection/html.c +++ b/src/selection/html.c @@ -229,7 +229,7 @@ gchar * v3270_get_selection_as_html_table(v3270 * terminal, const GList *selecti gchar * v3270_get_copy_as_html(v3270 * terminal, const gchar *encoding) { - if(terminal->selection.format == V3270_SELECT_TABLE) + if(terminal->selection.format == V3270_COPY_TABLE) return v3270_get_selection_as_html_table(terminal, terminal->selection.blocks, encoding, FALSE); return v3270_get_selection_as_html_div(terminal, terminal->selection.blocks, encoding, FALSE); diff --git a/src/selection/linux/paste.c b/src/selection/linux/paste.c index e1c3d74..2fb3d03 100644 --- a/src/selection/linux/paste.c +++ b/src/selection/linux/paste.c @@ -146,7 +146,6 @@ static void formatted_received(GtkClipboard *clipboard, GtkSelectionData *select } - } static void targets_received(GtkClipboard *clipboard, GdkAtom *atoms, gint n_atoms, GtkWidget *widget) @@ -177,13 +176,13 @@ static void targets_received(GtkClipboard *clipboard, GdkAtom *atoms, gint n_ato } -LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url) +LIB3270_EXPORT void v3270_clipboard_get_from_url(GtkWidget *widget, const gchar *url) { g_return_if_fail(GTK_IS_V3270(widget)); GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GTK_V3270(widget)->selection.target); - if(!url || g_str_has_prefix(url,"clipboard://")) + if(!url || !*url || g_str_has_prefix(url,"clipboard://") || g_str_has_prefix(url,"tn3270://")) { gtk_clipboard_request_targets( clipboard, @@ -213,11 +212,11 @@ LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url) LIB3270_EXPORT void v3270_paste(GtkWidget *widget) { - v3270_paste_from_url(widget,NULL); + v3270_clipboard_get_from_url(widget,NULL); } LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) { - v3270_paste_from_url(widget,"text://"); + v3270_clipboard_get_from_url(widget,"text://"); } diff --git a/src/selection/text.c b/src/selection/text.c index b455a13..dd0879d 100644 --- a/src/selection/text.c +++ b/src/selection/text.c @@ -67,7 +67,7 @@ gchar * v3270_get_selection_as_text(v3270 * terminal, const GList *selection, co gchar * v3270_get_copy_as_text(v3270 * terminal, const gchar *encoding) { - if(terminal->selection.format == V3270_SELECT_TABLE) + if(terminal->selection.format == V3270_COPY_TABLE) return v3270_get_copy_as_table(terminal,"\t",encoding); return v3270_get_selection_as_text(terminal, terminal->selection.blocks, encoding, FALSE); } diff --git a/src/testprogram/toolbar.c b/src/testprogram/toolbar.c index 5cab2e9..b7ddd02 100644 --- a/src/testprogram/toolbar.c +++ b/src/testprogram/toolbar.c @@ -157,12 +157,12 @@ static void paste_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) { - v3270_paste_from_url(terminal,NULL); + v3270_clipboard_get_from_url(terminal,NULL); } static void copy_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) { - v3270_copy_selection(terminal,V3270_SELECT_TEXT,FALSE); + v3270_copy_selection(terminal,V3270_COPY_TEXT,FALSE); } static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) diff --git a/src/trace/exec.c b/src/trace/exec.c index a19969c..053bc9d 100644 --- a/src/trace/exec.c +++ b/src/trace/exec.c @@ -184,15 +184,15 @@ if(!(*arg && g_ascii_strcasecmp(arg,"text"))) { // No argument or "text" copy text. - v3270_copy_selection(trace->terminal, V3270_SELECT_TEXT, FALSE); + v3270_clipboard_set(trace->terminal, V3270_COPY_TEXT, FALSE); } else if(!g_ascii_strcasecmp(arg,"table")) { - v3270_copy_selection(trace->terminal, V3270_SELECT_TABLE, FALSE); + v3270_clipboard_set(trace->terminal, V3270_COPY_TABLE, FALSE); } else if(!g_ascii_strcasecmp(arg,"append")) { - v3270_append_selection(trace->terminal,FALSE); + v3270_clipboard_append(trace->terminal,FALSE); } else { @@ -237,7 +237,7 @@ gchar * arg = cmdline+5; g_strstrip(arg); - v3270_paste_from_url(trace->terminal,arg); + v3270_clipboard_get_from_url(trace->terminal,arg); return 0; } -- libgit2 0.21.2