diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/tiledrendering/tiledrendering.cxx | 5 | ||||
-rw-r--r-- | sc/source/ui/dbgui/filtdlg.cxx | 771 | ||||
-rw-r--r-- | sc/source/ui/dbgui/foptmgr.cxx | 230 | ||||
-rw-r--r-- | sc/source/ui/inc/filtdlg.hxx | 110 | ||||
-rw-r--r-- | sc/source/ui/inc/foptmgr.hxx | 52 | ||||
-rw-r--r-- | sc/source/ui/inc/reffact.hxx | 2 | ||||
-rw-r--r-- | sc/source/ui/view/reffact.cxx | 4 | ||||
-rw-r--r-- | sc/source/ui/view/tabvwshc.cxx | 53 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/standardfilterdialog.ui | 916 |
9 files changed, 1204 insertions, 939 deletions
diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index 5222a64c8dbb..326966e940af 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -1647,11 +1647,8 @@ void ScTiledRenderingTest::testFilterDlg() CPPUNIT_ASSERT_EQUAL(true, pView2->GetViewFrame()->GetDispatcher()->IsLocked()); CPPUNIT_ASSERT_EQUAL(false, pView1->GetViewFrame()->GetDispatcher()->IsLocked()); - KeyEvent aEvent(27, KEY_ESCAPE, 0); - Application::PostKeyEvent(VclEventId::WindowKeyInput, pRefWindow->GetWindow(), &aEvent); - Application::PostKeyEvent(VclEventId::WindowKeyUp, pRefWindow->GetWindow(), &aEvent); + pRefWindow->GetController()->response(RET_CANCEL); - Scheduler::ProcessEventsToIdle(); CPPUNIT_ASSERT_EQUAL(false, pView2->GetViewFrame()->GetDispatcher()->IsLocked()); CPPUNIT_ASSERT_EQUAL(false, pView1->GetViewFrame()->GetDispatcher()->IsLocked()); diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx index 9b6fe0ea03da..477dc0f63cbd 100644 --- a/sc/source/ui/dbgui/filtdlg.cxx +++ b/sc/source/ui/dbgui/filtdlg.cxx @@ -46,10 +46,10 @@ ScFilterDlg::EntryList::EntryList() : mnHeaderPos(INVALID_HEADER_POS) {} -ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, vcl::Window* pParent, +ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, const SfxItemSet& rArgSet) - : ScAnyRefDlg ( pB, pCW, pParent, "StandardFilterDialog", - "modules/scalc/ui/standardfilterdialog.ui" ) + : ScAnyRefDlgController(pB, pCW, pParent, + "modules/scalc/ui/standardfilterdialog.ui", "StandardFilterDialog") , aStrUndefined(ScResId(SCSTR_UNDEFINED)) , aStrNone(ScResId(SCSTR_NONE)) , aStrEmpty(ScResId(SCSTR_FILTER_EMPTY)) @@ -61,41 +61,42 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, vcl::Window* pPar , pDoc(nullptr) , nSrcTab(0) , bRefInputMode(false) + , m_xLbConnect1(m_xBuilder->weld_combo_box("connect1")) + , m_xLbField1(m_xBuilder->weld_combo_box("field1")) + , m_xLbCond1(m_xBuilder->weld_combo_box("cond1")) + , m_xEdVal1(m_xBuilder->weld_combo_box("val1")) + , m_xLbConnect2(m_xBuilder->weld_combo_box("connect2")) + , m_xLbField2(m_xBuilder->weld_combo_box("field2")) + , m_xLbCond2(m_xBuilder->weld_combo_box("cond2")) + , m_xEdVal2(m_xBuilder->weld_combo_box("val2")) + , m_xLbConnect3(m_xBuilder->weld_combo_box("connect3")) + , m_xLbField3(m_xBuilder->weld_combo_box("field3")) + , m_xLbCond3(m_xBuilder->weld_combo_box("cond3")) + , m_xEdVal3(m_xBuilder->weld_combo_box("val3")) + , m_xLbConnect4(m_xBuilder->weld_combo_box("connect4")) + , m_xLbField4(m_xBuilder->weld_combo_box("field4")) + , m_xLbCond4(m_xBuilder->weld_combo_box("cond4")) + , m_xEdVal4(m_xBuilder->weld_combo_box("val4")) + , m_xContents(m_xBuilder->weld_widget("grid")) + , m_xScrollBar(m_xBuilder->weld_scrolled_window("scrollbar")) + , m_xExpander(m_xBuilder->weld_expander("more")) + , m_xBtnOk(m_xBuilder->weld_button("ok")) + , m_xBtnCancel(m_xBuilder->weld_button("cancel")) + , m_xBtnCase(m_xBuilder->weld_check_button("case")) + , m_xBtnRegExp(m_xBuilder->weld_check_button("regexp")) + , m_xBtnHeader(m_xBuilder->weld_check_button("header")) + , m_xBtnUnique(m_xBuilder->weld_check_button("unique")) + , m_xBtnCopyResult(m_xBuilder->weld_check_button("copyresult")) + , m_xLbCopyArea(m_xBuilder->weld_combo_box("lbcopyarea")) + , m_xEdCopyArea(new formula::WeldRefEdit(m_xBuilder->weld_entry("edcopyarea"))) + , m_xRbCopyArea(new formula::WeldRefButton(m_xBuilder->weld_button("rbcopyarea"))) + , m_xBtnDestPers(m_xBuilder->weld_check_button("destpers")) + , m_xFtDbAreaLabel(m_xBuilder->weld_label("dbarealabel")) + , m_xFtDbArea(m_xBuilder->weld_label("dbarea")) { - get(pLbConnect1,"connect1"); - get(pLbField1,"field1"); - get(pLbCond1,"cond1"); - get(pEdVal1,"val1"); - get(pLbConnect2,"connect2"); - get(pLbField2,"field2"); - get(pLbCond2,"cond2"); - get(pEdVal2,"val2"); - get(pLbConnect3,"connect3"); - get(pLbField3,"field3"); - get(pLbCond3,"cond3"); - get(pEdVal3,"val3"); - get(pLbConnect4,"connect4"); - get(pLbField4,"field4"); - get(pLbCond4,"cond4"); - get(pEdVal4,"val4"); - get(pScrollBar,"scrollbar"); - get(pExpander,"more"); - pExpander->SetExpandedHdl(LINK(this, ScFilterDlg, MoreExpandedHdl)); - get(pBtnOk,"ok"); - get(pBtnCancel,"cancel"); - get(pBtnCase,"case"); - get(pBtnRegExp,"regexp"); - get(pBtnHeader,"header"); - get(pBtnUnique,"unique"); - get(pBtnCopyResult,"copyresult"); - get(pLbCopyArea,"lbcopyarea"); - get(pEdCopyArea,"edcopyarea"); - pEdCopyArea->SetReferences(this, pBtnCopyResult); - get(pRbCopyArea,"rbcopyarea"); - pRbCopyArea->SetReferences(this, pEdCopyArea); - get(pBtnDestPers,"destpers"); - get(pFtDbAreaLabel,"dbarealabel"); - get(pFtDbArea,"dbarea"); + m_xExpander->connect_expanded(LINK(this, ScFilterDlg, MoreExpandedHdl)); + m_xEdCopyArea->SetReferences(this, m_xFtDbAreaLabel.get()); + m_xRbCopyArea->SetReferences(this, m_xEdCopyArea.get()); Init( rArgSet ); @@ -107,54 +108,12 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, vcl::Window* pPar ScFilterDlg::~ScFilterDlg() { - disposeOnce(); -} - -void ScFilterDlg::dispose() -{ pOptionsMgr.reset(); pOutItem.reset(); // Hack: RefInput control pTimer->Stop(); pTimer.reset(); - - pLbConnect1.clear(); - pLbField1.clear(); - pLbCond1.clear(); - pEdVal1.clear(); - pLbConnect2.clear(); - pLbField2.clear(); - pLbCond2.clear(); - pEdVal2.clear(); - pLbConnect3.clear(); - pLbField3.clear(); - pLbCond3.clear(); - pEdVal3.clear(); - pLbConnect4.clear(); - pLbField4.clear(); - pLbCond4.clear(); - pEdVal4.clear(); - pScrollBar.clear(); - pExpander.clear(); - pBtnOk.clear(); - pBtnCancel.clear(); - pBtnCase.clear(); - pBtnRegExp.clear(); - pBtnHeader.clear(); - pBtnUnique.clear(); - pBtnCopyResult.clear(); - pLbCopyArea.clear(); - pEdCopyArea.clear(); - pRbCopyArea.clear(); - pBtnDestPers.clear(); - pFtDbAreaLabel.clear(); - pFtDbArea.clear(); - maValueEdArr.clear(); - maFieldLbArr.clear(); - maCondLbArr.clear(); - maConnLbArr.clear(); - ScAnyRefDlg::dispose(); } void ScFilterDlg::Init( const SfxItemSet& rArgSet ) @@ -162,29 +121,34 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>( rArgSet.Get( nWhichQuery )); - pBtnOk->SetClickHdl ( LINK( this, ScFilterDlg, EndDlgHdl ) ); - pBtnCancel->SetClickHdl ( LINK( this, ScFilterDlg, EndDlgHdl ) ); - pBtnHeader->SetClickHdl ( LINK( this, ScFilterDlg, CheckBoxHdl ) ); - pBtnCase->SetClickHdl ( LINK( this, ScFilterDlg, CheckBoxHdl ) ); - - pLbField1->SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbField2->SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbField3->SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbField4->SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbConnect1->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbConnect2->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbConnect3->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbConnect4->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - - pLbField1->setMaxWidthChars(10); - pLbField2->setMaxWidthChars(10); - pLbField3->setMaxWidthChars(10); - pLbField4->setMaxWidthChars(10); - - pLbCond1->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbCond2->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbCond3->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); - pLbCond4->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xBtnOk->connect_clicked ( LINK( this, ScFilterDlg, EndDlgHdl ) ); + m_xBtnCancel->connect_clicked ( LINK( this, ScFilterDlg, EndDlgHdl ) ); + m_xBtnHeader->connect_clicked ( LINK( this, ScFilterDlg, CheckBoxHdl ) ); + m_xBtnCase->connect_clicked ( LINK( this, ScFilterDlg, CheckBoxHdl ) ); + + m_xLbField1->connect_changed ( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbField2->connect_changed ( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbField3->connect_changed ( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbField4->connect_changed ( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbConnect1->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbConnect2->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbConnect3->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbConnect4->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + + m_xLbField1->append_text("0000000000"); + m_xLbField1->set_active(0); + auto nPrefWidth = m_xLbField1->get_preferred_size().Width(); + m_xLbField1->clear(); + + m_xLbField1->set_size_request(nPrefWidth, -1); + m_xLbField2->set_size_request(nPrefWidth, -1); + m_xLbField3->set_size_request(nPrefWidth, -1); + m_xLbField4->set_size_request(nPrefWidth, -1); + + m_xLbCond1->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbCond2->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbCond3->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); + m_xLbCond4->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) ); pViewData = rQueryItem.GetViewData(); pDoc = pViewData ? pViewData->GetDocument() : nullptr; @@ -192,41 +156,41 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) // for easier access: maFieldLbArr.reserve(QUERY_ENTRY_COUNT); - maFieldLbArr.push_back(pLbField1); - maFieldLbArr.push_back(pLbField2); - maFieldLbArr.push_back(pLbField3); - maFieldLbArr.push_back(pLbField4); + maFieldLbArr.push_back(m_xLbField1.get()); + maFieldLbArr.push_back(m_xLbField2.get()); + maFieldLbArr.push_back(m_xLbField3.get()); + maFieldLbArr.push_back(m_xLbField4.get()); maValueEdArr.reserve(QUERY_ENTRY_COUNT); - maValueEdArr.push_back(pEdVal1); - maValueEdArr.push_back(pEdVal2); - maValueEdArr.push_back(pEdVal3); - maValueEdArr.push_back(pEdVal4); + maValueEdArr.push_back(m_xEdVal1.get()); + maValueEdArr.push_back(m_xEdVal2.get()); + maValueEdArr.push_back(m_xEdVal3.get()); + maValueEdArr.push_back(m_xEdVal4.get()); maCondLbArr.reserve(QUERY_ENTRY_COUNT); - maCondLbArr.push_back(pLbCond1); - maCondLbArr.push_back(pLbCond2); - maCondLbArr.push_back(pLbCond3); - maCondLbArr.push_back(pLbCond4); + maCondLbArr.push_back(m_xLbCond1.get()); + maCondLbArr.push_back(m_xLbCond2.get()); + maCondLbArr.push_back(m_xLbCond3.get()); + maCondLbArr.push_back(m_xLbCond4.get()); maConnLbArr.reserve(QUERY_ENTRY_COUNT); - maConnLbArr.push_back(pLbConnect1); - maConnLbArr.push_back(pLbConnect2); - maConnLbArr.push_back(pLbConnect3); - maConnLbArr.push_back(pLbConnect4); + maConnLbArr.push_back(m_xLbConnect1.get()); + maConnLbArr.push_back(m_xLbConnect2.get()); + maConnLbArr.push_back(m_xLbConnect3.get()); + maConnLbArr.push_back(m_xLbConnect4.get()); // Option initialization: - pOptionsMgr.reset( new ScFilterOptionsMgr( + pOptionsMgr.reset( new FilterOptionsMgr( pViewData, theQueryData, - pBtnCase, - pBtnRegExp, - pBtnHeader, - pBtnUnique, - pBtnCopyResult, - pBtnDestPers, - pLbCopyArea, - pEdCopyArea, - pRbCopyArea, - pFtDbAreaLabel, - pFtDbArea, + m_xBtnCase.get(), + m_xBtnRegExp.get(), + m_xBtnHeader.get(), + m_xBtnUnique.get(), + m_xBtnCopyResult.get(), + m_xBtnDestPers.get(), + m_xLbCopyArea.get(), + m_xEdCopyArea.get(), + m_xRbCopyArea.get(), + m_xFtDbAreaLabel.get(), + m_xFtDbArea.get(), aStrUndefined ) ); // Read in field lists and select entries @@ -247,12 +211,12 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) if (rEntry.IsQueryByEmpty()) { aValStr = aStrEmpty; - maCondLbArr[i]->Disable(); + maCondLbArr[i]->set_sensitive(false); } else if (rEntry.IsQueryByNonEmpty()) { aValStr = aStrNotEmpty; - maCondLbArr[i]->Disable(); + maCondLbArr[i]->set_sensitive(false); } else { @@ -301,92 +265,93 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet ) maRefreshExceptQuery[i] = true; } - maFieldLbArr[i]->SelectEntryPos( nFieldSelPos ); - maCondLbArr [i]->SelectEntryPos( nCondPos ); - maValueEdArr[i]->SetText( aValStr ); - maValueEdArr[i]->EnableAutocomplete( false ); - maValueEdArr[i]->SetModifyHdl( LINK( this, ScFilterDlg, ValModifyHdl ) ); + maFieldLbArr[i]->set_active( nFieldSelPos ); + maCondLbArr [i]->set_active( nCondPos ); + maValueEdArr[i]->set_entry_text( aValStr ); + maValueEdArr[i]->set_entry_completion(false); + maValueEdArr[i]->connect_changed( LINK( this, ScFilterDlg, ValModifyHdl ) ); UpdateValueList(i+1); } - pScrollBar->SetEndScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) ); - pScrollBar->SetScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) ); + m_xScrollBar->set_user_managed_scrolling(); + m_xScrollBar->connect_vadjustment_changed( LINK( this, ScFilterDlg, ScrollHdl ) ); + m_xScrollBar->vadjustment_configure(0, 0, 8, 1, 3, 4); + Size aSize(m_xContents->get_preferred_size()); + m_xContents->set_size_request(aSize.Width(), aSize.Height()); - pScrollBar->SetRange( Range( 0, 4 ) ); - pScrollBar->SetLineSize( 1 ); - pLbConnect1->Hide(); + m_xLbConnect1->hide(); // Disable/Enable Logic: - (pLbField1->GetSelectedEntryPos() != 0) - && (pLbField2->GetSelectedEntryPos() != 0) - ? pLbConnect2->SelectEntryPos( static_cast<sal_uInt16>(theQueryData.GetEntry(1).eConnect) ) - : pLbConnect2->SetNoSelection(); - - (pLbField2->GetSelectedEntryPos() != 0) - && (pLbField3->GetSelectedEntryPos() != 0) - ? pLbConnect3->SelectEntryPos( static_cast<sal_uInt16>(theQueryData.GetEntry(2).eConnect) ) - : pLbConnect3->SetNoSelection(); - - (pLbField3->GetSelectedEntryPos() != 0) - && (pLbField4->GetSelectedEntryPos() != 0) - ? pLbConnect4->SelectEntryPos( static_cast<sal_uInt16>(theQueryData.GetEntry(3).eConnect) ) - : pLbConnect4->SetNoSelection(); - if ( pLbField1->GetSelectedEntryPos() == 0 ) + (m_xLbField1->get_active() != 0) + && (m_xLbField2->get_active() != 0) + ? m_xLbConnect2->set_active( static_cast<sal_uInt16>(theQueryData.GetEntry(1).eConnect) ) + : m_xLbConnect2->set_active(-1); + + (m_xLbField2->get_active() != 0) + && (m_xLbField3->get_active() != 0) + ? m_xLbConnect3->set_active( static_cast<sal_uInt16>(theQueryData.GetEntry(2).eConnect) ) + : m_xLbConnect3->set_active(-1); + + (m_xLbField3->get_active() != 0) + && (m_xLbField4->get_active() != 0) + ? m_xLbConnect4->set_active( static_cast<sal_uInt16>(theQueryData.GetEntry(3).eConnect) ) + : m_xLbConnect4->set_active(-1); + if ( m_xLbField1->get_active() == 0 ) { - pLbConnect2->Disable(); - pLbField2->Disable(); - pLbCond2->Disable(); - pEdVal2->Disable(); + m_xLbConnect2->set_sensitive(false); + m_xLbField2->set_sensitive(false); + m_xLbCond2->set_sensitive(false); + m_xEdVal2->set_sensitive(false); } - else if ( pLbConnect2->GetSelectedEntryCount() == 0 ) + else if ( m_xLbConnect2->get_active() == -1 ) { - pLbField2->Disable(); - pLbCond2->Disable(); - pEdVal2->Disable(); + m_xLbField2->set_sensitive(false); + m_xLbCond2->set_sensitive(false); + m_xEdVal2->set_sensitive(false); } - if ( pLbField2->GetSelectedEntryPos() == 0 ) + if ( m_xLbField2->get_active() == 0 ) { - pLbConnect3->Disable(); - pLbField3->Disable(); - pLbCond3->Disable(); - pEdVal3->Disable(); + m_xLbConnect3->set_sensitive(false); + m_xLbField3->set_sensitive(false); + m_xLbCond3->set_sensitive(false); + m_xEdVal3->set_sensitive(false); } - else if ( pLbConnect3->GetSelectedEntryCount() == 0 ) + else if ( m_xLbConnect3->get_active() == -1 ) { - pLbField3->Disable(); - pLbCond3->Disable(); - pEdVal3->Disable(); + m_xLbField3->set_sensitive(false); + m_xLbCond3->set_sensitive(false); + m_xEdVal3->set_sensitive(false); } - if ( pLbField3->GetSelectedEntryPos() == 0 ) + if ( m_xLbField3->get_active() == 0 ) { - pLbConnect4->Disable(); - pLbField4->Disable(); - pLbCond4->Disable(); - pEdVal4->Disable(); + m_xLbConnect4->set_sensitive(false); + m_xLbField4->set_sensitive(false); + m_xLbCond4->set_sensitive(false); + m_xEdVal4->set_sensitive(false); } - else if ( pLbConnect4->GetSelectedEntryCount() == 0 ) + else if ( m_xLbConnect4->get_active() == -1 ) { - pLbField4->Disable(); - pLbCond4->Disable(); - pEdVal4->Disable(); + m_xLbField4->set_sensitive(false); + m_xLbCond4->set_sensitive(false); + m_xEdVal4->set_sensitive(false); } - pEdVal1->setMaxWidthChars(10); - pEdVal2->setMaxWidthChars(10); - pEdVal3->setMaxWidthChars(10); - pEdVal4->setMaxWidthChars(10); + m_xEdVal1->set_entry_width_chars(10); + m_xEdVal2->set_entry_width_chars(10); + m_xEdVal3->set_entry_width_chars(10); + m_xEdVal4->set_entry_width_chars(10); if (pDoc != nullptr && pDoc->GetChangeTrack() != nullptr) - pBtnCopyResult->Disable(); + m_xBtnCopyResult->set_sensitive(false); } -bool ScFilterDlg::Close() +void ScFilterDlg::Close() { if (pViewData) pViewData->GetDocShell()->CancelAutoDBRange(); - return DoClose( ScFilterDlgWrapper::GetChildWindowId() ); + DoClose( ScFilterDlgWrapper::GetChildWindowId() ); } // Mouse-selected cell area becomes the new selection and is shown in the @@ -397,9 +362,9 @@ void ScFilterDlg::SetReference( const ScRange& rRef, ScDocument* pDocP ) if ( bRefInputMode ) // Only possible if in reference edit mode { if ( rRef.aStart != rRef.aEnd ) - RefInputStart( pEdCopyArea ); + RefInputStart( m_xEdCopyArea.get() ); OUString aRefStr(rRef.aStart.Format(ScRefFlags::ADDR_ABS_3D, pDocP, pDocP->GetAddressConvention())); - pEdCopyArea->SetRefString( aRefStr ); + m_xEdCopyArea->SetRefString( aRefStr ); } } @@ -407,25 +372,25 @@ void ScFilterDlg::SetActive() { if ( bRefInputMode ) { - pEdCopyArea->GrabFocus(); - pEdCopyArea->GetModifyHdl().Call( *pEdCopyArea ); + m_xEdCopyArea->GrabFocus(); + m_xEdCopyArea->GetModifyHdl().Call( *m_xEdCopyArea ); } else - GrabFocus(); + m_xDialog->grab_focus(); RefInputDone(); } void ScFilterDlg::FillFieldLists() { - pLbField1->Clear(); - pLbField2->Clear(); - pLbField3->Clear(); - pLbField4->Clear(); - pLbField1->InsertEntry( aStrNone, 0 ); - pLbField2->InsertEntry( aStrNone, 0 ); - pLbField3->InsertEntry( aStrNone, 0 ); - pLbField4->InsertEntry( aStrNone, 0 ); + m_xLbField1->clear(); + m_xLbField2->clear(); + m_xLbField3->clear(); + m_xLbField4->clear(); + m_xLbField1->append_text( aStrNone ); + m_xLbField2->append_text( aStrNone ); + m_xLbField3->append_text( aStrNone ); + m_xLbField4->append_text( aStrNone ); if ( pDoc ) { @@ -435,42 +400,39 @@ void ScFilterDlg::FillFieldLists() SCROW nFirstRow = theQueryData.nRow1; SCCOL nMaxCol = theQueryData.nCol2; SCCOL col = 0; - sal_uInt16 i=1; for ( col=nFirstCol; col<=nMaxCol; col++ ) { aFieldName = pDoc->GetString(col, nFirstRow, nTab); - if (!pBtnHeader->IsChecked() || aFieldName.isEmpty()) + if (!m_xBtnHeader->get_active() || aFieldName.isEmpty()) { aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col )); } - pLbField1->InsertEntry( aFieldName, i ); - pLbField2->InsertEntry( aFieldName, i ); - pLbField3->InsertEntry( aFieldName, i ); - pLbField4->InsertEntry( aFieldName, i ); - i++; + m_xLbField1->append_text( aFieldName ); + m_xLbField2->append_text( aFieldName ); + m_xLbField3->append_text( aFieldName ); + m_xLbField4->append_text( aFieldName ); } } } void ScFilterDlg::UpdateValueList( size_t nList ) { - bool bCaseSens = pBtnCase->IsChecked(); + bool bCaseSens = m_xBtnCase->get_active(); if (pDoc && nList > 0 && nList <= QUERY_ENTRY_COUNT) { - ComboBox* pValList = maValueEdArr[nList-1].get(); - const sal_Int32 nFieldSelPos = maFieldLbArr[nList-1]->GetSelectedEntryPos(); - sal_Int32 nListPos = 0; - OUString aCurValue = pValList->GetText(); + weld::ComboBox* pValList = maValueEdArr[nList-1]; + const sal_Int32 nFieldSelPos = maFieldLbArr[nList-1]->get_active(); + OUString aCurValue = pValList->get_active_text(); - pValList->Clear(); - pValList->InsertEntry( aStrNotEmpty, nListPos++ ); - pValList->InsertEntry( aStrEmpty, nListPos++ ); + pValList->clear(); + pValList->append_text(aStrNotEmpty); + pValList->append_text(aStrEmpty); if ( nFieldSelPos ) { - WaitObject aWaiter( this ); // even if only the list box has content + weld::WaitObject aWaiter(m_xDialog.get()); // even if only the list box has content SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1; EntryList* pList = nullptr; @@ -532,11 +494,10 @@ void ScFilterDlg::UpdateValueList( size_t nList ) for (const auto& rEntry : pList->maFilterEntries) { - pValList->InsertEntry(rEntry.GetString(), nListPos++); + pValList->append_text(rEntry.GetString()); } } - pValList->SetText( aCurValue ); - pValList->EnableDDAutoWidth(false); + pValList->set_entry_text(aCurValue); } UpdateHdrInValueList( nList ); @@ -552,7 +513,7 @@ void ScFilterDlg::UpdateHdrInValueList( size_t nList ) if (nList == 0 || nList > QUERY_ENTRY_COUNT) return; - size_t nFieldSelPos = maFieldLbArr[nList-1]->GetSelectedEntryPos(); + size_t nFieldSelPos = maFieldLbArr[nList-1]->get_active(); if (!nFieldSelPos) return; @@ -567,24 +528,24 @@ void ScFilterDlg::UpdateHdrInValueList( size_t nList ) if (nPos == INVALID_HEADER_POS) return; - ComboBox* pValList = maValueEdArr[nList-1].get(); - size_t nListPos = nPos + 2; // for "empty" and "non-empty" + weld::ComboBox* pValList = maValueEdArr[nList-1]; + int nListPos = nPos + 2; // for "empty" and "non-empty" const ScTypedStrData& rHdrEntry = m_EntryLists[nColumn]->maFilterEntries.maStrData[nPos]; const OUString& aHdrStr = rHdrEntry.GetString(); - bool bWasThere = aHdrStr == pValList->GetEntry(nListPos); - bool bInclude = !pBtnHeader->IsChecked(); + bool bWasThere = nListPos < pValList->get_count() && aHdrStr == pValList->get_text(nListPos); + bool bInclude = !m_xBtnHeader->get_active(); if (bInclude) // Include entry { if (!bWasThere) - pValList->InsertEntry(aHdrStr, nListPos); + pValList->insert_text(nListPos, aHdrStr); } else // Omit entry { if (bWasThere) - pValList->RemoveEntryAt(nListPos); + pValList->remove(nListPos); } } @@ -592,11 +553,11 @@ void ScFilterDlg::ClearValueList( size_t nList ) { if (nList > 0 && nList <= QUERY_ENTRY_COUNT) { - ComboBox* pValList = maValueEdArr[nList-1].get(); - pValList->Clear(); - pValList->InsertEntry( aStrNotEmpty, 0 ); - pValList->InsertEntry( aStrEmpty, 1 ); - pValList->SetText( EMPTY_OUSTRING ); + weld::ComboBox* pValList = maValueEdArr[nList-1]; + pValList->clear(); + pValList->append_text( aStrNotEmpty ); + pValList->append_text( aStrEmpty ); + pValList->set_entry_text( EMPTY_OUSTRING ); } } @@ -614,14 +575,14 @@ ScQueryItem* ScFilterDlg::GetOutputItem() ScQueryParam theParam( theQueryData ); bool bCopyPosOk = false; - if ( pBtnCopyResult->IsChecked() ) + if ( m_xBtnCopyResult->get_active() ) { ScRefFlags nResult = theCopyPos.Parse( - pEdCopyArea->GetText(), pDoc, pDoc->GetAddressConvention()); + m_xEdCopyArea->GetText(), pDoc, pDoc->GetAddressConvention()); bCopyPosOk = (nResult & ScRefFlags::VALID) == ScRefFlags::VALID; } - if ( pBtnCopyResult->IsChecked() && bCopyPosOk ) + if ( m_xBtnCopyResult->get_active() && bCopyPosOk ) { theParam.bInplace = false; theParam.nDestTab = theCopyPos.Tab(); @@ -636,12 +597,12 @@ ScQueryItem* ScFilterDlg::GetOutputItem() theParam.nDestRow = 0; } - theParam.bHasHeader = pBtnHeader->IsChecked(); + theParam.bHasHeader = m_xBtnHeader->get_active(); theParam.bByRow = true; - theParam.bDuplicate = !pBtnUnique->IsChecked(); - theParam.bCaseSens = pBtnCase->IsChecked(); - theParam.eSearchType = pBtnRegExp->IsChecked() ? utl::SearchParam::SearchType::Regexp : utl::SearchParam::SearchType::Normal; - theParam.bDestPers = pBtnDestPers->IsChecked(); + theParam.bDuplicate = !m_xBtnUnique->get_active(); + theParam.bCaseSens = m_xBtnCase->get_active(); + theParam.eSearchType = m_xBtnRegExp->get_active() ? utl::SearchParam::SearchType::Regexp : utl::SearchParam::SearchType::Normal; + theParam.bDestPers = m_xBtnDestPers->get_active(); // only set the three - reset everything else @@ -657,24 +618,24 @@ bool ScFilterDlg::IsRefInputMode() const // Handler: -IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn, void ) +IMPL_LINK( ScFilterDlg, EndDlgHdl, weld::Button&, rBtn, void ) { - if ( pBtn == pBtnOk ) + if ( &rBtn == m_xBtnOk.get() ) { bool bAreaInputOk = true; - if ( pBtnCopyResult->IsChecked() ) + if ( m_xBtnCopyResult->get_active() ) { - if ( !pOptionsMgr->VerifyPosStr( pEdCopyArea->GetText() ) ) + if ( !pOptionsMgr->VerifyPosStr( m_xEdCopyArea->GetText() ) ) { - if (!pExpander->get_expanded()) - pExpander->set_expanded(true); + if (!m_xExpander->get_expanded()) + m_xExpander->set_expanded(true); - std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(GetFrameWeld(), + std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(), VclMessageType::Warning, VclButtonsType::Ok, ScResId(STR_INVALID_TABREF))); xBox->run(); - pEdCopyArea->GrabFocus(); + m_xEdCopyArea->GrabFocus(); bAreaInputOk = false; } } @@ -686,18 +647,18 @@ IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn, void ) GetBindings().GetDispatcher()->ExecuteList(FID_FILTER_OK, SfxCallMode::SLOT | SfxCallMode::RECORD, { GetOutputItem() }); - Close(); + response(RET_OK); } } - else if ( pBtn == pBtnCancel ) + else if ( &rBtn == m_xBtnCancel.get() ) { - Close(); + response(RET_CANCEL); } } -IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, VclExpander&, void) +IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, weld::Expander&, void) { - if ( pExpander->get_expanded() ) + if ( m_xExpander->get_expanded() ) pTimer->Start(); else { @@ -711,55 +672,53 @@ IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, VclExpander&, void) IMPL_LINK( ScFilterDlg, TimeOutHdl, Timer*, _pTimer, void ) { // Check if RefInputMode is still true every 50ms + if (_pTimer == pTimer.get() && m_xDialog->has_toplevel_focus()) + bRefInputMode = (m_xEdCopyArea->GetWidget()->has_focus() || m_xRbCopyArea->GetWidget()->has_focus()); - if( _pTimer == pTimer.get() && IsActive() ) - bRefInputMode = (pEdCopyArea->HasFocus() || pRbCopyArea->HasFocus()); - - if ( pExpander->get_expanded() ) + if ( m_xExpander->get_expanded() ) pTimer->Start(); } -IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void ) +IMPL_LINK(ScFilterDlg, LbSelectHdl, weld::ComboBox&, rLb, void) { /* * Handle enable/disable logic depending on which ListBox was selected */ sal_uInt16 nOffset = GetSliderPos(); - if ( &rLb == pLbConnect1 ) + if ( &rLb == m_xLbConnect1.get() ) { - pLbField1->Enable(); - pLbCond1->Enable(); - pEdVal1->Enable(); + m_xLbField1->set_sensitive(true); + m_xLbCond1->set_sensitive(true); + m_xEdVal1->set_sensitive(true); - const sal_Int32 nConnect1 = pLbConnect1->GetSelectedEntryPos(); + const sal_Int32 nConnect1 = m_xLbConnect1->get_active(); size_t nQE = nOffset; theQueryData.GetEntry(nQE).eConnect =static_cast<ScQueryConnect>(nConnect1); if (maRefreshExceptQuery.size() < nQE + 1) maRefreshExceptQuery.resize(nQE + 1, false); maRefreshExceptQuery[nQE] = true; } - - else if ( &rLb == pLbConnect2 ) + else if ( &rLb == m_xLbConnect2.get() ) { - pLbField2->Enable(); - pLbCond2->Enable(); - pEdVal2->Enable(); + m_xLbField2->set_sensitive(true); + m_xLbCond2->set_sensitive(true); + m_xEdVal2->set_sensitive(true); - const sal_Int32 nConnect2 = pLbConnect2->GetSelectedEntryPos(); + const sal_Int32 nConnect2 = m_xLbConnect2->get_active(); size_t nQE = 1+nOffset; theQueryData.GetEntry(nQE).eConnect =static_cast<ScQueryConnect>(nConnect2); if (maRefreshExceptQuery.size() < nQE + 1) maRefreshExceptQuery.resize(nQE + 1, false); maRefreshExceptQuery[nQE]=true; } - else if ( &rLb == pLbConnect3 ) + else if ( &rLb == m_xLbConnect3.get() ) { - pLbField3->Enable(); - pLbCond3->Enable(); - pEdVal3->Enable(); + m_xLbField3->set_sensitive(true); + m_xLbCond3->set_sensitive(true); + m_xEdVal3->set_sensitive(true); - const sal_Int32 nConnect3 = pLbConnect3->GetSelectedEntryPos(); + const sal_Int32 nConnect3 = m_xLbConnect3->get_active(); size_t nQE = 2 + nOffset; theQueryData.GetEntry(nQE).eConnect = static_cast<ScQueryConnect>(nConnect3); if (maRefreshExceptQuery.size() < nQE + 1) @@ -767,49 +726,49 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void ) maRefreshExceptQuery[nQE] = true; } - else if ( &rLb == pLbConnect4 ) + else if ( &rLb == m_xLbConnect4.get() ) { - pLbField4->Enable(); - pLbCond4->Enable(); - pEdVal4->Enable(); + m_xLbField4->set_sensitive(true); + m_xLbCond4->set_sensitive(true); + m_xEdVal4->set_sensitive(true); - const sal_Int32 nConnect4 = pLbConnect4->GetSelectedEntryPos(); + const sal_Int32 nConnect4 = m_xLbConnect4->get_active(); size_t nQE = 3 + nOffset; theQueryData.GetEntry(nQE).eConnect = static_cast<ScQueryConnect>(nConnect4); if (maRefreshExceptQuery.size() < nQE + 1) maRefreshExceptQuery.resize(nQE + 1, false); maRefreshExceptQuery[nQE] = true; } - else if ( &rLb == pLbField1 ) + else if ( &rLb == m_xLbField1.get() ) { - if ( pLbField1->GetSelectedEntryPos() == 0 ) + if ( m_xLbField1->get_active() == 0 ) { - pLbConnect2->SetNoSelection(); - pLbConnect3->SetNoSelection(); - pLbConnect4->SetNoSelection(); - pLbField2->SelectEntryPos( 0 ); - pLbField3->SelectEntryPos( 0 ); - pLbField4->SelectEntryPos( 0 ); - pLbCond2->SelectEntryPos( 0 ); - pLbCond3->SelectEntryPos( 0 ); - pLbCond4->SelectEntryPos( 0 ); + m_xLbConnect2->set_active(-1); + m_xLbConnect3->set_active(-1); + m_xLbConnect4->set_active(-1); + m_xLbField2->set_active( 0 ); + m_xLbField3->set_active( 0 ); + m_xLbField4->set_active( 0 ); + m_xLbCond2->set_active( 0 ); + m_xLbCond3->set_active( 0 ); + m_xLbCond4->set_active( 0 ); ClearValueList( 1 ); ClearValueList( 2 ); ClearValueList( 3 ); ClearValueList( 4 ); - pLbConnect2->Disable(); - pLbConnect3->Disable(); - pLbConnect4->Disable(); - pLbField2->Disable(); - pLbField3->Disable(); - pLbField4->Disable(); - pLbCond2->Disable(); - pLbCond3->Disable(); - pLbCond4->Disable(); - pEdVal2->Disable(); - pEdVal3->Disable(); - pEdVal4->Disable(); + m_xLbConnect2->set_sensitive(false); + m_xLbConnect3->set_sensitive(false); + m_xLbConnect4->set_sensitive(false); + m_xLbField2->set_sensitive(false); + m_xLbField3->set_sensitive(false); + m_xLbField4->set_sensitive(false); + m_xLbCond2->set_sensitive(false); + m_xLbCond3->set_sensitive(false); + m_xLbCond4->set_sensitive(false); + m_xEdVal2->set_sensitive(false); + m_xEdVal3->set_sensitive(false); + m_xEdVal4->set_sensitive(false); SCSIZE nCount = theQueryData.GetEntryCount(); if (maRefreshExceptQuery.size() < nCount + 1) maRefreshExceptQuery.resize(nCount + 1, false); @@ -824,37 +783,37 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void ) else { UpdateValueList( 1 ); - if ( !pLbConnect2->IsEnabled() ) + if ( !m_xLbConnect2->get_sensitive() ) { - pLbConnect2->Enable(); + m_xLbConnect2->set_sensitive(true); } theQueryData.GetEntry(nOffset).bDoQuery = true; - const sal_Int32 nField = rLb.GetSelectedEntryPos(); + const sal_Int32 nField = rLb.get_active(); theQueryData.GetEntry(nOffset).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ; } } - else if ( &rLb == pLbField2 ) + else if ( &rLb == m_xLbField2.get() ) { - if ( pLbField2->GetSelectedEntryPos() == 0 ) + if ( m_xLbField2->get_active() == 0 ) { - pLbConnect3->SetNoSelection(); - pLbConnect4->SetNoSelection(); - pLbField3->SelectEntryPos( 0 ); - pLbField4->SelectEntryPos( 0 ); - pLbCond3->SelectEntryPos( 0 ); - pLbCond4->SelectEntryPos( 0 ); + m_xLbConnect3->set_active(-1); + m_xLbConnect4->set_active(-1); + m_xLbField3->set_active( 0 ); + m_xLbField4->set_active( 0 ); + m_xLbCond3->set_active( 0 ); + m_xLbCond4->set_active( 0 ); ClearValueList( 2 ); ClearValueList( 3 ); ClearValueList( 4 ); - pLbConnect3->Disable(); - pLbConnect4->Disable(); - pLbField3->Disable(); - pLbField4->Disable(); - pLbCond3->Disable(); - pLbCond4->Disable(); - pEdVal3->Disable(); - pEdVal4->Disable(); + m_xLbConnect3->set_sensitive(false); + m_xLbConnect4->set_sensitive(false); + m_xLbField3->set_sensitive(false); + m_xLbField4->set_sensitive(false); + m_xLbCond3->set_sensitive(false); + m_xLbCond4->set_sensitive(false); + m_xEdVal3->set_sensitive(false); + m_xEdVal4->set_sensitive(false); sal_uInt16 nTemp=nOffset+1; SCSIZE nCount = theQueryData.GetEntryCount(); @@ -871,30 +830,30 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void ) else { UpdateValueList( 2 ); - if ( !pLbConnect3->IsEnabled() ) + if ( !m_xLbConnect3->get_sensitive() ) { - pLbConnect3->Enable(); + m_xLbConnect3->set_sensitive(true); } - const sal_Int32 nField = rLb.GetSelectedEntryPos(); + const sal_Int32 nField = rLb.get_active(); sal_uInt16 nQ=1+nOffset; theQueryData.GetEntry(nQ).bDoQuery = true; theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ; } } - else if ( &rLb == pLbField3 ) + else if ( &rLb == m_xLbField3.get() ) { - if ( pLbField3->GetSelectedEntryPos() == 0 ) + if ( m_xLbField3->get_active() == 0 ) { - pLbConnect4->SetNoSelection(); - pLbField4->SelectEntryPos( 0 ); - pLbCond4->SelectEntryPos( 0 ); + m_xLbConnect4->set_active(-1); + m_xLbField4->set_active( 0 ); + m_xLbCond4->set_active( 0 ); ClearValueList( 3 ); ClearValueList( 4 ); - pLbConnect4->Disable(); - pLbField4->Disable(); - pLbCond4->Disable(); - pEdVal4->Disable(); + m_xLbConnect4->set_sensitive(false); + m_xLbField4->set_sensitive(false); + m_xLbCond4->set_sensitive(false); + m_xEdVal4->set_sensitive(false); sal_uInt16 nTemp=nOffset+2; SCSIZE nCount = theQueryData.GetEntryCount(); @@ -911,21 +870,21 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void ) else { UpdateValueList( 3 ); - if ( !pLbConnect4->IsEnabled() ) + if ( !m_xLbConnect4->get_sensitive() ) { - pLbConnect4->Enable(); + m_xLbConnect4->set_sensitive(true); } - const sal_Int32 nField = rLb.GetSelectedEntryPos(); + const sal_Int32 nField = rLb.get_active(); sal_uInt16 nQ=2+nOffset; theQueryData.GetEntry(nQ).bDoQuery = true; theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ; } } - else if ( &rLb == pLbField4 ) + else if ( &rLb == m_xLbField4.get() ) { - if ( pLbField4->GetSelectedEntryPos() == 0 ) + if ( m_xLbField4->get_active() == 0 ) { ClearValueList( 4 ); sal_uInt16 nTemp=nOffset+3; @@ -943,35 +902,35 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void ) else { UpdateValueList( 4 ); - const sal_Int32 nField = rLb.GetSelectedEntryPos(); + const sal_Int32 nField = rLb.get_active(); sal_uInt16 nQ=3+nOffset; theQueryData.GetEntry(nQ).bDoQuery = true; theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ; } } - else if ( &rLb == pLbCond1) + else if ( &rLb == m_xLbCond1.get()) { - theQueryData.GetEntry(nOffset).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos()); + theQueryData.GetEntry(nOffset).eOp=static_cast<ScQueryOp>(rLb.get_active()); } - else if ( &rLb == pLbCond2) + else if ( &rLb == m_xLbCond2.get()) { sal_uInt16 nQ=1+nOffset; - theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos()); + theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.get_active()); } - else if ( &rLb == pLbCond3) + else if ( &rLb == m_xLbCond3.get()) { sal_uInt16 nQ=2+nOffset; - theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos()); + theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.get_active()); } else { sal_uInt16 nQ=3+nOffset; - theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos()); + theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.get_active()); } } -IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void ) +IMPL_LINK( ScFilterDlg, CheckBoxHdl, weld::Button&, rBox, void ) { // Column headers: // Field list: Columnxx <-> column header string @@ -979,17 +938,17 @@ IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void ) // Upper/lower case: // Value list: completely new - if ( pBox == pBtnHeader ) // Field list and value list + if ( &rBox == m_xBtnHeader.get() ) // Field list and value list { - const sal_Int32 nCurSel1 = pLbField1->GetSelectedEntryPos(); - const sal_Int32 nCurSel2 = pLbField2->GetSelectedEntryPos(); - const sal_Int32 nCurSel3 = pLbField3->GetSelectedEntryPos(); - const sal_Int32 nCurSel4 = pLbField4->GetSelectedEntryPos(); + const sal_Int32 nCurSel1 = m_xLbField1->get_active(); + const sal_Int32 nCurSel2 = m_xLbField2->get_active(); + const sal_Int32 nCurSel3 = m_xLbField3->get_active(); + const sal_Int32 nCurSel4 = m_xLbField4->get_active(); FillFieldLists(); - pLbField1->SelectEntryPos( nCurSel1 ); - pLbField2->SelectEntryPos( nCurSel2 ); - pLbField3->SelectEntryPos( nCurSel3 ); - pLbField4->SelectEntryPos( nCurSel4 ); + m_xLbField1->set_active( nCurSel1 ); + m_xLbField2->set_active( nCurSel2 ); + m_xLbField3->set_active( nCurSel3 ); + m_xLbField4->set_active( nCurSel4 ); UpdateHdrInValueList( 1 ); UpdateHdrInValueList( 2 ); @@ -997,7 +956,7 @@ IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void ) UpdateHdrInValueList( 4 ); } - if ( pBox == pBtnCase ) // Complete value list + if ( &rBox == m_xBtnCase.get() ) // Complete value list { m_EntryLists.clear(); UpdateValueList( 1 ); // current text is recorded @@ -1007,43 +966,43 @@ IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void ) } } -IMPL_LINK( ScFilterDlg, ValModifyHdl, Edit&, rEd, void ) +IMPL_LINK( ScFilterDlg, ValModifyHdl, weld::ComboBox&, rEd, void ) { size_t nOffset = GetSliderPos(); size_t i = 0; size_t nQE = i + nOffset; - OUString aStrVal = rEd.GetText(); - ListBox* pLbCond = pLbCond1; - ListBox* pLbField = pLbField1; - if ( &rEd == pEdVal2 ) + OUString aStrVal = rEd.get_active_text(); + weld::ComboBox* pLbCond = m_xLbCond1.get(); + weld::ComboBox* pLbField = m_xLbField1.get(); + if ( &rEd == m_xEdVal2.get() ) { - pLbCond = pLbCond2; - pLbField = pLbField2; + pLbCond = m_xLbCond2.get(); + pLbField = m_xLbField2.get(); i=1; nQE=i+nOffset; } - if ( &rEd == pEdVal3 ) + if ( &rEd == m_xEdVal3.get() ) { - pLbCond = pLbCond3; - pLbField = pLbField3; + pLbCond = m_xLbCond3.get(); + pLbField = m_xLbField3.get(); i=2; nQE=i+nOffset; } - if ( &rEd == pEdVal4 ) + if ( &rEd == m_xEdVal4.get() ) { - pLbCond = pLbCond4; - pLbField = pLbField4; + pLbCond = m_xLbCond4.get(); + pLbField = m_xLbField4.get(); i=3; nQE=i+nOffset; } if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal ) { - pLbCond->SelectEntry(OUString('=')); - pLbCond->Disable(); + pLbCond->set_active_text(OUString('=')); + pLbCond->set_sensitive(false); } else - pLbCond->Enable(); + pLbCond->set_sensitive(true); if (maHasDates.size() < nQE + 1) maHasDates.resize(nQE + 1, false); @@ -1052,7 +1011,7 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, Edit&, rEd, void ) ScQueryEntry& rEntry = theQueryData.GetEntry( nQE ); ScQueryEntry::Item& rItem = rEntry.GetQueryItem(); - bool bDoThis = (pLbField->GetSelectedEntryPos() != 0); + bool bDoThis = (pLbField->get_active() != 0); rEntry.bDoQuery = bDoThis; if ( rEntry.bDoQuery || maRefreshExceptQuery[nQE] ) @@ -1079,18 +1038,18 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, Edit&, rEd, void ) rItem.meType = bNumber ? ScQueryEntry::ByValue : ScQueryEntry::ByString; } - const sal_Int32 nField = pLbField->GetSelectedEntryPos(); + const sal_Int32 nField = pLbField->get_active(); rEntry.nField = nField ? (theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0); - ScQueryOp eOp = static_cast<ScQueryOp>(pLbCond->GetSelectedEntryPos()); + ScQueryOp eOp = static_cast<ScQueryOp>(pLbCond->get_active()); rEntry.eOp = eOp; if (maHasDates[nQE] && !bByEmptyOrNotByEmpty) rItem.meType = ScQueryEntry::ByDate; } } -IMPL_LINK_NOARG(ScFilterDlg, ScrollHdl, ScrollBar*, void) +IMPL_LINK_NOARG(ScFilterDlg, ScrollHdl, weld::ScrolledWindow&, void) { SliderMoved(); } @@ -1103,15 +1062,15 @@ void ScFilterDlg::SliderMoved() size_t ScFilterDlg::GetSliderPos() { - return static_cast<size_t>(pScrollBar->GetThumbPos()); + return static_cast<size_t>(m_xScrollBar->vadjustment_get_value()); } void ScFilterDlg::RefreshEditRow( size_t nOffset ) { if (nOffset==0) - maConnLbArr[0]->Hide(); + maConnLbArr[0]->hide(); else - maConnLbArr[0]->Show(); + maConnLbArr[0]->show(); for (size_t i = 0; i < QUERY_ENTRY_COUNT; ++i) { @@ -1135,51 +1094,51 @@ void ScFilterDlg::RefreshEditRow( size_t nOffset ) if (rEntry.IsQueryByEmpty()) { aValStr = aStrEmpty; - maCondLbArr[i]->Disable(); + maCondLbArr[i]->set_sensitive(false); } else if (rEntry.IsQueryByNonEmpty()) { aValStr = aStrNotEmpty; - maCondLbArr[i]->Disable(); + maCondLbArr[i]->set_sensitive(false); } else { aValStr = aQueryStr; - maCondLbArr[i]->Enable(); + maCondLbArr[i]->set_sensitive(true); } - maFieldLbArr[i]->Enable(); - maValueEdArr[i]->Enable(); + maFieldLbArr[i]->set_sensitive(true); + maValueEdArr[i]->set_sensitive(true); if (nOffset==0) { if (i<3) { if(rEntry.bDoQuery) - maConnLbArr[i+1]->Enable(); + maConnLbArr[i+1]->set_sensitive(true); else - maConnLbArr[i+1]->Disable(); + maConnLbArr[i+1]->set_sensitive(false); size_t nQENext = nQE + 1; if (maRefreshExceptQuery.size() < nQENext + 1) maRefreshExceptQuery.resize(nQENext + 1, false); if (theQueryData.GetEntry(nQENext).bDoQuery || maRefreshExceptQuery[nQENext]) - maConnLbArr[i+1]->SelectEntryPos( static_cast<sal_uInt16>(theQueryData.GetEntry(nQENext).eConnect) ); + maConnLbArr[i+1]->set_active( static_cast<sal_uInt16>(theQueryData.GetEntry(nQENext).eConnect) ); else - maConnLbArr[i+1]->SetNoSelection(); + maConnLbArr[i+1]->set_active(-1); } } else { if(theQueryData.GetEntry( nQE-1).bDoQuery) - maConnLbArr[i]->Enable(); + maConnLbArr[i]->set_sensitive(true); else - maConnLbArr[i]->Disable(); + maConnLbArr[i]->set_sensitive(false); if (maRefreshExceptQuery.size() < nQE + 1) maRefreshExceptQuery.resize(nQE + 1, false); if(rEntry.bDoQuery || maRefreshExceptQuery[nQE]) - maConnLbArr[i]->SelectEntryPos( static_cast<sal_uInt16>(rEntry.eConnect) ); + maConnLbArr[i]->set_active( static_cast<sal_uInt16>(rEntry.eConnect) ); else - maConnLbArr[i]->SetNoSelection(); + maConnLbArr[i]->set_active(-1); } } @@ -1189,25 +1148,25 @@ void ScFilterDlg::RefreshEditRow( size_t nOffset ) { if(i<3) { - maConnLbArr[i+1]->SetNoSelection(); - maConnLbArr[i+1]->Disable(); + maConnLbArr[i+1]->set_active(-1); + maConnLbArr[i+1]->set_sensitive(false); } } else { if(theQueryData.GetEntry( nQE-1).bDoQuery) - maConnLbArr[i]->Enable(); + maConnLbArr[i]->set_sensitive(true); else - maConnLbArr[i]->Disable(); - maConnLbArr[i]->SetNoSelection(); + maConnLbArr[i]->set_sensitive(false); + maConnLbArr[i]->set_active(-1); } - maFieldLbArr[i]->Disable(); - maCondLbArr[i]->Disable(); - maValueEdArr[i]->Disable(); + maFieldLbArr[i]->set_sensitive(false); + maCondLbArr[i]->set_sensitive(false); + maValueEdArr[i]->set_sensitive(false); } - maFieldLbArr[i]->SelectEntryPos( nFieldSelPos ); - maCondLbArr [i]->SelectEntryPos( nCondPos ); - maValueEdArr[i]->SetText( aValStr ); + maFieldLbArr[i]->set_active( nFieldSelPos ); + maCondLbArr [i]->set_active( nCondPos ); + maValueEdArr[i]->set_entry_text( aValStr ); UpdateValueList(i+1); } } diff --git a/sc/source/ui/dbgui/foptmgr.cxx b/sc/source/ui/dbgui/foptmgr.cxx index 1449504d444e..47e0274a6aec 100644 --- a/sc/source/ui/dbgui/foptmgr.cxx +++ b/sc/source/ui/dbgui/foptmgr.cxx @@ -66,6 +66,41 @@ ScFilterOptionsMgr::ScFilterOptionsMgr( Init(); } +FilterOptionsMgr::FilterOptionsMgr( + ScViewData* ptrViewData, + const ScQueryParam& refQueryData, + weld::CheckButton* refBtnCase, + weld::CheckButton* refBtnRegExp, + weld::CheckButton* refBtnHeader, + weld::CheckButton* refBtnUnique, + weld::CheckButton* refBtnCopyResult, + weld::CheckButton* refBtnDestPers, + weld::ComboBox* refLbCopyArea, + formula::WeldRefEdit* refEdCopyArea, + formula::WeldRefButton* refRbCopyArea, + weld::Label* refFtDbAreaLabel, + weld::Label* refFtDbArea, + const OUString& refStrUndefined ) + + : pViewData ( ptrViewData ), + pDoc ( ptrViewData ? ptrViewData->GetDocument() : nullptr ), + pBtnCase ( refBtnCase ), + pBtnRegExp ( refBtnRegExp ), + pBtnHeader ( refBtnHeader ), + pBtnUnique ( refBtnUnique ), + pBtnCopyResult ( refBtnCopyResult ), + pBtnDestPers ( refBtnDestPers ), + pLbCopyArea ( refLbCopyArea ), + pEdCopyArea ( refEdCopyArea ), + pRbCopyArea ( refRbCopyArea ), + pFtDbAreaLabel ( refFtDbAreaLabel ), + pFtDbArea ( refFtDbArea ), + rStrUndefined ( refStrUndefined ), + rQueryData ( refQueryData ) +{ + Init(); +} + ScFilterOptionsMgr::~ScFilterOptionsMgr() { const sal_Int32 nEntries = pLbCopyArea->GetEntryCount(); @@ -74,6 +109,10 @@ ScFilterOptionsMgr::~ScFilterOptionsMgr() delete static_cast<OUString*>(pLbCopyArea->GetEntryData( i )); } +FilterOptionsMgr::~FilterOptionsMgr() +{ +} + void ScFilterOptionsMgr::Init() { //moggi:TODO @@ -193,6 +232,121 @@ void ScFilterOptionsMgr::Init() pEdCopyArea->SetText( EMPTY_OUSTRING ); } +void FilterOptionsMgr::Init() +{ +//moggi:TODO + OSL_ENSURE( pViewData && pDoc, "Init failed :-/" ); + + pLbCopyArea->connect_changed( LINK( this, FilterOptionsMgr, LbAreaSelHdl ) ); + pEdCopyArea->SetModifyHdl ( LINK( this, FilterOptionsMgr, EdAreaModifyHdl ) ); + pBtnCopyResult->connect_toggled( LINK( this, FilterOptionsMgr, BtnCopyResultHdl ) ); + + pBtnCase->set_active( rQueryData.bCaseSens ); + pBtnHeader->set_active( rQueryData.bHasHeader ); + pBtnRegExp->set_active( rQueryData.eSearchType == utl::SearchParam::SearchType::Regexp ); + pBtnUnique->set_active( !rQueryData.bDuplicate ); + + if ( pViewData && pDoc ) + { + OUString theAreaStr; + ScRange theCurArea ( ScAddress( rQueryData.nCol1, + rQueryData.nRow1, + pViewData->GetTabNo() ), + ScAddress( rQueryData.nCol2, + rQueryData.nRow2, + pViewData->GetTabNo() ) ); + ScDBCollection* pDBColl = pDoc->GetDBCollection(); + OUString theDbArea; + OUString theDbName(STR_DB_LOCAL_NONAME); + const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); + + theAreaStr = theCurArea.Format(ScRefFlags::RANGE_ABS_3D, pDoc, eConv); + + // fill the target area list + + pLbCopyArea->clear(); + pLbCopyArea->append_text(rStrUndefined); + + ScAreaNameIterator aIter( pDoc ); + OUString aName; + ScRange aRange; + while ( aIter.Next( aName, aRange ) ) + { + OUString aRefStr(aRange.aStart.Format(ScRefFlags::ADDR_ABS_3D, pDoc, eConv)); + pLbCopyArea->append(aRefStr, aName); + } + + pBtnDestPers->set_active(true); // always on when called + pLbCopyArea->set_active( 0 ); + pEdCopyArea->SetText( EMPTY_OUSTRING ); + + /* + * Check whether the transferred area is a database area: + */ + + theDbArea = theAreaStr; + + if ( pDBColl ) + { + ScAddress& rStart = theCurArea.aStart; + ScAddress& rEnd = theCurArea.aEnd; + const ScDBData* pDBData = pDBColl->GetDBAtArea( + rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row()); + + if ( pDBData ) + { + pBtnHeader->set_active( pDBData->HasHeader() ); + theDbName = pDBData->GetName(); + + pBtnHeader->set_sensitive(theDbName == STR_DB_LOCAL_NONAME); + } + } + + if ( theDbName != STR_DB_LOCAL_NONAME ) + { + theDbArea += " (" + theDbName + ")"; + + pFtDbArea->set_label( theDbArea ); + } + else + { + pFtDbAreaLabel->set_label( OUString() ); + pFtDbArea->set_label( OUString() ); + } + + // position to copy to: + + if ( !rQueryData.bInplace ) + { + OUString aString = + ScAddress( rQueryData.nDestCol, + rQueryData.nDestRow, + rQueryData.nDestTab + ).Format(ScRefFlags::ADDR_ABS_3D, pDoc, eConv); + + pBtnCopyResult->set_active(true); + pEdCopyArea->SetText( aString ); + EdAreaModifyHdl( *pEdCopyArea ); + pLbCopyArea->set_sensitive(true); + pEdCopyArea->GetWidget()->set_sensitive(true); + pRbCopyArea->GetWidget()->set_sensitive(true); + pBtnDestPers->set_sensitive(true); + } + else + { + pBtnCopyResult->set_active( false ); + pEdCopyArea->SetText( EMPTY_OUSTRING ); + pLbCopyArea->set_sensitive(false); + pEdCopyArea->GetWidget()->set_sensitive(false); + pRbCopyArea->GetWidget()->set_sensitive(false); + pBtnDestPers->set_sensitive(false); + } + } + else + pEdCopyArea->SetText( EMPTY_OUSTRING ); +} + + bool ScFilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const { OUString aPosStr( rPosStr ); @@ -206,6 +360,19 @@ bool ScFilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const return (nResult & ScRefFlags::VALID) == ScRefFlags::VALID; } +bool FilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const +{ + OUString aPosStr( rPosStr ); + sal_Int32 nColonPos = aPosStr.indexOf( ':' ); + + if ( -1 != nColonPos ) + aPosStr = aPosStr.copy( 0, nColonPos ); + + ScRefFlags nResult = ScAddress().Parse( aPosStr, pDoc, pDoc->GetAddressConvention() ); + + return (nResult & ScRefFlags::VALID) == ScRefFlags::VALID; +} + // Handler: IMPL_LINK( ScFilterOptionsMgr, LbAreaSelHdl, ListBox&, rLb, void ) @@ -222,6 +389,21 @@ IMPL_LINK( ScFilterOptionsMgr, LbAreaSelHdl, ListBox&, rLb, void ) } } +IMPL_LINK( FilterOptionsMgr, LbAreaSelHdl, weld::ComboBox&, rLb, void ) +{ + if ( &rLb == pLbCopyArea ) + { + OUString aString; + const sal_Int32 nSelPos = pLbCopyArea->get_active(); + + if ( nSelPos > 0 ) + aString = pLbCopyArea->get_id(nSelPos); + + pEdCopyArea->SetText( aString ); + } +} + + IMPL_LINK( ScFilterOptionsMgr, EdAreaModifyHdl, Edit&, rEd, void ) { if ( &rEd == pEdCopyArea ) @@ -248,6 +430,32 @@ IMPL_LINK( ScFilterOptionsMgr, EdAreaModifyHdl, Edit&, rEd, void ) } } +IMPL_LINK( FilterOptionsMgr, EdAreaModifyHdl, formula::WeldRefEdit&, rEd, void ) +{ + if ( &rEd == pEdCopyArea ) + { + OUString theCurPosStr = rEd.GetText(); + ScRefFlags nResult = ScAddress().Parse( theCurPosStr, pDoc, pDoc->GetAddressConvention() ); + + if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID) + { + const sal_Int32 nCount = pLbCopyArea->get_count(); + + for ( sal_Int32 i=2; i<nCount; ++i ) + { + OUString aStr = pLbCopyArea->get_id(i); + if (theCurPosStr == aStr) + { + pLbCopyArea->set_active( i ); + return; + } + } + + } + pLbCopyArea->set_active( 0 ); + } +} + IMPL_LINK( ScFilterOptionsMgr, BtnCopyResultHdl, CheckBox&, rBox, void ) { if ( &rBox == pBtnCopyResult ) @@ -270,4 +478,26 @@ IMPL_LINK( ScFilterOptionsMgr, BtnCopyResultHdl, CheckBox&, rBox, void ) } } +IMPL_LINK( FilterOptionsMgr, BtnCopyResultHdl, weld::ToggleButton&, rBox, void ) +{ + if ( &rBox == pBtnCopyResult ) + { + if ( rBox.get_active() ) + { + pBtnDestPers->set_sensitive(true); + pLbCopyArea->set_sensitive(true); + pEdCopyArea->GetWidget()->set_sensitive(true); + pRbCopyArea->GetWidget()->set_sensitive(true); + pEdCopyArea->GrabFocus(); + } + else + { + pBtnDestPers->set_sensitive(false); + pLbCopyArea->set_sensitive(false); + pEdCopyArea->GetWidget()->set_sensitive(false); + pRbCopyArea->GetWidget()->set_sensitive(false); + } + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/filtdlg.hxx b/sc/source/ui/inc/filtdlg.hxx index 5a2ab1542c34..74e87b1cf12b 100644 --- a/sc/source/ui/inc/filtdlg.hxx +++ b/sc/source/ui/inc/filtdlg.hxx @@ -34,11 +34,12 @@ #include <map> class ScFilterOptionsMgr; +class FilterOptionsMgr; class ScViewData; class ScDocument; class ScQueryItem; -class ScFilterDlg : public ScAnyRefDlg +class ScFilterDlg : public ScAnyRefDlgController { struct EntryList { @@ -52,59 +53,21 @@ class ScFilterDlg : public ScAnyRefDlg }; typedef std::map<SCCOL, std::unique_ptr<EntryList>> EntryListsMap; public: - ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, vcl::Window* pParent, - const SfxItemSet& rArgSet ); - virtual ~ScFilterDlg() override; - virtual void dispose() override; + ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, + const SfxItemSet& rArgSet); + virtual ~ScFilterDlg() override; virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) override; virtual bool IsRefInputMode() const override; virtual void SetActive() override; - virtual bool Close() override; + virtual void Close() override; void SliderMoved(); size_t GetSliderPos(); void RefreshEditRow( size_t nOffset ); private: - VclPtr<ListBox> pLbConnect1; - VclPtr<ListBox> pLbField1; - VclPtr<ListBox> pLbCond1; - VclPtr<ComboBox> pEdVal1; - - VclPtr<ListBox> pLbConnect2; - VclPtr<ListBox> pLbField2; - VclPtr<ListBox> pLbCond2; - VclPtr<ComboBox> pEdVal2; - - VclPtr<ListBox> pLbConnect3; - VclPtr<ListBox> pLbField3; - VclPtr<ListBox> pLbCond3; - VclPtr<ComboBox> pEdVal3; - - VclPtr<ListBox> pLbConnect4; - VclPtr<ListBox> pLbField4; - VclPtr<ListBox> pLbCond4; - VclPtr<ComboBox> pEdVal4; - - VclPtr<ScrollBar> pScrollBar; - VclPtr<VclExpander> pExpander; - - VclPtr<OKButton> pBtnOk; - VclPtr<CancelButton> pBtnCancel; - - VclPtr<CheckBox> pBtnCase; - VclPtr<CheckBox> pBtnRegExp; - VclPtr<CheckBox> pBtnHeader; - VclPtr<CheckBox> pBtnUnique; - VclPtr<CheckBox> pBtnCopyResult; - VclPtr<ListBox> pLbCopyArea; - VclPtr<formula::RefEdit> pEdCopyArea; - VclPtr<formula::RefButton> pRbCopyArea; - VclPtr<CheckBox> pBtnDestPers; - VclPtr<FixedText> pFtDbAreaLabel; - VclPtr<FixedText> pFtDbArea; const OUString aStrUndefined; const OUString aStrNone; @@ -112,7 +75,7 @@ private: const OUString aStrNotEmpty; const OUString aStrColumn; - std::unique_ptr<ScFilterOptionsMgr> pOptionsMgr; + std::unique_ptr<FilterOptionsMgr> pOptionsMgr; const sal_uInt16 nWhichQuery; ScQueryParam theQueryData; @@ -121,10 +84,10 @@ private: ScDocument* pDoc; SCTAB nSrcTab; - std::vector<VclPtr<ComboBox>> maValueEdArr; - std::vector<VclPtr<ListBox>> maFieldLbArr; - std::vector<VclPtr<ListBox>> maCondLbArr; - std::vector<VclPtr<ListBox>> maConnLbArr; + std::vector<weld::ComboBox*> maValueEdArr; + std::vector<weld::ComboBox*> maFieldLbArr; + std::vector<weld::ComboBox*> maCondLbArr; + std::vector<weld::ComboBox*> maConnLbArr; std::deque<bool> maHasDates; std::deque<bool> maRefreshExceptQuery; @@ -135,6 +98,45 @@ private: // Hack: RefInput control std::unique_ptr<Timer> pTimer; + std::unique_ptr<weld::ComboBox> m_xLbConnect1; + std::unique_ptr<weld::ComboBox> m_xLbField1; + std::unique_ptr<weld::ComboBox> m_xLbCond1; + std::unique_ptr<weld::ComboBox> m_xEdVal1; + + std::unique_ptr<weld::ComboBox> m_xLbConnect2; + std::unique_ptr<weld::ComboBox> m_xLbField2; + std::unique_ptr<weld::ComboBox> m_xLbCond2; + std::unique_ptr<weld::ComboBox> m_xEdVal2; + + std::unique_ptr<weld::ComboBox> m_xLbConnect3; + std::unique_ptr<weld::ComboBox> m_xLbField3; + std::unique_ptr<weld::ComboBox> m_xLbCond3; + std::unique_ptr<weld::ComboBox> m_xEdVal3; + + std::unique_ptr<weld::ComboBox> m_xLbConnect4; + std::unique_ptr<weld::ComboBox> m_xLbField4; + std::unique_ptr<weld::ComboBox> m_xLbCond4; + std::unique_ptr<weld::ComboBox> m_xEdVal4; + + std::unique_ptr<weld::Widget> m_xContents; + std::unique_ptr<weld::ScrolledWindow> m_xScrollBar; + std::unique_ptr<weld::Expander> m_xExpander; + + std::unique_ptr<weld::Button> m_xBtnOk; + std::unique_ptr<weld::Button> m_xBtnCancel; + + std::unique_ptr<weld::CheckButton> m_xBtnCase; + std::unique_ptr<weld::CheckButton> m_xBtnRegExp; + std::unique_ptr<weld::CheckButton> m_xBtnHeader; + std::unique_ptr<weld::CheckButton> m_xBtnUnique; + std::unique_ptr<weld::CheckButton> m_xBtnCopyResult; + std::unique_ptr<weld::ComboBox> m_xLbCopyArea; + std::unique_ptr<formula::WeldRefEdit> m_xEdCopyArea; + std::unique_ptr<formula::WeldRefButton> m_xRbCopyArea; + std::unique_ptr<weld::CheckButton> m_xBtnDestPers; + std::unique_ptr<weld::Label> m_xFtDbAreaLabel; + std::unique_ptr<weld::Label> m_xFtDbArea; + private: void Init ( const SfxItemSet& rArgSet ); void FillFieldLists (); @@ -145,12 +147,12 @@ private: ScQueryItem* GetOutputItem (); // Handler: - DECL_LINK( LbSelectHdl, ListBox&, void ); - DECL_LINK( ValModifyHdl, Edit&, void ); - DECL_LINK( CheckBoxHdl, Button*, void ); - DECL_LINK( EndDlgHdl, Button*, void ); - DECL_LINK( ScrollHdl, ScrollBar*, void ); - DECL_LINK( MoreExpandedHdl, VclExpander&, void ); + DECL_LINK( LbSelectHdl, weld::ComboBox&, void ); + DECL_LINK( ValModifyHdl, weld::ComboBox&, void ); + DECL_LINK( CheckBoxHdl, weld::Button&, void ); + DECL_LINK( EndDlgHdl, weld::Button&, void ); + DECL_LINK( ScrollHdl, weld::ScrolledWindow&, void ); + DECL_LINK( MoreExpandedHdl, weld::Expander&, void ); // Hack: RefInput control DECL_LINK( TimeOutHdl, Timer*, void ); diff --git a/sc/source/ui/inc/foptmgr.hxx b/sc/source/ui/inc/foptmgr.hxx index eddfc10d2491..b8ac4d170a44 100644 --- a/sc/source/ui/inc/foptmgr.hxx +++ b/sc/source/ui/inc/foptmgr.hxx @@ -27,6 +27,8 @@ namespace formula { class RefButton; + class WeldRefButton; + class WeldRefEdit; } struct ScQueryParam; class ScDocument; @@ -81,6 +83,56 @@ private: DECL_LINK( BtnCopyResultHdl, CheckBox&, void ); }; +class FilterOptionsMgr +{ +public: + FilterOptionsMgr(ScViewData* ptrViewData, + const ScQueryParam& refQueryData, + weld::CheckButton* refBtnCase, + weld::CheckButton* refBtnRegExp, + weld::CheckButton* refBtnHeader, + weld::CheckButton* refBtnUnique, + weld::CheckButton* refBtnCopyResult, + weld::CheckButton* refBtnDestPers, + weld::ComboBox* refLbCopyArea, + formula::WeldRefEdit* refEdCopyArea, + formula::WeldRefButton* refRbCopyArea, + weld::Label* refFtDbAreaLabel, + weld::Label* refFtDbArea, + const OUString& refStrUndefined ); + ~FilterOptionsMgr(); + bool VerifyPosStr ( const OUString& rPosStr ) const; + +private: + ScViewData* const pViewData; + ScDocument* const pDoc; + + weld::CheckButton* pBtnCase; + weld::CheckButton* pBtnRegExp; + weld::CheckButton* pBtnHeader; + weld::CheckButton* pBtnUnique; + weld::CheckButton* pBtnCopyResult; + weld::CheckButton* pBtnDestPers; + weld::ComboBox* pLbCopyArea; + formula::WeldRefEdit* pEdCopyArea; + formula::WeldRefButton* pRbCopyArea; + weld::Label* pFtDbAreaLabel; + weld::Label* pFtDbArea; + + const OUString& rStrUndefined; + + const ScQueryParam& rQueryData; + +private: + void Init(); + + // Handler: + DECL_LINK( EdAreaModifyHdl, formula::WeldRefEdit&, void ); + DECL_LINK( LbAreaSelHdl, weld::ComboBox&, void ); + DECL_LINK( BtnCopyResultHdl, weld::ToggleButton&, void ); +}; + + #endif // INCLUDED_SC_SOURCE_UI_INC_FOPTMGR_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/reffact.hxx b/sc/source/ui/inc/reffact.hxx index 81ec1f17e90e..3d44627c9e6d 100644 --- a/sc/source/ui/inc/reffact.hxx +++ b/sc/source/ui/inc/reffact.hxx @@ -51,7 +51,7 @@ DECL_WRAPPER_WITHID(ScOptSolverDlgWrapper) DECL_WRAPPER_WITHID(ScXMLSourceDlgWrapper) DECL_WRAPPER_WITHID(ScPivotLayoutWrapper) DECL_WRAPPER_WITHID_CONTROLLER(ScTabOpDlgWrapper) -DECL_WRAPPER_WITHID(ScFilterDlgWrapper) +DECL_WRAPPER_WITHID_CONTROLLER(ScFilterDlgWrapper) DECL_WRAPPER_WITHID(ScSpecialFilterDlgWrapper) DECL_WRAPPER_WITHID_CONTROLLER(ScDbNameDlgWrapper) DECL_WRAPPER_WITHID_CONTROLLER(ScConsolidateDlgWrapper) diff --git a/sc/source/ui/view/reffact.cxx b/sc/source/ui/view/reffact.cxx index 21e2b8a05e74..445de338882d 100644 --- a/sc/source/ui/view/reffact.cxx +++ b/sc/source/ui/view/reffact.cxx @@ -39,7 +39,7 @@ SFX_IMPL_MODELESSDIALOG_WITHID(ScOptSolverDlgWrapper, SID_OPENDLG_OPTSOLVER ) SFX_IMPL_MODELESSDIALOG_WITHID(ScXMLSourceDlgWrapper, SID_MANAGE_XML_SOURCE) SFX_IMPL_MODELESSDIALOG_WITHID(ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE ) SFX_IMPL_CHILDWINDOW_WITHID(ScTabOpDlgWrapper, SID_OPENDLG_TABOP ) -SFX_IMPL_MODELESSDIALOG_WITHID(ScFilterDlgWrapper, SID_FILTER ) +SFX_IMPL_CHILDWINDOW_WITHID(ScFilterDlgWrapper, SID_FILTER ) SFX_IMPL_MODELESSDIALOG_WITHID(ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER ) SFX_IMPL_CHILDWINDOW_WITHID(ScDbNameDlgWrapper, SID_DEFINE_DBNAME ) SFX_IMPL_CHILDWINDOW_WITHID(ScConsolidateDlgWrapper, SID_OPENDLG_CONSOLIDATE) @@ -135,7 +135,7 @@ IMPL_CHILD_CTOR( ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE ) IMPL_CONTROLLER_CHILD_CTOR( ScTabOpDlgWrapper, SID_OPENDLG_TABOP ) -IMPL_CHILD_CTOR( ScFilterDlgWrapper, SID_FILTER ) +IMPL_CONTROLLER_CHILD_CTOR( ScFilterDlgWrapper, SID_FILTER ) IMPL_CHILD_CTOR( ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER ) diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx index 202db6f17e6d..40d6a9744ea6 100644 --- a/sc/source/ui/view/tabvwshc.cxx +++ b/sc/source/ui/view/tabvwshc.cxx @@ -173,33 +173,6 @@ VclPtr<SfxModelessDialog> ScTabViewShell::CreateRefDialog( } break; - case SID_FILTER: - { - - ScQueryParam aQueryParam; - SfxItemSet aArgSet( GetPool(), - svl::Items<SCITEM_QUERYDATA, - SCITEM_QUERYDATA>{} ); - - ScDBData* pDBData = GetDBData(false, SC_DB_MAKE, ScGetDBSelection::RowDown); - pDBData->ExtendDataArea(pDoc); - pDBData->GetQueryParam( aQueryParam ); - - ScRange aArea; - pDBData->GetArea(aArea); - MarkRange(aArea, false); - - aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, - &GetViewData(), - &aQueryParam ) ); - - // mark current sheet (due to RefInput in dialog) - GetViewData().SetRefTabNo( GetViewData().GetTabNo() ); - - pResult = VclPtr<ScFilterDlg>::Create( pB, pCW, pParent, aArgSet ); - } - break; - case SID_OPENDLG_OPTSOLVER: { ScViewData& rViewData = GetViewData(); @@ -486,6 +459,32 @@ std::unique_ptr<SfxModelessDialogController> ScTabViewShell::CreateRefDialogCont xResult.reset(new ScConsolidateDlg(pB, pCW, pParent, aArgSet)); break; } + case SID_FILTER: + { + + ScQueryParam aQueryParam; + SfxItemSet aArgSet( GetPool(), + svl::Items<SCITEM_QUERYDATA, + SCITEM_QUERYDATA>{} ); + + ScDBData* pDBData = GetDBData(false, SC_DB_MAKE, ScGetDBSelection::RowDown); + pDBData->ExtendDataArea(pDoc); + pDBData->GetQueryParam( aQueryParam ); + + ScRange aArea; + pDBData->GetArea(aArea); + MarkRange(aArea, false); + + aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, + &GetViewData(), + &aQueryParam ) ); + + // mark current sheet (due to RefInput in dialog) + GetViewData().SetRefTabNo( GetViewData().GetTabNo() ); + + xResult.reset(new ScFilterDlg(pB, pCW, pParent, aArgSet)); + break; + } } if (xResult) diff --git a/sc/uiconfig/scalc/ui/standardfilterdialog.ui b/sc/uiconfig/scalc/ui/standardfilterdialog.ui index b1b757035b6d..a71da96fbb22 100644 --- a/sc/uiconfig/scalc/ui/standardfilterdialog.ui +++ b/sc/uiconfig/scalc/ui/standardfilterdialog.ui @@ -1,14 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.20.0 --> +<!-- Generated with glade 3.22.1 --> <interface domain="sc"> <requires lib="gtk+" version="3.18"/> - <requires lib="LibreOffice" version="1.0"/> <object class="GtkDialog" id="StandardFilterDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> <property name="title" translatable="yes" context="standardfilterdialog|StandardFilterDialog">Standard Filter</property> <property name="resizable">False</property> + <property name="default_width">0</property> + <property name="default_height">0</property> <property name="type_hint">dialog</property> + <child> + <placeholder/> + </child> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> <property name="can_focus">False</property> @@ -80,6 +84,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> + <property name="vexpand">True</property> <property name="label_xalign">0</property> <property name="shadow_type">none</property> <child> @@ -91,458 +96,479 @@ <property name="top_padding">6</property> <property name="left_padding">12</property> <child> - <object class="GtkGrid" id="grid1"> + <object class="GtkScrolledWindow" id="scrollbar"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can_focus">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> + <property name="hscrollbar_policy">never</property> + <property name="vscrollbar_policy">always</property> + <property name="shadow_type">in</property> <child> - <object class="GtkScrollbar" id="scrollbar"> - <property name="height_request">1</property> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="orientation">vertical</property> - </object> - <packing> - <property name="left_attach">4</property> - <property name="top_attach">0</property> - <property name="height">5</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="connect1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="yes" context="standardfilterdialog|connect1">AND</item> - <item translatable="yes" context="standardfilterdialog|connect1">OR</item> - </items> - <accessibility> - <relation type="labelled-by" target="label2"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="connect1-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect1-atkobject">Operator 1</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="connect2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="yes" context="standardfilterdialog|connect2">AND</item> - <item translatable="yes" context="standardfilterdialog|connect2">OR</item> - </items> - <accessibility> - <relation type="labelled-by" target="label2"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="connect2-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect2-atkobject">Operator 2</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">2</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="connect3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="yes" context="standardfilterdialog|connect3">AND</item> - <item translatable="yes" context="standardfilterdialog|connect3">OR</item> - </items> - <child internal-child="accessible"> - <object class="AtkObject" id="connect3-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect3-atkobject">Operator 3</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">3</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="connect4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="yes" context="standardfilterdialog|connect4">AND</item> - <item translatable="yes" context="standardfilterdialog|connect4">OR</item> - </items> - <child internal-child="accessible"> - <object class="AtkObject" id="connect4-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect4-atkobject">Operator 4</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">4</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="standardfilterdialog|label2">Operator</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="standardfilterdialog|label3">Field name</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="standardfilterdialog|label4">Condition</property> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="standardfilterdialog|label5">Value</property> - </object> - <packing> - <property name="left_attach">3</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="field1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <accessibility> - <relation type="labelled-by" target="label3"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="field1-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field1-atkobject">Field Name 1</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="field2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <accessibility> - <relation type="labelled-by" target="label3"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="field2-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field2-atkobject">Field Name 2</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">2</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="field3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <accessibility> - <relation type="labelled-by" target="label3"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="field3-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field3-atkobject">Field Name 3</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">3</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="field4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child internal-child="accessible"> - <object class="AtkObject" id="field4-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field4-atkobject">Field Name 4</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">4</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="cond1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="no">=</item> - <item translatable="no"><</item> - <item translatable="no">></item> - <item translatable="no"><=</item> - <item translatable="no">>=</item> - <item translatable="no"><></item> - <item translatable="yes" context="standardfilterdialog|cond1">Largest</item> - <item translatable="yes" context="standardfilterdialog|cond1">Smallest</item> - <item translatable="yes" context="standardfilterdialog|cond1">Largest %</item> - <item translatable="yes" context="standardfilterdialog|cond1">Smallest %</item> - <item translatable="yes" context="standardfilterdialog|cond1">Contains</item> - <item translatable="yes" context="standardfilterdialog|cond1">Does not contain</item> - <item translatable="yes" context="standardfilterdialog|cond1">Begins with</item> - <item translatable="yes" context="standardfilterdialog|cond1">Does not begin with</item> - <item translatable="yes" context="standardfilterdialog|cond1">Ends with</item> - <item translatable="yes" context="standardfilterdialog|cond1">Does not end with</item> - </items> - <accessibility> - <relation type="labelled-by" target="label4"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="cond1-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond1-atkobject">Condition 1</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="cond2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="no">=</item> - <item translatable="no"><</item> - <item translatable="no">></item> - <item translatable="no"><=</item> - <item translatable="no">>=</item> - <item translatable="no"><></item> - <item translatable="yes" context="standardfilterdialog|cond2">Largest</item> - <item translatable="yes" context="standardfilterdialog|cond2">Smallest</item> - <item translatable="yes" context="standardfilterdialog|cond2">Largest %</item> - <item translatable="yes" context="standardfilterdialog|cond2">Smallest %</item> - <item translatable="yes" context="standardfilterdialog|cond2">Contains</item> - <item translatable="yes" context="standardfilterdialog|cond2">Does not contain</item> - <item translatable="yes" context="standardfilterdialog|cond2">Begins with</item> - <item translatable="yes" context="standardfilterdialog|cond2">Does not begin with</item> - <item translatable="yes" context="standardfilterdialog|cond2">Ends with</item> - <item translatable="yes" context="standardfilterdialog|cond2">Does not end with</item> - </items> - <accessibility> - <relation type="labelled-by" target="label4"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="cond2-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond2-atkobject">Condition 2</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">2</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="cond3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="no">=</item> - <item translatable="no"><</item> - <item translatable="no">></item> - <item translatable="no"><=</item> - <item translatable="no">>=</item> - <item translatable="no"><></item> - <item translatable="yes" context="standardfilterdialog|cond3">Largest</item> - <item translatable="yes" context="standardfilterdialog|cond3">Smallest</item> - <item translatable="yes" context="standardfilterdialog|cond3">Largest %</item> - <item translatable="yes" context="standardfilterdialog|cond3">Smallest %</item> - <item translatable="yes" context="standardfilterdialog|cond3">Contains</item> - <item translatable="yes" context="standardfilterdialog|cond3">Does not contain</item> - <item translatable="yes" context="standardfilterdialog|cond3">Begins with</item> - <item translatable="yes" context="standardfilterdialog|cond3">Does not begin with</item> - <item translatable="yes" context="standardfilterdialog|cond3">Ends with</item> - <item translatable="yes" context="standardfilterdialog|cond3">Does not end with</item> - </items> - <accessibility> - <relation type="labelled-by" target="label4"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="cond3-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond3-atkobject">Condition 3</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">3</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="cond4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <items> - <item translatable="no">=</item> - <item translatable="no"><</item> - <item translatable="no">></item> - <item translatable="no"><=</item> - <item translatable="no">>=</item> - <item translatable="no"><></item> - <item translatable="yes" context="standardfilterdialog|cond4">Largest</item> - <item translatable="yes" context="standardfilterdialog|cond4">Smallest</item> - <item translatable="yes" context="standardfilterdialog|cond4">Largest %</item> - <item translatable="yes" context="standardfilterdialog|cond4">Smallest %</item> - <item translatable="yes" context="standardfilterdialog|cond4">Contains</item> - <item translatable="yes" context="standardfilterdialog|cond4">Does not contain</item> - <item translatable="yes" context="standardfilterdialog|cond4">Begins with</item> - <item translatable="yes" context="standardfilterdialog|cond4">Does not begin with</item> - <item translatable="yes" context="standardfilterdialog|cond4">Ends with</item> - <item translatable="yes" context="standardfilterdialog|cond4">Does not end with</item> - </items> - <child internal-child="accessible"> - <object class="AtkObject" id="cond4-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond4-atkobject">Condition 4</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">4</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="val1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="has_entry">True</property> - <child internal-child="entry"> - <object class="GtkEntry" id="comboboxtext-entry2"> - <property name="can_focus">False</property> - </object> - </child> - <accessibility> - <relation type="labelled-by" target="label5"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="val1-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val1-atkobject">Value 1</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">3</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="val2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="has_entry">True</property> - <child internal-child="entry"> - <object class="GtkEntry" id="comboboxtext-entry4"> - <property name="can_focus">False</property> - </object> - </child> - <accessibility> - <relation type="labelled-by" target="label5"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="val2-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val2-atkobject">Value 2</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">3</property> - <property name="top_attach">2</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="val3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="has_entry">True</property> - <child internal-child="entry"> - <object class="GtkEntry" id="comboboxtext-entry6"> - <property name="can_focus">False</property> - </object> - </child> - <accessibility> - <relation type="labelled-by" target="label5"/> - </accessibility> - <child internal-child="accessible"> - <object class="AtkObject" id="val3-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val3-atkobject">Value 3</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">3</property> - <property name="top_attach">3</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="val4"> + <object class="GtkViewport"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="hexpand">True</property> - <property name="has_entry">True</property> - <child internal-child="entry"> - <object class="GtkEntry" id="comboboxtext-entry8"> + <property name="vexpand">True</property> + <child> + <object class="GtkGrid" id="grid"> + <property name="visible">True</property> <property name="can_focus">False</property> - </object> - </child> - <child internal-child="accessible"> - <object class="AtkObject" id="val4-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val4-atkobject">Value 4</property> + <child> + <object class="GtkGrid" id="grid1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="border_width">3</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkComboBoxText" id="connect1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item translatable="yes" context="standardfilterdialog|connect1">AND</item> + <item translatable="yes" context="standardfilterdialog|connect1">OR</item> + </items> + <accessibility> + <relation type="labelled-by" target="label2"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="connect1-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect1-atkobject">Operator 1</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="connect2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item translatable="yes" context="standardfilterdialog|connect2">AND</item> + <item translatable="yes" context="standardfilterdialog|connect2">OR</item> + </items> + <accessibility> + <relation type="labelled-by" target="label2"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="connect2-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect2-atkobject">Operator 2</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="connect3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item translatable="yes" context="standardfilterdialog|connect3">AND</item> + <item translatable="yes" context="standardfilterdialog|connect3">OR</item> + </items> + <child internal-child="accessible"> + <object class="AtkObject" id="connect3-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect3-atkobject">Operator 3</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="connect4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item translatable="yes" context="standardfilterdialog|connect4">AND</item> + <item translatable="yes" context="standardfilterdialog|connect4">OR</item> + </items> + <child internal-child="accessible"> + <object class="AtkObject" id="connect4-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|connect4-atkobject">Operator 4</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">4</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="standardfilterdialog|label2">Operator</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="standardfilterdialog|label3">Field name</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="standardfilterdialog|label4">Condition</property> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="standardfilterdialog|label5">Value</property> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="field1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <accessibility> + <relation type="labelled-by" target="label3"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="field1-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field1-atkobject">Field Name 1</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="field2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <accessibility> + <relation type="labelled-by" target="label3"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="field2-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field2-atkobject">Field Name 2</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="field3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <accessibility> + <relation type="labelled-by" target="label3"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="field3-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field3-atkobject">Field Name 3</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="field4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child internal-child="accessible"> + <object class="AtkObject" id="field4-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|field4-atkobject">Field Name 4</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">4</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="cond1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item>=</item> + <item><</item> + <item>></item> + <item><=</item> + <item>>=</item> + <item><></item> + <item translatable="yes" context="standardfilterdialog|cond1">Largest</item> + <item translatable="yes" context="standardfilterdialog|cond1">Smallest</item> + <item translatable="yes" context="standardfilterdialog|cond1">Largest %</item> + <item translatable="yes" context="standardfilterdialog|cond1">Smallest %</item> + <item translatable="yes" context="standardfilterdialog|cond1">Contains</item> + <item translatable="yes" context="standardfilterdialog|cond1">Does not contain</item> + <item translatable="yes" context="standardfilterdialog|cond1">Begins with</item> + <item translatable="yes" context="standardfilterdialog|cond1">Does not begin with</item> + <item translatable="yes" context="standardfilterdialog|cond1">Ends with</item> + <item translatable="yes" context="standardfilterdialog|cond1">Does not end with</item> + </items> + <accessibility> + <relation type="labelled-by" target="label4"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="cond1-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond1-atkobject">Condition 1</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="cond2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item>=</item> + <item><</item> + <item>></item> + <item><=</item> + <item>>=</item> + <item><></item> + <item translatable="yes" context="standardfilterdialog|cond2">Largest</item> + <item translatable="yes" context="standardfilterdialog|cond2">Smallest</item> + <item translatable="yes" context="standardfilterdialog|cond2">Largest %</item> + <item translatable="yes" context="standardfilterdialog|cond2">Smallest %</item> + <item translatable="yes" context="standardfilterdialog|cond2">Contains</item> + <item translatable="yes" context="standardfilterdialog|cond2">Does not contain</item> + <item translatable="yes" context="standardfilterdialog|cond2">Begins with</item> + <item translatable="yes" context="standardfilterdialog|cond2">Does not begin with</item> + <item translatable="yes" context="standardfilterdialog|cond2">Ends with</item> + <item translatable="yes" context="standardfilterdialog|cond2">Does not end with</item> + </items> + <accessibility> + <relation type="labelled-by" target="label4"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="cond2-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond2-atkobject">Condition 2</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="cond3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item>=</item> + <item><</item> + <item>></item> + <item><=</item> + <item>>=</item> + <item><></item> + <item translatable="yes" context="standardfilterdialog|cond3">Largest</item> + <item translatable="yes" context="standardfilterdialog|cond3">Smallest</item> + <item translatable="yes" context="standardfilterdialog|cond3">Largest %</item> + <item translatable="yes" context="standardfilterdialog|cond3">Smallest %</item> + <item translatable="yes" context="standardfilterdialog|cond3">Contains</item> + <item translatable="yes" context="standardfilterdialog|cond3">Does not contain</item> + <item translatable="yes" context="standardfilterdialog|cond3">Begins with</item> + <item translatable="yes" context="standardfilterdialog|cond3">Does not begin with</item> + <item translatable="yes" context="standardfilterdialog|cond3">Ends with</item> + <item translatable="yes" context="standardfilterdialog|cond3">Does not end with</item> + </items> + <accessibility> + <relation type="labelled-by" target="label4"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="cond3-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond3-atkobject">Condition 3</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="cond4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <items> + <item>=</item> + <item><</item> + <item>></item> + <item><=</item> + <item>>=</item> + <item><></item> + <item translatable="yes" context="standardfilterdialog|cond4">Largest</item> + <item translatable="yes" context="standardfilterdialog|cond4">Smallest</item> + <item translatable="yes" context="standardfilterdialog|cond4">Largest %</item> + <item translatable="yes" context="standardfilterdialog|cond4">Smallest %</item> + <item translatable="yes" context="standardfilterdialog|cond4">Contains</item> + <item translatable="yes" context="standardfilterdialog|cond4">Does not contain</item> + <item translatable="yes" context="standardfilterdialog|cond4">Begins with</item> + <item translatable="yes" context="standardfilterdialog|cond4">Does not begin with</item> + <item translatable="yes" context="standardfilterdialog|cond4">Ends with</item> + <item translatable="yes" context="standardfilterdialog|cond4">Does not end with</item> + </items> + <child internal-child="accessible"> + <object class="AtkObject" id="cond4-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|cond4-atkobject">Condition 4</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">2</property> + <property name="top_attach">4</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="val1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="has_entry">True</property> + <child internal-child="entry"> + <object class="GtkEntry" id="comboboxtext-entry2"> + <property name="can_focus">True</property> + <property name="activates_default">True</property> + </object> + </child> + <accessibility> + <relation type="labelled-by" target="label5"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="val1-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val1-atkobject">Value 1</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="val2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="has_entry">True</property> + <child internal-child="entry"> + <object class="GtkEntry" id="comboboxtext-entry4"> + <property name="can_focus">True</property> + <property name="activates_default">True</property> + </object> + </child> + <accessibility> + <relation type="labelled-by" target="label5"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="val2-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val2-atkobject">Value 2</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">2</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="val3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="has_entry">True</property> + <child internal-child="entry"> + <object class="GtkEntry" id="comboboxtext-entry6"> + <property name="can_focus">True</property> + <property name="activates_default">True</property> + </object> + </child> + <accessibility> + <relation type="labelled-by" target="label5"/> + </accessibility> + <child internal-child="accessible"> + <object class="AtkObject" id="val3-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val3-atkobject">Value 3</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">3</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="val4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="has_entry">True</property> + <child internal-child="entry"> + <object class="GtkEntry" id="comboboxtext-entry8"> + <property name="can_focus">True</property> + <property name="activates_default">True</property> + </object> + </child> + <child internal-child="accessible"> + <object class="AtkObject" id="val4-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="standardfilterdialog|val4-atkobject">Value 4</property> + </object> + </child> + </object> + <packing> + <property name="left_attach">3</property> + <property name="top_attach">4</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> </object> </child> </object> - <packing> - <property name="left_attach">3</property> - <property name="top_attach">4</property> - </packing> </child> </object> </child> @@ -720,7 +746,7 @@ </packing> </child> <child> - <object class="foruilo-RefEdit" id="edcopyarea"> + <object class="GtkEntry" id="edcopyarea"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="margin_bottom">1</property> @@ -741,7 +767,7 @@ </packing> </child> <child> - <object class="foruilo-RefButton" id="rbcopyarea"> + <object class="GtkButton" id="rbcopyarea"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> |