Add ASCII View

Closes #27
but only for SCSI and SATA, NVMe ASCII View is not yet implemented
This commit is contained in:
spiros
2025-02-06 00:20:21 +02:00
parent 3dcb98be15
commit 36f554c9be
37 changed files with 1106 additions and 37 deletions

81
src/asciiview.cpp Normal file
View File

@@ -0,0 +1,81 @@
#include "asciiview.h"
#include <scsi/sg.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
QVector<unsigned char> AsciiView::readSMARTData(const QString& device_path) {
int fd;
unsigned char smart_read_cmd[SMART_READ_CMD_LEN] = {0xa1, 0x0c, 0x0e, 0xd0, 1, 0, 0x4f, 0xc2, 0, 0xb0, 0, 0};
unsigned char inquiry_cmd[INQUIRY_CMD_LEN] = {0x12, 0, 0, 0, INQUIRY_RESP_LEN, 0};
unsigned char smart_read_resp[SMART_READ_RESP_LEN];
unsigned char inquiry_resp[INQUIRY_RESP_LEN];
unsigned char sense_buffer[SENSE_BUFFER_LEN];
sg_io_hdr_t io_hdr;
QVector<unsigned char> result;
fd = open(device_path.toStdString().c_str(), O_RDONLY);
memset(&io_hdr, 0, sizeof(sg_io_hdr_t));
io_hdr.interface_id = 'S';
io_hdr.cmd_len = SMART_READ_CMD_LEN;
io_hdr.mx_sb_len = SENSE_BUFFER_LEN;
io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
io_hdr.dxfer_len = SMART_READ_RESP_LEN;
io_hdr.dxferp = smart_read_resp;
io_hdr.cmdp = smart_read_cmd;
io_hdr.sbp = sense_buffer;
io_hdr.timeout = 20000;
if (ioctl(fd, SG_IO, &io_hdr) < 0) {
close(fd);
}
result.append(QArrayDataPointer<unsigned char>::fromRawData(smart_read_resp, SMART_READ_RESP_LEN));
memset(&io_hdr, 0, sizeof(sg_io_hdr_t));
io_hdr.interface_id = 'S';
io_hdr.cmd_len = INQUIRY_CMD_LEN;
io_hdr.mx_sb_len = SENSE_BUFFER_LEN;
io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
io_hdr.dxfer_len = INQUIRY_RESP_LEN;
io_hdr.dxferp = inquiry_resp;
io_hdr.cmdp = inquiry_cmd;
io_hdr.sbp = sense_buffer;
io_hdr.timeout = 20000;
if (ioctl(fd, SG_IO, &io_hdr) < 0) {
close(fd);
}
result.append(QArrayDataPointer<unsigned char>::fromRawData(inquiry_resp, INQUIRY_RESP_LEN));
close(fd);
return result;
}
QString AsciiView::hexDump(const QVector<unsigned char> &data) {
QString result;
qsizetype dataSize = data.size();
int offset = 0;
for (qsizetype i = 0; i < dataSize; i += 16) {
QString line;
line += QString("%1 ").arg(offset, 8, 16, QChar('0')).toUpper();
offset += 16;
for (int j = 0; j < 16; ++j) {
if (i + j < dataSize) {
line += QString("%1 ").arg(static_cast<unsigned char>(data[i + j]), 2, 16, QChar('0')).toUpper();
} else {
line += " ";
}
if (j == 7) line += " ";
}
line += " ";
for (int j = 0; j < 16 && i + j < dataSize; ++j) {
unsigned char c = data[i + j];
line += (c >= 32 && c <= 126) ? QChar::fromLatin1(static_cast<char>(c)) : QChar('.');
}
result += line + "\n";
}
return result;
}

19
src/asciiview.h Normal file
View File

