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 | } | ... | ... |