forked from Ivasoft/DSView
Add file path remember feature
This commit is contained in:
@@ -114,9 +114,11 @@ void ProtocolExp::accept()
|
||||
if(i < supportedFormats.count() - 1)
|
||||
filter.append(";;");
|
||||
}
|
||||
const QString DIR_KEY("ProtocolExportPath");
|
||||
QSettings settings;
|
||||
QString default_filter = _format_combobox->currentText();
|
||||
QString file_name = QFileDialog::getSaveFileName(
|
||||
this, tr("Export Data"), "",filter,&default_filter);
|
||||
this, tr("Export Data"), settings.value(DIR_KEY).toString(),filter,&default_filter);
|
||||
if (!file_name.isEmpty()) {
|
||||
QFileInfo f(file_name);
|
||||
QStringList list = default_filter.split('.').last().split(')');
|
||||
@@ -124,6 +126,9 @@ void ProtocolExp::accept()
|
||||
if(f.suffix().compare(ext))
|
||||
file_name+=tr(".")+ext;
|
||||
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
|
||||
QFile file(file_name);
|
||||
file.open(QIODevice::WriteOnly | QIODevice::Text);
|
||||
QTextStream out(&file);
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
#include <QPainter>
|
||||
#include <QBitmap>
|
||||
#include <QResizeEvent>
|
||||
#include <QDesktopWidget>
|
||||
#include <QApplication>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
@@ -109,12 +111,14 @@ MainFrame::MainFrame(DeviceManager &device_manager,
|
||||
_layout->addWidget(_bottom_right, 2, 2);
|
||||
|
||||
connect(&_timer, SIGNAL(timeout()), this, SLOT(unfreezing()));
|
||||
readSettings();
|
||||
}
|
||||
|
||||
bool MainFrame::close()
|
||||
void MainFrame::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
_mainWindow->session_save();
|
||||
return QFrame::close();
|
||||
writeSettings();
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void MainFrame::unfreezing()
|
||||
@@ -200,7 +204,7 @@ bool MainFrame::eventFilter(QObject *object, QEvent *event)
|
||||
} else if(mouse_event->buttons().testFlag(Qt::LeftButton)) {
|
||||
if (_moving) {
|
||||
this->move(mouse_event->globalPos() - _lastMousePosition);
|
||||
} else if (!_freezing){
|
||||
} else if (!_freezing) {
|
||||
switch (_startPos) {
|
||||
case TopLeft:
|
||||
newWidth = std::max(_dragStartGeometry.right() - mouse_event->globalX(), minimumWidth());
|
||||
@@ -266,7 +270,7 @@ bool MainFrame::eventFilter(QObject *object, QEvent *event)
|
||||
break;
|
||||
}
|
||||
_freezing = true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else if (type == QEvent::MouseButtonPress) {
|
||||
@@ -275,7 +279,7 @@ bool MainFrame::eventFilter(QObject *object, QEvent *event)
|
||||
_startPos == None) {
|
||||
_moving = true;
|
||||
_lastMousePosition = mouse_event->pos() +
|
||||
QPoint(Margin, Margin) +
|
||||
//QPoint(Margin, Margin) +
|
||||
QPoint(geometry().left() - frameGeometry().left(), frameGeometry().right() - geometry().right());
|
||||
}
|
||||
if (_startPos != None)
|
||||
@@ -304,4 +308,27 @@ bool MainFrame::eventFilter(QObject *object, QEvent *event)
|
||||
return QObject::eventFilter(object, event);
|
||||
}
|
||||
|
||||
void MainFrame::writeSettings()
|
||||
{
|
||||
QSettings settings;
|
||||
|
||||
settings.beginGroup("MainFrame");
|
||||
settings.setValue("size", size());
|
||||
settings.setValue("pos", pos() +
|
||||
QPoint(geometry().left() - frameGeometry().left(), frameGeometry().right() - geometry().right()));
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
void MainFrame::readSettings()
|
||||
{
|
||||
QSettings settings;
|
||||
QDesktopWidget* desktopWidget = QApplication::desktop();
|
||||
QRect deskRect = desktopWidget->availableGeometry();
|
||||
|
||||
settings.beginGroup("MainFrame");
|
||||
resize(settings.value("size", QSize(minWidth, minHeight)).toSize());
|
||||
move(settings.value("pos", QPoint((deskRect.width() - minWidth)/2, (deskRect.height() - minHeight)/2)).toPoint());
|
||||
settings.endGroup();
|
||||
}
|
||||
|
||||
} // namespace pv
|
||||
|
||||
@@ -41,6 +41,9 @@ class TitleBar;
|
||||
class MainFrame : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
static const int minWidth = 800;
|
||||
static const int minHeight = 680;
|
||||
|
||||
public:
|
||||
static const int Margin = 8;
|
||||
@@ -64,17 +67,21 @@ public:
|
||||
void showMaxRestore();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *event);
|
||||
bool eventFilter(QObject *object, QEvent *event);
|
||||
|
||||
public slots:
|
||||
void unfreezing();
|
||||
bool close();
|
||||
void showNormal();
|
||||
void showMaximized();
|
||||
|
||||
private:
|
||||
void hide_border();
|
||||
void show_border();
|
||||
|
||||
void writeSettings();
|
||||
void readSettings();
|
||||
|
||||
private:
|
||||
toolbars::TitleBar *_titleBar;
|
||||
MainWindow *_mainWindow;
|
||||
|
||||
@@ -571,35 +571,42 @@ void MainWindow::on_search(bool visible)
|
||||
|
||||
void MainWindow::on_screenShot()
|
||||
{
|
||||
const QString DIR_KEY("ScreenShotPath");
|
||||
QSettings settings;
|
||||
QPixmap pixmap;
|
||||
QDesktopWidget *desktop = QApplication::desktop();
|
||||
pixmap = QPixmap::grabWindow(desktop->winId(), pos().x(), pos().y(), frameGeometry().width(), frameGeometry().height());
|
||||
QString format = "png";
|
||||
QString initialPath = QDir::currentPath()+
|
||||
tr("/untitled.") + format;
|
||||
|
||||
QString fileName = QFileDialog::getSaveFileName(this,
|
||||
tr("Save As"),initialPath,
|
||||
tr("Save As"),settings.value(DIR_KEY).toString(),
|
||||
tr("%1 Files (*.%2);;All Files (*)")
|
||||
.arg(format.toUpper()).arg(format));
|
||||
if (!fileName.isEmpty())
|
||||
if (!fileName.isEmpty()) {
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(fileName));
|
||||
pixmap.save(fileName, format.toLatin1());
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_save()
|
||||
{
|
||||
using pv::dialogs::StoreProgress;
|
||||
|
||||
const QString DIR_KEY("SavePath");
|
||||
QSettings settings;
|
||||
|
||||
// Stop any currently running capture session
|
||||
_session.stop_capture();
|
||||
|
||||
// Show the dialog
|
||||
const QString file_name = QFileDialog::getSaveFileName(
|
||||
this, tr("Save File"), "", tr("DSView Data (*.dsl)"));
|
||||
this, tr("Save File"), settings.value(DIR_KEY).toString(), tr("DSView Data (*.dsl)"));
|
||||
|
||||
if (file_name.isEmpty())
|
||||
return;
|
||||
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
StoreProgress *dlg = new StoreProgress(file_name, _session, this);
|
||||
dlg->run();
|
||||
}
|
||||
|
||||
@@ -123,12 +123,17 @@ FileBar::FileBar(SigSession &session, QWidget *parent) :
|
||||
|
||||
void FileBar::on_actionOpen_triggered()
|
||||
{
|
||||
const QString DIR_KEY("OpenPath");
|
||||
QSettings settings;
|
||||
// Show the dialog
|
||||
const QString file_name = QFileDialog::getOpenFileName(
|
||||
this, tr("Open File"), "", tr(
|
||||
this, tr("Open File"), settings.value(DIR_KEY).toString(), tr(
|
||||
"DSView Data (*.dsl);;All Files (*.*)"));
|
||||
if (!file_name.isEmpty())
|
||||
if (!file_name.isEmpty()) {
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
load_file(file_name);
|
||||
}
|
||||
}
|
||||
|
||||
void FileBar::session_error(
|
||||
@@ -151,6 +156,8 @@ void FileBar::show_session_error(
|
||||
}
|
||||
|
||||
void FileBar::on_actionExport_triggered(){
|
||||
const QString DIR_KEY("ExportPath");
|
||||
QSettings settings;
|
||||
int unit_size;
|
||||
uint64_t length;
|
||||
const void* buf = _session.get_buf(unit_size, length);
|
||||
@@ -170,13 +177,15 @@ void FileBar::on_actionExport_triggered(){
|
||||
filter.append(";;");
|
||||
}
|
||||
QString file_name = QFileDialog::getSaveFileName(
|
||||
this, tr("Export Data"), "",filter,&filter);
|
||||
this, tr("Export Data"), settings.value(DIR_KEY).toString(),filter,&filter);
|
||||
if (!file_name.isEmpty()) {
|
||||
QFileInfo f(file_name);
|
||||
QStringList list = filter.split('.').last().split(')');
|
||||
QString ext = list.first();
|
||||
if(f.suffix().compare(ext))
|
||||
file_name+=tr(".")+ext;
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
_session.export_file(file_name, this, ext);
|
||||
}
|
||||
}
|
||||
@@ -184,6 +193,8 @@ void FileBar::on_actionExport_triggered(){
|
||||
|
||||
void FileBar::on_actionSave_triggered()
|
||||
{
|
||||
const QString DIR_KEY("SavePath");
|
||||
QSettings settings;
|
||||
//save();
|
||||
int unit_size;
|
||||
uint64_t length;
|
||||
@@ -197,13 +208,15 @@ void FileBar::on_actionSave_triggered()
|
||||
msg.exec();
|
||||
} else {
|
||||
QString file_name = QFileDialog::getSaveFileName(
|
||||
this, tr("Save File"), "",
|
||||
this, tr("Save File"), settings.value(DIR_KEY).toString(),
|
||||
tr("DSView Data (*.dsl)"));
|
||||
|
||||
if (!file_name.isEmpty()) {
|
||||
QFileInfo f(file_name);
|
||||
if(f.suffix().compare("dsl"))
|
||||
file_name.append(tr(".dsl"));
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
_session.save_file(file_name, this, _session.get_device()->dev_inst()->mode);
|
||||
}
|
||||
}
|
||||
@@ -212,12 +225,17 @@ void FileBar::on_actionSave_triggered()
|
||||
|
||||
void FileBar::on_actionLoad_triggered()
|
||||
{
|
||||
const QString DIR_KEY("SessionLoadPath");
|
||||
QSettings settings;
|
||||
// Show the dialog
|
||||
const QString file_name = QFileDialog::getOpenFileName(
|
||||
this, tr("Open Session"), "", tr(
|
||||
this, tr("Open Session"), settings.value(DIR_KEY).toString(), tr(
|
||||
"DSView Session (*.dsc)"));
|
||||
if (!file_name.isEmpty())
|
||||
if (!file_name.isEmpty()) {
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
load_session(file_name);
|
||||
}
|
||||
}
|
||||
|
||||
void FileBar::on_actionDefault_triggered()
|
||||
@@ -242,14 +260,17 @@ void FileBar::on_actionDefault_triggered()
|
||||
|
||||
void FileBar::on_actionStore_triggered()
|
||||
{
|
||||
QString default_name = _session.get_device()->name();
|
||||
const QString DIR_KEY("SessionStorePath");
|
||||
QSettings settings;
|
||||
QString file_name = QFileDialog::getSaveFileName(
|
||||
this, tr("Save Session"), default_name,
|
||||
this, tr("Save Session"), settings.value(DIR_KEY).toString(),
|
||||
tr("DSView Session (*.dsc)"));
|
||||
if (!file_name.isEmpty()) {
|
||||
QFileInfo f(file_name);
|
||||
if(f.suffix().compare("dsc"))
|
||||
file_name.append(tr(".dsc"));
|
||||
QDir CurrentDir;
|
||||
settings.setValue(DIR_KEY, CurrentDir.absoluteFilePath(file_name));
|
||||
store_session(file_name);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user