@@ -0,0 +1,19 @@
#pragma once
#include <QString>
#include <QVector>
#define SMART_READ_CMD_LEN 12
#define INQUIRY_CMD_LEN 6
#define SMART_READ_RESP_LEN 512
#define INQUIRY_RESP_LEN 96
#define SENSE_BUFFER_LEN 32
class AsciiView
{
public:
AsciiView() = default;
QVector<unsigned char> readSMARTData(const QString& device_path);
QString hexDump(const QVector<unsigned char> &data);
};

View File

@@ -1,11 +1,44 @@
#include "mainwindow.h"
#include "asciiview.h"
#include <QApplication>
#include <QTranslator>
#include <QLocale>
#include <iostream>
#include <ostream>
#include <unistd.h>
int main(int argc, char *argv[])
{
bool isHeadless = false;
QString devicePath;
for (int i = 1; i < argc; ++i) {
if (QString(argv[i]) == "--ascii-view") {
isHeadless = true;
if (i + 1 < argc) {
devicePath = argv[i + 1];
} else {
std::cerr << "Error: Missing device path after --ascii-view" << std::endl;
return 1;
}
break;
}
}
if (isHeadless) {
if (geteuid() == 0) {
AsciiView asciiview;
QVector<unsigned char> driveData = asciiview.readSMARTData(devicePath);
std::cout.write(reinterpret_cast<const char*>(driveData.data()), driveData.size());
std::cout.flush();
} else {
std::cerr << "Error: This action requires root privileges!" << std::endl;
return 1;
}
return 0;
}
QApplication a(argc, argv);
QTranslator translator;

View File

@@ -1,10 +1,15 @@
#include "mainwindow.h"
#include "asciiview.h"
#include "statusdot.h"
#include "custombutton.h"
#include "jsonparser.h"
#include <QDesktopServices>
#include <QFileDialog>
#include <QJsonDocument>
#include <QMessageBox>
#include <QUrl>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
@@ -756,6 +761,7 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal
if (protocol == "ATA") {
addSmartAttributesTable(attributes);
selfTestMenu->clear();
ui->actionASCII_View->setEnabled(true);
if (keys.isEmpty()) {
selfTestMenu->setDisabled(true);
@@ -803,13 +809,14 @@ void MainWindow::populateWindow(const QJsonObject &localObj, const QString &heal
}
} else if (protocol == "SCSI") {
selfTestMenu->clear();
ui->actionASCII_View->setEnabled(true);
selfTestMenu->setDisabled(true);
selfTestLogAction->setDisabled(true);
addSCSIErrorCounterLogTable(scsiErrorCounterLog);
} else {
addNvmeLogTable(nvmeLogOrdered);
selfTestMenu->clear();
ui->actionASCII_View->setDisabled(true); // TODO: Implement this for NVMe drives too
if (nvmeHasSelfTest) {
selfTestMenu->setEnabled(true);
@@ -1201,7 +1208,7 @@ void MainWindow::on_actionSave_JSON_triggered()
else {
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file for writing"),
QMessageBox::critical(this, tr("Unable to open file for writing"),
file.errorString());
return;
}
@@ -1331,3 +1338,57 @@ void MainWindow::on_actionClear_Settings_triggered()
}
}
void MainWindow::on_actionASCII_View_triggered()
{
QString deviceNodePath = deviceNodeLineEdit->text();
QProcess *process = new QProcess(this);
process->start("pkexec", {QCoreApplication::applicationFilePath(), "--ascii-view", deviceNodePath});
if (!process->waitForFinished()) {
return;
}
QByteArray binaryData = process->readAllStandardOutput();
QByteArray errorData = process->readAllStandardError();
if (!errorData.isEmpty()) {
QMessageBox::critical(this, tr("QDiskInfo Error"), tr("QDiskInfo needs root access in order to read S.M.A.R.T. data!"));
return;
}
AsciiView asciiview;
QString hexDumpOutput = asciiview.hexDump(QVector<unsigned char>(binaryData.begin(), binaryData.end()));
QDialog *asciiViewDialog = new QDialog(this);
asciiViewDialog->setWindowTitle(tr("ASCII View"));
QTextEdit *textView = new QTextEdit(asciiViewDialog);
textView->setText(hexDumpOutput);
textView->setReadOnly(true);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Close, asciiViewDialog);
connect(buttonBox, &QDialogButtonBox::rejected, asciiViewDialog, &QDialog::close);
connect(buttonBox->button(QDialogButtonBox::Save), &QPushButton::clicked, [binaryData, this, deviceNodePath]() {
QString filePath = QFileDialog::getSaveFileName(this, tr("Save Binary Data"), deviceNodePath.section('/', -1) + ".bin", tr("Binary Files (*.bin);;All Files (*)"));
if (!filePath.isEmpty()) {
QFile file(filePath);
if (file.open(QIODevice::WriteOnly)) {
file.write(binaryData);
file.close();
QMessageBox::information(this, tr("Success"), tr("Binary data saved successfully."));
} else {
QMessageBox::critical(this, tr("Unable to open file for writing"), file.errorString());
}
}
});
QVBoxLayout *layout = new QVBoxLayout(asciiViewDialog);
layout->addWidget(textView);
layout->addWidget(buttonBox);
asciiViewDialog->setLayout(layout);
asciiViewDialog->resize(550, 500);
asciiViewDialog->exec();
}

View File

@@ -8,11 +8,9 @@
#include <QSettings>
#include <QTableWidget>
#include <QWidget>
#include <QProcess>
#include <cmath>
#include "statusdot.h"
#include "custombutton.h"
#include "jsonparser.h"
#include "utils.h"
#include "./ui_mainwindow.h"
@@ -45,6 +43,8 @@ private slots:
void on_actionClear_Settings_triggered();
void on_actionASCII_View_triggered();
private:
Ui::MainWindow *ui;
QSettings settings;

View File

@@ -527,6 +527,8 @@
</property>
<addaction name="actionRescan_Refresh"/>
<addaction name="separator"/>
<addaction name="actionASCII_View"/>
<addaction name="separator"/>
</widget>
<widget class="QMenu" name="menuDisk">
<property name="title">
@@ -641,7 +643,12 @@
</action>
<action name="actionClear_Settings">
<property name="text">
<string>Clear Settings</string>
<string>Clear &amp;Settings</string>
</property>
</action>
<action name="actionASCII_View">
<property name="text">
<string>ASCII View</string>
</property>
</action>
</widget>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>Über Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Fehler</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo benötigt Rootzugriff um S.M.A.R.T. Daten zu lesen!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>Σχετικά με το Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">Σφάλμα QDiskInfo</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">Το QDiskInfo χρειάζεται δικαιώματα υπερχρήστη για να προσπελάσει τα δεδομένα S.M.A.R.T.!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>Acerca de Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">Error de QDiskInfo</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">¡QDiskInfo necesita acceso root para poder leer información S.M.A.R.T!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>Info su Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">Errore QDiskInfo</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo ha bisogno di accesso root per leggere i dati S.M.A.R.T!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>Sobre o Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Erro</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo precisa de acesso root para leitura dos dados S.M.A.R.T.!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>О Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">Ошибка QDiskInfo</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo нужен root доступ, чтобы прочитать данные S.M.A.R.T.</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation>Про Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">Помилка QDiskInfo</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo потрібен root-доступ для читання даних S.M.A.R.T.</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation type="unfinished">About Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo Error</translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo needs root access in order to read S.M.A.R.T. data!</translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation> Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo </translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo root S.M.A.R.T. </translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@@ -304,7 +304,35 @@
<translation> Qt</translation>
</message>
<message>
<source>Clear Settings</source>
<source>Clear &amp;Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ASCII View</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QDiskInfo Error</source>
<translation type="unfinished">QDiskInfo </translation>
</message>
<message>
<source>QDiskInfo needs root access in order to read S.M.A.R.T. data!</source>
<translation type="unfinished">QDiskInfo root S.M.A.R.T. </translation>
</message>
<message>
<source>Save Binary Data</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary Files (*.bin);;All Files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Success</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Binary data saved successfully.</source>
<translation type="unfinished"></translation>
</message>
</context>