Commit 60dd822f344146a31e9913325c02b94fc91aed24

Authored by Perry Werneck
1 parent be8f5790

Working on "paste" actions.

src/objects/actions/clipboard.c
... ... @@ -51,11 +51,12 @@
51 51  
52 52 static void activate_paste(GAction G_GNUC_UNUSED(*action), GVariant *parameter, GtkWidget *terminal) {
53 53  
54   - debug("%s %p",__FUNCTION__,parameter);
55 54  
56 55 if(!parameter) {
57   - v3270_paste(terminal);
  56 + debug("%s %p",__FUNCTION__,"NULL");
  57 + v3270_paste_from_url(terminal,NULL);
58 58 } else {
  59 + debug("%s \"%s\"",__FUNCTION__,g_variant_get_string(parameter,NULL));
59 60 v3270_paste_from_url(terminal,g_variant_get_string(parameter,NULL));
60 61 }
61 62  
... ... @@ -63,6 +64,7 @@
63 64  
64 65 GAction * pw3270_copy_action_new(void) {
65 66  
  67 + /*
66 68 static const LIB3270_ACTION action_descriptor = {
67 69 .name = "copy",
68 70 .type = LIB3270_ACTION_TYPE_SELECTION,
... ... @@ -82,12 +84,28 @@
82 84  
83 85 PW3270_ACTION(action)->activate = activate_copy;
84 86  
  87 +
85 88 return action;
86 89  
  90 +
  91 + */
  92 +
  93 + pw3270SimpleAction * action = pw3270_simple_action_new();
  94 +
  95 + action->parent.activate = activate_copy;
  96 + action->group.id = LIB3270_ACTION_GROUP_SELECTION;
  97 + action->parent.name = "file.transfer";
  98 + action->icon_name = "edit-copy";
  99 + action->label = N_( "_Copy" );
  100 + action->tooltip = N_( "Copy selected area to clipboard." );
  101 +
  102 + return G_ACTION(action);
  103 +
87 104 }
88 105  
89 106 GAction * pw3270_cut_action_new(void) {
90 107  
  108 + /*
91 109 static const LIB3270_ACTION action_descriptor = {
92 110 .name = "cut",
93 111 .type = LIB3270_ACTION_TYPE_SELECTION,
... ... @@ -108,11 +126,24 @@
108 126 PW3270_ACTION(action)->activate = activate_cut;
109 127  
110 128 return action;
  129 + */
  130 +
  131 + pw3270SimpleAction * action = pw3270_simple_action_new();
  132 +
  133 + action->parent.activate = activate_cut;
  134 + action->group.id = LIB3270_ACTION_GROUP_SELECTION;
  135 + action->parent.name = "file.transfer";
  136 + action->icon_name = "edit-cut";
  137 + action->label = N_( "C_ut" );
  138 + action->tooltip = N_( "Cut selected area." );
  139 +
  140 + return G_ACTION(action);
111 141  
112 142 }
113 143  
114 144 GAction * pw3270_paste_action_new(void) {
115 145  
  146 + /*
116 147 static const LIB3270_ACTION action_descriptor = {
117 148 .name = "paste",
118 149 .type = LIB3270_ACTION_TYPE_SELECTION,
... ... @@ -134,5 +165,19 @@
134 165 action->activate = activate_paste;
135 166  
136 167 return G_ACTION(action);
  168 + */
  169 +
  170 + pw3270SimpleAction * action = pw3270_simple_action_new();
  171 +
  172 + action->parent.activate = activate_paste;
  173 + action->parent.types.parameter = G_VARIANT_TYPE_STRING;
  174 +
  175 + action->group.id = LIB3270_ACTION_GROUP_LOCK_STATE;
  176 + action->parent.name = "paste";
  177 + action->icon_name = "edit-paste";
  178 + action->label = N_( "_Paste" );
  179 + action->tooltip = N_( "Paste text from clipboard." );
  180 +
  181 + return G_ACTION(action);
137 182  
138 183 }
... ...
src/objects/toolbar/actions.c
... ... @@ -60,8 +60,8 @@
60 60  
61 61 if(window) {
62 62  
63   - GAction *action = g_action_map_lookup_action(G_ACTION_MAP(window), name);
64 63 GtkToolItem * item = NULL;
  64 + GAction *action = g_action_map_lookup_action(G_ACTION_MAP(window), name);
65 65  
66 66 if(!action) {
67 67 const gchar *ptr = strchr(name,'.');
... ... @@ -79,7 +79,14 @@
79 79 }
80 80  
81 81 if(item) {
82   - gtk_actionable_set_action_name(GTK_ACTIONABLE(item),name);
  82 +
  83 + if(action && g_action_get_parameter_type(action) == G_VARIANT_TYPE_STRING) {
  84 + g_autofree gchar * detailed = g_strconcat(name,"::",NULL);
  85 + gtk_actionable_set_detailed_action_name(GTK_ACTIONABLE(item),detailed);
  86 + } else {
  87 + gtk_actionable_set_action_name(GTK_ACTIONABLE(item),name);
  88 + }
  89 +
83 90 gtk_toolbar_insert(GTK_TOOLBAR(toolbar),item,pos);
84 91 return GTK_WIDGET(item);
85 92 }
... ...
src/objects/window/window.c
... ... @@ -170,8 +170,6 @@
170 170  
171 171 GtkWidget * pw3270_application_window_new(GtkApplication * application) {
172 172  
173   - size_t ix;
174   -
175 173 const gchar * title = _( "IBM 3270 Terminal emulator" );
176 174  
177 175 g_autoptr(GSettings) settings = pw3270_application_get_settings(G_APPLICATION(application));
... ...