Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/core/gui_core_headers.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@
#include "../gui/MyNewRefinementPackageWizard.h"
#include "../gui/NewTemplateMatchesPackageWizard.h"
#include "../gui/MyResultsPanel.h"
#include "../gui/ResultsPanelSpa.h"
#include "../gui/ResultsPanelTm.h"
#include "../gui/ActionsPanelSpa.h"
#include "../gui/ActionsPanelTm.h"
#include "../gui/MyAssetsPanel.h"
Expand Down
5 changes: 0 additions & 5 deletions src/gui/ActionsPanelTm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ void ActionsPanelTm::OnActionsBookPageChanged(wxBookCtrlEvent& event) {
extern MyAlignMoviesPanel* align_movies_panel;
extern MyFindCTFPanel* findctf_panel;
extern MatchTemplatePanel* match_template_panel;
extern MatchTemplateResultsPanel* match_template_results_panel;
extern RefineTemplatePanel* refine_template_panel;
extern Generate3DPanel* generate_3d_panel;
extern Sharpen3DPanel* sharpen_3d_panel;
Expand All @@ -25,10 +24,6 @@ void ActionsPanelTm::OnActionsBookPageChanged(wxBookCtrlEvent& event) {
match_template_panel->Refresh( );
}
else if ( event.GetSelection( ) == 1 ) {
match_template_results_panel->Layout( );
match_template_results_panel->Refresh( );
}
else if ( event.GetSelection( ) == 2 ) {
refine_template_panel->Layout( );
refine_template_panel->Refresh( );
}
Expand Down
39 changes: 33 additions & 6 deletions src/gui/MainFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ extern Sharpen3DPanel* sharpen_3d_panel;
extern MySettingsPanel* settings_panel;
extern MyRunProfilesPanel* run_profiles_panel;

extern MyResultsPanel* results_panel;
extern ResultsPanelSpa* results_panel_spa;
extern ResultsPanelTm* results_panel_tm;
extern MyResultsPanel* results_panel;
extern MyMovieAlignResultsPanel* movie_results_panel;
extern MyFindCTFResultsPanel* ctf_results_panel;
extern MyPickingResultsPanel* picking_results_panel;
Expand Down Expand Up @@ -210,12 +212,22 @@ void MyMainFrame::OnMenuBookChange(wxBookCtrlEvent& event) {
movie_asset_panel->Refresh( );
}
else if ( event.GetSelection( ) == 2 ) {
actions_panel->ActionsBook->Refresh( );
// Refresh the appropriate actions panel based on the current workflow
if (current_workflow == cistem::workflow::template_matching) {
actions_panel_tm->ActionsBook->Refresh( );
} else {
actions_panel_spa->ActionsBook->Refresh( );
}
align_movies_panel->Layout( );
align_movies_panel->Refresh( );
}
else if ( event.GetSelection( ) == 3 ) {
results_panel->ResultsBook->Refresh( );
// Refresh the appropriate results panel based on the current workflow
if (current_workflow == cistem::workflow::template_matching) {
results_panel_tm->ResultsBook->Refresh( );
} else {
results_panel_spa->ResultsBook->Refresh( );
}
movie_results_panel->Layout( );
movie_results_panel->Refresh( );
}
Expand Down Expand Up @@ -934,9 +946,15 @@ void MyMainFrame::SetSingleParticleWorkflow(bool triggered_by_gui_event) {
switch ( current_workflow ) {
case cistem::workflow::template_matching: {
UpdateWorkflow(actions_panel_tm, actions_panel_spa, "Actions");

// If other panels, e.g. results is a likely next candidate, it should go here.
// TODO: if there are multiple panels to switch, we'll need to only do the update and set the icon for the LAST call in this sequence.

// Also update the results panel
int displayed_page_idx = MenuBook->FindPage(MenuBook->GetCurrentPage());
int current_page_idx = MenuBook->FindPage(results_panel_tm);
MenuBook->RemovePage(current_page_idx);
MenuBook->InsertPage(current_page_idx, results_panel_spa, "Results", false, current_page_idx);
results_panel = results_panel_spa;
MenuBook->SetSelection(displayed_page_idx);

break;
}
default: {
Expand All @@ -962,6 +980,15 @@ void MyMainFrame::SetTemplateMatchingWorkflow(bool triggered_by_gui_event) {
if ( current_workflow != cistem::workflow::template_matching ) {
previous_workflow = current_workflow;
UpdateWorkflow(actions_panel_spa, actions_panel_tm, "Actions");

// Also update the results panel
int displayed_page_idx = MenuBook->FindPage(MenuBook->GetCurrentPage());
int current_page_idx = MenuBook->FindPage(results_panel_spa);
MenuBook->RemovePage(current_page_idx);
MenuBook->InsertPage(current_page_idx, results_panel_tm, "Results", false, current_page_idx);
results_panel = results_panel_tm;
MenuBook->SetSelection(displayed_page_idx);

current_workflow = cistem::workflow::template_matching;
if ( current_project.is_open == true )
current_project.RecordCurrentWorkflowInDB(current_workflow);
Expand Down
5 changes: 5 additions & 0 deletions src/gui/MyResultsPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ void MyResultsPanel::OnResultsBookPageChanged(wxBookCtrlEvent& event) {
extern MyPickingResultsPanel* picking_results_panel;
extern Refine2DResultsPanel* refine2d_results_panel;
extern MyRefinementResultsPanel* refinement_results_panel;
extern MatchTemplateResultsPanel* match_template_results_panel;

// We we were editing the particle picking results, and we move away from Results, we may need to do some database stuff
if ( event.GetOldSelection( ) == 2 )
Expand Down Expand Up @@ -41,5 +42,9 @@ void MyResultsPanel::OnResultsBookPageChanged(wxBookCtrlEvent& event) {
refinement_results_panel->Layout( );
refinement_results_panel->Refresh( );
}
else if ( event.GetSelection( ) == 5 ) {
match_template_results_panel->Layout( );
match_template_results_panel->Refresh( );
}
#endif
}
45 changes: 45 additions & 0 deletions src/gui/ResultsPanelSpa.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#include "../core/gui_core_headers.h"

ResultsPanelSpa::ResultsPanelSpa(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
: ResultsPanel(parent, id, pos, size, style) {
// Bind OnListBookPageChanged from
Bind(wxEVT_LISTBOOK_PAGE_CHANGED, wxBookCtrlEventHandler(ResultsPanelSpa::OnResultsBookPageChanged), this);
}

// TODO: destructor

void ResultsPanelSpa::OnResultsBookPageChanged(wxBookCtrlEvent& event) {
extern MyMovieAlignResultsPanel* movie_results_panel;
extern MyFindCTFResultsPanel* ctf_results_panel;
extern MyPickingResultsPanel* picking_results_panel;
extern Refine2DResultsPanel* refine2d_results_panel;
extern MyRefinementResultsPanel* refinement_results_panel;

// We we were editing the particle picking results, and we move away from Results, we may need to do some database stuff
if (event.GetOldSelection() == 2)
picking_results_panel->UpdateResultsFromBitmapPanel();

#ifdef __WXOSX__
// Necessary for MacOS to refresh the panels
if (event.GetSelection() == 0) {
movie_results_panel->Layout();
movie_results_panel->Refresh();
}
else if (event.GetSelection() == 1) {
ctf_results_panel->Layout();
ctf_results_panel->Refresh();
}
else if (event.GetSelection() == 2) {
picking_results_panel->Layout();
picking_results_panel->Refresh();
}
else if (event.GetSelection() == 3) {
refine2d_results_panel->Layout();
refine2d_results_panel->Refresh();
}
else if (event.GetSelection() == 4) {
refinement_results_panel->Layout();
refinement_results_panel->Refresh();
}
#endif
}
10 changes: 10 additions & 0 deletions src/gui/ResultsPanelSpa.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef gui_ResultsPanelSpa_h_
#define gui_ResultsPanelSpa_h_

class ResultsPanelSpa : public ResultsPanel {
public:
ResultsPanelSpa(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(500, 300), long style = wxTAB_TRAVERSAL);
void OnResultsBookPageChanged(wxBookCtrlEvent& event);
};

#endif
50 changes: 50 additions & 0 deletions src/gui/ResultsPanelTm.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include "../core/gui_core_headers.h"

ResultsPanelTm::ResultsPanelTm(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
: ResultsPanel(parent, id, pos, size, style) {
// Bind OnListBookPageChanged from
Bind(wxEVT_LISTBOOK_PAGE_CHANGED, wxBookCtrlEventHandler(ResultsPanelTm::OnResultsBookPageChanged), this);
}

// TODO: destructor

void ResultsPanelTm::OnResultsBookPageChanged(wxBookCtrlEvent& event) {
extern MyMovieAlignResultsPanel* movie_results_panel;
extern MyFindCTFResultsPanel* ctf_results_panel;
extern MyPickingResultsPanel* picking_results_panel;
extern Refine2DResultsPanel* refine2d_results_panel;
extern MyRefinementResultsPanel* refinement_results_panel;
extern MatchTemplateResultsPanel* match_template_results_panel;

// We we were editing the particle picking results, and we move away from Results, we may need to do some database stuff
if (event.GetOldSelection() == 2)
picking_results_panel->UpdateResultsFromBitmapPanel();

#ifdef __WXOSX__
// Necessary for MacOS to refresh the panels
if (event.GetSelection() == 0) {
movie_results_panel->Layout();
movie_results_panel->Refresh();
}
else if (event.GetSelection() == 1) {
ctf_results_panel->Layout();
ctf_results_panel->Refresh();
}
else if (event.GetSelection() == 2) {
picking_results_panel->Layout();
picking_results_panel->Refresh();
}
else if (event.GetSelection() == 3) {
refine2d_results_panel->Layout();
refine2d_results_panel->Refresh();
}
else if (event.GetSelection() == 4) {
refinement_results_panel->Layout();
refinement_results_panel->Refresh();
}
else if (event.GetSelection() == 5) {
match_template_results_panel->Layout();
match_template_results_panel->Refresh();
}
#endif
}
10 changes: 10 additions & 0 deletions src/gui/ResultsPanelTm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef _gui_ResultsPanelTm_h_
#define _gui_ResultsPanelTm_h_

class ResultsPanelTm : public ResultsPanel {
public:
ResultsPanelTm(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(500, 300), long style = wxTAB_TRAVERSAL);
void OnResultsBookPageChanged(wxBookCtrlEvent& event);
};

#endif
41 changes: 26 additions & 15 deletions src/programs/projectx/projectx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ MyOverviewPanel* overview_panel;
ActionsPanelSpa* actions_panel_spa;
ActionsPanelTm* actions_panel_tm;
AssetsPanel* assets_panel;
MyResultsPanel* results_panel;
ResultsPanelSpa* results_panel_spa;
ResultsPanelTm* results_panel_tm;
MyResultsPanel* results_panel; // Keep this temporarily for compatibility
SettingsPanel* settings_panel;
MatchTemplatePanel* match_template_panel;
MatchTemplateResultsPanel* match_template_results_panel;
Expand Down Expand Up @@ -125,7 +127,9 @@ bool MyGuiApp::OnInit( ) {
actions_panel_spa = new ActionsPanelSpa(main_frame->MenuBook, wxID_ANY);
actions_panel_tm = new ActionsPanelTm(main_frame->MenuBook, wxID_ANY);
assets_panel = new MyAssetsPanel(main_frame->MenuBook, wxID_ANY);
results_panel = new MyResultsPanel(main_frame->MenuBook, wxID_ANY);
results_panel_spa = new ResultsPanelSpa(main_frame->MenuBook, wxID_ANY);
results_panel_tm = new ResultsPanelTm(main_frame->MenuBook, wxID_ANY);
results_panel = results_panel_spa; // For compatibility with code that uses results_panel, default to SPA
settings_panel = new MySettingsPanel(main_frame->MenuBook, wxID_ANY);
#ifdef EXPERIMENTAL
experimental_panel = new MyExperimentalPanel(main_frame->MenuBook, wxID_ANY);
Expand Down Expand Up @@ -153,16 +157,16 @@ bool MyGuiApp::OnInit( ) {
generate_3d_panel = new Generate3DPanel(actions_panel_spa->ActionsBook);
sharpen_3d_panel = new Sharpen3DPanel(actions_panel_spa->ActionsBook);

movie_results_panel = new MyMovieAlignResultsPanel(results_panel->ResultsBook);
ctf_results_panel = new MyFindCTFResultsPanel(results_panel->ResultsBook);
picking_results_panel = new MyPickingResultsPanel(results_panel->ResultsBook);
refine2d_results_panel = new Refine2DResultsPanel(results_panel->ResultsBook);
refinement_results_panel = new MyRefinementResultsPanel(results_panel->ResultsBook);
movie_results_panel = new MyMovieAlignResultsPanel(results_panel_spa->ResultsBook);
ctf_results_panel = new MyFindCTFResultsPanel(results_panel_spa->ResultsBook);
picking_results_panel = new MyPickingResultsPanel(results_panel_spa->ResultsBook);
refine2d_results_panel = new Refine2DResultsPanel(results_panel_spa->ResultsBook);
refinement_results_panel = new MyRefinementResultsPanel(results_panel_spa->ResultsBook);

// The other panels will be "stolen" from actions_panel_spa by "Reparenting" when the menu
// item is selected in MainFrame.cpp
match_template_panel = new MatchTemplatePanel(actions_panel_tm->ActionsBook);
match_template_results_panel = new MatchTemplateResultsPanel(actions_panel_tm->ActionsBook);
match_template_results_panel = new MatchTemplateResultsPanel(results_panel_tm->ResultsBook);
refine_template_panel = new RefineTemplatePanel(actions_panel_tm->ActionsBook);
#ifdef EXPERIMENTAL
refine_template_dev_panel = new RefineTemplateDevPanel(experimental_panel->ExperimentalBook);
Expand Down Expand Up @@ -279,7 +283,7 @@ bool MyGuiApp::OnInit( ) {
main_frame->MenuBook->RemovePage(2);

main_frame->MenuBook->AddPage(actions_panel_spa, "Actions", false, 2);
main_frame->MenuBook->AddPage(results_panel, "Results", false, 3);
main_frame->MenuBook->AddPage(results_panel_spa, "Results", false, 3);
main_frame->MenuBook->AddPage(settings_panel, "Settings", false, 4);
#ifdef EXPERIMENTAL
main_frame->MenuBook->AddPage(experimental_panel, "Experimental", false, 5);
Expand Down Expand Up @@ -310,15 +314,22 @@ bool MyGuiApp::OnInit( ) {
actions_panel_tm->ActionsBook->AddPage(findctf_panel, "Find CTF", false, 1);
actions_panel_tm->ActionsBook->AddPage(match_template_panel, "Match Templates", false, 2);
actions_panel_tm->ActionsBook->AddPage(refine_template_panel, "Refine Template", false, 3);
actions_panel_tm->ActionsBook->AddPage(match_template_results_panel, "MT Results", false, 2);
actions_panel_tm->ActionsBook->AddPage(generate_3d_panel, "Generate 3D", false, 4);
actions_panel_tm->ActionsBook->AddPage(sharpen_3d_panel, "Sharpen 3D", false, 5);

results_panel->ResultsBook->AddPage(movie_results_panel, "Align Movies", true, 0);
results_panel->ResultsBook->AddPage(ctf_results_panel, "Find CTF", false, 1);
results_panel->ResultsBook->AddPage(picking_results_panel, "Find Particles", false, 2);
results_panel->ResultsBook->AddPage(refine2d_results_panel, "2D Classify", false, 3);
results_panel->ResultsBook->AddPage(refinement_results_panel, "3D Refinement", false, 4);
results_panel_spa->ResultsBook->AddPage(movie_results_panel, "Align Movies", true, 0);
results_panel_spa->ResultsBook->AddPage(ctf_results_panel, "Find CTF", false, 1);
results_panel_spa->ResultsBook->AddPage(picking_results_panel, "Find Particles", false, 2);
results_panel_spa->ResultsBook->AddPage(refine2d_results_panel, "2D Classify", false, 3);
results_panel_spa->ResultsBook->AddPage(refinement_results_panel, "3D Refinement", false, 4);

// TM Results Panel - add to TM panel only
results_panel_tm->ResultsBook->AddPage(movie_results_panel, "Align Movies", true, 0);
results_panel_tm->ResultsBook->AddPage(ctf_results_panel, "Find CTF", false, 1);
results_panel_tm->ResultsBook->AddPage(picking_results_panel, "Find Particles", false, 2);
results_panel_tm->ResultsBook->AddPage(refine2d_results_panel, "2D Classify", false, 3);
results_panel_tm->ResultsBook->AddPage(refinement_results_panel, "3D Refinement", false, 4);
results_panel_tm->ResultsBook->AddPage(match_template_results_panel, "MT Results", false, 5);

settings_panel->SettingsBook->AddPage(run_profiles_panel, "Run Profiles", true, 0);

Expand Down