Skip to content
Snippets Groups Projects
Commit 0547d000 authored by andreas's avatar andreas
Browse files

fix for path completion on Windows / fix for keypad enter in shell for Linux/Windows

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2441 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 27dd05f1
No related branches found
No related tags found
No related merge requests found
...@@ -208,8 +208,10 @@ void PythonShellWidget::setup_state_machine_() ...@@ -208,8 +208,10 @@ void PythonShellWidget::setup_state_machine_()
{ {
#ifdef __APPLE__ #ifdef __APPLE__
QFlags<Qt::KeyboardModifier> DNG_ARROW_MODIFIERS = Qt::KeypadModifier; QFlags<Qt::KeyboardModifier> DNG_ARROW_MODIFIERS = Qt::KeypadModifier;
QFlags<Qt::KeyboardModifier> DNG_ENTER_MODIFIERS = Qt::NoModifier;
#else #else
QFlags<Qt::KeyboardModifier> DNG_ARROW_MODIFIERS = Qt::NoModifier; QFlags<Qt::KeyboardModifier> DNG_ARROW_MODIFIERS = Qt::NoModifier;
QFlags<Qt::KeyboardModifier> DNG_ENTER_MODIFIERS = Qt::KeypadModifier;
#endif #endif
State* single_line=new State; State* single_line=new State;
State* multi_line_inactive=new State; State* multi_line_inactive=new State;
...@@ -248,21 +250,21 @@ void PythonShellWidget::setup_state_machine_() ...@@ -248,21 +250,21 @@ void PythonShellWidget::setup_state_machine_()
single_line->addTransition(tr3); single_line->addTransition(tr3);
KeyEventTransition* keypad_enter1=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter1=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::NoModifier, DNG_ENTER_MODIFIERS| Qt::NoModifier,
multiline_active_state_, multiline_active_state_,
true); true);
single_line->addTransition(keypad_enter1); single_line->addTransition(keypad_enter1);
connect(keypad_enter1,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); connect(keypad_enter1,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition()));
KeyEventTransition* keypad_enter2=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter2=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::ShiftModifier, DNG_ENTER_MODIFIERS| Qt::ShiftModifier,
multiline_active_state_, multiline_active_state_,
true); true);
single_line->addTransition(keypad_enter2); single_line->addTransition(keypad_enter2);
connect(keypad_enter2,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); connect(keypad_enter2,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition()));
KeyEventTransition* keypad_enter3=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter3=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::MetaModifier, DNG_ENTER_MODIFIERS| Qt::MetaModifier,
multiline_active_state_, multiline_active_state_,
true); true);
single_line->addTransition(keypad_enter3); single_line->addTransition(keypad_enter3);
...@@ -306,21 +308,21 @@ void PythonShellWidget::setup_state_machine_() ...@@ -306,21 +308,21 @@ void PythonShellWidget::setup_state_machine_()
multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,DNG_ARROW_MODIFIERS,history_down)); multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,DNG_ARROW_MODIFIERS,history_down));
KeyEventTransition* keypad_enter4=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter4=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::NoModifier, DNG_ENTER_MODIFIERS| Qt::NoModifier,
multiline_active_state_, multiline_active_state_,
true); true);
multi_line_inactive->addTransition(keypad_enter4); multi_line_inactive->addTransition(keypad_enter4);
connect(keypad_enter4,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); connect(keypad_enter4,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition()));
KeyEventTransition* keypad_enter5=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter5=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::ShiftModifier, DNG_ENTER_MODIFIERS| Qt::ShiftModifier,
multiline_active_state_, multiline_active_state_,
true); true);
multi_line_inactive->addTransition(keypad_enter5); multi_line_inactive->addTransition(keypad_enter5);
connect(keypad_enter5,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); connect(keypad_enter5,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition()));
KeyEventTransition* keypad_enter6=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter6=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::MetaModifier, DNG_ENTER_MODIFIERS | Qt::MetaModifier,
multiline_active_state_, multiline_active_state_,
true); true);
multi_line_inactive->addTransition(keypad_enter6); multi_line_inactive->addTransition(keypad_enter6);
...@@ -358,21 +360,21 @@ void PythonShellWidget::setup_state_machine_() ...@@ -358,21 +360,21 @@ void PythonShellWidget::setup_state_machine_()
multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::ControlModifier | DNG_ARROW_MODIFIERS,history_down)); multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::ControlModifier | DNG_ARROW_MODIFIERS,history_down));
KeyEventTransition* keypad_enter7=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter7=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::NoModifier, DNG_ENTER_MODIFIERS | Qt::NoModifier,
multiline_active_state_, multiline_active_state_,
true); true);
multiline_active_state_->addTransition(keypad_enter7); multiline_active_state_->addTransition(keypad_enter7);
connect(keypad_enter7,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); connect(keypad_enter7,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition()));
KeyEventTransition* keypad_enter8=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter8=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::ShiftModifier, DNG_ENTER_MODIFIERS | Qt::ShiftModifier,
multiline_active_state_, multiline_active_state_,
true); true);
multiline_active_state_->addTransition(keypad_enter8); multiline_active_state_->addTransition(keypad_enter8);
connect(keypad_enter8,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); connect(keypad_enter8,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition()));
KeyEventTransition* keypad_enter9=new KeyEventTransition(QEvent::KeyPress, KeyEventTransition* keypad_enter9=new KeyEventTransition(QEvent::KeyPress,
Qt::Key_Enter, Qt::Key_Enter,
Qt::MetaModifier, DNG_ENTER_MODIFIERS | Qt::MetaModifier,
multiline_active_state_, multiline_active_state_,
true); true);
multiline_active_state_->addTransition(keypad_enter9); multiline_active_state_->addTransition(keypad_enter9);
...@@ -529,12 +531,12 @@ void PythonShellWidget::InsertCompletion(const QString& completion) ...@@ -529,12 +531,12 @@ void PythonShellWidget::InsertCompletion(const QString& completion)
} }
void PythonShellWidget::InsertPathCompletion(const QString& completion) void PythonShellWidget::InsertPathCompletion(const QString& completion)
{ {
QString path=completion; QString path=QDir::fromNativeSeparators(completion);
// append dir separator for directories if none present (Windows adds it already for the inline completion) // append dir separator for directories if none present (Windows adds it already for the inline completion)
if(QFileInfo(path).isDir() && ! completion.endsWith(QDir::separator())){ if(QFileInfo(path).isDir() && ! completion.endsWith("/")){
path+="/"; path+="/";
} }
InsertCompletion(QDir::toNativeSeparators(path)); InsertCompletion(path);
} }
...@@ -638,16 +640,16 @@ void PythonShellWidget::Complete(bool inline_completion) ...@@ -638,16 +640,16 @@ void PythonShellWidget::Complete(bool inline_completion)
completion_end_=positions->GetEnd(literal_index); completion_end_=positions->GetEnd(literal_index);
QTextCursor cp=textCursor(); QTextCursor cp=textCursor();
QString text=cursor.selectedText(); QString text=cursor.selectedText();
int sep=text.lastIndexOf(QDir::separator()); int sep=text.lastIndexOf("/");
cp.setPosition(positions->GetStart(literal_index)); cp.setPosition(positions->GetStart(literal_index));
if (sep!=-1) { if (sep!=-1) {
cp.movePosition(QTextCursor::NextCharacter, cp.movePosition(QTextCursor::NextCharacter,
QTextCursor::MoveAnchor, sep); QTextCursor::MoveAnchor, sep);
} }
if (QDir(text).isAbsolute()) { if (QDir(text).isAbsolute()) {
emit SetPathCompletionPrefix(QDir::fromNativeSeparators(text)); emit SetPathCompletionPrefix(text);
} else { } else {
emit SetPathCompletionPrefix(QDir::currentPath()+"/"+QDir::fromNativeSeparators(text)); emit SetPathCompletionPrefix(QDir::currentPath()+"/"+text);
} }
emit RequestPathCompletion(cursorRect(cp), emit RequestPathCompletion(cursorRect(cp),
inline_completion); inline_completion);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment