Commit 9dff8391aded485a947b251f2d15f8dbda933206
1 parent
5de05634
Exists in
master
and in
1 other branch
Refactoring clipboard methods.
Showing
8 changed files
with
48 additions
and
39 deletions
Show diff stats
src/include/terminal.h
| ... | ... | @@ -131,7 +131,7 @@ G_BEGIN_DECLS |
| 131 | 131 | |
| 132 | 132 | int baddr; ///< @brief Selection address. |
| 133 | 133 | GdkAtom target; ///< @brief A GdkAtom which identifies the clipboard to use. GDK_SELECTION_CLIPBOARD gives the default clipboard. |
| 134 | - V3270_SELECT_FORMAT format; ///< @brief Copy format. | |
| 134 | + V3270_COPY_MODE format; ///< @brief Copy mode. | |
| 135 | 135 | GList * blocks; ///< @brief Selection blocks. |
| 136 | 136 | |
| 137 | 137 | } selection; | ... | ... |
src/include/v3270.h
| ... | ... | @@ -197,42 +197,41 @@ |
| 197 | 197 | LIB3270_EXPORT gchar * v3270_get_lunames(GtkWidget *widget); |
| 198 | 198 | |
| 199 | 199 | // Clipboard |
| 200 | - typedef enum _v3270_select_format | |
| 200 | + typedef enum _v3270_copy_mode | |
| 201 | 201 | { |
| 202 | - V3270_SELECT_NONE, ///< @brief No selected format, use default. | |
| 203 | - V3270_SELECT_TEXT, ///< @brief Single text format, don't process. | |
| 204 | - V3270_SELECT_TABLE, ///< @brief Parse contents as table (only for text formats). | |
| 202 | + V3270_COPY_FORMATTED, ///< @brief Copy formatted data; keep attributes. | |
| 203 | + V3270_COPY_TEXT, ///< @brief Single text format, ignore attributes. | |
| 204 | + V3270_COPY_TABLE, ///< @brief Copy as table. | |
| 205 | 205 | |
| 206 | - V3270_SELECT_MAX | |
| 207 | - } V3270_SELECT_FORMAT; | |
| 206 | + } V3270_COPY_MODE; | |
| 207 | + | |
| 208 | + LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut); | |
| 209 | + LIB3270_EXPORT void v3270_clipboard_append(GtkWidget *widget, gboolean cut); | |
| 210 | + | |
| 211 | + LIB3270_EXPORT void v3270_clipboard_get_from_url(GtkWidget *widget, const gchar *url); | |
| 212 | + | |
| 213 | + LIB3270_EXPORT void v3270_paste(GtkWidget *widget) G_GNUC_DEPRECATED; | |
| 214 | + LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) G_GNUC_DEPRECATED; | |
| 215 | + LIB3270_EXPORT void v3270_paste_from_file(GtkWidget *widget) G_GNUC_DEPRECATED; | |
| 216 | + LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) G_GNUC_DEPRECATED; | |
| 217 | + LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) G_GNUC_DEPRECATED; | |
| 218 | + | |
| 219 | + | |
| 220 | + // Selections | |
| 208 | 221 | |
| 209 | 222 | LIB3270_EXPORT gchar * v3270_get_selected(GtkWidget *widget, gboolean cut); |
| 210 | 223 | LIB3270_EXPORT gchar * v3270_get_copy(GtkWidget *widget); |
| 211 | -// LIB3270_EXPORT void v3270_set_copy(GtkWidget *widget, const gchar *text); | |
| 212 | 224 | |
| 213 | 225 | LIB3270_EXPORT gchar * v3270_get_text(GtkWidget *widget,int offset, int len); |
| 214 | 226 | LIB3270_EXPORT gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all); |
| 215 | 227 | |
| 216 | 228 | LIB3270_EXPORT void v3270_set_string(GtkWidget *widget, const gchar *str); |
| 217 | - LIB3270_EXPORT void v3270_tab(GtkWidget *widget); | |
| 218 | - LIB3270_EXPORT void v3270_backtab(GtkWidget *widget); | |
| 219 | 229 | |
| 220 | - // Selections | |
| 221 | 230 | LIB3270_EXPORT gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end); |
| 222 | 231 | LIB3270_EXPORT void v3270_unselect(GtkWidget *widget); |
| 223 | 232 | LIB3270_EXPORT void v3270_select_all(GtkWidget *widget); |
| 224 | 233 | LIB3270_EXPORT void v3270_select_region(GtkWidget *widget, gint start, gint end); |
| 225 | 234 | |
| 226 | - LIB3270_EXPORT void v3270_copy(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut); | |
| 227 | - LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_SELECT_FORMAT mode, gboolean cut); | |
| 228 | - LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut); | |
| 229 | - | |
| 230 | - LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url); | |
| 231 | - | |
| 232 | - LIB3270_EXPORT void v3270_paste(GtkWidget *widget) G_GNUC_DEPRECATED; | |
| 233 | - LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) G_GNUC_DEPRECATED; | |
| 234 | - LIB3270_EXPORT void v3270_paste_from_file(GtkWidget *widget) G_GNUC_DEPRECATED; | |
| 235 | - | |
| 236 | 235 | LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const gchar *encoding); |
| 237 | 236 | |
| 238 | 237 | // Colors |
| ... | ... | @@ -273,8 +272,10 @@ |
| 273 | 272 | LIB3270_EXPORT void v3270_set_remap_filename(GtkWidget *widget, const gchar *path); |
| 274 | 273 | LIB3270_EXPORT const gchar * v3270_get_remap_filename(GtkWidget *widget); |
| 275 | 274 | |
| 276 | - // Keyboard & Mouse special actions | |
| 275 | + // Actions | |
| 277 | 276 | LIB3270_EXPORT void v3270_set_scroll_action(GtkWidget *widget, GdkScrollDirection direction, GtkAction *action); |
| 277 | + LIB3270_EXPORT void v3270_tab(GtkWidget *widget); | |
| 278 | + LIB3270_EXPORT void v3270_backtab(GtkWidget *widget); | |
| 278 | 279 | |
| 279 | 280 | // SSL & Security |
| 280 | 281 | LIB3270_EXPORT const gchar * v3270_get_ssl_state_icon_name(GtkWidget *widget); | ... | ... |
src/selection/copy.c
| ... | ... | @@ -41,7 +41,7 @@ |
| 41 | 41 | |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | - LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_SELECT_FORMAT format, gboolean cut) | |
| 44 | + LIB3270_EXPORT void v3270_clipboard_set(GtkWidget *widget, V3270_COPY_MODE mode, gboolean cut) | |
| 45 | 45 | { |
| 46 | 46 | g_return_if_fail(GTK_IS_V3270(widget)); |
| 47 | 47 | |
| ... | ... | @@ -50,14 +50,13 @@ |
| 50 | 50 | // Have data? Clear it? |
| 51 | 51 | v3270_clear_selection(terminal); |
| 52 | 52 | |
| 53 | - terminal->selection.format = format; | |
| 53 | + terminal->selection.format = mode; | |
| 54 | 54 | do_copy(terminal,cut); |
| 55 | 55 | |
| 56 | 56 | v3270_update_system_clipboard(widget); |
| 57 | - | |
| 58 | 57 | } |
| 59 | 58 | |
| 60 | - LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) | |
| 59 | + LIB3270_EXPORT void v3270_clipboard_append(GtkWidget *widget, gboolean cut) | |
| 61 | 60 | { |
| 62 | 61 | g_return_if_fail(GTK_IS_V3270(widget)); |
| 63 | 62 | |
| ... | ... | @@ -66,6 +65,16 @@ |
| 66 | 65 | do_copy(terminal,cut); |
| 67 | 66 | |
| 68 | 67 | v3270_update_system_clipboard(widget); |
| 68 | + } | |
| 69 | 69 | |
| 70 | + | |
| 71 | + LIB3270_EXPORT void v3270_copy_selection(GtkWidget *widget, V3270_COPY_MODE format, gboolean cut) | |
| 72 | + { | |
| 73 | + v3270_clipboard_set(widget,format,cut); | |
| 74 | + } | |
| 75 | + | |
| 76 | + LIB3270_EXPORT void v3270_append_selection(GtkWidget *widget, gboolean cut) | |
| 77 | + { | |
| 78 | + v3270_clipboard_append(widget,cut); | |
| 70 | 79 | } |
| 71 | 80 | ... | ... |
src/selection/html.c
| ... | ... | @@ -229,7 +229,7 @@ gchar * v3270_get_selection_as_html_table(v3270 * terminal, const GList *selecti |
| 229 | 229 | gchar * v3270_get_copy_as_html(v3270 * terminal, const gchar *encoding) |
| 230 | 230 | { |
| 231 | 231 | |
| 232 | - if(terminal->selection.format == V3270_SELECT_TABLE) | |
| 232 | + if(terminal->selection.format == V3270_COPY_TABLE) | |
| 233 | 233 | return v3270_get_selection_as_html_table(terminal, terminal->selection.blocks, encoding, FALSE); |
| 234 | 234 | |
| 235 | 235 | return v3270_get_selection_as_html_div(terminal, terminal->selection.blocks, encoding, FALSE); | ... | ... |
src/selection/linux/paste.c
| ... | ... | @@ -146,7 +146,6 @@ static void formatted_received(GtkClipboard *clipboard, GtkSelectionData *select |
| 146 | 146 | |
| 147 | 147 | } |
| 148 | 148 | |
| 149 | - | |
| 150 | 149 | } |
| 151 | 150 | |
| 152 | 151 | 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 |
| 177 | 176 | |
| 178 | 177 | } |
| 179 | 178 | |
| 180 | -LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url) | |
| 179 | +LIB3270_EXPORT void v3270_clipboard_get_from_url(GtkWidget *widget, const gchar *url) | |
| 181 | 180 | { |
| 182 | 181 | g_return_if_fail(GTK_IS_V3270(widget)); |
| 183 | 182 | |
| 184 | 183 | GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GTK_V3270(widget)->selection.target); |
| 185 | 184 | |
| 186 | - if(!url || g_str_has_prefix(url,"clipboard://")) | |
| 185 | + if(!url || !*url || g_str_has_prefix(url,"clipboard://") || g_str_has_prefix(url,"tn3270://")) | |
| 187 | 186 | { |
| 188 | 187 | gtk_clipboard_request_targets( |
| 189 | 188 | clipboard, |
| ... | ... | @@ -213,11 +212,11 @@ LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url) |
| 213 | 212 | |
| 214 | 213 | LIB3270_EXPORT void v3270_paste(GtkWidget *widget) |
| 215 | 214 | { |
| 216 | - v3270_paste_from_url(widget,NULL); | |
| 215 | + v3270_clipboard_get_from_url(widget,NULL); | |
| 217 | 216 | } |
| 218 | 217 | |
| 219 | 218 | LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) |
| 220 | 219 | { |
| 221 | - v3270_paste_from_url(widget,"text://"); | |
| 220 | + v3270_clipboard_get_from_url(widget,"text://"); | |
| 222 | 221 | } |
| 223 | 222 | ... | ... |
src/selection/text.c
| ... | ... | @@ -67,7 +67,7 @@ gchar * v3270_get_selection_as_text(v3270 * terminal, const GList *selection, co |
| 67 | 67 | |
| 68 | 68 | gchar * v3270_get_copy_as_text(v3270 * terminal, const gchar *encoding) |
| 69 | 69 | { |
| 70 | - if(terminal->selection.format == V3270_SELECT_TABLE) | |
| 70 | + if(terminal->selection.format == V3270_COPY_TABLE) | |
| 71 | 71 | return v3270_get_copy_as_table(terminal,"\t",encoding); |
| 72 | 72 | return v3270_get_selection_as_text(terminal, terminal->selection.blocks, encoding, FALSE); |
| 73 | 73 | } | ... | ... |
src/testprogram/toolbar.c
| ... | ... | @@ -157,12 +157,12 @@ |
| 157 | 157 | |
| 158 | 158 | static void paste_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) |
| 159 | 159 | { |
| 160 | - v3270_paste_from_url(terminal,NULL); | |
| 160 | + v3270_clipboard_get_from_url(terminal,NULL); | |
| 161 | 161 | } |
| 162 | 162 | |
| 163 | 163 | static void copy_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) |
| 164 | 164 | { |
| 165 | - v3270_copy_selection(terminal,V3270_SELECT_TEXT,FALSE); | |
| 165 | + v3270_copy_selection(terminal,V3270_COPY_TEXT,FALSE); | |
| 166 | 166 | } |
| 167 | 167 | |
| 168 | 168 | static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | ... | ... |
src/trace/exec.c
| ... | ... | @@ -184,15 +184,15 @@ |
| 184 | 184 | if(!(*arg && g_ascii_strcasecmp(arg,"text"))) |
| 185 | 185 | { |
| 186 | 186 | // No argument or "text" copy text. |
| 187 | - v3270_copy_selection(trace->terminal, V3270_SELECT_TEXT, FALSE); | |
| 187 | + v3270_clipboard_set(trace->terminal, V3270_COPY_TEXT, FALSE); | |
| 188 | 188 | } |
| 189 | 189 | else if(!g_ascii_strcasecmp(arg,"table")) |
| 190 | 190 | { |
| 191 | - v3270_copy_selection(trace->terminal, V3270_SELECT_TABLE, FALSE); | |
| 191 | + v3270_clipboard_set(trace->terminal, V3270_COPY_TABLE, FALSE); | |
| 192 | 192 | } |
| 193 | 193 | else if(!g_ascii_strcasecmp(arg,"append")) |
| 194 | 194 | { |
| 195 | - v3270_append_selection(trace->terminal,FALSE); | |
| 195 | + v3270_clipboard_append(trace->terminal,FALSE); | |
| 196 | 196 | } |
| 197 | 197 | else |
| 198 | 198 | { |
| ... | ... | @@ -237,7 +237,7 @@ |
| 237 | 237 | gchar * arg = cmdline+5; |
| 238 | 238 | g_strstrip(arg); |
| 239 | 239 | |
| 240 | - v3270_paste_from_url(trace->terminal,arg); | |
| 240 | + v3270_clipboard_get_from_url(trace->terminal,arg); | |
| 241 | 241 | |
| 242 | 242 | return 0; |
| 243 | 243 | } | ... | ... |