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,7 +131,7 @@ G_BEGIN_DECLS | ||
131 | 131 | ||
132 | int baddr; ///< @brief Selection address. | 132 | int baddr; ///< @brief Selection address. |
133 | GdkAtom target; ///< @brief A GdkAtom which identifies the clipboard to use. GDK_SELECTION_CLIPBOARD gives the default clipboard. | 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 | GList * blocks; ///< @brief Selection blocks. | 135 | GList * blocks; ///< @brief Selection blocks. |
136 | 136 | ||
137 | } selection; | 137 | } selection; |
src/include/v3270.h
@@ -197,42 +197,41 @@ | @@ -197,42 +197,41 @@ | ||
197 | LIB3270_EXPORT gchar * v3270_get_lunames(GtkWidget *widget); | 197 | LIB3270_EXPORT gchar * v3270_get_lunames(GtkWidget *widget); |
198 | 198 | ||
199 | // Clipboard | 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 | LIB3270_EXPORT gchar * v3270_get_selected(GtkWidget *widget, gboolean cut); | 222 | LIB3270_EXPORT gchar * v3270_get_selected(GtkWidget *widget, gboolean cut); |
210 | LIB3270_EXPORT gchar * v3270_get_copy(GtkWidget *widget); | 223 | LIB3270_EXPORT gchar * v3270_get_copy(GtkWidget *widget); |
211 | -// LIB3270_EXPORT void v3270_set_copy(GtkWidget *widget, const gchar *text); | ||
212 | 224 | ||
213 | LIB3270_EXPORT gchar * v3270_get_text(GtkWidget *widget,int offset, int len); | 225 | LIB3270_EXPORT gchar * v3270_get_text(GtkWidget *widget,int offset, int len); |
214 | LIB3270_EXPORT gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all); | 226 | LIB3270_EXPORT gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all); |
215 | 227 | ||
216 | LIB3270_EXPORT void v3270_set_string(GtkWidget *widget, const gchar *str); | 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 | LIB3270_EXPORT gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end); | 230 | LIB3270_EXPORT gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end); |
222 | LIB3270_EXPORT void v3270_unselect(GtkWidget *widget); | 231 | LIB3270_EXPORT void v3270_unselect(GtkWidget *widget); |
223 | LIB3270_EXPORT void v3270_select_all(GtkWidget *widget); | 232 | LIB3270_EXPORT void v3270_select_all(GtkWidget *widget); |
224 | LIB3270_EXPORT void v3270_select_region(GtkWidget *widget, gint start, gint end); | 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 | LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const gchar *encoding); | 235 | LIB3270_EXPORT void v3270_input_text(GtkWidget *widget, const gchar *text, const gchar *encoding); |
237 | 236 | ||
238 | // Colors | 237 | // Colors |
@@ -273,8 +272,10 @@ | @@ -273,8 +272,10 @@ | ||
273 | LIB3270_EXPORT void v3270_set_remap_filename(GtkWidget *widget, const gchar *path); | 272 | LIB3270_EXPORT void v3270_set_remap_filename(GtkWidget *widget, const gchar *path); |
274 | LIB3270_EXPORT const gchar * v3270_get_remap_filename(GtkWidget *widget); | 273 | LIB3270_EXPORT const gchar * v3270_get_remap_filename(GtkWidget *widget); |
275 | 274 | ||
276 | - // Keyboard & Mouse special actions | 275 | + // Actions |
277 | LIB3270_EXPORT void v3270_set_scroll_action(GtkWidget *widget, GdkScrollDirection direction, GtkAction *action); | 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 | // SSL & Security | 280 | // SSL & Security |
280 | LIB3270_EXPORT const gchar * v3270_get_ssl_state_icon_name(GtkWidget *widget); | 281 | LIB3270_EXPORT const gchar * v3270_get_ssl_state_icon_name(GtkWidget *widget); |
src/selection/copy.c
@@ -41,7 +41,7 @@ | @@ -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 | g_return_if_fail(GTK_IS_V3270(widget)); | 46 | g_return_if_fail(GTK_IS_V3270(widget)); |
47 | 47 | ||
@@ -50,14 +50,13 @@ | @@ -50,14 +50,13 @@ | ||
50 | // Have data? Clear it? | 50 | // Have data? Clear it? |
51 | v3270_clear_selection(terminal); | 51 | v3270_clear_selection(terminal); |
52 | 52 | ||
53 | - terminal->selection.format = format; | 53 | + terminal->selection.format = mode; |
54 | do_copy(terminal,cut); | 54 | do_copy(terminal,cut); |
55 | 55 | ||
56 | v3270_update_system_clipboard(widget); | 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 | g_return_if_fail(GTK_IS_V3270(widget)); | 61 | g_return_if_fail(GTK_IS_V3270(widget)); |
63 | 62 | ||
@@ -66,6 +65,16 @@ | @@ -66,6 +65,16 @@ | ||
66 | do_copy(terminal,cut); | 65 | do_copy(terminal,cut); |
67 | 66 | ||
68 | v3270_update_system_clipboard(widget); | 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,7 +229,7 @@ gchar * v3270_get_selection_as_html_table(v3270 * terminal, const GList *selecti | ||
229 | gchar * v3270_get_copy_as_html(v3270 * terminal, const gchar *encoding) | 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 | return v3270_get_selection_as_html_table(terminal, terminal->selection.blocks, encoding, FALSE); | 233 | return v3270_get_selection_as_html_table(terminal, terminal->selection.blocks, encoding, FALSE); |
234 | 234 | ||
235 | return v3270_get_selection_as_html_div(terminal, terminal->selection.blocks, encoding, FALSE); | 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,7 +146,6 @@ static void formatted_received(GtkClipboard *clipboard, GtkSelectionData *select | ||
146 | 146 | ||
147 | } | 147 | } |
148 | 148 | ||
149 | - | ||
150 | } | 149 | } |
151 | 150 | ||
152 | static void targets_received(GtkClipboard *clipboard, GdkAtom *atoms, gint n_atoms, GtkWidget *widget) | 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,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 | g_return_if_fail(GTK_IS_V3270(widget)); | 181 | g_return_if_fail(GTK_IS_V3270(widget)); |
183 | 182 | ||
184 | GtkClipboard * clipboard = gtk_widget_get_clipboard(widget,GTK_V3270(widget)->selection.target); | 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 | gtk_clipboard_request_targets( | 187 | gtk_clipboard_request_targets( |
189 | clipboard, | 188 | clipboard, |
@@ -213,11 +212,11 @@ LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url) | @@ -213,11 +212,11 @@ LIB3270_EXPORT void v3270_paste_from_url(GtkWidget *widget, const gchar *url) | ||
213 | 212 | ||
214 | LIB3270_EXPORT void v3270_paste(GtkWidget *widget) | 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 | LIB3270_EXPORT void v3270_paste_text(GtkWidget *widget) | 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,7 +67,7 @@ gchar * v3270_get_selection_as_text(v3270 * terminal, const GList *selection, co | ||
67 | 67 | ||
68 | gchar * v3270_get_copy_as_text(v3270 * terminal, const gchar *encoding) | 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 | return v3270_get_copy_as_table(terminal,"\t",encoding); | 71 | return v3270_get_copy_as_table(terminal,"\t",encoding); |
72 | return v3270_get_selection_as_text(terminal, terminal->selection.blocks, encoding, FALSE); | 72 | return v3270_get_selection_as_text(terminal, terminal->selection.blocks, encoding, FALSE); |
73 | } | 73 | } |
src/testprogram/toolbar.c
@@ -157,12 +157,12 @@ | @@ -157,12 +157,12 @@ | ||
157 | 157 | ||
158 | static void paste_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | 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 | static void copy_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | 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 | static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) | 168 | static void color_clicked(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) |
src/trace/exec.c
@@ -184,15 +184,15 @@ | @@ -184,15 +184,15 @@ | ||
184 | if(!(*arg && g_ascii_strcasecmp(arg,"text"))) | 184 | if(!(*arg && g_ascii_strcasecmp(arg,"text"))) |
185 | { | 185 | { |
186 | // No argument or "text" copy text. | 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 | else if(!g_ascii_strcasecmp(arg,"table")) | 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 | else if(!g_ascii_strcasecmp(arg,"append")) | 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 | else | 197 | else |
198 | { | 198 | { |
@@ -237,7 +237,7 @@ | @@ -237,7 +237,7 @@ | ||
237 | gchar * arg = cmdline+5; | 237 | gchar * arg = cmdline+5; |
238 | g_strstrip(arg); | 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 | return 0; | 242 | return 0; |
243 | } | 243 | } |