summaryrefslogtreecommitdiffstats
path: root/tqt/tqextscintillaapis.cpp
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2021-12-09 01:40:38 +0100
committerSlávek Banko <slavek.banko@axis.cz>2021-12-09 02:07:16 +0100
commit347f0b28701932eba7eb063d9093e446b81debae (patch)
treeb6941843b550f83221b13a3b2643b5a95cd428db /tqt/tqextscintillaapis.cpp
parent5da5cb1c824c608159126a82011d8a8943b360e0 (diff)
downloadtqscintilla-347f0b28701932eba7eb063d9093e446b81debae.tar.gz
tqscintilla-347f0b28701932eba7eb063d9093e446b81debae.zip
Rename Qt => TQt.
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'tqt/tqextscintillaapis.cpp')
-rw-r--r--tqt/tqextscintillaapis.cpp213
1 files changed, 213 insertions, 0 deletions
diff --git a/tqt/tqextscintillaapis.cpp b/tqt/tqextscintillaapis.cpp
new file mode 100644
index 0000000..635b439
--- /dev/null
+++ b/tqt/tqextscintillaapis.cpp
@@ -0,0 +1,213 @@
+// This module implements the TQextScintillaAPIs class.
+//
+// Copyright (c) 2006
+// Riverbank Computing Limited <info@riverbankcomputing.co.uk>
+//
+// This file is part of TQScintilla.
+//
+// This copy of TQScintilla is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option) any
+// later version.
+//
+// TQScintilla is supplied in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+// details.
+//
+// You should have received a copy of the GNU General Public License along with
+// TQScintilla; see the file LICENSE. If not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <tqfile.h>
+#include <tqregexp.h>
+
+#include "tqextscintillaapis.h"
+
+
+// The ctor.
+TQextScintillaAPIs::TQextScintillaAPIs() : sorted(TRUE), ctcursor(0)
+{
+}
+
+
+// The dtor.
+TQextScintillaAPIs::~TQextScintillaAPIs()
+{
+}
+
+
+// Clear out all API information.
+bool TQextScintillaAPIs::load(const TQString &fname)
+{
+ TQFile f(fname);
+
+ if (!f.open(IO_ReadOnly))
+ return FALSE;
+
+ TQTextStream ts(&f);
+
+ for (;;)
+ {
+ TQString line = ts.readLine();
+
+ if (line.isNull())
+ break;
+
+ apis.append(line);
+ }
+
+ sorted = FALSE;
+
+ return TRUE;
+}
+
+
+// Add a single API entry.
+void TQextScintillaAPIs::add(const TQString &entry)
+{
+ apis.append(entry);
+ sorted = FALSE;
+}
+
+
+// Clear out all API information.
+void TQextScintillaAPIs::clear()
+{
+ apis.clear();
+ sorted = TRUE;
+}
+
+
+// Add auto-completion words to an existing list.
+void TQextScintillaAPIs::autoCompletionList(const TQString &starts, bool cs,
+ TQStringList &wlist)
+{
+ ensureSorted();
+
+ TQStringList::ConstIterator it = apis.begin();
+
+ // Find the first match in the sorted list.
+ while (it != apis.end())
+ {
+ if ((*it).find(starts, 0, cs) == 0)
+ break;
+
+ ++it;
+ }
+
+ TQString prev;
+
+ while (it != apis.end())
+ {
+ if ((*it).find(starts, 0, cs) != 0)
+ break;
+
+ TQString w = (*it).section('(', 0, 0);
+
+ if (w != prev)
+ {
+ if (wlist.findIndex(w) < 0)
+ wlist.append(w);
+
+ prev = w;
+ }
+
+ ++it;
+ }
+}
+
+
+// Return the call tip for a function.
+TQString TQextScintillaAPIs::callTips(const TQString &function,int maxnr,
+ int commas)
+{
+ ensureSorted();
+
+ TQStringList::ConstIterator it;
+
+ // Find the first match in the sorted list.
+ for (it = apis.begin(); it != apis.end(); ++it)
+ if ((*it).startsWith(function))
+ break;
+
+ TQStringList cts;
+ TQString prev;
+
+ while (it != apis.end() && (*it).startsWith(function))
+ {
+ if (maxnr > 0 && maxnr == cts.count())
+ break;
+
+ TQString w = *it;
+
+ // Remove any image ID used by auto-completion.
+ w.replace(TQRegExp("\\?[^(]*"),"");
+
+ if (w.find('(') == function.length() && w.contains(',') >= commas && w != prev)
+ {
+ cts.append(w);
+ prev = w;
+ }
+
+ ++it;
+ }
+
+ // See if we want to add a down arrow.
+ if (maxnr < 0 && cts.count() > 1)
+ {
+ // Remember the state so we can scroll through it later.
+ ctlist = cts;
+ ctcursor = 0;
+
+ TQString ct = cts[0];
+
+ ct.prepend('\002');
+
+ return ct;
+ }
+
+ ctlist.clear();
+
+ return cts.join("\n");
+}
+
+
+// Return the next or previous call tip.
+TQString TQextScintillaAPIs::callTipsNextPrev(int dir)
+{
+ TQString ct;
+
+ // Get the call tip.
+ if (dir == 1 && ctcursor > 0)
+ ct = ctlist[--ctcursor];
+ else if (dir == 2 && ctcursor < ctlist.count() - 1)
+ ct = ctlist[++ctcursor];
+
+ // Add the arrows.
+ if (!ct.isNull())
+ {
+ if (ctcursor < ctlist.count() - 1)
+ ct.prepend('\002');
+
+ if (ctcursor > 0)
+ ct.prepend('\001');
+ }
+
+ return ct;
+}
+
+
+// Ensure the list is sorted.
+void TQextScintillaAPIs::ensureSorted()
+{
+ if (!sorted)
+ {
+ apis.sort();
+ sorted = TRUE;
+ }
+}