From 8b67744f49f47a0438e7923b6ba238a47da073c2 Mon Sep 17 00:00:00 2001 From: andreas <andreas@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Wed, 12 May 2010 18:27:31 +0000 Subject: [PATCH] fixed history problems in new python shell / added matlab style history browsing git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/branches/new_shell@2252 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- .../src/python_shell/python_shell_widget.cc | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/modules/gui/src/python_shell/python_shell_widget.cc b/modules/gui/src/python_shell/python_shell_widget.cc index 0a0c7726f..404633e58 100644 --- a/modules/gui/src/python_shell/python_shell_widget.cc +++ b/modules/gui/src/python_shell/python_shell_widget.cc @@ -180,8 +180,8 @@ void PythonShellWidget::setup_state_machine_() new BlockStatusGuard(this,CODE_BLOCK_INCOMPLETE)); single_line->addTransition(tr3); connect(tr3,SIGNAL(triggered()),this,SLOT(OnEnterTransition())); - single_line->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::NoModifier,history_up)); - single_line->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::NoModifier,history_down)); + single_line->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::KeypadModifier,history_up)); + single_line->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::KeypadModifier,history_down)); KeyEventTransition* tr4=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Return, @@ -198,11 +198,11 @@ void PythonShellWidget::setup_state_machine_() new BlockStatusGuard(this,CODE_BLOCK_INCOMPLETE)); multi_line_inactive->addTransition(tr6); connect(tr6,SIGNAL(triggered()),this,SLOT(OnEnterTransition())); - multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Left,Qt::NoModifier,multiline_active_state_)); - multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Right,Qt::NoModifier,multiline_active_state_)); + multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Left,Qt::KeypadModifier,multiline_active_state_)); + multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Right,Qt::KeypadModifier,multiline_active_state_)); multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Return,Qt::ControlModifier,multiline_active_state_)); - multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::NoModifier,history_up)); - multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::NoModifier,history_down)); + multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::KeypadModifier,history_up)); + multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::KeypadModifier,history_down)); KeyEventTransition* tr7=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Return, @@ -221,8 +221,8 @@ void PythonShellWidget::setup_state_machine_() connect(tr8,SIGNAL(triggered()),this,SLOT(OnEnterTransition())); multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Escape,Qt::NoModifier,multi_line_inactive)); - multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::ControlModifier,history_up)); - multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::ControlModifier,history_down)); + multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::ControlModifier | Qt::KeypadModifier,history_up)); + multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::ControlModifier | Qt::KeypadModifier,history_down)); history_up->addTransition(new AutomaticTransition(multi_line_inactive,new HistoryGuard(&history_,EDITMODE_MULTILINE_INACTIVE))); history_up->addTransition(new AutomaticTransition(single_line,new HistoryGuard(&history_,EDITMODE_SINGLELINE))); @@ -280,13 +280,16 @@ void PythonShellWidget::OnMultiLineInactiveStateEntered() } void PythonShellWidget::OnHistoryUpStateEntered() { - --history_; + if(history_.AtEnd()){ + history_.SetCurrentCommand(GetCommand(),get_block_edit_mode_()); + } + history_.MoveToPreviousMatch(); set_command_(history_.GetCommand()); set_block_edit_mode_(history_.GetCommandMode()); } void PythonShellWidget::OnHistoryDownStateEntered() { - ++history_; + history_.MoveToNextMatch(); set_command_(history_.GetCommand()); set_block_edit_mode_(history_.GetCommandMode()); } -- GitLab