44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
#pragma once
|
||
|
||
#include <QObject>
|
||
#include <QListWidget>
|
||
#include <QStringList>
|
||
#include <QRegularExpression>
|
||
|
||
class CodeEditor;
|
||
|
||
// ---------------------------------------------------------------------------
|
||
// VariableCompleter – Zeigt ein Popup mit passenden Variablennamen
|
||
// wenn der Nutzer $ tippt und weiter eingibt.
|
||
//
|
||
// Kein Autocomplete — nur Anzeige. Klick oder Enter übernimmt.
|
||
// Escape oder Weiterschreiben ohne Treffer schließt das Popup.
|
||
// ---------------------------------------------------------------------------
|
||
class VariableCompleter : public QObject
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
explicit VariableCompleter(CodeEditor *editor);
|
||
|
||
// Muss nach jedem Tastendruck aufgerufen werden
|
||
void handleKeyPress(QKeyEvent *event);
|
||
|
||
// Muss aufgerufen werden, wenn der Editor den Fokus verliert
|
||
// (z. B. beim Wechsel des Tabs) — schließt ein evtl. offenes Popup,
|
||
// damit es nicht als "Geisterfenster" stehen bleibt.
|
||
void notifyFocusLost();
|
||
|
||
private slots:
|
||
void onItemActivated(QListWidgetItem *item);
|
||
|
||
private:
|
||
void updatePopup();
|
||
void hidePopup();
|
||
QStringList collectVariables() const;
|
||
QString currentPrefix() const; // "$me" etc. links vom Cursor
|
||
|
||
CodeEditor *m_editor = nullptr;
|
||
QListWidget *m_popup = nullptr;
|
||
};
|