Skip to content

Commit 598d7f0

Browse files
authored
Address show_page issue not updating navigation menu (#2097)
1 parent b0b599d commit 598d7f0

4 files changed

Lines changed: 29 additions & 6 deletions

File tree

api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridHostDeveloper.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"calculate_rack_shading": 0,
2828
"dcoptimizer_loss": 0,
2929
"en_snow_model": 0,
30+
"snow_array": [0.000000],
3031
"subarray1_dcwiring_loss": 2,
3132
"subarray1_diodeconn_loss": 0.5,
3233
"subarray1_electrical_mismatch": 0,

api/api_autogen/library/defaults/Pvsamv1_PhotovoltaicWindBatteryHybridSingleOwner.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"calculate_rack_shading": 0,
2828
"dcoptimizer_loss": 0,
2929
"en_snow_model": 0,
30+
"snow_array": [0.000000],
3031
"subarray1_dcwiring_loss": 2,
3132
"subarray1_diodeconn_loss": 0.5,
3233
"subarray1_electrical_mismatch": 0,

src/casewin.cpp

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,13 +1063,29 @@ wxArrayString CaseWindow::GetInputPages()
10631063
bool CaseWindow::SwitchToNavigationMenu(const wxString& name)
10641064
{
10651065
// iterate over menu tree items and match "name" or select first item (SAM issue 1618)
1066-
wxDataViewItem dvi;// = m_navigationMenu->GetNthChild(wxDataViewItem(0), 0);
1066+
wxDataViewItem dvi, dvi_child;// = m_navigationMenu->GetNthChild(wxDataViewItem(0), 0);
10671067
bool found = false;
1068+
10681069
int count = m_navigationMenu->GetChildCount(wxDataViewItem(0));
10691070
for (int i = 0; i < count && !found; i++) {
10701071
dvi = m_navigationMenu->GetNthChild(wxDataViewItem(0), i);
1071-
if (dvi.IsOk() && m_navigationMenu->GetItemText(dvi) == name)
1072-
found = true;
1072+
// should be a lambda function but not more than one deep...
1073+
if (m_navigationMenu->IsContainer(dvi)) {
1074+
int count_child = m_navigationMenu->GetChildCount(dvi);
1075+
for (int j = 0; j < count_child && !found; j++) {
1076+
dvi_child = m_navigationMenu->GetNthChild(dvi, j);
1077+
wxString stmp = m_navigationMenu->GetItemText(dvi_child); // for debugging
1078+
if (dvi_child.IsOk() && stmp == name) {
1079+
found = true;
1080+
dvi = dvi_child;
1081+
}
1082+
}
1083+
}
1084+
else {
1085+
wxString stmp = m_navigationMenu->GetItemText(dvi);
1086+
if (dvi.IsOk() && m_navigationMenu->GetItemText(dvi) == name)
1087+
found = true;
1088+
}
10731089
}
10741090
// first item if not found
10751091
if (!found)
@@ -1081,10 +1097,11 @@ bool CaseWindow::SwitchToNavigationMenu(const wxString& name)
10811097
if (dvi.IsOk()) {
10821098
m_navigationMenu->SetCurrentItem(dvi);
10831099
m_currentSelection = (dvi);
1100+
m_left_panel->SetFocus();
10841101
SwitchToInputPage(m_navigationMenu->GetItemText(dvi));
1102+
m_left_panel->Layout();
10851103
}
10861104

1087-
10881105
return true;
10891106
}
10901107

@@ -1119,6 +1136,7 @@ bool CaseWindow::SwitchToInputPage( const wxString &name )
11191136
int p = m_inputPageList->Find(name);
11201137
m_inputPageList->Select( p );
11211138
m_inputPageList->Refresh();
1139+
m_navigationMenu->Layout();
11221140
m_left_panel->Layout();// try to force onPaint call for the input page list
11231141

11241142
return true;
@@ -1157,7 +1175,9 @@ bool CaseWindow::SwitchToPage( const wxString &name )
11571175
else
11581176
{
11591177
m_pageFlipper->SetSelection( PG_INPUTS );
1160-
return SwitchToInputPage( name );
1178+
// return SwitchToInputPage(name);
1179+
SwitchToInputPage(name);
1180+
m_left_panel->Layout();
11611181
}
11621182

11631183
return true;

src/script.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,8 @@ void fcall_show_page(lk::invoke_t &cxt)
585585
wxString page_name = cxt.arg(0).as_string();
586586
Case *active_case = CurrentCase();
587587
if (CaseWindow *case_window = SamApp::Window()->GetCaseWindow(active_case))
588-
cxt.result().assign((case_window->SwitchToPage(page_name) ? 1.0 : 0.0));
588+
cxt.result().assign((case_window->SwitchToNavigationMenu(page_name) ? 1.0 : 0.0));
589+
// cxt.result().assign((case_window->SwitchToPage(page_name) ? 1.0 : 0.0));
589590
else cxt.error("no active case");
590591
}
591592

0 commit comments

Comments
 (0)