code format

This commit is contained in:
2022-12-14 14:14:33 +03:00
parent 09e5342956
commit cdb02fc9be
278 changed files with 15371 additions and 12176 deletions

View File

@@ -1,33 +1,34 @@
/*
QAD - Qt ADvanced
QAD - Qt ADvanced
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QPICONSOLE_H
#define QPICONSOLE_H
#include <QTabWidget>
#include <QLabel>
#include <QBoxLayout>
#include <QFormLayout>
#include <QSpacerItem>
#include <QDebug>
#include "qad_widgets_export.h"
#include <QBoxLayout>
#include <QDebug>
#include <QFormLayout>
#include <QLabel>
#include <QSpacerItem>
#include <QTabWidget>
typedef long long llong;
typedef unsigned char uchar;
@@ -40,44 +41,46 @@ typedef long double ldouble;
class QAD_WIDGETS_EXPORT QPIConsole: public QTabWidget {
Q_OBJECT
public:
QPIConsole(QWidget * parent = 0);
enum Format {Normal = 0x01,
Bold = 0x02,
Italic = 0x08,
Underline = 0x10,
Inverse = 0x40,
Black = 0x100,
Red = 0x200,
Green = 0x400,
Yellow = 0x800,
Blue = 0x1000,
Magenta = 0x2000,
Cyan = 0x4000,
White = 0x8000,
BackBlack = 0x10000,
BackRed = 0x20000,
BackGreen = 0x40000,
BackYellow = 0x80000,
BackBlue = 0x100000,
BackMagenta = 0x200000,
BackCyan = 0x400000,
BackWhite = 0x800000,
Dec = 0x1000000,
Hex = 0x2000000,
Oct = 0x4000000,
Bin = 0x8000000,
Scientific = 0x10000000,
Lighter = 0x20000000,
Darker = 0x40000000,
BackLighter = 0x80000000
};
enum Format {
Normal = 0x01,
Bold = 0x02,
Italic = 0x08,
Underline = 0x10,
Inverse = 0x40,
Black = 0x100,
Red = 0x200,
Green = 0x400,
Yellow = 0x800,
Blue = 0x1000,
Magenta = 0x2000,
Cyan = 0x4000,
White = 0x8000,
BackBlack = 0x10000,
BackRed = 0x20000,
BackGreen = 0x40000,
BackYellow = 0x80000,
BackBlue = 0x100000,
BackMagenta = 0x200000,
BackCyan = 0x400000,
BackWhite = 0x800000,
Dec = 0x1000000,
Hex = 0x2000000,
Oct = 0x4000000,
Bin = 0x8000000,
Scientific = 0x10000000,
Lighter = 0x20000000,
Darker = 0x40000000,
BackLighter = 0x80000000
};
Q_DECLARE_FLAGS(Formats, Format)
Q_FLAGS(Formats)
Q_ENUMS(Format)
Q_PROPERTY(Qt::Alignment defaultAlignment READ defaultAlignment WRITE setDefaultAlignment)
void addString(const QString & name, int column = 1, Formats format = QPIConsole::Normal);
@@ -95,41 +98,58 @@ public:
void addVariable(const QString & name, const ullong * ptr, int column = 1, Formats format = QPIConsole::Normal);
void addVariable(const QString & name, const float * ptr, int column = 1, Formats format = QPIConsole::Normal);
void addVariable(const QString & name, const double * ptr, int column = 1, Formats format = QPIConsole::Normal);
void addBitVariable(const QString & name, const void * ptr, int fromBit, int bitCount, int column = 1, Formats format = QPIConsole::Normal);
void
addBitVariable(const QString & name, const void * ptr, int fromBit, int bitCount, int column = 1, Formats format = QPIConsole::Normal);
void addEmptyLine(int column = 1, uint count = 1);
uint tabsCount() const {return tabs.size();}
QString currentTab() const {return tabs[cur_tab].name;}
uint tabsCount() const { return tabs.size(); }
QString currentTab() const { return tabs[cur_tab].name; }
int addTab(const QString & name, char bind_key = 0);
bool removeTab(uint index);
bool removeTab(const QString & name) {return removeTab(tabIndex(name));}
bool removeTab(const QString & name) { return removeTab(tabIndex(name)); }
bool renameTab(uint index, const QString & new_name);
bool renameTab(const QString & name, const QString & new_name) {return renameTab(tabIndex(name), new_name);}
bool renameTab(const QString & name, const QString & new_name) { return renameTab(tabIndex(name), new_name); }
void setTabEnabled(int index, bool on);
bool setTab(uint index);
bool setTab(const QString & name) {return setTab(tabIndex(name));}
//void clearTabs(bool clearScreen = true) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} tabs.clear();}
bool setTab(const QString & name) { return setTab(tabIndex(name)); }
// void clearTabs(bool clearScreen = true) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} tabs.clear();}
void addCustomStatus(const QString & str, Formats format = QPIConsole::Normal) {tabs[cur_tab].widget->setText(str); applyFormat(tabs[cur_tab].widget, format);}
void clearCustomStatus() {tabs[cur_tab].widget->clear();}
Qt::Alignment defaultAlignment() const {return def_align;}
void setDefaultAlignment(Qt::Alignment align) {def_align = align;}
void setColumnAlignment(int col, Qt::Alignment align) {if (col < 0 || col >= columns().size()) return; column(col).alignment = align;}
void setColumnAlignmentToAll(Qt::Alignment align) {for (int i = 0; i < tabs.size(); ++i) for (int j = 0; j < tabs[i].columns.size(); ++j) tabs[i].columns[j].alignment = align;/* fillLabels();*/}
void addCustomStatus(const QString & str, Formats format = QPIConsole::Normal) {
tabs[cur_tab].widget->setText(str);
applyFormat(tabs[cur_tab].widget, format);
}
void clearCustomStatus() { tabs[cur_tab].widget->clear(); }
Qt::Alignment defaultAlignment() const { return def_align; }
void setDefaultAlignment(Qt::Alignment align) { def_align = align; }
void setColumnAlignment(int col, Qt::Alignment align) {
if (col < 0 || col >= columns().size()) return;
column(col).alignment = align;
}
void setColumnAlignmentToAll(Qt::Alignment align) {
for (int i = 0; i < tabs.size(); ++i)
for (int j = 0; j < tabs[i].columns.size(); ++j)
tabs[i].columns[j].alignment = align; /* fillLabels();*/
}
void clearVariables() {clearVariables(true);}
void clearVariables(bool clearScreen) {/*if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();}*/ columns().clear();}
void clearVariables() { clearVariables(true); }
void clearVariables(bool clearScreen) { /*if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();}*/
columns().clear();
}
private:
void timerEvent(QTimerEvent * );
QSize sizeHint() const {return QSize(100, 100);}
void timerEvent(QTimerEvent *);
QSize sizeHint() const { return QSize(100, 100); }
void checkColumn(int col);
void applyFormat(QLabel * l, Formats f);
int bitsValue(const void * src, int offset, int count) const;
int tabIndex(const QString & n) const {for (int i = 0; i < tabs.size(); ++i) if (tabs[i].name == n) return i; return -1;}
int tabIndex(const QString & n) const {
for (int i = 0; i < tabs.size(); ++i)
if (tabs[i].name == n) return i;
return -1;
}
const QString & toBin(const void * d, int s);
template <typename T>
template<typename T>
QString numIntString(T v, Formats f, int bits = 0) {
if (f.testFlag(QPIConsole::Hex)) return "0x" + QString::number(v, 16).toUpper();
if (f.testFlag(QPIConsole::Dec)) return QString::number(v);
@@ -137,14 +157,14 @@ private:
if (f.testFlag(QPIConsole::Bin)) return toBin(&v, bits);
return QString::number(v);
}
template <typename T>
template<typename T>
QString numFloatString(T v, Formats f) {
if (f.testFlag(QPIConsole::Scientific)) return QString::number(v, 'E', 5);
return QString::number(v);
}
struct QAD_WIDGETS_EXPORT Variable {
Variable() {label = widget = 0;}
Variable() { label = widget = 0; }
QString name;
Formats format;
int type;
@@ -153,24 +173,40 @@ private:
const void * ptr;
QLabel * label;
QLabel * widget;
void operator =(const Variable & src) {name = src.name; format = src.format; type = src.type;
bitFrom = src.bitFrom; bitCount = src.bitCount; ptr = src.ptr;}
void operator=(const Variable & src) {
name = src.name;
format = src.format;
type = src.type;
bitFrom = src.bitFrom;
bitCount = src.bitCount;
ptr = src.ptr;
}
};
struct QAD_WIDGETS_EXPORT Column {
Column(Qt::Alignment align = Qt::AlignRight) {variables.reserve(16); alignment = align;}
Column(Qt::Alignment align = Qt::AlignRight) {
variables.reserve(16);
alignment = align;
}
QVector<Variable> variables;
Qt::Alignment alignment;
QFormLayout * layout;
int size() const {return variables.size();}
Variable & operator [](int index) {return variables[index];}
const Variable & operator [](int index) const {return variables[index];}
void push_back(const Variable & v) {variables.push_back(v);}
void operator =(const Column & src) {variables = src.variables; alignment = src.alignment;}
int size() const { return variables.size(); }
Variable & operator[](int index) { return variables[index]; }
const Variable & operator[](int index) const { return variables[index]; }
void push_back(const Variable & v) { variables.push_back(v); }
void operator=(const Column & src) {
variables = src.variables;
alignment = src.alignment;
}
};
struct QAD_WIDGETS_EXPORT Tab {
Tab(QString n = "", char k = 0) {columns.reserve(16); name = n; key = k;}
Tab(QString n = "", char k = 0) {
columns.reserve(16);
name = n;
key = k;
}
QVector<Column> columns;
QString name;
char key;
@@ -178,22 +214,27 @@ private:
QLabel * widget;
};
QVector<Column> & columns() {return tabs[cur_tab].columns;}
Column & column(int index) {return tabs[cur_tab].columns[index - 1];}
QVector<Column> & columns() { return tabs[cur_tab].columns; }
Column & column(int index) { return tabs[cur_tab].columns[index - 1]; }
Qt::Alignment def_align;
QVector<Tab> tabs;
QString binstr;
Variable tv;
int cur_tab, timer;
private slots:
void tabChanged(int tab) {cur_tab = tab;}
public slots:
void start(float freq = 40) {if (timer >= 0) killTimer(timer); timer = startTimer(freq > 0. ? 1000 / freq : 25);}
void stop() {if (timer >= 0) killTimer(timer); timer = -1;}
private slots:
void tabChanged(int tab) { cur_tab = tab; }
public slots:
void start(float freq = 40) {
if (timer >= 0) killTimer(timer);
timer = startTimer(freq > 0. ? 1000 / freq : 25);
}
void stop() {
if (timer >= 0) killTimer(timer);
timer = -1;
}
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QPIConsole::Formats)