mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-02-09 21:28:30 -06:00
The default format changes to scientific format when the width of the number would be longer. The user will be able to select fixed format for integer numbers in the contextual menu. Note that precision is set to 0, because in the fixed format trailing zeros are not omitted. See issue #2498
131 lines
3.2 KiB
C++
131 lines
3.2 KiB
C++
#ifndef PLOTDOCK_H
|
|
#define PLOTDOCK_H
|
|
|
|
#include "Palette.h"
|
|
|
|
#include <QDialog>
|
|
#include <QVariant>
|
|
|
|
#include <vector>
|
|
|
|
class QMenu;
|
|
class QPrinter;
|
|
class QTreeWidgetItem;
|
|
class QCPAxis;
|
|
|
|
class SqliteTableModel;
|
|
struct BrowseDataTableSettings;
|
|
|
|
namespace Ui {
|
|
class PlotDock;
|
|
}
|
|
|
|
class PlotDock : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit PlotDock(QWidget* parent = nullptr);
|
|
~PlotDock() override;
|
|
|
|
struct PlotSettings
|
|
{
|
|
int lineStyle;
|
|
int pointShape;
|
|
QColor colour;
|
|
bool active;
|
|
|
|
PlotSettings() :
|
|
lineStyle(0),
|
|
pointShape(0),
|
|
active(false)
|
|
{}
|
|
|
|
PlotSettings(int _lineStyle, int _pointShape, QColor _colour, bool _active) :
|
|
lineStyle(_lineStyle),
|
|
pointShape(_pointShape),
|
|
colour(_colour),
|
|
active(_active)
|
|
{}
|
|
|
|
friend QDataStream& operator<<(QDataStream& stream, const PlotDock::PlotSettings& object)
|
|
{
|
|
stream << object.lineStyle;
|
|
stream << object.pointShape;
|
|
stream << object.colour;
|
|
stream << object.active;
|
|
|
|
return stream;
|
|
}
|
|
friend QDataStream& operator>>(QDataStream& stream, PlotDock::PlotSettings& object)
|
|
{
|
|
stream >> object.lineStyle;
|
|
stream >> object.pointShape;
|
|
stream >> object.colour;
|
|
|
|
if(!stream.atEnd())
|
|
stream >> object.active;
|
|
|
|
return stream;
|
|
}
|
|
};
|
|
|
|
public slots:
|
|
void updatePlot(SqliteTableModel* model, BrowseDataTableSettings* settings = nullptr, bool update = true, bool keepOrResetSelection = true);
|
|
void fetchAllData();
|
|
void resetPlot();
|
|
void reject() override;
|
|
|
|
signals:
|
|
void pointsSelected(int firstIndex, int count);
|
|
|
|
private:
|
|
enum PlotColumns
|
|
{
|
|
PlotColumnField = 0,
|
|
PlotColumnX = 1,
|
|
PlotColumnY1 = 2,
|
|
PlotColumnY2 = 3,
|
|
PlotColumnType = 4,
|
|
};
|
|
|
|
Ui::PlotDock* ui;
|
|
|
|
SqliteTableModel* m_currentPlotModel;
|
|
BrowseDataTableSettings* m_currentTableSettings;
|
|
QMenu* m_contextMenu;
|
|
bool m_showLegend;
|
|
bool m_stackedBars;
|
|
bool m_fixedFormat;
|
|
Palette m_graphPalette;
|
|
std::vector<QCPAxis *> yAxes;
|
|
std::vector<int> PlotColumnY;
|
|
|
|
/*!
|
|
* \brief guessdatatype try to parse the first 10 rows and decide the datatype
|
|
* \param model model to check the data
|
|
* \param column index of the column to check
|
|
* \return the guessed datatype
|
|
*/
|
|
QVariant::Type guessDataType(SqliteTableModel* model, int column) const;
|
|
void adjustBars();
|
|
void adjustAxisFormat();
|
|
|
|
private slots:
|
|
void on_treePlotColumns_itemChanged(QTreeWidgetItem* item, int column);
|
|
void on_treePlotColumns_itemDoubleClicked(QTreeWidgetItem* item, int column);
|
|
void on_butSavePlot_clicked();
|
|
void on_comboLineType_currentIndexChanged(int index);
|
|
void on_comboPointShape_currentIndexChanged(int index);
|
|
void selectionChanged();
|
|
void mousePress();
|
|
void mouseWheel();
|
|
void copy();
|
|
void toggleLegendVisible(bool visible);
|
|
void toggleStackedBars(bool stacked);
|
|
void openPrintDialog();
|
|
void renderPlot(QPrinter* printer);
|
|
};
|
|
|
|
#endif
|