diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2021-12-09 01:40:38 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2021-12-09 02:07:16 +0100 |
commit | 347f0b28701932eba7eb063d9093e446b81debae (patch) | |
tree | b6941843b550f83221b13a3b2643b5a95cd428db /tqt/tqextscintillaapis.cpp | |
parent | 5da5cb1c824c608159126a82011d8a8943b360e0 (diff) | |
download | tqscintilla-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.cpp | 213 |
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; + } +} |