summaryrefslogtreecommitdiffstats
path: root/kjsembed/kscript/swaptabs.js
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit90825e2392b2d70e43c7a25b8a3752299a933894 (patch)
treee33aa27f02b74604afbfd0ea4f1cfca8833d882a /kjsembed/kscript/swaptabs.js
downloadtdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz
tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kjsembed/kscript/swaptabs.js')
-rw-r--r--kjsembed/kscript/swaptabs.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/kjsembed/kscript/swaptabs.js b/kjsembed/kscript/swaptabs.js
new file mode 100644
index 00000000..6adbc2c3
--- /dev/null
+++ b/kjsembed/kscript/swaptabs.js
@@ -0,0 +1,75 @@
+#!/usr/bin/env kjscmd
+var appID = "kate";
+StdDirs.addResourceType("swaptabs", StdDirs.kde_default("data") + "/kate/scripts");
+
+var client = new DCOPClient();
+var config = new Config( this, "swaptabsrc" );
+var documentIndex = client.call(appID, "KateDocumentManager", "activeDocumentNumber()");
+var ui = StdDirs.findResource("swaptabs","swaptabs.ui");
+var dlg = Factory.loadui(ui);
+
+// Load prefs
+dlg.count.value = config.readNumEntry("Spaces", 8 );
+dlg.swap.selectedId = config.readNumEntry("Mode", 0 );
+
+if( dlg.exec() == 1 )
+{
+ var spaces = dlg.count.value;
+
+ var sourceText;
+ var destText;
+ if( dlg.selection.checked )
+ sourceText = client.call(appID, "SelectionInterface#" + documentIndex, "selection()");
+ else
+ sourceText = client.call(appID, "EditInterface#" + documentIndex, "text()");
+
+ if( dlg.swap.selectedId == 0 )
+ destText = replaceSpaces( spaces, sourceText );
+ else
+ destText = replaceTabs( spaces, sourceText );
+
+ if( dlg.selection.checked )
+ {
+ if( client.call(appID, "SelectionInterface#" + documentIndex, "hasSelection()") )
+ {
+ var startLine = client.call(appID, "SelectionInterfaceExt#" + documentIndex, "selStartLine()");
+ var startCol = client.call(appID, "SelectionInterfaceExt#" + documentIndex, "selStartCol()");
+ client.call(appID, "SelectionInterface#" + documentIndex, "removeSelectedText()");
+ client.call(appID, "SelectionInterface#" + documentIndex, "clearSelection()");
+ client.call(appID, "EditInterface#" + documentIndex, "insertText(uint,uint,QString)", startLine, startCol, destText);
+ }
+ else
+ {
+ alert("You must first select text.");
+ return false;
+ }
+ }
+ else
+ client.call(appID, "EditInterface#" + documentIndex, "setText(QString)", destText );
+
+ // save prefs
+ config.writeNumEntry("Spaces", dlg.count.value );
+ config.writeNumEntry("Mode", dlg.swap.selectedId );
+}
+
+function replaceSpaces( count, text )
+{
+ var regExp = new RegExp("[ ]{"+count+","+count+"}", "g");
+ regExp.mulitline = true;
+
+ returnText = text.replace( regExp, "\t");
+ return returnText;
+}
+
+function replaceTabs( count, text )
+{
+
+ var regExp = new RegExp("[\t]","g");
+ regExp.mulitline = true;
+
+ var spaces = "";
+ for( var idx = 0; idx < count; ++idx)
+ spaces += " ";
+ returnText = text.replace( regExp, spaces);
+ return returnText;
+}