Commit 9dff8391aded485a947b251f2d15f8dbda933206

Authored by Perry Werneck
1 parent 5de05634
Exists in master and in 1 other branch develop

Refactoring clipboard methods.

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 }