gboolean on_entry_key_press_event(GtkEntry *entry, GdkEvent *event) { guint k = GDK_KEY_VoidSymbol; gdk_event_get_keyval(event, &k); GdkModifierType s; gdk_event_get_state(event, &s); #define KEY(S) (k == S) #define CTRL(S) (KEY(S) && s & GDK_CONTROL_MASK) #define SHIFT(S) (KEY(S) && s & GDK_SHIFT_MASK) if (KEY(GDK_KEY_Escape) || CTRL(GDK_KEY_c)) gtk_main_quit(); else if (KEY(GDK_KEY_Tab) || CTRL(GDK_KEY_i)) gtk_entry_set_text(entry, row_text(selected_row())); else if (KEY(GDK_KEY_Down) || CTRL(GDK_KEY_f)) select_row(selected_row() + 1); else if (KEY(GDK_KEY_Up) || CTRL(GDK_KEY_b)) select_row(selected_row() - 1); else if (KEY(GDK_KEY_Return) || CTRL(GDK_KEY_j)) output(row_text(selected_row())); else if (SHIFT(GDK_KEY_Return) || CTRL(GDK_KEY_J)) output(entry_text()); return FALSE; }
void LinearEditDialog::accept() { std::vector< std::pair<size_t,double> > linear_values; size_t nRows = tableWidget->rowCount(); for (size_t i=0; i<nRows; i++) { QString row_text (tableWidget->item(i,0)->text()); if (row_text.length()>0) linear_values.push_back( std::pair<size_t, double>(i, row_text.toDouble()) ); } emit transmitDisValues(linear_values); this->done(QDialog::Accepted); }