diff --git a/pw3270.cbp b/pw3270.cbp
index 89b897c..757aa42 100644
--- a/pw3270.cbp
+++ b/pw3270.cbp
@@ -124,6 +124,8 @@
+
+
@@ -300,6 +302,7 @@
+
diff --git a/src/gtk/actions.c b/src/gtk/actions.c
index 00e9e81..c4822ab 100644
--- a/src/gtk/actions.c
+++ b/src/gtk/actions.c
@@ -54,6 +54,12 @@ static void disconnect_action(GtkAction *action, GtkWidget *widget)
v3270_disconnect(widget);
}
+static void activate_action(GtkAction *action, GtkWidget *widget)
+{
+ trace("Action %s activated on widget %p",gtk_action_get_name(action),widget);
+ gtk_widget_activate(widget);
+}
+
void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name, const gchar *id)
{
#undef DECLARE_LIB3270_ACTION
@@ -84,6 +90,7 @@ void ui_connect_action(GtkAction *action, GtkWidget *widget, const gchar *name,
}
gtk_action[] =
{
+ { "activate", activate_action },
{ "connect", connect_action },
{ "disconnect", disconnect_action },
};
diff --git a/src/gtk/v3270/mouse.c b/src/gtk/v3270/mouse.c
index abe2f64..353f8bc 100644
--- a/src/gtk/v3270/mouse.c
+++ b/src/gtk/v3270/mouse.c
@@ -68,7 +68,7 @@ static void button_1_press(GtkWidget *widget, GdkEventType type, int baddr)
break;
case GDK_3BUTTON_PRESS: // Triple clock - Select field
- lib3270_select_field(GTK_V3270(widget)->host,baddr);
+ lib3270_select_field_at(GTK_V3270(widget)->host,baddr);
break;
#ifdef DEBUG
diff --git a/src/include/lib3270.h b/src/include/lib3270.h
index 3e3bb17..3a46ab1 100644
--- a/src/include/lib3270.h
+++ b/src/include/lib3270.h
@@ -74,12 +74,10 @@
typedef enum _lib3270_toggle
{
LIB3270_TOGGLE_MONOCASE,
- LIB3270_TOGGLE_ALT_CURSOR,
LIB3270_TOGGLE_CURSOR_BLINK,
LIB3270_TOGGLE_SHOW_TIMING,
LIB3270_TOGGLE_CURSOR_POS,
LIB3270_TOGGLE_DS_TRACE,
- LIB3270_TOGGLE_SCROLL_BAR,
LIB3270_TOGGLE_LINE_WRAP,
LIB3270_TOGGLE_BLANK_FILL,
LIB3270_TOGGLE_SCREEN_TRACE,
@@ -87,13 +85,22 @@
LIB3270_TOGGLE_MARGINED_PASTE,
LIB3270_TOGGLE_RECTANGLE_SELECT,
LIB3270_TOGGLE_CROSSHAIR,
- LIB3270_TOGGLE_VISIBLE_CONTROL,
- LIB3270_TOGGLE_AID_WAIT,
LIB3270_TOGGLE_FULL_SCREEN,
LIB3270_TOGGLE_RECONNECT,
LIB3270_TOGGLE_INSERT,
- LIB3270_TOGGLE_KEYPAD,
LIB3270_TOGGLE_SMART_PASTE,
+ LIB3270_TOGGLE_BOLD,
+ LIB3270_TOGGLE_KEEP_SELECTED,
+ LIB3270_TOGGLE_UNDERLINE,
+ LIB3270_TOGGLE_CONNECT_ON_STARTUP,
+ LIB3270_TOGGLE_KP_ALTERNATIVE, /**< Keypad +/- move to next/previous field */
+ LIB3270_TOGGLE_BEEP, /**< Beep on errors */
+
+// LIB3270_TOGGLE_ALT_CURSOR,
+// LIB3270_TOGGLE_AID_WAIT,
+// LIB3270_TOGGLE_SCROLL_BAR,
+// LIB3270_TOGGLE_VISIBLE_CONTROL,
+// LIB3270_TOGGLE_KEYPAD,
LIB3270_TOGGLE_COUNT
diff --git a/src/include/lib3270/action_table.h b/src/include/lib3270/action_table.h
index 8fe91e6..95fe179 100644
--- a/src/include/lib3270/action_table.h
+++ b/src/include/lib3270/action_table.h
@@ -59,6 +59,10 @@
DECLARE_LIB3270_CLEAR_SELECTION_ACTION( clear )
DECLARE_LIB3270_CLEAR_SELECTION_ACTION( eraseinput )
+ DECLARE_LIB3270_ACTION( selectfield )
+ DECLARE_LIB3270_ACTION( selectall )
+ DECLARE_LIB3270_ACTION( unselect )
+
DECLARE_LIB3270_ACTION( firstfield )
DECLARE_LIB3270_ACTION( eraseeof )
DECLARE_LIB3270_ACTION( eraseeol )
diff --git a/src/include/lib3270/selection.h b/src/include/lib3270/selection.h
index 8d3b263..ee02895 100644
--- a/src/include/lib3270/selection.h
+++ b/src/include/lib3270/selection.h
@@ -36,6 +36,6 @@
LIB3270_EXPORT void lib3270_clear_selection(H3270 *session);
LIB3270_EXPORT void lib3270_select_to(H3270 *session, int baddr);
LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr);
- LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr);
+ LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr);
#endif // LIB3270_SELECTION_H_INCLUDED
diff --git a/src/lib3270/XtGlue.c b/src/lib3270/XtGlue.c
index e6c1d6c..34a00dd 100644
--- a/src/lib3270/XtGlue.c
+++ b/src/lib3270/XtGlue.c
@@ -1002,7 +1002,9 @@ LIB3270_EXPORT int lib3270_wait(seconds)
LIB3270_EXPORT void lib3270_ring_bell(H3270 *session)
{
CHECK_SESSION_HANDLE(session);
- callbacks->ring_bell(session);
+
+ if(lib3270_get_toggle(session,LIB3270_TOGGLE_BEEP))
+ callbacks->ring_bell(session);
}
diff --git a/src/lib3270/ansi.c b/src/lib3270/ansi.c
index afb7a5d..218ced9 100644
--- a/src/lib3270/ansi.c
+++ b/src/lib3270/ansi.c
@@ -1827,7 +1827,7 @@ ansi_send_pa(int nn)
void toggle_lineWrap(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE type unused)
{
- if (toggled(LINE_WRAP))
+ if (toggled(LIB3270_TOGGLE_LINE_WRAP))
wraparound_mode = 1;
else
wraparound_mode = 0;
diff --git a/src/lib3270/glue.c b/src/lib3270/glue.c
index fea472b..fd08dc8 100644
--- a/src/lib3270/glue.c
+++ b/src/lib3270/glue.c
@@ -117,31 +117,6 @@
char *profile_name = CN;
#endif /*]*/
-const char *toggle_names[N_TOGGLES] =
-{
- "Monocase",
- "AltCursor",
- "CursorBlink",
- "ShowTiming",
- "CursorPos",
- "DSTrace",
- "ScrollBar",
- "LineWrap",
- "BlankFill",
- "ScreenTrace",
- "EventTrace",
- "MarginedPaste",
- "RectSelect",
- "CrossHair",
- "VisibleControl",
- "AidWait",
- "FullScreen",
- "Reconnect",
- "Insert",
- "Keypad",
- "SmartPaste"
-};
-
void lib3270_session_free(H3270 *h)
{
int f;
@@ -319,6 +294,7 @@ static void initialize(void)
Trace("Initializing library (calls: %d)",init_calls);
#endif
+ h3270.selected.begin = h3270.selected.end = -1;
initialize_toggles(&h3270,appres.toggle);
#if defined(_WIN32)
diff --git a/src/lib3270/kybd.c b/src/lib3270/kybd.c
index c26f1e8..7fbe2c9 100644
--- a/src/lib3270/kybd.c
+++ b/src/lib3270/kybd.c
@@ -651,7 +651,7 @@ static Boolean ins_prep(int faddr, int baddr, int count)
while (need && (xaddr != next_faddr)) {
if (ea_buf[xaddr].cc == EBC_null)
need--;
- else if (toggled(BLANK_FILL) &&
+ else if (toggled(LIB3270_TOGGLE_BLANK_FILL) &&
((ea_buf[xaddr].cc == EBC_space) ||
(ea_buf[xaddr].cc == EBC_underscore))) {
if (tb_start == -1)
@@ -3653,3 +3653,4 @@ clear_xks(void)
}
}
+
diff --git a/src/lib3270/screen.c b/src/lib3270/screen.c
index b7a9196..f7c0532 100644
--- a/src/lib3270/screen.c
+++ b/src/lib3270/screen.c
@@ -735,19 +735,6 @@ void popup_system_error(H3270 *session, const char *title, const char *message,
va_end(args);
}
-/*
-LIB3270_EXPORT void update_toggle_actions(void)
-{
- int f;
-
- if(callbacks && callbacks->toggle_changed)
- {
- for(f=0;f< N_TOGGLES;f++)
- callbacks->toggle_changed(&h3270,f,appres.toggle[f].value,TT_UPDATE,toggle_names[f]);
- }
-}
-*/
-
void mcursor_set(H3270 *session,LIB3270_CURSOR m)
{
CHECK_SESSION_HANDLE(session);
diff --git a/src/lib3270/selection.c b/src/lib3270/selection.c
index abf30d0..6cfe59a 100644
--- a/src/lib3270/selection.c
+++ b/src/lib3270/selection.c
@@ -219,7 +219,7 @@ LIB3270_EXPORT void lib3270_select_word(H3270 *session, int baddr)
update_selected_region(session);
}
-LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr)
+LIB3270_EXPORT int lib3270_select_field_at(H3270 *session, int baddr)
{
int start,len;
@@ -251,3 +251,41 @@ LIB3270_EXPORT int lib3270_select_field(H3270 *session, int baddr)
return 0;
}
+
+LIB3270_ACTION( selectfield )
+{
+ lib3270_select_field_at(hSession,hSession->cursor_addr);
+}
+
+LIB3270_ACTION( selectall )
+{
+ int len = hSession->rows*hSession->cols;
+ int baddr;
+
+ // First remove unselected areas
+ for(baddr = 0; baddr < len; baddr++)
+ {
+ if(!(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED))
+ {
+ ea_buf[baddr].attr |= LIB3270_ATTR_SELECTED;
+ hSession->update(hSession,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == hSession->cursor_addr);
+ }
+ }
+}
+
+LIB3270_ACTION( unselect )
+{
+ int len = hSession->rows*hSession->cols;
+ int baddr;
+
+ // First remove unselected areas
+ for(baddr = 0; baddr < len; baddr++)
+ {
+ if(ea_buf[baddr].attr & LIB3270_ATTR_SELECTED)
+ {
+ ea_buf[baddr].attr &= ~LIB3270_ATTR_SELECTED;
+ hSession->update(hSession,baddr,ea_buf[baddr].chr,ea_buf[baddr].attr,baddr == hSession->cursor_addr);
+ }
+ }
+}
+
diff --git a/src/lib3270/toggles.c b/src/lib3270/toggles.c
index 6c58e6d..0b6f959 100644
--- a/src/lib3270/toggles.c
+++ b/src/lib3270/toggles.c
@@ -52,6 +52,33 @@
+static const char *toggle_names[LIB3270_TOGGLE_COUNT] =
+{
+ "monocase",
+ "cursorblink",
+ "showtiming",
+ "cursorpos",
+ "dstrace",
+ "linewrap",
+ "blankfill",
+ "screentrace",
+ "eventtrace",
+ "marginedpaste",
+ "rectselect",
+ "crosshair",
+ "fullscreen",
+ "reconnect",
+ "insert",
+ "smartpaste",
+ "bold",
+ "keepselected",
+ "underline",
+ "autoconnect",
+ "kpalternative", /**< Keypad +/- move to next/previous field */
+ "beep", /**< Beep on errors */
+};
+
+
static void no_callback(H3270 *h, int value, LIB3270_TOGGLE_TYPE reason)
{
}
@@ -154,7 +181,7 @@ void initialize_toggles(H3270 *session, struct toggle *toggle)
{
int f;
- for(f=0;f
-
+
-
-
-
+
+
+
@@ -123,7 +123,7 @@
-
+
@@ -144,7 +144,7 @@
-
+
@@ -158,14 +158,14 @@
-
+
-
-
-
+
+
+
--
libgit2 0.21.2