diff --git a/plugins/MatrixVisualizer/MatrixVisualizer.cpp b/plugins/MatrixVisualizer/MatrixVisualizer.cpp index 71a8adf22720701770f34a68d1fc9e7d045718fd..56412723bfcd9e037ac3797033a203248db98861 100644 --- a/plugins/MatrixVisualizer/MatrixVisualizer.cpp +++ b/plugins/MatrixVisualizer/MatrixVisualizer.cpp @@ -1,8 +1,11 @@ #include "MatrixVisualizer.hpp" #include "Configuration.hpp" +#include "common/Session.hpp" #include <QFileDialog> +#define SESSION_FILENAME( fname ) QString::fromStdString( "plugins/mv/files/" + fname ) + Matrix_visualizer* Matrix_visualizer::s_plugin = nullptr; SymbolParser Matrix_visualizer::s_symbol_parser; OrderParser Matrix_visualizer::s_order_parser; @@ -23,14 +26,31 @@ Matrix_visualizer* Matrix_visualizer::get_instance() return s_plugin; } +void +Matrix_visualizer::set_line_edit_defaults( QLineEdit *le, std::string name, std::string def_name ) +{ + Session &s = Session::getSession(); + QString lineedit_fname; + QString session_fname; + + session_fname = SESSION_FILENAME( name ); + if (s.contains( session_fname ) ) { + lineedit_fname = s.value( session_fname ).toString(); + } + else { + lineedit_fname = QString::fromStdString(def_name); + } + le->setText( lineedit_fname ); +} + // Plugin implementation itself Matrix_visualizer::Matrix_visualizer() { setupUi(this); - s_plugin = this; - // For windows dev (pc: orange) - this->line_edit_symbol->setText("/home/mathieu/1-PaStiX/pastix/build/symbol_rank"); + set_line_edit_defaults( this->line_edit_symbol, "symbol", "symbol.sps" ); + set_line_edit_defaults( this->line_edit_order, "order", "order.ord" ); + set_line_edit_defaults( this->line_edit_values, "values", "values.txt" ); } Matrix_visualizer::~Matrix_visualizer(){ @@ -54,6 +74,8 @@ std::string Matrix_visualizer::get_name(){ int Matrix_visualizer::update_matrix( QString filepath ) { + Session &s = Session::getSession(); + symbol_matrix_t *new_matrix; // Check if there is a symbol file @@ -72,6 +94,7 @@ int Matrix_visualizer::update_matrix( QString filepath ) Helper::log(LogStatus::FATAL, "Parsed matrix is empty"); return -1; } + s.setValue( "plugins/mv/files/symbol", filepath ); if ( s_matrix != nullptr ) { symbol_matrix_deinit( s_matrix ); @@ -209,14 +232,24 @@ void Matrix_visualizer::set_infos(const char* format, va_list ap) **********************/ void Matrix_visualizer::on_tool_button_symbol_clicked() { - QString symbol_filepath = QFileDialog::getOpenFileName(s_plugin, tr("Open file"), "C://"); + QString symbol_filepath = QFileDialog::getOpenFileName( s_plugin, tr("Open file"), + s_plugin->line_edit_symbol->text() ); s_plugin->line_edit_symbol->setText(symbol_filepath); } +void Matrix_visualizer::on_tool_button_order_clicked() +{ + QString order_filepath = QFileDialog::getOpenFileName( s_plugin, tr("Open file"), + s_plugin->line_edit_order->text() ); + + s_plugin->line_edit_order->setText(order_filepath); +} + void Matrix_visualizer::on_tool_button_values_clicked() { - QString values_filepath = QFileDialog::getOpenFileName(s_plugin, tr("Open file"), "C://"); + QString values_filepath = QFileDialog::getOpenFileName( s_plugin, tr("Open file"), + s_plugin->line_edit_values->text() ); s_plugin->line_edit_values->setText(values_filepath); } diff --git a/plugins/MatrixVisualizer/MatrixVisualizer.hpp b/plugins/MatrixVisualizer/MatrixVisualizer.hpp index 9837b60252e7c0d2b282a0c35ba0a2895cec68df..a15ea9e0cbdf90696f7ff0414dd839ebbbe5229c 100644 --- a/plugins/MatrixVisualizer/MatrixVisualizer.hpp +++ b/plugins/MatrixVisualizer/MatrixVisualizer.hpp @@ -34,12 +34,14 @@ private: int update_values( QString filepath ); void connect_widgets(); + void set_line_edit_defaults( QLineEdit *le, std::string name, std::string def_name ); public slots: void execute(); private slots: static void on_tool_button_symbol_clicked(); + static void on_tool_button_order_clicked(); static void on_tool_button_values_clicked(); static void on_tool_button_infos_clicked(); static void on_tool_button_logs_clicked(); diff --git a/src/common/Session.cpp b/src/common/Session.cpp index 911e39c233afea791c498ba2755584838808ea03..c963c14df796afecbfe45540e9a72c1c5e4c326b 100644 --- a/src/common/Session.cpp +++ b/src/common/Session.cpp @@ -189,9 +189,9 @@ void Session::add_recent_file(const QString &filename) { // We delete if the file was already call in order to be on the top of the list files.removeAll(filename); files.prepend(filename); - while (files.size() > _MAX_NB_RECENT_FILES) + while (files.size() > _MAX_NB_RECENT_FILES) { files.removeLast(); - + } S->setValue(RECENT_FILES, files); }