// show the status text based on current state void EbookController::UpdateStatus() { UpdateCurrPageNoForPage(pageShown); size_t pageCount = GetMaxPageCount(); if (fileBeingLoaded) { ScopedMem<WCHAR> s(str::Format(_TR("Loading file %s..."), fileBeingLoaded)); ctrls->status->SetText(s.Get()); ctrls->progress->SetFilled(0.f); return; } if (FormattingInProgress()) { ScopedMem<WCHAR> s(str::Format(_TR("Formatting the book... %d pages"), pageCount)); ctrls->status->SetText(s); ctrls->progress->SetFilled(0.f); return; } ScopedMem<WCHAR> s(str::Format(L"%s %d / %d", _TR("Page:"), currPageNo, pageCount)); ctrls->status->SetText(s); if (GetPagesFromBeginning()) ctrls->progress->SetFilled(PercFromInt(GetPagesFromBeginning()->Count(), currPageNo)); else ctrls->progress->SetFilled(0.f); }
bool wxSTEditorNotebook::InsertEditorSplitter(int nPage, wxSTEditorSplitter* splitter, bool bSelect) { wxCHECK_MSG(splitter && (splitter->GetParent() == this), false, wxT("Invalid wxSTEditorSplitter or parent")); if (GetPageCount() >= GetMaxPageCount()) { wxMessageBox(_("Maximum number of notebook pages exceeded,\nplease close one first."), _("Too many pages opened"), wxOK|wxICON_ERROR, this); delete splitter; return false; } wxString title(FileNameToTabName(splitter->GetEditor())); size_t n_pages = GetPageCount(); if (nPage < 0) // they want to insert it anywhere { // presort the insert page to reduce flicker if ((n_pages > 0) && GetOptions().HasNotebookOption(STN_ALPHABETICAL_TABS)) { wxArrayString names; names.Add(title+wxT("=999999")); // insert after any other pages with same name for (size_t n = 0; n < n_pages; n++) { wxString name(GetPageText(n)); if ((name.Length() > 0) && (name[0u] == wxT('*'))) name = name.Mid(1); names.Add(name + wxString::Format(wxT("=%d"), (int)n)); } names.Sort(STN_SortNameCompareFunction); nPage = names.Index(title+wxT("=999999")); } else nPage = (int)n_pages; } if (n_pages < 1) bSelect = true; if (nPage < int(n_pages)) return InsertPage(nPage, splitter, title, bSelect); bool ret = AddPage(splitter, title, bSelect); UpdateAllItems(); return ret; }
void EbookController::Navigate(int dir) { if (!CanNavigate(dir)) return; // update the current history entry int idx = currPageReparseIdx; if (navHistoryIx < navHistory.Count()) navHistory.At(navHistoryIx) = idx; else navHistory.Append(idx); navHistoryIx += dir; idx = navHistory.At(navHistoryIx); int pageNo = PageForReparsePoint(pages, idx); if (0 == pageNo) pageNo = GetMaxPageCount(); if (pageNo > 0) GoToPage(pageNo, false); }
wxSTEditorSplitter* wxSTEditorNotebook::InsertEditorSplitter(int nPage, wxWindowID win_id, const wxString& title, bool bSelect) { if (GetPageCount() >= GetMaxPageCount()) { wxMessageBox(_("Maximum number of notebook pages exceeded,\nplease close one first."), _("Too many pages opened"), wxOK|wxICON_ERROR, this); return NULL; } wxSTEditorSplitter *splitter = CreateSplitter(win_id); wxCHECK_MSG(splitter, NULL, wxT("Invalid splitter")); splitter->GetEditor()->NewFile(title); if (!InsertEditorSplitter(nPage, splitter, bSelect)) { wxDELETE(splitter); // failed to insert it, delete it to not leak memory } return splitter; }
// show the status text based on current state void EbookController::UpdateStatus() { int pageCount = GetMaxPageCount(); if (FormattingInProgress()) { ScopedMem<WCHAR> s(str::Format(_TR("Formatting the book... %d pages"), pageCount)); ctrls->status->SetText(s); ctrls->progress->SetFilled(0.f); return; } ScopedMem<WCHAR> s(str::Format(L"%s %d / %d", _TR("Page:"), currPageNo, pageCount)); ctrls->status->SetText(s); #if 1 ctrls->progress->SetFilled(PercFromInt(pageCount, currPageNo)); #else if (GetPages()) ctrls->progress->SetFilled(PercFromInt(pageCount, currPageNo)); else ctrls->progress->SetFilled(0.f); #endif }