Commit 1b3d717d authored by Claes Sjofors's avatar Claes Sjofors

Wb value and command input, escape to close added

parent 3c418280
...@@ -240,6 +240,18 @@ gboolean WAttGtk::action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer dat ...@@ -240,6 +240,18 @@ gboolean WAttGtk::action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer dat
return FALSE; return FALSE;
} }
void WAttGtk::hide_cmd_input( GtkWidget *w, gpointer data)
{
WAttGtk *watt = (WAttGtk *)data;
watt->wattnav->set_inputfocus();
if ( watt->input_open) {
g_object_set( watt->cmd_prompt, "visible", FALSE, NULL);
watt->input_open = 0;
}
}
void WAttGtk::print( const char *title) void WAttGtk::print( const char *title)
{ {
pwr_tStatus sts; pwr_tStatus sts;
...@@ -350,9 +362,6 @@ void WAttGtk::activate_cmd_input( GtkWidget *w, gpointer data) ...@@ -350,9 +362,6 @@ void WAttGtk::activate_cmd_input( GtkWidget *w, gpointer data)
WAttGtk *watt = (WAttGtk *)data; WAttGtk *watt = (WAttGtk *)data;
int sts; int sts;
g_object_set( watt->cmd_prompt, "visible", FALSE, NULL);
g_object_set( watt->cmd_input, "visible", FALSE, NULL);
watt->wattnav->set_inputfocus(); watt->wattnav->set_inputfocus();
textutf8 = gtk_editable_get_chars( GTK_EDITABLE(w), 0, -1); textutf8 = gtk_editable_get_chars( GTK_EDITABLE(w), 0, -1);
...@@ -369,6 +378,9 @@ void WAttGtk::activate_cmd_input( GtkWidget *w, gpointer data) ...@@ -369,6 +378,9 @@ void WAttGtk::activate_cmd_input( GtkWidget *w, gpointer data)
} }
g_free( text); g_free( text);
g_object_set( watt->cmd_prompt, "visible", FALSE, NULL);
g_object_set( watt->cmd_input, "visible", FALSE, NULL);
if ( watt->pending_close) { if ( watt->pending_close) {
if ( watt->close_cb) if ( watt->close_cb)
(watt->close_cb)( watt); (watt->close_cb)( watt);
...@@ -584,10 +596,13 @@ WAttGtk::WAttGtk( ...@@ -584,10 +596,13 @@ WAttGtk::WAttGtk(
cmd_prompt = gtk_label_new( "value > "); cmd_prompt = gtk_label_new( "value > ");
gtk_widget_set_size_request( cmd_prompt, -1, 25); gtk_widget_set_size_request( cmd_prompt, -1, 25);
cmd_entry = new CoWowEntryGtk( &value_recall); cmd_entry = new CoWowEntryGtk( &value_recall);
cmd_entry->set_hide_on_esc(true);
cmd_input = cmd_entry->widget(); cmd_input = cmd_entry->widget();
gtk_widget_set_size_request( cmd_input, -1, 25); gtk_widget_set_size_request( cmd_input, -1, 25);
g_signal_connect( cmd_input, "activate", g_signal_connect( cmd_input, "activate",
G_CALLBACK(activate_cmd_input), this); G_CALLBACK(activate_cmd_input), this);
g_signal_connect( cmd_input, "hide",
G_CALLBACK(hide_cmd_input), this);
gtk_box_pack_start( GTK_BOX(statusbar), msg_label, FALSE, FALSE, 0); gtk_box_pack_start( GTK_BOX(statusbar), msg_label, FALSE, FALSE, 0);
gtk_box_pack_start( GTK_BOX(statusbar), cmd_prompt, FALSE, FALSE, 0); gtk_box_pack_start( GTK_BOX(statusbar), cmd_prompt, FALSE, FALSE, 0);
......
...@@ -96,6 +96,7 @@ class WAttGtk : public WAtt { ...@@ -96,6 +96,7 @@ class WAttGtk : public WAtt {
static void activate_cmd_scrolled_ok( GtkWidget *w, gpointer data); static void activate_cmd_scrolled_ok( GtkWidget *w, gpointer data);
static void activate_cmd_scrolled_ca( GtkWidget *w, gpointer data); static void activate_cmd_scrolled_ca( GtkWidget *w, gpointer data);
static void action_text_inserted( GtkTextBuffer *w, GtkTextIter *arg1, gchar *arg2, gint arg3, gpointer data); static void action_text_inserted( GtkTextBuffer *w, GtkTextIter *arg1, gchar *arg2, gint arg3, gpointer data);
static void hide_cmd_input( GtkWidget *w, gpointer data);
}; };
#endif #endif
......
...@@ -1541,6 +1541,31 @@ gboolean WttGtk::action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data ...@@ -1541,6 +1541,31 @@ gboolean WttGtk::action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data
return FALSE; return FALSE;
} }
gboolean WttGtk::focused_cmd_input( GtkWidget *w, GdkEvent *event, gpointer data)
{
WttGtk *wtt = (WttGtk *)data;
if ( wtt->accel_g->acceleratables)
gtk_window_remove_accel_group( GTK_WINDOW(wtt->toplevel), wtt->accel_g);
return FALSE;
}
gboolean WttGtk::hide_cmd_input( GtkWidget *w, gpointer data)
{
WttGtk *wtt = (WttGtk *)data;
if ( wtt->input_open) {
wtt->input_wnav->select_object( wtt->input_node);
wtt->set_prompt( "");
wtt->input_open = 0;
gtk_window_add_accel_group( GTK_WINDOW(wtt->toplevel), wtt->accel_g);
}
else if ( wtt->command_open)
gtk_window_add_accel_group( GTK_WINDOW(wtt->toplevel), wtt->accel_g);
return FALSE;
}
void WttGtk::open_input_dialog( const char *text, const char *title, void WttGtk::open_input_dialog( const char *text, const char *title,
const char *init_text, const char *init_text,
void (*ok_cb)( Wtt *, char *)) void (*ok_cb)( Wtt *, char *))
...@@ -2145,7 +2170,7 @@ WttGtk::WttGtk( ...@@ -2145,7 +2170,7 @@ WttGtk::WttGtk(
CoWowGtk::SetWindowIcon( toplevel); CoWowGtk::SetWindowIcon( toplevel);
GtkAccelGroup *accel_g = (GtkAccelGroup *) g_object_new(GTK_TYPE_ACCEL_GROUP, NULL); accel_g = (GtkAccelGroup *) g_object_new(GTK_TYPE_ACCEL_GROUP, NULL);
gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_g); gtk_window_add_accel_group(GTK_WINDOW(toplevel), accel_g);
GtkMenuBar *menu_bar = (GtkMenuBar *) g_object_new(GTK_TYPE_MENU_BAR, NULL); GtkMenuBar *menu_bar = (GtkMenuBar *) g_object_new(GTK_TYPE_MENU_BAR, NULL);
...@@ -2855,10 +2880,15 @@ WttGtk::WttGtk( ...@@ -2855,10 +2880,15 @@ WttGtk::WttGtk(
cmd_prompt = gtk_label_new( "value > "); cmd_prompt = gtk_label_new( "value > ");
gtk_widget_set_size_request( cmd_prompt, -1, 25); gtk_widget_set_size_request( cmd_prompt, -1, 25);
cmd_entry = new CoWowEntryGtk( &cmd_recall); cmd_entry = new CoWowEntryGtk( &cmd_recall);
cmd_entry->set_hide_on_esc( true);
cmd_input = cmd_entry->widget(); cmd_input = cmd_entry->widget();
gtk_widget_set_size_request( cmd_input, -1, 25); gtk_widget_set_size_request( cmd_input, -1, 25);
g_signal_connect( cmd_input, "activate", g_signal_connect( cmd_input, "activate",
G_CALLBACK(WttGtk::valchanged_cmd_input), this); G_CALLBACK(WttGtk::valchanged_cmd_input), this);
g_signal_connect( cmd_input, "focus-in-event",
G_CALLBACK(WttGtk::focused_cmd_input), this);
g_signal_connect( cmd_input, "hide",
G_CALLBACK(WttGtk::hide_cmd_input), this);
gtk_box_pack_start( GTK_BOX(statusbar), msg_label, FALSE, FALSE, 20); gtk_box_pack_start( GTK_BOX(statusbar), msg_label, FALSE, FALSE, 20);
gtk_box_pack_start( GTK_BOX(statusbar), cmd_prompt, FALSE, FALSE, 20); gtk_box_pack_start( GTK_BOX(statusbar), cmd_prompt, FALSE, FALSE, 20);
......
...@@ -128,6 +128,7 @@ class WttGtk : public Wtt { ...@@ -128,6 +128,7 @@ class WttGtk : public Wtt {
GtkWidget *tools_edit_w; GtkWidget *tools_edit_w;
GtkWidget *tools_buildnode_w; GtkWidget *tools_buildnode_w;
GtkWidget *tools_save_w; GtkWidget *tools_save_w;
GtkAccelGroup *accel_g;
int set_focus_disabled; int set_focus_disabled;
gint disfocus_timerid; gint disfocus_timerid;
gint selection_timerid; gint selection_timerid;
...@@ -281,6 +282,8 @@ class WttGtk : public Wtt { ...@@ -281,6 +282,8 @@ class WttGtk : public Wtt {
static void reset_avoid_deadlock( Wtt *wtt); static void reset_avoid_deadlock( Wtt *wtt);
static void set_avoid_deadlock( Wtt *wtt, int time); static void set_avoid_deadlock( Wtt *wtt, int time);
static gboolean action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data); static gboolean action_inputfocus( GtkWidget *w, GdkEvent *event, gpointer data);
static gboolean focused_cmd_input( GtkWidget *w, GdkEvent *event, gpointer data);
static gboolean hide_cmd_input( GtkWidget *w, gpointer data);
static void menu_position_func( GtkMenu *menu, gint *x, gint *y, gboolean *push_in, static void menu_position_func( GtkMenu *menu, gint *x, gint *y, gboolean *push_in,
gpointer data); gpointer data);
static void popup_button_cb( GtkWidget *w, gpointer data); static void popup_button_cb( GtkWidget *w, gpointer data);
......
...@@ -1153,6 +1153,11 @@ gboolean CoWowEntryGtk::event_cb( GtkWidget *w, GdkEvent *event, gpointer data) ...@@ -1153,6 +1153,11 @@ gboolean CoWowEntryGtk::event_cb( GtkWidget *w, GdkEvent *event, gpointer data)
sts = TRUE; sts = TRUE;
break; break;
} }
case GDK_Escape:
if ( en->m_hide_on_esc)
gtk_widget_hide( w);
sts = FALSE;
break;
default: default:
sts = FALSE; sts = FALSE;
} }
......
...@@ -68,6 +68,7 @@ class CoWowEntryGtk { ...@@ -68,6 +68,7 @@ class CoWowEntryGtk {
CoWowRecall *m_re; CoWowRecall *m_re;
GtkWidget *w; GtkWidget *w;
bool m_re_alloc; bool m_re_alloc;
bool m_hide_on_esc;
CoWowEntryGtk( CoWowRecall *re = 0); CoWowEntryGtk( CoWowRecall *re = 0);
~CoWowEntryGtk(); ~CoWowEntryGtk();
...@@ -76,6 +77,9 @@ class CoWowEntryGtk { ...@@ -76,6 +77,9 @@ class CoWowEntryGtk {
if ( !m_re_alloc) if ( !m_re_alloc)
m_re = re; m_re = re;
} }
void set_hide_on_esc( bool hide) {
m_hide_on_esc = hide;
}
static gboolean event_cb( GtkWidget *w, GdkEvent *event, gpointer data); static gboolean event_cb( GtkWidget *w, GdkEvent *event, gpointer data);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment