Graphic setCustomGridMarkFuncs, select decimal point when export to CSV

This commit is contained in:
Бычков Анлрей
2022-06-08 13:04:33 +03:00
parent 9e72dc9bd9
commit 7d199b5ad3
8 changed files with 439 additions and 351 deletions

View File

@@ -3,8 +3,8 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake
cmake_policy(SET CMP0072 NEW) # FindOpenGL prefers GLVND by default
project(qad)
set(qad_MAJOR 2)
set(qad_MINOR 6)
set(qad_REVISION 1)
set(qad_MINOR 7)
set(qad_REVISION 0)
set(qad_SUFFIX )
set(qad_COMPANY SHS)
set(qad_DOMAIN org.SHS)

View File

@@ -12,6 +12,7 @@
#include <QActionGroup>
#include <QScrollArea>
#include <QTimer>
#include <QInputDialog>
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
# include <QRandomGenerator>
#endif
@@ -72,6 +73,7 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
#else
false;
#endif
func_gridMarkX = func_gridMarkY = nullptr;
ui = new Ui::Graphic();
ui->setupUi(this);
ui->scrollLegend->layout()->addWidget(new LegendScrollArea(ui->widgetLegend));
@@ -189,6 +191,7 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
updateLegend();
setRectToLines();
conf = new GraphicConf(graphics, this);
connect(conf, SIGNAL(exportClicked()), this, SLOT(on_graphic_buttonExport_clicked()));
}
@@ -916,7 +919,7 @@ void Graphic::saveImage(QString filename) {
}
void Graphic::exportGraphics(QString filename) {
void Graphic::exportGraphics(QString filename, QChar decimal_point) {
ppath = filename;
QFile f(filename);
if (!f.open(QIODevice::ReadWrite)) {
@@ -930,7 +933,7 @@ void Graphic::exportGraphics(QString filename) {
for (int i = 0; i < graphics.size(); ++i) {
GraphicType & g(graphics[i]);
if (!g.visible) continue;
ts << ";" << (g.name + "_X") << ";" << (g.name + "_Y");
ts << ";" << (g.name + " " + (label_x.isEmpty() ? "X" : label_x)) << ";" << (g.name + " " + (label_y.isEmpty() ? "Y" : label_y));
}
ts << "\n";
bool has_data = true;
@@ -949,9 +952,9 @@ void Graphic::exportGraphics(QString filename) {
}
has_data = true;
line += ";";
line += QString::number(g.polyline[ind].x(), 'g', 9);
line += QString::number(g.polyline[ind].x(), 'g', 9).replace('.', decimal_point);
line += ";";
line += QString::number(g.polyline[ind].y(), 'g', 9);
line += QString::number(g.polyline[ind].y(), 'g', 9).replace('.', decimal_point);
}
++ind;
line += "\n";
@@ -1028,6 +1031,12 @@ void Graphic::removeGraphic(int arg, bool update) {
}
void Graphic::setCustomGridMarkFuncs(std::function<QString (double)> fx, std::function<QString (double)> fy) {
func_gridMarkX = fx;
func_gridMarkY = fy;
}
void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, double end_y) {
double cx, cy, maxX, minX, maxY, minY, vx;
bool isRangeX = (start_x != end_x), isRangeY = (start_y != end_y);
@@ -1174,16 +1183,21 @@ void Graphic::drawGrid() {
if (cy > hei + 5) break;
painter->setPen(grid_pen);
painter->drawLine(gbx, cy, cwid, cy);
str = gridMark(py * grid_numbers_y);
painter->setPen(text_color);
cy += font_sz.height() / 4.;
int dx = font_sz.height() / 8.;
if (func_gridMarkY) {
str.first = func_gridMarkY(py * grid_numbers_y);
str.second.clear();
} else {
str = gridMark(py * grid_numbers_y);
if (!str.second.isEmpty()) {
rect = sfm.boundingRect(str.second);
painter->setFont(sf);
painter->drawText(cx - rect.width() - dx, cy - font_sz.height() / 2.5, str.second);
dx += rect.width() + font_sz.height() / 6.;
}
}
rect = fm.boundingRect(str.first);
painter->setFont(nf);
painter->drawText(cx - rect.width() - dx, cy, str.first);
@@ -1227,11 +1241,16 @@ void Graphic::drawGrid() {
painter->setPen(text_color);
int dx = -font_sz.height() / 4.;
painter->setFont(nf);
if (func_gridMarkX) {
str.first = func_gridMarkX(px * grid_numbers_x);
str.second.clear();
} else {
str = gridMark(px * grid_numbers_x);
}
rect = fm.boundingRect(str.first);
painter->drawText(cx + dx, cy, str.first);
dx += rect.width() + font_sz.height() / 6.;
if (!str.second.isEmpty()) {
dx += rect.width() + font_sz.height() / 6.;
rect = sfm.boundingRect(str.second);
painter->setFont(sf);
painter->drawText(cx + dx, cy - font_sz.height() / 4., str.second);
@@ -1886,7 +1905,11 @@ void Graphic::on_graphic_buttonSave_clicked() {
void Graphic::on_graphic_buttonExport_clicked() {
QString f = QFileDialog::getSaveFileName(this, tr("Export graphics"), ppath, "CSV(*.csv)");
if (f.isEmpty()) return;
exportGraphics(f);
QStringList items;
items << "." << ",";
bool ok;
QString item = QInputDialog::getItem(this, tr("Select decimal point"), tr("Decimal point:"), items, 0, false, &ok);
if (ok && !item.isEmpty()) exportGraphics(f, item.front());
}

View File

@@ -339,7 +339,7 @@ public slots:
void setDefaultRect(const QRectF & rect);
void autofit() {on_graphic_buttonAutofit_clicked();}
void saveImage(QString filename);
void exportGraphics(QString filename);
void exportGraphics(QString filename, QChar decimal_point);
void clear();
void update(bool force);
void update() {update(false);}
@@ -348,6 +348,7 @@ public slots:
void setTraceGraphic(int arg) {if (arg < 0 || arg >= graphics.size()) return; curTrace = arg;}
void setGraphicsCount(int arg, bool update = true);
void removeGraphic(int arg, bool update = true);
void setCustomGridMarkFuncs(std::function<QString(double val)> fx, std::function<QString(double val)> fy);
void zoom(float factor);
void zoomIn() {zoom(1. / 1.2);}
@@ -430,6 +431,7 @@ protected:
int lastw, lasth, min_repaint_int, timer_pause, thick;
bool aalias, aupdate, grid, guides, isFit, isOGL, isHover, bufferActive, cancel, pause_, gestures, m_LODOptimization, m_fakeGL, need_createGL;
bool hasLblX, hasLblY, navigation, only_expand_y, only_expand_x, is_lines_update, leg_update, visible_update, fullscr, need_mouse_pan, was_trace;
std::function<QString(double val)> func_gridMarkX, func_gridMarkY;
protected slots:
void canvasPaintEvent();

View File

@@ -101,6 +101,11 @@ void GraphicConf::on_checkFill_toggled(bool on) {
}
void GraphicConf::on_buttonExport_clicked() {
emit exportClicked();
}
void GraphicConf::on_colorFill_colorChanged(const QColor & color) {
if (graphicItems.isEmpty()) return;
graphics[ui->cbGraphicNames->currentIndex()].fill_color = color;

View File

@@ -108,7 +108,10 @@ private slots:
void on_checkLines_toggled(bool on);
void on_checkPoints_toggled(bool on);
void on_checkFill_toggled(bool on);
void on_buttonExport_clicked();
signals:
void exportClicked();
};
#endif // GRAPHIC_CONF_H

View File

@@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>583</height>
<width>387</width>
<height>505</height>
</rect>
</property>
<property name="windowTitle">
@@ -19,8 +19,8 @@
<property name="modal">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Appearance</string>
@@ -115,113 +115,121 @@
</layout>
</widget>
</item>
<item row="2" column="1">
<widget class="QGroupBox" name="groupBox_1">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Graphics</string>
<string>Margins</string>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
<layout class="QGridLayout" name="gridLayout_3" columnstretch="0,1,1,1,1,1">
<property name="topMargin">
<number>0</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QComboBox" name="cbGraphicNames">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item row="1" column="5">
<widget class="QSpinBox" name="spinMarginR">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<item row="2" column="3">
<widget class="QSpinBox" name="spinMarginB">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="labelAll">
<property name="text">
<string>Color:</string>
<string>All:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="ColorButton" name="colorGraphic">
<property name="useAlphaChannel">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Style:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboStyleGraphic"/>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkLines">
<property name="text">
<string>Lines width:</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="spinLineWidthGraphic">
<property name="decimals">
<number>2</number>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkPoints">
<property name="text">
<string>Points width:</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="spinPointWidthGraphic">
<property name="decimals">
<number>2</number>
<widget class="QSpinBox" name="spinMarginL">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<double>999.990000000000009</double>
</property>
<property name="value">
<double>1.000000000000000</double>
<number>100</number>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkFill">
<item row="1" column="4">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Fill:</string>
<string>Right:</string>
</property>
<property name="checked">
<bool>true</bool>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="ColorButton" name="colorFill">
<property name="useAlphaChannel">
<bool>true</bool>
<item row="1" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Left:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Bottom:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QSpinBox" name="spinMarginT">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Top:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QSpinBox" name="spinMarginT_2">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Grid</string>
@@ -331,14 +339,115 @@
</layout>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<item>
<widget class="QGroupBox" name="groupBox_1">
<property name="title">
<string>Graphics</string>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0" colspan="2">
<widget class="QComboBox" name="cbGraphicNames">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Color:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="ColorButton" name="colorGraphic">
<property name="useAlphaChannel">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Style:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboStyleGraphic"/>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkLines">
<property name="text">
<string>Lines width:</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QDoubleSpinBox" name="spinLineWidthGraphic">
<property name="decimals">
<number>2</number>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkPoints">
<property name="text">
<string>Points width:</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QDoubleSpinBox" name="spinPointWidthGraphic">
<property name="decimals">
<number>2</number>
</property>
<property name="maximum">
<double>999.990000000000009</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkFill">
<property name="text">
<string>Fill:</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="ColorButton" name="colorFill">
<property name="useAlphaChannel">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
@@ -351,114 +460,27 @@
</property>
</spacer>
</item>
<item row="1" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Margins</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="5">
<widget class="QSpinBox" name="spinMarginR">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="spinMarginB">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="labelAll">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="buttonExport">
<property name="text">
<string>All:</string>
<string>Export to CSV...</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="icon">
<iconset resource="../../../cd/utils/pult/cdpult.qrc">
<normaloff>:/icons/accessories-text-editor.png</normaloff>:/icons/accessories-text-editor.png</iconset>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinMarginL">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Right:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Left:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Bottom:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QSpinBox" name="spinMarginT">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Top:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QSpinBox" name="spinMarginT_2">
<property name="suffix">
<string> px</string>
</property>
<property name="maximum">
<number>100</number>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
@@ -494,7 +516,10 @@
<tabstop>spinPointWidthGraphic</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources/>
<resources>
<include location="../../../cd/utils/pult/cdpult.qrc"/>
<include location="../../../cd/utils/pult/cdpult.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>

View File

@@ -101,63 +101,73 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="454"/>
<location filename="../graphic.cpp" line="1306"/>
<location filename="../graphic.cpp" line="459"/>
<location filename="../graphic.cpp" line="1327"/>
<source>Cursor: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="469"/>
<location filename="../graphic.cpp" line="474"/>
<source>Selection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="470"/>
<location filename="../graphic.cpp" line="475"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="474"/>
<location filename="../graphic.cpp" line="480"/>
<location filename="../graphic.cpp" line="479"/>
<location filename="../graphic.cpp" line="485"/>
<source>Range</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="475"/>
<location filename="../graphic.cpp" line="481"/>
<location filename="../graphic.cpp" line="480"/>
<location filename="../graphic.cpp" line="486"/>
<source>Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="586"/>
<location filename="../graphic.cpp" line="635"/>
<location filename="../graphic.cpp" line="591"/>
<location filename="../graphic.cpp" line="640"/>
<source>Cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="921"/>
<location filename="../graphic.cpp" line="1875"/>
<location filename="../graphic.cpp" line="926"/>
<location filename="../graphic.cpp" line="1906"/>
<source>Export graphics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="921"/>
<location filename="../graphic.cpp" line="926"/>
<source>Can`t open file &quot;%1&quot;!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="1868"/>
<location filename="../graphic.cpp" line="1899"/>
<source>Save Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="1008"/>
<location filename="../graphic.cpp" line="1010"/>
<location filename="../graphic.cpp" line="1013"/>
<location filename="../graphic.cpp" line="1015"/>
<source>y(x)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="1924"/>
<location filename="../graphic.cpp" line="1911"/>
<source>Select decimal point</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="1911"/>
<source>Decimal point:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic.cpp" line="1959"/>
<source>Check all</source>
<translation type="unfinished"></translation>
</message>
@@ -210,115 +220,120 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="121"/>
<location filename="../graphic_conf.ui" line="345"/>
<source>Graphics</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="140"/>
<location filename="../graphic_conf.ui" line="236"/>
<location filename="../graphic_conf.ui" line="468"/>
<source>Export to CSV...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="244"/>
<location filename="../graphic_conf.ui" line="364"/>
<source>Color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="154"/>
<location filename="../graphic_conf.ui" line="250"/>
<location filename="../graphic_conf.ui" line="258"/>
<location filename="../graphic_conf.ui" line="378"/>
<source>Style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="164"/>
<location filename="../graphic_conf.ui" line="388"/>
<source>Lines width:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="184"/>
<location filename="../graphic_conf.ui" line="408"/>
<source>Points width:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="207"/>
<location filename="../graphic_conf.ui" line="431"/>
<source>Fill:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="227"/>
<location filename="../graphic_conf.ui" line="235"/>
<source>Grid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="260"/>
<location filename="../graphic_conf.ui" line="268"/>
<source>Width:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="274"/>
<location filename="../graphic_conf.ui" line="282"/>
<source>Step X:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="281"/>
<location filename="../graphic_conf.ui" line="289"/>
<source>Step Y:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="288"/>
<location filename="../graphic_conf.ui" line="296"/>
<source>Auto X</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="298"/>
<location filename="../graphic_conf.ui" line="306"/>
<source>Auto Y</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="308"/>
<location filename="../graphic_conf.ui" line="311"/>
<location filename="../graphic_conf.ui" line="316"/>
<location filename="../graphic_conf.ui" line="319"/>
<source>30</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="321"/>
<location filename="../graphic_conf.ui" line="324"/>
<location filename="../graphic_conf.ui" line="329"/>
<location filename="../graphic_conf.ui" line="332"/>
<source>50</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="357"/>
<location filename="../graphic_conf.ui" line="121"/>
<source>Margins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="363"/>
<location filename="../graphic_conf.ui" line="373"/>
<location filename="../graphic_conf.ui" line="393"/>
<location filename="../graphic_conf.ui" line="433"/>
<location filename="../graphic_conf.ui" line="453"/>
<location filename="../graphic_conf.ui" line="130"/>
<location filename="../graphic_conf.ui" line="140"/>
<location filename="../graphic_conf.ui" line="160"/>
<location filename="../graphic_conf.ui" line="200"/>
<location filename="../graphic_conf.ui" line="220"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="383"/>
<location filename="../graphic_conf.ui" line="150"/>
<source>All:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="403"/>
<location filename="../graphic_conf.ui" line="170"/>
<source>Right:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="413"/>
<location filename="../graphic_conf.ui" line="180"/>
<source>Left:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="423"/>
<location filename="../graphic_conf.ui" line="190"/>
<source>Bottom:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="443"/>
<location filename="../graphic_conf.ui" line="210"/>
<source>Top:</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -105,63 +105,73 @@
<translation type="vanished">Свободная трассировка</translation>
</message>
<message>
<location filename="../graphic.cpp" line="454"/>
<location filename="../graphic.cpp" line="1306"/>
<location filename="../graphic.cpp" line="459"/>
<location filename="../graphic.cpp" line="1327"/>
<source>Cursor: </source>
<translation>Курсор: </translation>
</message>
<message>
<location filename="../graphic.cpp" line="469"/>
<location filename="../graphic.cpp" line="474"/>
<source>Selection</source>
<translation>Выделение</translation>
</message>
<message>
<location filename="../graphic.cpp" line="470"/>
<location filename="../graphic.cpp" line="475"/>
<source>Size</source>
<translation>Размер</translation>
</message>
<message>
<location filename="../graphic.cpp" line="474"/>
<location filename="../graphic.cpp" line="480"/>
<location filename="../graphic.cpp" line="479"/>
<location filename="../graphic.cpp" line="485"/>
<source>Range</source>
<translation>Диапазон</translation>
</message>
<message>
<location filename="../graphic.cpp" line="475"/>
<location filename="../graphic.cpp" line="481"/>
<location filename="../graphic.cpp" line="480"/>
<location filename="../graphic.cpp" line="486"/>
<source>Length</source>
<translation>Длина</translation>
</message>
<message>
<location filename="../graphic.cpp" line="586"/>
<location filename="../graphic.cpp" line="635"/>
<location filename="../graphic.cpp" line="591"/>
<location filename="../graphic.cpp" line="640"/>
<source>Cursor</source>
<translation>Курсор</translation>
</message>
<message>
<location filename="../graphic.cpp" line="921"/>
<location filename="../graphic.cpp" line="1875"/>
<location filename="../graphic.cpp" line="926"/>
<location filename="../graphic.cpp" line="1906"/>
<source>Export graphics</source>
<translation>Экспорт графиков</translation>
</message>
<message>
<location filename="../graphic.cpp" line="921"/>
<location filename="../graphic.cpp" line="926"/>
<source>Can`t open file &quot;%1&quot;!</source>
<translation>Невозможно открыть файл &quot;%1&quot;!</translation>
</message>
<message>
<location filename="../graphic.cpp" line="1868"/>
<location filename="../graphic.cpp" line="1899"/>
<source>Save Image</source>
<translation>Сохранить изображение</translation>
</message>
<message>
<location filename="../graphic.cpp" line="1008"/>
<location filename="../graphic.cpp" line="1010"/>
<location filename="../graphic.cpp" line="1013"/>
<location filename="../graphic.cpp" line="1015"/>
<source>y(x)</source>
<translation></translation>
</message>
<message>
<location filename="../graphic.cpp" line="1924"/>
<location filename="../graphic.cpp" line="1911"/>
<source>Select decimal point</source>
<translation>Выберите десятичный разделитель</translation>
</message>
<message>
<location filename="../graphic.cpp" line="1911"/>
<source>Decimal point:</source>
<translation>Десятичный разделитель:</translation>
</message>
<message>
<location filename="../graphic.cpp" line="1959"/>
<source>Check all</source>
<translation>Выбрать все</translation>
</message>
@@ -214,76 +224,81 @@
<translation>Цвет текста:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="121"/>
<location filename="../graphic_conf.ui" line="345"/>
<source>Graphics</source>
<translation>Графики</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="140"/>
<location filename="../graphic_conf.ui" line="236"/>
<location filename="../graphic_conf.ui" line="468"/>
<source>Export to CSV...</source>
<translation>Экспорт в CSV...</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="244"/>
<location filename="../graphic_conf.ui" line="364"/>
<source>Color:</source>
<translation>Цвет:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="154"/>
<location filename="../graphic_conf.ui" line="250"/>
<location filename="../graphic_conf.ui" line="258"/>
<location filename="../graphic_conf.ui" line="378"/>
<source>Style:</source>
<translation>Стиль:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="164"/>
<location filename="../graphic_conf.ui" line="388"/>
<source>Lines width:</source>
<translation>Толщина линий:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="184"/>
<location filename="../graphic_conf.ui" line="408"/>
<source>Points width:</source>
<translation>Толщина точек:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="207"/>
<location filename="../graphic_conf.ui" line="431"/>
<source>Fill:</source>
<translation>Заливка:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="227"/>
<location filename="../graphic_conf.ui" line="235"/>
<source>Grid</source>
<translation>Сетка</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="260"/>
<location filename="../graphic_conf.ui" line="268"/>
<source>Width:</source>
<translation>Толщина:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="274"/>
<location filename="../graphic_conf.ui" line="282"/>
<source>Step X:</source>
<translation>Шаг X:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="281"/>
<location filename="../graphic_conf.ui" line="289"/>
<source>Step Y:</source>
<translation>Шаг Y:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="288"/>
<location filename="../graphic_conf.ui" line="296"/>
<source>Auto X</source>
<translation>Авто X</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="298"/>
<location filename="../graphic_conf.ui" line="306"/>
<source>Auto Y</source>
<translation>Авто Y</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="308"/>
<location filename="../graphic_conf.ui" line="311"/>
<location filename="../graphic_conf.ui" line="316"/>
<location filename="../graphic_conf.ui" line="319"/>
<source>30</source>
<translation></translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="321"/>
<location filename="../graphic_conf.ui" line="324"/>
<location filename="../graphic_conf.ui" line="329"/>
<location filename="../graphic_conf.ui" line="332"/>
<source>50</source>
<translation></translation>
</message>
@@ -292,41 +307,41 @@
<translation type="obsolete">Автоматический шаг</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="357"/>
<location filename="../graphic_conf.ui" line="121"/>
<source>Margins</source>
<translation>Поля</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="363"/>
<location filename="../graphic_conf.ui" line="373"/>
<location filename="../graphic_conf.ui" line="393"/>
<location filename="../graphic_conf.ui" line="433"/>
<location filename="../graphic_conf.ui" line="453"/>
<location filename="../graphic_conf.ui" line="130"/>
<location filename="../graphic_conf.ui" line="140"/>
<location filename="../graphic_conf.ui" line="160"/>
<location filename="../graphic_conf.ui" line="200"/>
<location filename="../graphic_conf.ui" line="220"/>
<source> px</source>
<translation> пикс</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="383"/>
<location filename="../graphic_conf.ui" line="150"/>
<source>All:</source>
<translation>Все:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="403"/>
<location filename="../graphic_conf.ui" line="170"/>
<source>Right:</source>
<translation>Правое:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="413"/>
<location filename="../graphic_conf.ui" line="180"/>
<source>Left:</source>
<translation>Левое:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="423"/>
<location filename="../graphic_conf.ui" line="190"/>
<source>Bottom:</source>
<translation>Нижнее:</translation>
</message>
<message>
<location filename="../graphic_conf.ui" line="443"/>
<location filename="../graphic_conf.ui" line="210"/>
<source>Top:</source>
<translation>Верхнее:</translation>
</message>