Add and enable Trinity executable completion in the run dialog

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1258884 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 13 years ago
parent d9e84b4dc9
commit 18a6097313

@ -371,6 +371,13 @@
<!-- minicli.cpp:216 -->
<!-- m_dlg->cbAutocomplete->setChecked( KDesktopSettings::miniCLIFilesystemAutoComplete() ); -->
</entry>
<entry key="MiniCLISystempathAutoComplete" type="Bool">
<default>true</default>
<label></label>
<whatsthis></whatsthis>
<!-- minicli.cpp:216 -->
<!-- m_dlg->cbAutocomplete->setChecked( KDesktopSettings::miniCLISystempathAutoComplete() ); -->
</entry>
<entry key="MiniCLIHistoryAndFilesystemAutoComplete" type="Bool">
<default>false</default>
<label></label>

@ -77,10 +77,8 @@
Minicli::Minicli( TQWidget *parent, const char *name)
:KDialog( parent, name, false, (WFlags)WType_TopLevel ),
m_autoCheckedRunInTerm(false)
m_autoCheckedRunInTerm(false), m_pURLCompletion(NULL), m_pEXECompletion(NULL)
{
m_pURLCompletion = 0L;
setPlainCaption( i18n("Run Command") );
KWin::setIcons( winId(), DesktopIcon("run"), SmallIcon("run") );
@ -129,9 +127,12 @@ Minicli::Minicli( TQWidget *parent, const char *name)
// Autocomplete system
m_filesystemAutocomplete = 0;
m_histfilesystemAutocomplete = 0;
m_pURLCompletion = new KURLCompletion();
m_systempathAutocomplete = 1;
m_pURLCompletion = new KURLCompletion(KURLCompletion::FileCompletion);
m_pEXECompletion = new KURLCompletion(KURLCompletion::SystemExeCompletion);
//m_pURLCompletion->setCompletionMode( KGlobalSettings::completionMode() );
connect( m_pURLCompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotMatch(const TQString&) ));
connect( m_pEXECompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotEXEMatch(const TQString&) ));
// Main widget buttons...
connect( m_dlg->pbRun, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) );
@ -167,6 +168,7 @@ Minicli::~Minicli()
{
delete m_filterData;
delete m_pURLCompletion;
delete m_pEXECompletion;
}
void Minicli::setCommand(const TQString& command)
@ -220,6 +222,7 @@ void Minicli::loadConfig()
m_dlg->cbAutohistory->setChecked( KDesktopSettings::miniCLIHistoryAndFilesystemAutoComplete() );
m_filesystemAutocomplete = KDesktopSettings::miniCLIFilesystemAutoComplete();
m_systempathAutocomplete = KDesktopSettings::miniCLISystempathAutoComplete();
m_histfilesystemAutocomplete = KDesktopSettings::miniCLIHistoryAndFilesystemAutoComplete();
if (m_histfilesystemAutocomplete == true) {
@ -275,6 +278,7 @@ void Minicli::saveConfig()
//KDesktopSettings::setCompletionItems( m_dlg->cbCommand->completionObject()->items() );
KDesktopSettings::setCompletionMode( m_dlg->cbCommand->completionMode() );
KDesktopSettings::setMiniCLIFilesystemAutoComplete( m_filesystemAutocomplete );
KDesktopSettings::setMiniCLISystempathAutoComplete( m_systempathAutocomplete );
KDesktopSettings::setMiniCLIHistoryAndFilesystemAutoComplete( m_histfilesystemAutocomplete );
KDesktopSettings::writeConfig();
}
@ -678,6 +682,15 @@ void Minicli::slotCmdChanged(const TQString& text)
TQString completion = m_pURLCompletion->makeCompletion( text );
}
}
if ((m_systempathAutocomplete == true) && ( m_pEXECompletion )) {
// Attempt to autocomplete the entered URL if it starts with the / character, meaning I am looking for something on the filesystem
// Also use autocompletion if it appears that I am using some kind of ioslave, except the http:// ioslave
m_exeCompletionStarted = true; // flag for slotEXEMatch()
if (!((text.startsWith( "/" ) || text.startsWith( "~" ) || (text.contains("://", false) != 0)) && (text.contains("http://", false) == 0))) {
TQString completion = m_pEXECompletion->makeCompletion( text );
}
}
m_parseTimer->start(250, true);
}
@ -721,6 +734,45 @@ void Minicli::slotMatch( const TQString &match )
}
}
// Handle match() from m_pEXECompletion
void Minicli::slotEXEMatch( const TQString &match )
{
TQString current_text;
TQStringList histList = KDesktopSettings::history();
int maxHistory = KDesktopSettings::historyLength();
int maxAutocompletion = KDesktopSettings::miniCLIAutocompletionLength();
if ( match.isEmpty() ) // this case is handled directly
return;
// Check flag to avoid match() raised by rotation
if ( m_exeCompletionStarted ) {
m_exeCompletionStarted = false;
if (m_systempathAutocomplete == true) {
bool block = m_dlg->cbCommand->signalsBlocked();
m_dlg->cbCommand->blockSignals( true );
TQStringList items = m_pEXECompletion->allMatches();
items.sort();
if (m_histfilesystemAutocomplete == true) {
// Add the history to the list
histList += items;
maxHistory += maxAutocompletion;
}
else {
histList = items;
maxHistory = maxAutocompletion;
}
current_text = m_dlg->cbCommand->currentText();
//histList.prepend ( current_text ); // Add the current text to the autocompletion list
m_dlg->cbCommand->setMaxCount( maxHistory );
m_dlg->cbCommand->completionObject()->setItems( histList );
m_dlg->cbCommand->setCurrentText( current_text );
m_dlg->cbCommand->blockSignals( block );
}
}
}
void Minicli::slotAdvanced()
{
if (m_dlg->gbAdvanced->isHidden())

@ -85,6 +85,7 @@ private slots:
void slotChangeScheduler(bool);
void slotCmdChanged(const TQString&);
void slotMatch( const TQString&);
void slotEXEMatch( const TQString&);
private:
void setIcon();
@ -118,8 +119,11 @@ private:
// Autocomplete
KURLCompletion *m_pURLCompletion;
KURLCompletion *m_pEXECompletion;
bool m_filesystemAutocomplete;
bool m_systempathAutocomplete;
bool m_histfilesystemAutocomplete;
bool m_urlCompletionStarted;
bool m_exeCompletionStarted;
};
#endif

Loading…
Cancel
Save