wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
FileDialogProvider.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
6
7#pragma once
8
9#include <QString>
10
11class QWidget;
12
15{
16 QString fileName;
18};
19
26{
27public:
28 // Same D0/D2 ABI-variant gap as App/Wiring/Port.h's destructor: FileDialogProvider is
29 // abstract (getOpenFileName()/getSaveFileName() are pure virtual), so it can never be the
30 // most-derived type of a real object -- its own vtable "deleting destructor" (D0) slot is
31 // dead by construction. Every real instance (the static s_realProvider, or a test's
32 // stack-local stub passed by address to FileDialogs::setProvider()) is destroyed via normal
33 // scope/static-storage teardown, never `delete`d through this base pointer.
34 virtual ~FileDialogProvider() = default; // LCOV_EXCL_LINE
35
38 virtual QString getOpenFileName(QWidget *parent, const QString &caption,
39 const QString &dir, const QString &filter) = 0;
40
43 virtual FileDialogResult getSaveFileName(QWidget *parent, const QString &caption,
44 const QString &dir, const QString &filter) = 0;
45};
46
49{
50public:
51 QString getOpenFileName(QWidget *parent, const QString &caption,
52 const QString &dir, const QString &filter) override;
53
54 FileDialogResult getSaveFileName(QWidget *parent, const QString &caption,
55 const QString &dir, const QString &filter) override;
56};
57
59namespace FileDialogs {
60
63
67
68} // namespace FileDialogs
virtual FileDialogResult getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter)=0
virtual QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter)=0
virtual ~FileDialogProvider()=default
Production implementation that delegates to QFileDialog.
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter) override
FileDialogResult getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter) override
Global accessor for the current FileDialogProvider.
FileDialogProvider * provider()
Returns the active provider. Never null.
FileDialogProvider * setProvider(FileDialogProvider *newProvider)
Result from a save file dialog operation.
QString selectedFilter
The name filter the user chose (e.g. "CSV files (*.csv)").
QString fileName
Selected file path, empty if cancelled.