void UserFiltersModel::Modify (int index) { int pos = index; bool isException; SplitRow (&pos, &isException); QString rule; if (isException) rule = Filter_.ExceptionStrings_.at (pos); else rule = Filter_.FilterStrings_.at (pos); RuleOptionDialog dia; dia.SetException (isException); dia.SetString (rule); dia.SetType (Filter_.Options_ [rule].MatchType_); dia.SetCase (Filter_.Options_ [rule].Case_); dia.SetDomains (Filter_.Options_ [rule].Domains_); dia.SetNotDomains (Filter_.Options_ [rule].NotDomains_); dia.setWindowTitle (tr ("Modify filter")); if (dia.exec () != QDialog::Accepted) return; Remove (index); Add (dia); }
QVariant UserFiltersModel::data (const QModelIndex& index, int role) const { if (role != Qt::DisplayRole || !index.isValid ()) return QVariant (); int row = index.row (); bool isException = true; SplitRow (&row, &isException); const auto& list = isException ? Filter_.Exceptions_ : Filter_.Filters_; const auto& item = list.at (row); switch (index.column ()) { case 0: return item.OrigString_; case 1: return isException ? tr ("Allowed") : tr ("Blocked"); case 2: switch (item.Option_.MatchType_) { case FilterOption::MTWildcard: case FilterOption::MTPlain: case FilterOption::MTBegin: case FilterOption::MTEnd: return tr ("Wildcard"); case FilterOption::MTRegexp: return tr ("Regexp"); } case 3: return item.Option_.Case_ == Qt::CaseSensitive ? tr ("True") : tr ("False"); case 4: { const auto& options = item.Option_; QStringList result; Q_FOREACH (QString domain, options.Domains_) result += domain.prepend ("+"); Q_FOREACH (QString domain, options.NotDomains_) result += domain.prepend ("-"); return result.join ("; "); } default: return QVariant (); } }
void UserFiltersModel::Remove (int index) { int pos = index; bool isException = false; SplitRow (&pos, &isException); beginRemoveRows (QModelIndex (), index, index); if (isException) Filter_.Exceptions_.removeAt (pos); else Filter_.Filters_.removeAt (pos); endRemoveRows (); }
// if det is 1 and the cross product of each pair of rows produces the third, must be a rotation bool Rotation_p(pMat3_t M) { Vec3_t tmp; Vec3_t Vvec1[3]; pVec3_t VvecR[3]; VvecR[0] = &(Vvec1[0]); VvecR[1] = &(Vvec1[1]); VvecR[2] = &(Vvec1[2]); if(!Approx(Det(M), 1.0)) return false; SplitRow(M, VvecR); if(!Approx(Cross(VvecR[0], VvecR[1], &tmp), VvecR[2])) return false; if(!Approx(Cross(VvecR[1], VvecR[2], &tmp), VvecR[0])) return false; if(!Approx(Cross(VvecR[2], VvecR[0], &tmp), VvecR[1])) return false; return true; }
void UserFiltersModel::Modify (int index) { int pos = index; bool isException; SplitRow (&pos, &isException); const auto& item = isException ? Filter_.Exceptions_.at (pos) : Filter_.Filters_.at (pos); RuleOptionDialog dia; dia.SetException (isException); dia.SetString (item.OrigString_); const auto& options = item.Option_; dia.SetType (options.MatchType_); dia.SetCase (options.Case_); dia.SetDomains (options.Domains_); dia.SetNotDomains (options.NotDomains_); dia.setWindowTitle (tr ("Modify filter")); if (dia.exec () != QDialog::Accepted) return; Remove (index); Add (dia); }
void CDynSplitterWnd::StopTracking(BOOL bAccept) { ASSERT_VALID(this); if (!m_bTracking) return; ReleaseCapture(); // erase tracker rectangle OnInvertTracker(m_rectTracker); if (m_bTracking2) OnInvertTracker(m_rectTracker2); m_bTracking = m_bTracking2 = FALSE; // save old active view CWnd* pOldActiveView = GetActivePane(); // m_rectTracker is set to the new splitter position (without border) // (so, adjust relative to where the border will be) m_rectTracker.OffsetRect(-CX_BORDER , -CY_BORDER); m_rectTracker2.OffsetRect(-CX_BORDER, -CY_BORDER); if (bAccept) { if (m_htTrack == vSplitterBox) { SplitRow(m_rectTracker.top); } else if (m_htTrack >= vSplitterBar1 && m_htTrack <= vSplitterBar15) { // set row height TrackRowSize(m_rectTracker.top, m_htTrack - vSplitterBar1); RecalcLayout(); } else if (m_htTrack == hSplitterBox) { SplitColumn(m_rectTracker.left); } else if (m_htTrack >= hSplitterBar1 && m_htTrack <= hSplitterBar15) { // set column width TrackColumnSize(m_rectTracker.left, m_htTrack - hSplitterBar1); RecalcLayout(); } else if (m_htTrack >= splitterIntersection1 && m_htTrack <= splitterIntersection225) { // set row height and column width int row = (m_htTrack - splitterIntersection1) / 15; int col = (m_htTrack - splitterIntersection1) % 15; TrackRowSize(m_rectTracker.top, row); TrackColumnSize(m_rectTracker2.left, col); RecalcLayout(); } else if (m_htTrack == bothSplitterBox) { // rectTracker is vSplitter (splits rows) // rectTracker2 is hSplitter (splits cols) SplitRow(m_rectTracker.top); SplitColumn(m_rectTracker2.left); } } if ( (pOldActiveView == GetActivePane()) && (pOldActiveView != NULL) ) SetActivePane(-1, -1, pOldActiveView); // re-activate }