Provider refactor: 2-method base class, ProcessProvider, ProcessPicker

Collapse Provider interface from 9 virtual methods to 2 (read + size),
move providers to src/providers/, add name()/kind()/getSymbol() virtuals.
Replace FileProvider with BufferProvider, add ProcessProvider (Win32)
with module-based symbol resolution, wire ProcessPicker dialog, and
integrate getSymbol into pointer display and command row.

- Fix isReadable overflow for large addresses
- Guard deferred showSourcePicker/showTypeAutocomplete against stale edits
- 7/7 tests pass including 3 new provider test suites

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sysadmin
2026-02-06 06:52:44 -07:00
parent 637aa7a550
commit 44e4d88f58
23 changed files with 1457 additions and 221 deletions

46
src/processpicker.h Normal file
View File

@@ -0,0 +1,46 @@
#ifndef PROCESSPICKER_H
#define PROCESSPICKER_H
#include <QDialog>
#include <QIcon>
#include <cstdint>
namespace Ui {
class ProcessPicker;
}
struct ProcessInfo {
uint32_t pid;
QString name;
QString path;
QIcon icon;
};
class ProcessPicker : public QDialog
{
Q_OBJECT
public:
explicit ProcessPicker(QWidget *parent = nullptr);
~ProcessPicker();
uint32_t selectedProcessId() const;
QString selectedProcessName() const;
private slots:
void refreshProcessList();
void onProcessSelected();
void filterProcesses(const QString& text);
private:
void enumerateProcesses();
void populateTable(const QList<ProcessInfo>& processes);
void applyFilter();
Ui::ProcessPicker *ui;
uint32_t m_selectedPid = 0;
QString m_selectedName;
QList<ProcessInfo> m_allProcesses;
};
#endif // PROCESSPICKER_H