Skip to content

Commit 69dae2a

Browse files
On new session creation, apply default preset layout (#555)
* On new session creation, apply default preset layout * Fixed Widget test compilation
1 parent d509407 commit 69dae2a

File tree

8 files changed

+130
-51
lines changed

8 files changed

+130
-51
lines changed

src/examples/source/SmartPeakGUI.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ int main(int argc, char** argv)
136136

137137
// widgets: pop ups
138138
auto file_picker_ = std::make_shared<FilePicker>();
139-
auto session_files_widget_create_ = std::make_shared<SessionFilesWidget>(application_handler_, SessionFilesWidget::Mode::ECreation, workflow_manager_, &event_dispatcher);
140-
auto session_files_widget_modify_ = std::make_shared<SessionFilesWidget>(application_handler_, SessionFilesWidget::Mode::EModification, workflow_manager_, &event_dispatcher);
139+
auto session_files_widget_create_ = std::make_shared<SessionFilesWidget>(application_handler_, SessionFilesWidget::Mode::ECreation, workflow_manager_, split_window, &event_dispatcher);
140+
auto session_files_widget_modify_ = std::make_shared<SessionFilesWidget>(application_handler_, SessionFilesWidget::Mode::EModification, workflow_manager_, split_window, &event_dispatcher);
141141
auto create_session_widget_ = std::make_shared<CreateSessionWidget>(application_handler_, session_files_widget_create_);
142142
auto run_workflow_widget_ = std::make_shared<RunWorkflowWidget>(application_handler_,
143143
session_handler_,

src/tests/class_tests/smartpeak/source/Widget_test.cpp

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,14 @@ TEST(Widget, widget_constructors)
105105
EXPECT_NO_THROW(generictablewidget_ptr = new GenericTableWidget("empty_generic_table"));
106106
delete generictablewidget_ptr;
107107

108+
struct ExplorerWidgetObserverTest : public IExplorerWidgetObserver
109+
{
110+
virtual void onExplorerCheckboxesChanged()
111+
{
112+
}
113+
} explorer_observer_test;
108114
ExplorerWidget* explorerwidget_ptr = nullptr;
109-
EXPECT_NO_THROW(explorerwidget_ptr = new ExplorerWidget("empty_explorer_table"));
115+
EXPECT_NO_THROW(explorerwidget_ptr = new ExplorerWidget("empty_explorer_table", "empty_explorer_table", explorer_observer_test));
110116
delete explorerwidget_ptr;
111117
}
112118

@@ -391,8 +397,8 @@ TEST(WorfklowStepNodeGraph, updateCommands)
391397
class SessionFilesWidget_Test : public SessionFilesWidget
392398
{
393399
public:
394-
SessionFilesWidget_Test(ApplicationHandler& application_handler, SessionFilesWidget::Mode mode, WorkflowManager& workflow_manager) :
395-
SessionFilesWidget(application_handler, mode, workflow_manager, nullptr)
400+
SessionFilesWidget_Test(ApplicationHandler& application_handler, SessionFilesWidget::Mode mode, WorkflowManager& workflow_manager, SplitWindow& split_window) :
401+
SessionFilesWidget(application_handler, mode, workflow_manager, split_window, nullptr)
396402
{};
397403

398404
public:
@@ -426,10 +432,12 @@ class SessionFilesWidget_Test : public SessionFilesWidget
426432

427433
TEST(SessionFilesWidget, SessionFilesWidget_Create)
428434
{
435+
AllWindows all_windows;
436+
SplitWindow split_window(all_windows);
429437
ApplicationHandler application_handler;
430438
WorkflowManager workflow_manager;
431439
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
432-
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
440+
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
433441

434442
session_widget_test.open(filenames);
435443
auto& file_editor_fields = session_widget_test.getEditorFileFields();
@@ -454,20 +462,24 @@ TEST(SessionFilesWidget, SessionFilesWidget_Create)
454462

455463
TEST(SessionFilesWidget, SessionFilesWidget_isModified)
456464
{
465+
AllWindows all_windows;
466+
SplitWindow split_window(all_windows);
457467
ApplicationHandler application_handler;
458468
WorkflowManager workflow_manager;
459469
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
460-
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
470+
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
461471
session_widget_test.open(filenames);
462472
EXPECT_EQ(session_widget_test.isModified("parameters"), false);
463473
}
464474

465475
TEST(SessionFilesWidget, SessionFilesWidget_clearEntry)
466476
{
477+
AllWindows all_windows;
478+
SplitWindow split_window(all_windows);
467479
ApplicationHandler application_handler;
468480
WorkflowManager workflow_manager;
469481
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
470-
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
482+
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
471483
session_widget_test.open(filenames);
472484

473485
auto& file_editor_fields = session_widget_test.getEditorFileFields();
@@ -484,10 +496,12 @@ TEST(SessionFilesWidget, SessionFilesWidget_clearEntry)
484496

485497
TEST(SessionFilesWidget, SessionFilesWidget_doUpdateSession)
486498
{
499+
AllWindows all_windows;
500+
SplitWindow split_window(all_windows);
487501
ApplicationHandler application_handler;
488502
WorkflowManager workflow_manager;
489503
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
490-
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
504+
SessionFilesWidget_Test session_widget_test(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
491505

492506
session_widget_test.open(filenames);
493507
session_widget_test.doUpdateSession();
@@ -502,14 +516,16 @@ TEST(SessionFilesWidget, SessionFilesWidget_doUpdateSession)
502516

503517
TEST(SessionFilesWidget, SessionFilesWidget_Modify_ChangeExternalFile)
504518
{
519+
AllWindows all_windows;
520+
SplitWindow split_window(all_windows);
505521
ApplicationHandler application_handler;
506522
WorkflowManager workflow_manager;
507523
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
508-
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
524+
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
509525
session_widget_test_create.open(filenames);
510526
session_widget_test_create.doUpdateSession();
511527

512-
SessionFilesWidget_Test session_widget_test_modify(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
528+
SessionFilesWidget_Test session_widget_test_modify(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
513529
session_widget_test_modify.open(application_handler.filenames_);
514530

515531
auto& file_editor_fields = session_widget_test_modify.getEditorFileFields();
@@ -540,14 +556,16 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_ChangeExternalFile)
540556

541557
TEST(SessionFilesWidget, SessionFilesWidget_Modify_ChangeFromExternalToEmbedded)
542558
{
559+
AllWindows all_windows;
560+
SplitWindow split_window(all_windows);
543561
ApplicationHandler application_handler;
544562
WorkflowManager workflow_manager;
545563
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
546-
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
564+
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
547565
session_widget_test_create.open(filenames);
548566
session_widget_test_create.doUpdateSession();
549567

550-
SessionFilesWidget_Test session_widget_test_modify(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
568+
SessionFilesWidget_Test session_widget_test_modify(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
551569
session_widget_test_modify.open(application_handler.filenames_);
552570

553571
auto& file_editor_fields = session_widget_test_modify.getEditorFileFields();
@@ -582,7 +600,7 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_ChangeFromExternalToEmbedded)
582600
auto db_path = tmp_dir_path / "session.db";
583601
SaveSession save_session(application_handler);
584602
save_session.onFilePicked(db_path, &application_handler);
585-
auto session_widget_test_modify2 = std::make_shared<SessionFilesWidget>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
603+
auto session_widget_test_modify2 = std::make_shared<SessionFilesWidget>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
586604
auto load_session_wizard_ = std::make_shared<LoadSessionWizard>(session_widget_test_modify2, workflow_manager, application_handler);
587605
load_session_wizard_->onFilePicked(db_path, &application_handler);
588606
ParameterSet& parameter_set3 = application_handler.sequenceHandler_.getSequence().at(0).getRawData().getParameters();
@@ -593,10 +611,12 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_ChangeFromExternalToEmbedded)
593611

594612
TEST(SessionFilesWidget, SessionFilesWidget_Modify_FileContent)
595613
{
614+
AllWindows all_windows;
615+
SplitWindow split_window(all_windows);
596616
ApplicationHandler application_handler;
597617
WorkflowManager workflow_manager;
598618
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
599-
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
619+
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
600620
session_widget_test_create.open(filenames);
601621
session_widget_test_create.doUpdateSession();
602622

@@ -606,7 +626,7 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_FileContent)
606626
parameter_set.findParameter("AbsoluteQuantitation", "min_points")->setValueFromString("42");
607627
application_handler.sequenceHandler_.notifyParametersUpdated();
608628

609-
SessionFilesWidget_Test session_widget_test_modify(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
629+
SessionFilesWidget_Test session_widget_test_modify(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
610630
session_widget_test_modify.open(application_handler.filenames_);
611631
// only the parameter data source should be tagged as to be saved
612632
auto& file_editor_fields = session_widget_test_modify.getEditorFileFields();
@@ -618,10 +638,12 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_FileContent)
618638

619639
TEST(SessionFilesWidget, SessionFilesWidget_Modify_NoPopupError)
620640
{
641+
AllWindows all_windows;
642+
SplitWindow split_window(all_windows);
621643
ApplicationHandler application_handler;
622644
WorkflowManager workflow_manager;
623645
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
624-
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
646+
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
625647
session_widget_test_create.open(filenames);
626648

627649
// Clear all, keep sequence and parameters both embedded
@@ -646,7 +668,7 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_NoPopupError)
646668
save_session.onFilePicked(db_path, &application_handler);
647669

648670
// load session
649-
auto session_widget_test_modify = std::make_shared<SessionFilesWidget>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
671+
auto session_widget_test_modify = std::make_shared<SessionFilesWidget>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
650672
auto load_session_wizard_ = std::make_shared<LoadSessionWizard>(session_widget_test_modify, workflow_manager, application_handler);
651673
load_session_wizard_->onFilePicked(db_path, &application_handler);
652674

@@ -660,10 +682,12 @@ TEST(SessionFilesWidget, SessionFilesWidget_Modify_NoPopupError)
660682

661683
TEST(SessionFilesWidget, LoadSessionWizard_PopupError)
662684
{
685+
AllWindows all_windows;
686+
SplitWindow split_window(all_windows);
663687
ApplicationHandler application_handler;
664688
WorkflowManager workflow_manager;
665689
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
666-
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
690+
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
667691
session_widget_test_create.open(filenames);
668692

669693
// Clear all, keep sequence and parameters, sequence only embedded
@@ -693,7 +717,7 @@ TEST(SessionFilesWidget, LoadSessionWizard_PopupError)
693717
save_session.onFilePicked(db_path, &application_handler);
694718

695719
// load session
696-
auto session_widget_test_modify = std::make_shared<SessionFilesWidget_Test>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
720+
auto session_widget_test_modify = std::make_shared<SessionFilesWidget_Test>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
697721
auto session_widget_modify = std::static_pointer_cast<SessionFilesWidget>(session_widget_test_modify);
698722
auto load_session_wizard_ = std::make_shared<LoadSessionWizard>(session_widget_modify, workflow_manager, application_handler);
699723
load_session_wizard_->onFilePicked(db_path, &application_handler);
@@ -726,8 +750,10 @@ TEST(SessionFilesWidget, LoadSessionWizard_IncorrectSessionFile)
726750
std::string error_;
727751
};
728752
// load session (incorrect file: we will use one parameter file instead)
753+
AllWindows all_windows;
754+
SplitWindow split_window(all_windows);
729755
TestApplicationObserver test_application_observer;
730-
auto session_widget_test_modify = std::make_shared<SessionFilesWidget_Test>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
756+
auto session_widget_test_modify = std::make_shared<SessionFilesWidget_Test>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
731757
auto session_widget_modify = std::static_pointer_cast<SessionFilesWidget>(session_widget_test_modify);
732758
auto load_session_wizard_ = std::make_shared<LoadSessionWizard>(
733759
session_widget_modify,
@@ -743,11 +769,13 @@ TEST(SessionFilesWidget, SessionFilesWidget_EmbedAllFiles)
743769
{
744770
// More integration test like,
745771
// we just try to embed lot of file from different nature: parameters, feature filters files ...
746-
// Note: we save in working directory as this implies differrent cases compared to other test case above.
772+
// Note: we save in working directory as this implies different cases compared to other test case above.
773+
AllWindows all_windows;
774+
SplitWindow split_window(all_windows);
747775
ApplicationHandler application_handler;
748776
WorkflowManager workflow_manager;
749777
Filenames filenames = Utilities::buildFilenamesFromDirectory(application_handler, SMARTPEAK_GET_TEST_DATA_PATH("workflow_csv_files"));
750-
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager);
778+
SessionFilesWidget_Test session_widget_test_create(application_handler, SessionFilesWidget::Mode::ECreation, workflow_manager, split_window);
751779
session_widget_test_create.open(filenames);
752780
auto& file_editor_fields = session_widget_test_create.getEditorFileFields();
753781
EXPECT_EQ(file_editor_fields.size(), 24);
@@ -776,7 +804,7 @@ TEST(SessionFilesWidget, SessionFilesWidget_EmbedAllFiles)
776804
SaveSession save_session(application_handler);
777805
save_session.onFilePicked(db_path, &application_handler);
778806

779-
auto session_widget_test_modify = std::make_shared<SessionFilesWidget_Test>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager);
807+
auto session_widget_test_modify = std::make_shared<SessionFilesWidget_Test>(application_handler, SessionFilesWidget::Mode::EModification, workflow_manager, split_window);
780808
auto session_widget_modify = std::static_pointer_cast<SessionFilesWidget>(session_widget_test_modify);
781809
auto load_session_wizard_ = std::make_shared<LoadSessionWizard>(session_widget_modify, workflow_manager, application_handler);
782810
load_session_wizard_->onFilePicked(db_path, &application_handler);

src/widgets/include/SmartPeak/PresetWorkflows/PresetWorkflow.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,7 @@ namespace SmartPeak
3535
virtual std::string getDescription() const = 0;
3636
virtual std::vector<std::string> getWorkflowSteps() const = 0;
3737
virtual std::map<std::string, std::vector<std::tuple<std::shared_ptr<Widget>, bool>>> getLayout(const AllWindows& all_windows) const = 0;
38+
39+
static const std::vector<std::shared_ptr<PresetWorkflow>> all_presets_;
3840
};
3941
}

src/widgets/include/SmartPeak/ui/SessionFilesWidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <SmartPeak/ui/Widget.h>
2626
#include <SmartPeak/core/ApplicationHandler.h>
2727
#include <SmartPeak/core/WorkflowManager.h>
28+
#include <SmartPeak/ui/SplitWindow.h>
2829
#include <SmartPeak/ui/FilePicker.h>
2930
#include <misc/cpp/imgui_stdlib.h>
3031
#include <string>
@@ -46,6 +47,7 @@ namespace SmartPeak
4647
ApplicationHandler& application_handler,
4748
SessionFilesWidget::Mode mode,
4849
WorkflowManager& workflow_manager,
50+
SplitWindow& split_window,
4951
IApplicationProcessorObserver* application_processor_observer = nullptr,
5052
ISequenceProcessorObserver* sequence_processor_observer = nullptr,
5153
ISequenceSegmentProcessorObserver* sequence_segment_processor_observer = nullptr,
@@ -77,6 +79,7 @@ namespace SmartPeak
7779
Mode mode_;
7880
std::set<std::string> requirements_;
7981
WorkflowManager& workflow_manager_;
82+
SplitWindow& split_window_;
8083

8184
protected:
8285
virtual void doUpdateSession();

0 commit comments

Comments
 (0)