[GB.QT4.EXT]

* NEW: Editor.ShowWord() is a new method that highlights a piece of text on 
  a specific line. 


git-svn-id: svn://localhost/gambas/trunk@2028 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
Benoît Minisini 2009-06-19 11:01:24 +00:00
parent 32bf31484c
commit c62f94adc3
2 changed files with 22 additions and 2 deletions

View File

@ -128,6 +128,9 @@ GEditor::GEditor(QWidget *parent)
flashed = false; flashed = false;
painting = false; painting = false;
_showStringIgnoreCase = false; _showStringIgnoreCase = false;
_showRow = -1;
_showCol = 0;
_showLen = 0;
for (i = 0; i < GLine::NUM_STATE; i++) for (i = 0; i < GLine::NUM_STATE; i++)
{ {
@ -502,6 +505,13 @@ void GEditor::paintShowString(QPainter &p, GLine *l, int x, int y, int xmin, int
p.fillRect(ps, 0, nx - ps, h, bg); p.fillRect(ps, 0, nx - ps, h, bg);
pos += _showString.length(); pos += _showString.length();
} }
if (row == _showRow && _showLen > 0 && _showCol >= 0 && _showCol < (int)l->s.length())
{
ps = lineWidth(row, _showCol);
nx = lineWidth(row, QMAX((int)l->s.length(), _showCol + _showLen));
p.fillRect(ps, 0, nx - ps, h, bg);
}
} }
static void make_blend(QPixmap &pix, QColor start, QColor end, int height) //, bool loop = false) static void make_blend(QPixmap &pix, QColor start, QColor end, int height) //, bool loop = false)
@ -660,8 +670,8 @@ void GEditor::paintCell(QPainter * painter, int row, int)
p.translate(-ur.left(), 0); p.translate(-ur.left(), 0);
// Search // Show string
if (highlight && _showString.length()) if (highlight && (_showRow == realRow || _showString.length()))
paintShowString(p, l, margin, fm.ascent() + 1, xmin, lmax, cellHeight(), realRow); paintShowString(p, l, margin, fm.ascent() + 1, xmin, lmax, cellHeight(), realRow);
// Selection background // Selection background
@ -2127,3 +2137,11 @@ void GEditor::showString(GString s, bool ignoreCase)
_showStringIgnoreCase = ignoreCase; _showStringIgnoreCase = ignoreCase;
updateContents(); updateContents();
} }
void GEditor::showWord(int y, int x, int len)
{
_showRow = y;
_showCol = x;
_showLen = len;
updateLine(y);
}

View File

@ -82,6 +82,7 @@ private:
bool painting; bool painting;
GString _showString; GString _showString;
bool _showStringIgnoreCase; bool _showStringIgnoreCase;
int _showRow, _showCol, _showLen;
int lastx; int lastx;
bool left; bool left;
@ -218,6 +219,7 @@ public:
void checkMatching(); void checkMatching();
void flash(); void flash();
void showString(GString s, bool ignoreCase); void showString(GString s, bool ignoreCase);
void showWord(int y, int x, int len);
void foldClear() { fold.clear(); } void foldClear() { fold.clear(); }
void foldLine(int row, bool no_refresh = false); void foldLine(int row, bool no_refresh = false);