static void update_list() { unsigned Count = airspace_warnings->warning_size(); if (Count > 0) { wAirspaceList->SetLength(Count); int i = -1; if (CursorAirspace != NULL) { i = airspace_warnings->get_warning_index(*CursorAirspace); if (i >= 0) wAirspaceList->SetCursorIndex(i); } if (i < 0) /* the selection may have changed, update CursorAirspace */ AirspaceWarningCursorCallback(wAirspaceList->GetCursorIndex()); } else { wAirspaceList->SetLength(1); CursorAirspace = NULL; } wAirspaceList->invalidate(); AutoHide(); }
static void UpdateList() { CopyList(); if (!warning_list.empty()) { warning_list_frame->SetLength(warning_list.size()); int i = -1; if (selected_airspace != NULL) { auto it = std::find(warning_list.begin(), warning_list.end(), *selected_airspace); if (it != warning_list.end()) { i = it - warning_list.begin(); warning_list_frame->SetCursorIndex(i); } } if (i < 0) /* the selection may have changed, update CursorAirspace */ AirspaceWarningCursorCallback(warning_list_frame->GetCursorIndex()); } else { warning_list_frame->SetLength(1); selected_airspace = NULL; } warning_list_frame->Invalidate(); UpdateButtons(); AutoHide(); }
void DockWindow::AutoHideGroup(int align, String group) { ALIGN_ASSERT(align); bool all = group == "All"; for (int i = 0; i < dockers.GetCount(); i++) if (all || dockers[i]->GetGroup() == group) AutoHide(align, *dockers[i]); }
/** ack day */ static void Ack2() { const AbstractAirspace *airspace = GetSelectedAirspace(); if (airspace != NULL) { airspace_warnings->acknowledge_day(*airspace, true); wAirspaceList->invalidate(); AutoHide(); } }
static void AckWarning() { const AbstractAirspace *airspace = GetSelectedAirspace(); if (airspace != NULL) { airspace_warnings->acknowledge_warning(*airspace, true); UpdateList(); AutoHide(); } }
/** ack day */ static void OnAck2Clicked(WindowControl * Sender){ (void)Sender; const AbstractAirspace *airspace = GetSelectedAirspace(); if (airspace != NULL) { airspace_warnings.acknowledge_day(*airspace, true); wAirspaceList->invalidate(); AutoHide(); } }
void DockWindow::SerializeLayout(Stream &s, bool withsavedlayouts) { StopHighlight(false); int cnt = 0; s.Magic(); // Groups ArrayMap<String, Vector<int> > groups; if (s.IsStoring()) for (int i = 0; i < dockers.GetCount(); i++) { String g = dockers[i]->GetGroup(); if (!g.IsEmpty()) { int ix = groups.Find(g); if (ix < 0) { groups.Add(dockers[i]->GetGroup(), Vector<int>()); ix = groups.GetCount() - 1; } groups[ix].Add(i); } } s % groups; if (s.IsLoading()) { ClearLayout(); for (int i = 0; i < dockers.GetCount(); i++) dockers[i]->SetGroup(Null); for (int i = 0; i < groups.GetCount(); i++) { Vector<int> &v = groups[i]; const String &g = groups.GetKey(i); for (int j = 0; j < v.GetCount(); j++) { int ix = v[j]; if (ix >= 0 && ix < dockers.GetCount()) dockers[ix]->SetGroup(g); } } } if (s.IsStoring()) { // Write docked for (int i = 0; i < 4; i++) { DockPane &pane = dockpane[i]; int fsz = dockframe[i].IsShown() ? dockframe[i].GetSize() : 0; s / fsz % pane; DockCont *dc = dynamic_cast<DockCont *>(pane.GetFirstChild()); for (int j = 0; dc && j < pane.GetCount(); j++) { s % *dc; dc = dynamic_cast<DockCont *>(dc->GetNext()); } } cnt = 0; // Count Floating for (int i = 0; i < conts.GetCount(); i++) if (conts[i].IsFloating()) cnt++; // Write Floating s / cnt; for (int i = 0; i < conts.GetCount(); i++) { if (conts[i].IsFloating()) { conts[i].Serialize(s); conts[i].SerializePlacement(s, false); } } // Write Autohidden for (int i = 0; i < 4; i++) { cnt = hideframe[i].GetCount(); s / cnt; for (int j = 0; j < hideframe[i].GetCount(); j++) { int ix = FindDocker(&hideframe[i].GetCtrl(j)->Get(0)); if (ix >= 0) s / ix; } } } else { // Read docked for (int i = 0; i < 4; i++) { DockPane &pane = dockpane[i]; dockframe[i].Hide(); int fsz; s / fsz % pane; for (int j = 0; j < pane.GetCount(); j++) { DockCont *dc = CreateContainer(); s % *dc; dc->StateDocked(*this); pane << *dc; } if (fsz && pane.GetCount()) { dockframe[i].SetSize(fsz); dockframe[i].Show(); } else dockframe[i].SetSize(0); } // Read floating s / cnt; for (int i = 0; i < cnt; i++) { DockCont *dc = CreateContainer(); dc->Serialize(s); FloatContainer(*dc); dc->SerializePlacement(s, false); } // Read Autohidden for (int i = 0; i < 4; i++) { s / cnt; for (int j = 0; j < cnt; j++) { int ix; s / ix; if (ix >= 0 && ix < dockers.GetCount()) AutoHide(i, *dockers[ix]); } } // Clear empty containers for (int i = conts.GetCount()-1; i >= 0; i--) { if (!conts.GetCount()) CloseContainer(conts[i]); } RefreshLayout(); } bool haslay = withsavedlayouts; s % haslay; if (withsavedlayouts && (s.IsStoring() || haslay)) s % layouts; s.Magic(); }
void DockWindow::AutoHide(DockableCtrl &dc) { int align = GetDockAlign(dc); AutoHide(align == DOCK_NONE ? DOCK_TOP : align, dc); }
void DockWindow::AutoHideContainer(int align, DockCont &c) { while (c.GetCount() && !c.IsAutoHide()) AutoHide(align, c.Get(0)); }