NS_IMETHODIMP mozSpellChecker::Replace(const nsAString &aOldWord, const nsAString &aNewWord, bool aAllOccurrences) { if(!mConverter) return NS_ERROR_NULL_POINTER; nsAutoString newWord(aNewWord); // sigh if(aAllOccurrences){ int32_t selOffset; int32_t startBlock,currentBlock,currOffset; int32_t begin,end; bool done; nsresult result; nsAutoString str; // find out where we are result = SetupDoc(&selOffset); if(NS_FAILED(result)) return result; result = GetCurrentBlockIndex(mTsDoc,&startBlock); if(NS_FAILED(result)) return result; //start at the beginning result = mTsDoc->FirstBlock(); currOffset=0; currentBlock = 0; while( NS_SUCCEEDED(mTsDoc->IsDone(&done)) && !done ) { result = mTsDoc->GetCurrentTextBlock(&str); do{ result = mConverter->FindNextWord(str.get(),str.Length(),currOffset,&begin,&end); if(NS_SUCCEEDED(result)&&(begin != -1)){ if (aOldWord.Equals(Substring(str, begin, end-begin))) { // if we are before the current selection point but in the same block // move the selection point forwards if((currentBlock == startBlock)&&(begin < selOffset)){ selOffset += int32_t(aNewWord.Length()) - int32_t(aOldWord.Length()); if(selOffset < begin) selOffset=begin; } mTsDoc->SetSelection(begin, end-begin); mTsDoc->InsertText(&newWord); mTsDoc->GetCurrentTextBlock(&str); end += (aNewWord.Length() - aOldWord.Length()); // recursion was cute in GEB, not here. } } currOffset = end; }while(currOffset != -1); mTsDoc->NextBlock(); currentBlock++; currOffset=0; } // We are done replacing. Put the selection point back where we found it (or equivalent); result = mTsDoc->FirstBlock(); currentBlock = 0; while(( NS_SUCCEEDED(mTsDoc->IsDone(&done)) && !done ) &&(currentBlock < startBlock)){ mTsDoc->NextBlock(); } //After we have moved to the block where the first occurrence of replace was done, put the //selection to the next word following it. In case there is no word following it i.e if it happens //to be the last word in that block, then move to the next block and put the selection to the //first word in that block, otherwise when the Setupdoc() is called, it queries the LastSelectedBlock() //and the selection offset of the last occurrence of the replaced word is taken instead of the first //occurrence and things get messed up as reported in the bug 244969 if( NS_SUCCEEDED(mTsDoc->IsDone(&done)) && !done ){ nsString str; result = mTsDoc->GetCurrentTextBlock(&str); result = mConverter->FindNextWord(str.get(),str.Length(),selOffset,&begin,&end); if(end == -1) { mTsDoc->NextBlock(); selOffset=0; result = mTsDoc->GetCurrentTextBlock(&str); result = mConverter->FindNextWord(str.get(),str.Length(),selOffset,&begin,&end); mTsDoc->SetSelection(begin, 0); } else mTsDoc->SetSelection(begin, 0); } } else{ mTsDoc->InsertText(&newWord); } return NS_OK; }
void CXTPCalendarViewDay::SetSelected() { XTP_SAFE_CALL1(GetView_(), SetSelection(GetDayDate(), GetDayDate())); }
void SetText(const wxString &text) { SetValue(text); SetSelection(text.Len(),text.Len()); }
void CFolderSummary::UpdateData() { CPlayerSummaryMgr *pPSummary = g_pGameClientShell->GetPlayerSummary(); if (!pPSummary) return; CMissionData* pMissionData = g_pInterfaceMgr->GetMissionData(); if (!pMissionData) return; int nMissionNum = pMissionData->GetMissionNum(); MISSION* pMission = g_pMissionMgr->GetMission(nMissionNum); if (!pMission) return; MISSIONSUMMARY* pMSummary = pPSummary->GetMissionSummary(nMissionNum); if (!pMSummary) return; pPSummary->ReadRankData(); RemoveFree(); CLTGUITextItemCtrl* pCtrl = LTNULL; CLTGUIColumnTextCtrl *pRanks=AddColumnText(LTNULL, LTNULL, LTTRUE, GetLargeFont()); // The rank header pRanks->AddColumn(IDS_STAT_RANK, 200, LTF_JUSTIFY_LEFT); if (m_nFolderID != FOLDER_ID_FAILURE) { pRanks->AddColumn(IDS_SUMMARY_BEST, 200, LTF_JUSTIFY_LEFT); } pRanks->Enable(LTFALSE); pRanks=AddColumnText(LTNULL, LTNULL, LTTRUE, GetSmallFont()); //rank LTFLOAT fRank = 0.0f; int nRankId = 0; if (m_nFolderID == FOLDER_ID_FAILURE) { pRanks->AddColumn(IDS_STAT_FAILED, 200, LTF_JUSTIFY_LEFT); } else { fRank = pMSummary->fCurRank; nRankId = g_pMissionMgr->GetMissionRating()->GetRankId(fRank); pRanks->AddColumn(nRankId, 200, LTF_JUSTIFY_LEFT); } if (m_nFolderID != FOLDER_ID_FAILURE) { //best rank fRank = pMSummary->fBestRank; nRankId = g_pMissionMgr->GetMissionRating()->GetRankId(fRank); pRanks->AddColumn(nRankId, 200, LTF_JUSTIFY_LEFT); } pRanks->Enable(LTFALSE); //time in mission char str[128]; LTFLOAT fSec = pMSummary->fTotalMissionTime; uint32 nMin = (uint32)fSec / 60; fSec -= (60.0f * (LTFLOAT)nMin); uint32 nHour = nMin / 60; nMin -= 60 * nHour; sprintf(str,"%02d:%02d:%.1f",nHour,nMin,fSec); HSTRING hTxt=g_pLTClient->FormatString(IDS_STAT_TIME,str); pCtrl= AddTextItem(hTxt,LTNULL,0,LTTRUE, GetLargeFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); //accuracy if (pMission->bAllowAwards) { pCtrl = AddTextItem(IDS_STAT_ACCURACY,LTNULL,0, LTTRUE, GetLargeFont()); pCtrl->Enable(LTFALSE); LTFLOAT fAccuracy = 0.0f; if (pMSummary->dwNumShotsFired) { fAccuracy = (LTFLOAT) pMSummary->dwNumHits / (LTFLOAT) pMSummary->dwNumShotsFired; int nAccuracy =(int)( 100.0f * fAccuracy); //shots fired hTxt=g_pLTClient->FormatString(IDS_STAT_SHOTS, pMSummary->dwNumShotsFired,pMSummary->dwNumHits, nAccuracy); pCtrl= AddTextItem(hTxt,LTNULL,0,LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); //hit locations uint32 h = pMSummary->dwHitLocations[HL_HEAD]; uint32 t = pMSummary->dwHitLocations[HL_TORSO]; uint32 a = pMSummary->dwHitLocations[HL_ARM]; uint32 l = pMSummary->dwHitLocations[HL_LEG]; hTxt=g_pLTClient->FormatString(IDS_STAT_HITS,h,t,(a+l)); pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); // casualties pCtrl = AddTextItem(IDS_STAT_CASUALTIES,LTNULL,0, LTTRUE, GetLargeFont()); pCtrl->Enable(LTFALSE); hTxt=g_pLTClient->FormatString(IDS_STAT_KILLS, pMSummary->dwNumEnemyKills, pMSummary->dwNumFriendKills, pMSummary->dwNumNeutralKills); pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); } else { hTxt=g_pLTClient->FormatString(IDS_STAT_NOSHOTS); pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); } //stealth pCtrl = AddTextItem(IDS_STAT_STEALTH,LTNULL,0, LTTRUE, GetLargeFont()); pCtrl->Enable(LTFALSE); hTxt=g_pLTClient->FormatString(IDS_STAT_DETECTED,pMSummary->dwNumTimesDetected,pMSummary->dwNumDisturbances); pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); hTxt=g_pLTClient->FormatString(IDS_STAT_DETECTED2,pMSummary->dwNumBodies,pMSummary->dwNumTimesHit); pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); g_pLTClient->FreeString(hTxt); } //inteligence pCtrl = AddTextItem(IDS_STAT_INTEL,LTNULL,0, LTTRUE, GetLargeFont()); pCtrl->Enable(LTFALSE); int cur = pMSummary->m_nMissionCurNumIntel; int total = pMSummary->m_nMissionTotalIntel; hTxt=g_pLTClient->FormatString(IDS_SUMMARY_FOUND,cur,total); pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont()); pCtrl->Enable(LTFALSE); if (m_nFolderID == FOLDER_ID_FAILURE) { nContinueId = FOLDER_ID_LOAD; nContinueHelpId = IDS_HELP_LOAD; } else { // Generate Awards CFolderAwards* pAwards = (CFolderAwards*)m_pFolderMgr->GetFolderFromID(FOLDER_ID_AWARDS); pAwards->UpdateData(); if (pAwards->HasAwards()) { nContinueId = FOLDER_ID_AWARDS; nContinueHelpId = IDS_HELP_AWARDS; } else { nContinueId = FOLDER_ID_BRIEFING; nContinueHelpId = IDS_HELP_NEXTMISSION; } } UseContinue(nContinueId,nContinueHelpId); CalculateLastDrawn(); CheckArrows(); SetSelection(GetIndex(m_pContinue)); }
bool wxNotebook::InsertPage( size_t position, wxNotebookPage* win, const wxString& text, bool select, int imageId ) { wxCHECK_MSG( m_widget != NULL, false, wxT("invalid notebook") ); wxCHECK_MSG( win->GetParent() == this, false, wxT("Can't add a page whose parent is not the notebook!") ); wxCHECK_MSG( position <= GetPageCount(), false, wxT("invalid page index in wxNotebookPage::InsertPage()") ); // Hack Alert! (Part II): See above in wxNotebook::AddChildGTK // why this has to be done. gtk_widget_unparent(win->m_widget); if (m_themeEnabled) win->SetThemeEnabled(true); GtkNotebook *notebook = GTK_NOTEBOOK(m_widget); wxGtkNotebookPage* pageData = new wxGtkNotebookPage; m_pages.Insert(win, position); m_pagesData.Insert(position, pageData); // set the label image and text // this must be done before adding the page, as GetPageText // and GetPageImage will otherwise return wrong values in // the page-changed event that results from inserting the // first page. pageData->m_imageIndex = imageId; pageData->m_box = gtk_hbox_new(false, 1); gtk_container_set_border_width(GTK_CONTAINER(pageData->m_box), 2); pageData->m_image = NULL; if (imageId != -1) { if (HasImageList()) { const wxBitmap* bitmap = GetImageList()->GetBitmapPtr(imageId); pageData->m_image = gtk_image_new_from_pixbuf(bitmap->GetPixbuf()); gtk_box_pack_start(GTK_BOX(pageData->m_box), pageData->m_image, false, false, m_padding); } else { wxFAIL_MSG("invalid notebook imagelist"); } } /* set the label text */ pageData->m_label = gtk_label_new(wxGTK_CONV(wxStripMenuCodes(text))); gtk_box_pack_end(GTK_BOX(pageData->m_box), pageData->m_label, false, false, m_padding); gtk_widget_show_all(pageData->m_box); gtk_notebook_insert_page(notebook, win->m_widget, pageData->m_box, position); /* apply current style */ GtkRcStyle *style = GTKCreateWidgetStyle(); if ( style ) { gtk_widget_modify_style(pageData->m_label, style); g_object_unref(style); } if (select && GetPageCount() > 1) { SetSelection( position ); } InvalidateBestSize(); return true; }
VOID CFolderDialog::OnInitialized(VOID) { if (::lstrlen(m_szSelPath) > 0) SetSelection(m_szSelPath); }
void LineEdit::LeftDouble(Point, dword) { int l, h; if(GetWordSelection(cursor, l, h)) SetSelection(l, h); }
PropertiesDialog::PropertiesDialog(wxWindow *parent, bool fileExistsOnDisk, int initialPage) : m_validatedPlural(-1), m_validatedLang(-1) { wxXmlResource::Get()->LoadDialog(this, parent, "properties"); m_team = XRCCTRL(*this, "team_name", wxTextCtrl); m_teamEmail = XRCCTRL(*this, "team_email", wxTextCtrl); m_project = XRCCTRL(*this, "prj_name", wxTextCtrl); m_language = XRCCTRL(*this, "language", LanguageCtrl); m_charset = XRCCTRL(*this, "charset", wxComboBox); m_basePath = XRCCTRL(*this, "basepath", wxTextCtrl); m_sourceCodeCharset = XRCCTRL(*this, "source_code_charset", wxComboBox); m_pluralFormsDefault = XRCCTRL(*this, "plural_forms_default", wxRadioButton); m_pluralFormsCustom = XRCCTRL(*this, "plural_forms_custom", wxRadioButton); m_pluralFormsExpr = XRCCTRL(*this, "plural_forms_expr", wxTextCtrl); #if defined(__WXMSW__) && !wxCHECK_VERSION(3,1,0) m_pluralFormsExpr->SetFont(m_pluralFormsExpr->GetFont().Smaller()); #else m_pluralFormsExpr->SetWindowVariant(wxWINDOW_VARIANT_SMALL); #endif // my custom controls: m_keywords = new wxEditableListBox(this, -1, _("Additional keywords")); m_paths = new wxEditableListBox(this, -1, _("Paths")); m_excludedPaths = new wxEditableListBox(this, -1, _("Excluded paths")); m_paths->SetMinSize(wxSize(-1, 90)); m_excludedPaths->SetMinSize(wxSize(-1, 90)); #ifdef __WXOSX__ for (auto l: {m_keywords, m_paths, m_excludedPaths}) { for (auto c: l->GetChildren()) { c->SetWindowVariant(wxWINDOW_VARIANT_SMALL); for (auto c2: c->GetChildren()) c2->SetWindowVariant(wxWINDOW_VARIANT_SMALL); } } #endif // __WXOSX__ wxXmlResource::Get()->AttachUnknownControl("keywords", m_keywords); wxXmlResource::Get()->AttachUnknownControl("paths", m_paths); wxXmlResource::Get()->AttachUnknownControl("excluded_paths", m_excludedPaths); // Controls setup: m_project->SetHint(_("Name of the project the translation is for")); m_pluralFormsExpr->SetHint(_("e.g. nplurals=2; plural=(n > 1);")); Layout(); GetSizer()->SetSizeHints(this); if (!fileExistsOnDisk) DisableSourcesControls(); auto nb = XRCCTRL(*this, "properties_notebook", wxNotebook); nb->SetSelection(initialPage); m_language->Bind(wxEVT_TEXT, &PropertiesDialog::OnLanguageChanged, this); m_language->Bind(wxEVT_COMBOBOX, &PropertiesDialog::OnLanguageChanged, this); m_pluralFormsDefault->Bind(wxEVT_RADIOBUTTON, &PropertiesDialog::OnPluralFormsDefault, this); m_pluralFormsCustom->Bind(wxEVT_RADIOBUTTON, &PropertiesDialog::OnPluralFormsCustom, this); m_pluralFormsExpr->Bind( wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(m_pluralFormsCustom->GetValue()); }); m_pluralFormsExpr->Bind( wxEVT_TEXT, [=](wxCommandEvent& e){ m_validatedPlural = -1; e.Skip(); }); Bind(wxEVT_UPDATE_UI, [=](wxUpdateUIEvent& e){ e.Enable(Validate()); }, wxID_OK); CallAfter([=]{ m_project->SetFocus(); }); }
/** * Move the cursor to offset <code>index</code>. */ void Selection::SetSelection( /* [in] */ ISpannable* text, /* [in] */ Int32 index) { SetSelection(text, index, index); }
BOOL CBCGPPlannerViewMonth::OnKeyDown(UINT nChar, UINT /*nRepCnt*/, UINT /*nFlags*/) { if (m_pCapturedAppointment != NULL) { GetPlanner ()->SendMessage (WM_CANCELMODE, 0, 0); return TRUE; } BOOL isShiftPressed = (0x8000 & GetKeyState(VK_SHIFT)) != 0; BOOL bHandled = FALSE; if (nChar == VK_PRIOR || nChar == VK_NEXT) // Page Up, Page Down { OnVScroll (nChar == VK_PRIOR ? SB_PAGEUP : SB_PAGEDOWN, 0, NULL); SetSelection (m_Date, m_Date); bHandled = TRUE; } else if (nChar == VK_HOME || nChar == VK_END) { COleDateTime date ( GetFirstWeekDay2 (m_Date, CBCGPPlannerManagerCtrl::GetFirstDayOfWeek () + 1) ); if (nChar == VK_END) { date += COleDateTimeSpan (6, 0, 0, 0); } if (!isShiftPressed) { m_Date = date; } else { if (nChar == VK_HOME) { COleDateTime oldDate (m_Date); m_Date = date; date = oldDate; } else { m_Date = m_Selection[1]; } } SetSelection (m_Date, date); bHandled = TRUE; } else if (nChar == VK_UP || nChar == VK_DOWN || nChar == VK_LEFT || nChar == VK_RIGHT) { COleDateTime date (m_Selection [1]); COleDateTimeSpan span (1, 0, 0 ,0); if (nChar == VK_LEFT) { date -= span; } else if (nChar == VK_RIGHT) { date += span; } else { span = COleDateTimeSpan (7, 0, 0 ,0); if (nChar == VK_UP) { date -= span; } else if (nChar == VK_DOWN) { date += span; } } BOOL bScroll = FALSE; if (date < m_DateStart) { OnVScroll (SB_LINEUP, 0, NULL); bScroll = TRUE; } else if (date >= (m_DateStart + COleDateTimeSpan (GetViewDuration (), 0, 0, 0))) { OnVScroll (SB_LINEDOWN, 0, NULL); bScroll = TRUE; } if (!isShiftPressed || bScroll) { m_Date = date; SetSelection (m_Date, m_Date); } else { SetSelection (m_Selection [0], date); if (date <= m_Date) { m_Date = date; } } bHandled = TRUE; } return bHandled; }
void __fastcall TFeatureChildForm::FormCreate(TObject *Sender) { SetSelection(); }
void wxListBoxBase::Command(wxCommandEvent& event) { SetSelection(event.GetInt(), event.GetExtraLong() != 0); (void)GetEventHandler()->ProcessEvent(event); }
void wxComboBox::OnSelectAll(wxCommandEvent& WXUNUSED(event)) { SetSelection(-1, -1); }
void wxComboBox::SelectAll() { SetSelection(0, GetLastPosition()); }
void wxTextCtrlBase::SelectAll() { SetSelection(0, GetLastPosition()); }
void wxTextWidgetImpl::Replace( long from , long to , const wxString &val ) { SetSelection( from , to ) ; WriteText( val ) ; }
/* TextEditor::openJumpToDialog * Initialises and opens the 'Jump To' dialog *******************************************************************/ void TextEditor::openJumpToDialog() { // Can't do this without a language definition or defined blocks if (!language || language->nJumpBlocks() == 0) return; // --- Scan for functions/scripts --- Tokenizer tz; vector<jp_t> jump_points; tz.openString(GetText()); string token = tz.getToken(); while (!tz.atEnd()) { if (token == "{") { // Skip block while (!tz.atEnd() && token != "}") token = tz.getToken(); } for (unsigned a = 0; a < language->nJumpBlocks(); a++) { // Get jump block keyword string block = language->jumpBlock(a); long skip = 0; if (block.Contains(":")) { wxArrayString sp = wxSplit(block, ':'); sp.back().ToLong(&skip); block = sp[0]; } if (S_CMPNOCASE(token, block)) { string name = tz.getToken(); for (int s = 0; s < skip; s++) name = tz.getToken(); for (unsigned i = 0; i < language->nJBIgnore(); ++i) if (S_CMPNOCASE(name, language->jBIgnore(i))) name = tz.getToken(); // Numbered block, add block name if (name.IsNumber()) name = S_FMT("%s %s", language->jumpBlock(a), name); // Unnamed block, use block name if (name == "{" || name == ";") name = language->jumpBlock(a); // Create jump point jp_t jp; jp.name = name; jp.line = tz.lineNo() - 1; jump_points.push_back(jp); } } token = tz.getToken(); } // Do nothing if no jump points if (jump_points.size() == 0) return; // --- Setup/show dialog --- wxDialog dlg(this, -1, "Jump To..."); wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); dlg.SetSizer(sizer); // Add Jump to dropdown wxChoice* choice_jump_to = new wxChoice(&dlg, -1); sizer->Add(choice_jump_to, 0, wxEXPAND|wxALL, 4); for (unsigned a = 0; a < jump_points.size(); a++) choice_jump_to->Append(jump_points[a].name); choice_jump_to->SetSelection(0); // Add dialog buttons sizer->Add(dlg.CreateButtonSizer(wxOK|wxCANCEL), 0, wxEXPAND|wxLEFT|wxRIGHT|wxBOTTOM, 4); // Show dialog dlg.SetInitialSize(wxSize(250, -1)); dlg.CenterOnParent(); if (dlg.ShowModal() == wxID_OK) { int selection = choice_jump_to->GetSelection(); if (selection >= 0 && selection < (int)jump_points.size()) { // Get line number int line = jump_points[selection].line; // Move to line int pos = GetLineEndPosition(line); SetCurrentPos(pos); SetSelection(pos, pos); SetFirstVisibleLine(line); SetFocus(); } } }
void wxTextWidgetImpl::Remove( long from , long to ) { SetSelection( from , to ) ; WriteText( wxEmptyString) ; }
BrushShapeCtrl(wxWindow* parent, wxArrayString& shapes, Brush& brush) : wxRadioBox(parent, wxID_ANY, _("Shape"), wxDefaultPosition, wxDefaultSize, shapes, 0, wxRA_SPECIFY_ROWS), m_Brush(brush) { SetSelection(m_Brush.m_Shape); }
bool ctlSQLBox::DoFind(const wxString &find, const wxString &replace, bool doReplace, bool wholeWord, bool matchCase, bool useRegexps, bool startAtTop, bool reverse) { int flags = 0; int startPos = GetSelectionStart(); int endPos = GetTextLength(); // Setup flags if (wholeWord) flags |= wxSTC_FIND_WHOLEWORD; if (matchCase) flags |= wxSTC_FIND_MATCHCASE; // Replace the current selection, if there is one and it matches the find param. wxString current = GetSelectedText(); if (doReplace) { if (useRegexps) { CharacterRange cr = RegexFindText(GetSelectionStart(), GetSelectionEnd(), find); if (GetSelectionStart() == cr.cpMin && GetSelectionEnd() == cr.cpMax) { if (cr.cpMin == cr.cpMax) // Must be finding a special char, such as $ (line end) { InsertText(cr.cpMax, replace); SetSelection(cr.cpMax, cr.cpMax + replace.Length()); SetCurrentPos(cr.cpMax + replace.Length()); // Stop if we've got to the end. This is important for the $ // case where it'll just keep finding the end of the line!! if ((int)(cr.cpMin + replace.Length()) == GetLength()) return false; } else { ReplaceSelection(replace); SetSelection(startPos, startPos + replace.Length()); SetCurrentPos(startPos + replace.Length()); } } } else if ((matchCase && current == find) || (!matchCase && current.Upper() == find.Upper())) { ReplaceSelection(replace); if (!reverse) { SetSelection(startPos, startPos + replace.Length()); SetCurrentPos(startPos + replace.Length()); } else { SetSelection(startPos + replace.Length(), startPos); SetCurrentPos(startPos); } } } //////////////////////////////////////////////////////////////////////// // Figure out the starting position for the next search //////////////////////////////////////////////////////////////////////// if (startAtTop) { startPos = 0; endPos = GetTextLength(); } else { if (reverse) { endPos = 0; startPos = GetCurrentPos(); } else { endPos = GetTextLength(); startPos = GetCurrentPos(); } } size_t selStart = 0, selEnd = 0; if (useRegexps) { CharacterRange cr = RegexFindText(startPos, endPos, find); selStart = cr.cpMin; selEnd = cr.cpMax; } else { selStart = FindText(startPos, endPos, find, flags); selEnd = selStart + find.Length(); } if (selStart >= 0 && selStart != (size_t)(-1)) { if (reverse) { SetCurrentPos(selStart); SetSelection(selEnd, selStart); } else { SetCurrentPos(selEnd); SetSelection(selStart, selEnd); } EnsureCaretVisible(); return true; } else return false; }
void RendererImplementationPlot::onSetSelection(const VisualizationSelection & selection) { if (selection.indexType != IndexType::points) { return; } assert(selection.visualization); // Note: selection.visualization might not be a Context2DData *. // That's a safe cast only if the visualization is contained in m_plots (which needs to be // checked anyways). const auto & plots = m_plots.value(static_cast<Context2DData *>(selection.visualization)); if (!plots) { return; } assert(plots->GetNumberOfItems() == 1); plots->InitTraversal(); auto plot = plots->GetNextPlot(); if (m_selectedPlot == selection.visualization) { if (auto previousIndices = plot->GetSelection()) { if (previousIndices->GetNumberOfValues() == static_cast<vtkIdType>(selection.indices.size())) { bool changed = false; for (vtkIdType i = 0; i < previousIndices->GetNumberOfValues(); ++i) { if (previousIndices->GetValue(i) != selection.indices[static_cast<size_t>(i)]) { changed = true; break; } } if (!changed) { return; } } } } m_selectedPlot = static_cast<Context2DData *>(selection.visualization); auto indices = plot->GetSelection() ? vtkSmartPointer<vtkIdTypeArray>(plot->GetSelection()) : vtkSmartPointer<vtkIdTypeArray>::New(); indices->Resize(selection.indices.size()); for (size_t i = 0; i < selection.indices.size(); ++i) { indices->SetValue(static_cast<vtkIdType>(i), selection.indices[i]); } if (!plot->GetSelection()) { plot->SetSelection(indices); } render(); }
void ctlSQLBox::OnKeyDown(wxKeyEvent &event) { #ifdef __WXGTK__ event.m_metaDown = false; #endif // Get the line ending type wxString lineEnd; switch (GetEOLMode()) { case wxSTC_EOL_LF: lineEnd = wxT("\n"); break; case wxSTC_EOL_CRLF: lineEnd = wxT("\r\n"); break; case wxSTC_EOL_CR: lineEnd = wxT("\r"); break; } // Block comment/uncomment if (event.GetKeyCode() == 'K') { // Comment (Ctrl+k) if (event.GetModifiers() == wxMOD_CONTROL) { if (BlockComment(false)) return; } // Uncomment (Ctrl+Shift+K) else if (event.GetModifiers() == (wxMOD_CONTROL | wxMOD_SHIFT)) { if (BlockComment(true)) return; } } // Autoindent if (m_autoIndent && event.GetKeyCode() == WXK_RETURN) { wxString indent, line; line = GetLine(GetCurrentLine()); // Get the offset for the current line - basically, whether // or not it ends with a \r\n, \n or \r, and if so, the length int offset = 0; if (line.EndsWith(wxT("\r\n"))) offset = 2; else if (line.EndsWith(wxT("\n"))) offset = 1; else if (line.EndsWith(wxT("\r"))) offset = 1; // Get the indent. This is every leading space or tab on the // line, up until the current cursor position. int x = 0; int max = line.Length() - (GetLineEndPosition(GetCurrentLine()) - GetCurrentPos()) - offset; if(line != wxEmptyString) { while ((line[x] == '\t' || line[x] == ' ') && x < max) indent += line[x++]; } // Select any indent in front of the cursor to be removed. If // the cursor is positioned after any non-indent characters, // we don't remove anything. If there is already some selected, // don't select anything new at all. if (indent.Length() != 0 && (unsigned int)GetCurrentPos() <= ((GetLineEndPosition(GetCurrentLine()) - line.Length()) + indent.Length() + offset) && GetSelectedText() == wxEmptyString) SetSelection(GetLineEndPosition(GetCurrentLine()) - line.Length() + offset, GetLineEndPosition(GetCurrentLine()) - line.Length() + indent.Length() + offset); // Lose any selected text. ReplaceSelection(wxEmptyString); // Insert a replacement \n (or whatever), and the indent at the insertion point. InsertText(GetCurrentPos(), lineEnd + indent); // Now, reset the position, and clear the selection SetCurrentPos(GetCurrentPos() + indent.Length() + lineEnd.Length()); SetSelection(GetCurrentPos(), GetCurrentPos()); } else if (m_dlgFindReplace && event.GetKeyCode() == WXK_F3) { m_dlgFindReplace->FindNext(); } else event.Skip(); }
bool wxTextCtrlBase::EmulateKeyPress(const wxKeyEvent& event) { bool handled = false; // we have a native implementation for Win32 and so don't need this one #ifndef __WIN32__ wxChar ch = 0; int keycode = event.GetKeyCode(); long from, to; GetSelection(&from,&to); long insert = GetInsertionPoint(); long last = GetLastPosition(); // catch arrow left and right switch ( keycode ) { case WXK_LEFT: if ( event.ShiftDown() ) SetSelection( (from > 0 ? from - 1 : 0) , to ); else { if ( from != to ) insert = from; else if ( insert > 0 ) insert -= 1; SetInsertionPoint( insert ); } handled = true; break; case WXK_RIGHT: if ( event.ShiftDown() ) SetSelection( from, (to < last ? to + 1 : last) ); else { if ( from != to ) insert = to; else if ( insert < last ) insert += 1; SetInsertionPoint( insert ); } handled = true; break; case WXK_NUMPAD0: case WXK_NUMPAD1: case WXK_NUMPAD2: case WXK_NUMPAD3: case WXK_NUMPAD4: case WXK_NUMPAD5: case WXK_NUMPAD6: case WXK_NUMPAD7: case WXK_NUMPAD8: case WXK_NUMPAD9: ch = (wxChar)(wxT('0') + keycode - WXK_NUMPAD0); break; case WXK_MULTIPLY: case WXK_NUMPAD_MULTIPLY: ch = wxT('*'); break; case WXK_ADD: case WXK_NUMPAD_ADD: ch = wxT('+'); break; case WXK_SUBTRACT: case WXK_NUMPAD_SUBTRACT: ch = wxT('-'); break; case WXK_DECIMAL: case WXK_NUMPAD_DECIMAL: ch = wxT('.'); break; case WXK_DIVIDE: case WXK_NUMPAD_DIVIDE: ch = wxT('/'); break; case WXK_DELETE: case WXK_NUMPAD_DELETE: // delete the character at cursor { const long pos = GetInsertionPoint(); if ( pos < GetLastPosition() ) Remove(pos, pos + 1); handled = true; } break; case WXK_BACK: // delete the character before the cursor { const long pos = GetInsertionPoint(); if ( pos > 0 ) Remove(pos - 1, pos); handled = true; } break; default: #if wxUSE_UNICODE if ( event.GetUnicodeKey() ) { ch = event.GetUnicodeKey(); } else #endif if ( keycode < 256 && keycode >= 0 && wxIsprint(keycode) ) { // FIXME this is not going to work for non letters... if ( !event.ShiftDown() ) { keycode = wxTolower(keycode); } ch = (wxChar)keycode; } else { ch = wxT('\0'); } } if ( ch ) { WriteText(ch); handled = true; } #else // __WIN32__ wxUnusedVar(event); #endif // !__WIN32__/__WIN32__ return handled; }
bool ctlSQLBox::BlockComment(bool uncomment) { wxString lineEnd; switch (GetEOLMode()) { case wxSTC_EOL_LF: lineEnd = wxT("\n"); break; case wxSTC_EOL_CRLF: lineEnd = wxT("\r\n"); break; case wxSTC_EOL_CR: lineEnd = wxT("\r"); break; } // Save the start position const wxString comment = wxT("-- "); int start = GetSelectionStart(); if (!GetSelectedText().IsEmpty()) { wxString selection = GetSelectedText(); if (!uncomment) { selection.Replace(lineEnd, lineEnd + comment); selection.Prepend(comment); if (selection.EndsWith(comment)) selection = selection.Left(selection.Length() - comment.Length()); } else { selection.Replace(lineEnd + comment, lineEnd); if (selection.StartsWith(comment)) selection = selection.Right(selection.Length() - comment.Length()); } ReplaceSelection(selection); SetSelection(start, start + selection.Length()); } else { // No text selection - (un)comment the current line int column = GetColumn(start); int curLineNum = GetCurrentLine(); int pos = PositionFromLine(curLineNum); if (!uncomment) { InsertText(pos, comment); } else { wxString t = GetTextRange(pos, pos + comment.Length()); if (t == comment) { // The line starts with a comment, so we remove it SetTargetStart(pos); SetTargetEnd(pos + comment.Length()); ReplaceTarget(wxT("")); } else { // The line doesn't start with a comment, do nothing return false; } } if (GetLineCount() > curLineNum) { wxString nextLine = GetLine(curLineNum + 1); if (nextLine.EndsWith(lineEnd)) nextLine = nextLine.Left(nextLine.Length() - lineEnd.Length()); int nextColumn = (nextLine.Length() < (unsigned int)column ? nextLine.Length() : column); GotoPos(PositionFromLine(curLineNum + 1) + nextColumn); } } return true; }
void wxRadioBox::Command (wxCommandEvent & event) { SetSelection (event.GetInt()); ProcessCommand (event); }
uint32 CScreenProfile::OnCommand(uint32 dwCommand, uint32 dwParam1, uint32 dwParam2) { switch (dwCommand) { case CMD_OK: { m_pDlg->Show(LTFALSE); SetCapture(LTNULL); HandleDlgCommand(nCommand,(uint16)dwParam1); SetSelection(1); } break; case CMD_CANCEL: { m_pDlg->Show(LTFALSE); SetCapture(LTNULL); SetSelection(1); } break; case CMD_LOAD: { m_pDlg->Show(LTTRUE); SetCapture(m_pDlg); nCommand = dwCommand; } break; case CMD_CONFIRM: { uint16 nIndex = (uint16)dwParam1; if (dwParam2 == CMD_DELETE) { if (nIndex < m_pListCtrl->GetNumControls()) { StringSet::iterator iter = m_ProfileList.begin(); for (int i = 0; i < nIndex && iter != m_ProfileList.end(); ++i, ++iter); if (iter != m_ProfileList.end()) { std::string profile = *iter; g_pProfileMgr->DeleteProfile(profile); } m_pProfile = g_pProfileMgr->GetCurrentProfile(); SAFE_STRCPY(m_szProfile, m_pProfile->m_sName.c_str()); UpdateProfileName(); } } else if (dwParam2 == CMD_LOAD) { if (nIndex < m_pListCtrl->GetNumControls()) { StringSet::iterator iter = m_ProfileList.begin(); for (int i = 0; i < nIndex && iter != m_ProfileList.end(); ++i, ++iter); if (iter != m_ProfileList.end()) { std::string profile = *iter; g_pProfileMgr->NewProfile(profile); m_pProfile = g_pProfileMgr->GetCurrentProfile(); SAFE_STRCPY(m_szProfile, profile.c_str()); UpdateProfileName(); } } } else if (dwParam2 == CMD_CREATE) { SAFE_STRCPY(m_szOldProfile,m_szProfile); bCreate = LTTRUE; //show edit box here MBCreate mb; mb.eType = LTMB_EDIT; mb.pFn = EditCallBack; mb.pString = m_szProfile; mb.nMaxChars = MAX_PROFILE_NAME; mb.eInput = CLTGUIEditCtrl::kInputFileFriendly; g_pInterfaceMgr->ShowMessageBox(IDS_ENTER_PROFILE_NAME,&mb); } } break; case CMD_DELETE: { m_pDlg->Show(LTTRUE); SetCapture(m_pDlg); nCommand = dwCommand; } break; case CMD_CREATE: { if (g_pLTClient->IsConnected()) { MBCreate mb; mb.eType = LTMB_YESNO; mb.pFn = CreateCallBack, g_pInterfaceMgr->ShowMessageBox(IDS_CONFIRM_NEWPROFILE,&mb); } else SendCommand(CMD_CONFIRM,0,CMD_CREATE); } break; case CMD_RENAME: { m_pDlg->Show(LTTRUE); SetCapture(m_pDlg); nCommand = dwCommand; } break; case CMD_EDIT: { SAFE_STRCPY(m_szProfile,(char *)dwParam1); std::string profileName = m_szProfile; StringSet::iterator iter = m_ProfileList.find(profileName); if (iter != m_ProfileList.end()) { //don't proceed renaming or creating a new one if we already have a profile of that //name MBCreate mb; mb.eType = LTMB_OK; mb.pFn = NULL, g_pInterfaceMgr->ShowMessageBox(IDS_PROFILE_ALREADY_EXISTS,&mb); } else { if (bCreate) { g_pProfileMgr->NewProfile(profileName); } else { g_pProfileMgr->RenameProfile(szOldFN,profileName); } m_pProfile = g_pProfileMgr->GetCurrentProfile(); SAFE_STRCPY(m_szProfile,m_pProfile->m_sName.c_str()); UpdateProfileName(); } } break; default: return CBaseScreen::OnCommand(dwCommand,dwParam1,dwParam2); } return 1; };
void wxTextCtrl::OnSelectAll(wxCommandEvent& WXUNUSED(event)) { SetSelection(-1, -1); }
void GLIBitmapNotebook::AddBitmapPage(const FrameBufferData & newData) { // Create the bitmap views GLIBitmapView * bitmapView = new GLIBitmapView(this); // Create the name for the bitmap wxString displayName = GetBufferDisplayName(newData); // Load the frame buffer data into the display if(!bitmapView->LoadBitmapData(newData)) { displayName = displayName + wxT("-Error"); } // Add the bitmap views to the notebook if(bitmapViews.size() == 0) { AddPage(bitmapView, displayName, true); // If the preferred buffer type is not set, set it now if(preferedBufferTypeID == 0 && preferedDrawBufferID == 0) { bitmapView->GetGLBufferType(preferedBufferTypeID, preferedDrawBufferID); } // Check if the buffer data is valid size viewScaleMultiply = 1; viewScaleDivide = 1; if(newData.bufferWidth > 0 && newData.bufferHeight > 0) { // Calculate the zoom factor wxSize scrollSize = bitmapView->GetSize(); // Get the scale size in both directions float scaleX = (float)scrollSize.x / (float)newData.bufferWidth; float scaleY = (float)scrollSize.y / (float)newData.bufferHeight; // Get the minimum scale float minScale = scaleY; if(scaleX < scaleY) { minScale = scaleX; } // Calculate the scale ratio if(minScale > 1.0f) { viewScaleMultiply = (uint)minScale; viewScaleDivide = 1; if(viewScaleMultiply < 1) { viewScaleMultiply = 1; } if(viewScaleMultiply > MAX_ZOOM_IN_VALUE) { viewScaleMultiply = MAX_ZOOM_IN_VALUE; } } else if(minScale > 0.0f) { viewScaleMultiply = 1; viewScaleDivide = (uint)ceil(1.0f/minScale); if(viewScaleDivide < 1) { viewScaleDivide = 1; } if(viewScaleDivide > MAX_ZOOM_OUT_VALUE) { viewScaleDivide = MAX_ZOOM_OUT_VALUE; } } } // Set the scale values in the bitmap if(!bitmapView->SetZoomScale(viewScaleMultiply, viewScaleDivide)) { // If the scale could not be set, just use a 1:1 scale viewScaleMultiply = 1; viewScaleDivide = 1; bitmapView->SetZoomScale(viewScaleMultiply, viewScaleDivide); } } else { // Add the new page AddPage(bitmapView, displayName, false); // Set the zoom scale bitmapView->SetZoomScale(viewScaleMultiply, viewScaleDivide); } // Set the cursor state UpdateCursorDisplay(bitmapView); // Add the view to the internal tracking array bitmapViews.push_back(bitmapView); // If the buffer added is the preferred buffer // (This is so the same buffer is kept displayed between multiple render calls) if(newData.bufferType == preferedBufferTypeID && newData.drawBuffer == preferedDrawBufferID) { SetSelection(bitmapViews.size() - 1); } // Update the window title for new zoom factor and image parentControl->UpdateWindowTitle(); }
void SetControlSelection ( int iControlID, DWORD dwSelection ) { SetSelection ( iControlID, dwSelection ); }
void wxChoice::Command(wxCommandEvent & event) { SetSelection (event.GetInt()); ProcessCommand (event); }