Kaydet (Commit) 2ca64f0f authored tarafından Caolán McNamara's avatar Caolán McNamara

weld SvxEditModulesDlg

Change-Id: I802d4c92924b379f11c73ddfe758f4c6a63feb37
Reviewed-on: https://gerrit.libreoffice.org/73454
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst a92dd896
...@@ -50,18 +50,8 @@ class SvxLinguData_Impl; ...@@ -50,18 +50,8 @@ class SvxLinguData_Impl;
// forward --------------------------------------------------------------- // forward ---------------------------------------------------------------
class SvxEditModulesDlg : public ModalDialog class SvxEditModulesDlg : public weld::GenericDialogController
{ {
VclPtr<SvxLanguageBox> m_pLanguageLB;
VclPtr<SvxCheckListBox> m_pModulesCLB;
VclPtr<PushButton> m_pPrioUpPB;
VclPtr<PushButton> m_pPrioDownPB;
VclPtr<PushButton> m_pBackPB;
VclPtr<FixedHyperlink> m_pMoreDictsLink;
VclPtr<CloseButton> m_pClosePB;
OUString sSpell; OUString sSpell;
OUString sHyph; OUString sHyph;
OUString sThes; OUString sThes;
...@@ -70,23 +60,26 @@ class SvxEditModulesDlg : public ModalDialog ...@@ -70,23 +60,26 @@ class SvxEditModulesDlg : public ModalDialog
std::unique_ptr<SvxLinguData_Impl> pDefaultLinguData; std::unique_ptr<SvxLinguData_Impl> pDefaultLinguData;
SvxLinguData_Impl& rLinguData; SvxLinguData_Impl& rLinguData;
std::unique_ptr<SvLBoxButtonData> m_xCheckButtonData; std::unique_ptr<weld::TreeView> m_xModulesCLB;
std::unique_ptr<weld::Button> m_xPrioUpPB;
SvTreeListEntry* CreateEntry(OUString& rTxt, sal_uInt16 nCol); std::unique_ptr<weld::Button> m_xPrioDownPB;
std::unique_ptr<weld::Button> m_xBackPB;
std::unique_ptr<weld::LinkButton> m_xMoreDictsLink;
std::unique_ptr<weld::Button> m_xClosePB;
std::unique_ptr<LanguageBox> m_xLanguageLB;
DECL_LINK( SelectHdl_Impl, SvTreeListBox*, void ); DECL_LINK( SelectHdl_Impl, weld::TreeView&, void );
DECL_LINK( UpDownHdl_Impl, Button*, void ); DECL_LINK( UpDownHdl_Impl, weld::Button&, void );
DECL_LINK( ClickHdl_Impl, Button*, void ); DECL_LINK( ClickHdl_Impl, weld::Button&, void );
DECL_LINK( BackHdl_Impl, Button*, void ); DECL_LINK( BackHdl_Impl, weld::Button&, void );
DECL_LINK( LangSelectListBoxHdl_Impl, ListBox&, void ); DECL_LINK( LangSelectListBoxHdl_Impl, weld::ComboBox&, void );
DECL_LINK( BoxCheckButtonHdl_Impl2, SvLBoxButtonData*, void ); typedef std::pair<int, int> row_col;
DECL_LINK( BoxCheckButtonHdl_Impl, SvTreeListBox*, void ); DECL_LINK( BoxCheckButtonHdl_Impl, const row_col&, void );
void LangSelectHdl_Impl(ListBox const *); void LangSelectHdl_Impl(const LanguageBox* pBox);
public: public:
SvxEditModulesDlg(vcl::Window* pParent, SvxLinguData_Impl& rData); SvxEditModulesDlg(weld::Window* pParent, SvxLinguData_Impl& rData);
virtual ~SvxEditModulesDlg() override; virtual ~SvxEditModulesDlg() override;
virtual void dispose() override;
}; };
// class SvxLinguTabPage ------------------------------------------------- // class SvxLinguTabPage -------------------------------------------------
......
...@@ -78,9 +78,6 @@ using namespace css::uno; ...@@ -78,9 +78,6 @@ using namespace css::uno;
using namespace css::linguistic2; using namespace css::linguistic2;
using namespace css::beans; using namespace css::beans;
#define CBCOL_FIRST 0
#define CBCOL_SECOND 1
static const sal_Char cSpell[] = SN_SPELLCHECKER; static const sal_Char cSpell[] = SN_SPELLCHECKER;
static const sal_Char cGrammar[] = SN_GRAMMARCHECKER; static const sal_Char cGrammar[] = SN_GRAMMARCHECKER;
static const sal_Char cHyph[] = SN_HYPHENATOR; static const sal_Char cHyph[] = SN_HYPHENATOR;
...@@ -88,29 +85,6 @@ static const sal_Char cThes[] = SN_THESAURUS; ...@@ -88,29 +85,6 @@ static const sal_Char cThes[] = SN_THESAURUS;
// static ---------------------------------------------------------------- // static ----------------------------------------------------------------
static std::vector< LanguageType > lcl_LocaleSeqToLangSeq( const Sequence< Locale > &rSeq )
{
sal_Int32 nLen = rSeq.getLength();
std::vector<LanguageType> aRes;
aRes.reserve(nLen);
const Locale *pSeq = rSeq.getConstArray();
for (sal_Int32 i = 0; i < nLen; ++i)
{
aRes.push_back( LanguageTag::convertToLanguageType( pSeq[i] ) );
}
return aRes;
}
static bool lcl_SeqHasLang( const std::vector< LanguageType > &rSeq, LanguageType nLang )
{
for (auto const & i : rSeq)
if (i == nLang)
return true;
return false;
}
static sal_Int32 lcl_SeqGetEntryPos( static sal_Int32 lcl_SeqGetEntryPos(
const Sequence< OUString > &rSeq, const OUString &rEntry ) const Sequence< OUString > &rSeq, const OUString &rEntry )
{ {
...@@ -214,49 +188,6 @@ DicUserData::DicUserData( ...@@ -214,49 +188,6 @@ DicUserData::DicUserData(
(static_cast<sal_uInt32>(bDeletable ? 1 : 0) << 10); (static_cast<sal_uInt32>(bDeletable ? 1 : 0) << 10);
} }
static void lcl_SetCheckButton( SvTreeListEntry* pEntry, bool bCheck )
{
SvLBoxButton* pItem = static_cast<SvLBoxButton*>(pEntry->GetFirstItem(SvLBoxItemType::Button));
DBG_ASSERT(pItem,"SetCheckButton:Item not found");
if (pItem && pItem->GetType() == SvLBoxItemType::Button)
{
if (bCheck)
pItem->SetStateChecked();
else
pItem->SetStateUnchecked();
}
}
class BrwStringDic_Impl : public SvLBoxString
{
public:
explicit BrwStringDic_Impl( const OUString& rStr ) : SvLBoxString( rStr ) {}
virtual void Paint(const Point& rPos, SvTreeListBox& rOutDev, vcl::RenderContext& rRenderContext,
const SvViewDataEntry* pView, const SvTreeListEntry& rEntry) override;
};
void BrwStringDic_Impl::Paint(const Point& rPos, SvTreeListBox& /*rDev*/, vcl::RenderContext& rRenderContext,
const SvViewDataEntry* /*pView*/, const SvTreeListEntry& rEntry)
{
ModuleUserData_Impl* pData = static_cast<ModuleUserData_Impl*>(rEntry.GetUserData());
Point aPos(rPos);
rRenderContext.Push(PushFlags::FONT);
if (pData->IsParent())
{
vcl::Font aFont(rRenderContext.GetFont());
aFont.SetWeight(WEIGHT_BOLD);
rRenderContext.SetFont(aFont);
aPos.setX( 0 );
}
else
aPos.AdjustX(5 );
rRenderContext.DrawText(aPos, GetText());
rRenderContext.Pop();
}
/*-------------------------------------------------- /*--------------------------------------------------
Entry IDs for options listbox of dialog Entry IDs for options listbox of dialog
--------------------------------------------------*/ --------------------------------------------------*/
...@@ -1411,8 +1342,8 @@ IMPL_LINK(SvxLinguTabPage, ClickHdl_Impl, weld::Button&, rBtn, void) ...@@ -1411,8 +1342,8 @@ IMPL_LINK(SvxLinguTabPage, ClickHdl_Impl, weld::Button&, rBtn, void)
pLinguData.reset( new SvxLinguData_Impl ); pLinguData.reset( new SvxLinguData_Impl );
SvxLinguData_Impl aOldLinguData( *pLinguData ); SvxLinguData_Impl aOldLinguData( *pLinguData );
ScopedVclPtrInstance< SvxEditModulesDlg > aDlg( this, *pLinguData ); SvxEditModulesDlg aDlg(GetDialogFrameWeld(), *pLinguData);
if (aDlg->Execute() != RET_OK) if (aDlg.run() != RET_OK)
*pLinguData = aOldLinguData; *pLinguData = aOldLinguData;
// evaluate new status of 'bConfigured' flag // evaluate new status of 'bConfigured' flag
...@@ -1618,189 +1549,123 @@ void SvxLinguTabPage::HideGroups( sal_uInt16 nGrp ) ...@@ -1618,189 +1549,123 @@ void SvxLinguTabPage::HideGroups( sal_uInt16 nGrp )
} }
} }
SvxEditModulesDlg::SvxEditModulesDlg(vcl::Window* pParent, SvxLinguData_Impl& rData) SvxEditModulesDlg::SvxEditModulesDlg(weld::Window* pParent, SvxLinguData_Impl& rData)
: ModalDialog( pParent, "EditModulesDialog", : GenericDialogController(pParent, "cui/ui/editmodulesdialog.ui", "EditModulesDialog")
"cui/ui/editmodulesdialog.ui")
, sSpell(CuiResId(RID_SVXSTR_SPELL)) , sSpell(CuiResId(RID_SVXSTR_SPELL))
, sHyph(CuiResId(RID_SVXSTR_HYPH)) , sHyph(CuiResId(RID_SVXSTR_HYPH))
, sThes(CuiResId(RID_SVXSTR_THES)) , sThes(CuiResId(RID_SVXSTR_THES))
, sGrammar(CuiResId(RID_SVXSTR_GRAMMAR)) , sGrammar(CuiResId(RID_SVXSTR_GRAMMAR))
, rLinguData(rData) , rLinguData(rData)
, m_xModulesCLB(m_xBuilder->weld_tree_view("lingudicts"))
, m_xPrioUpPB(m_xBuilder->weld_button("up"))
, m_xPrioDownPB(m_xBuilder->weld_button("down"))
, m_xBackPB(m_xBuilder->weld_button("back"))
, m_xMoreDictsLink(m_xBuilder->weld_link_button("moredictslink"))
, m_xClosePB(m_xBuilder->weld_button("close"))
, m_xLanguageLB(new LanguageBox(m_xBuilder->weld_combo_box("language")))
{ {
get(m_pClosePB, "close"); m_xModulesCLB->set_size_request(m_xModulesCLB->get_approximate_digit_width() * 40,
get(m_pMoreDictsLink, "moredictslink"); m_xModulesCLB->get_height_rows(12));
get(m_pBackPB, "back");
get(m_pPrioDownPB, "down"); std::vector<int> aWidths;
get(m_pPrioUpPB, "up"); aWidths.push_back(m_xModulesCLB->get_checkbox_column_width());
get(m_pModulesCLB, "lingudicts"); m_xModulesCLB->set_column_fixed_widths(aWidths);
Size aListSize(m_pModulesCLB->LogicToPixel(Size(166, 120), MapMode(MapUnit::MapAppFont)));
m_pModulesCLB->set_height_request(aListSize.Height());
m_pModulesCLB->set_width_request(aListSize.Width());
get(m_pLanguageLB, "language");
m_pLanguageLB->SetStyle(m_pLanguageLB->GetStyle() | WB_SORT);
pDefaultLinguData.reset( new SvxLinguData_Impl( rLinguData ) ); pDefaultLinguData.reset( new SvxLinguData_Impl( rLinguData ) );
m_pModulesCLB->SetStyle( m_pModulesCLB->GetStyle()|WB_CLIPCHILDREN|WB_HSCROLL ); m_xModulesCLB->connect_changed( LINK( this, SvxEditModulesDlg, SelectHdl_Impl ));
m_pModulesCLB->SetForceMakeVisible(true); m_xModulesCLB->connect_toggled(LINK(this, SvxEditModulesDlg, BoxCheckButtonHdl_Impl));
m_pModulesCLB->SetHighlightRange();
m_pModulesCLB->SetSelectHdl( LINK( this, SvxEditModulesDlg, SelectHdl_Impl ));
m_pModulesCLB->SetCheckButtonHdl( LINK( this, SvxEditModulesDlg, BoxCheckButtonHdl_Impl) );
m_pClosePB->SetClickHdl( LINK( this, SvxEditModulesDlg, ClickHdl_Impl )); m_xClosePB->connect_clicked( LINK( this, SvxEditModulesDlg, ClickHdl_Impl ));
m_pPrioUpPB->SetClickHdl( LINK( this, SvxEditModulesDlg, UpDownHdl_Impl )); m_xPrioUpPB->connect_clicked( LINK( this, SvxEditModulesDlg, UpDownHdl_Impl ));
m_pPrioDownPB->SetClickHdl( LINK( this, SvxEditModulesDlg, UpDownHdl_Impl )); m_xPrioDownPB->connect_clicked( LINK( this, SvxEditModulesDlg, UpDownHdl_Impl ));
m_pBackPB->SetClickHdl( LINK( this, SvxEditModulesDlg, BackHdl_Impl )); m_xBackPB->connect_clicked( LINK( this, SvxEditModulesDlg, BackHdl_Impl ));
// in case of not installed language modules // in case of not installed language modules
m_pPrioUpPB->Enable( false ); m_xPrioUpPB->set_sensitive( false );
m_pPrioDownPB->Enable( false ); m_xPrioDownPB->set_sensitive( false );
if ( SvtExtendedSecurityOptions().GetOpenHyperlinkMode() == SvtExtendedSecurityOptions::OPEN_NEVER ) if ( SvtExtendedSecurityOptions().GetOpenHyperlinkMode() == SvtExtendedSecurityOptions::OPEN_NEVER )
m_pMoreDictsLink->Hide(); m_xMoreDictsLink->hide();
// set that we want the checkbox shown if spellchecking is available
m_xLanguageLB->SetLanguageList(SvxLanguageListFlags::EMPTY, false, false, true);
//fill language box //fill language box
std::vector< LanguageType > aAvailLang;
uno::Reference< XAvailableLocales > xAvail( rLinguData.GetManager(), UNO_QUERY );
if (xAvail.is())
{
aAvailLang = lcl_LocaleSeqToLangSeq(
xAvail->getAvailableLocales( cSpell ) );
}
const Sequence< Locale >& rLoc = rLinguData.GetAllSupportedLocales(); const Sequence< Locale >& rLoc = rLinguData.GetAllSupportedLocales();
const Locale* pLocales = rLoc.getConstArray(); const Locale* pLocales = rLoc.getConstArray();
m_pLanguageLB->Clear(); for (int i = 0; i < rLoc.getLength(); ++i)
for(long i = 0; i < rLoc.getLength(); i++)
{ {
LanguageType nLang = LanguageTag::convertToLanguageType( pLocales[i] ); LanguageType nLang = LanguageTag::convertToLanguageType( pLocales[i] );
m_pLanguageLB->InsertLanguage( nLang, lcl_SeqHasLang( aAvailLang, nLang ) ); m_xLanguageLB->InsertLanguage(nLang);
} }
LanguageType eSysLang = MsLangId::getSystemLanguage(); LanguageType eSysLang = MsLangId::getSystemLanguage();
m_pLanguageLB->SelectLanguage( eSysLang ); m_xLanguageLB->set_active_id( eSysLang );
if(!m_pLanguageLB->IsLanguageSelected( eSysLang ) ) if (m_xLanguageLB->get_active_id() != eSysLang)
m_pLanguageLB->SelectEntryPos(0); m_xLanguageLB->set_active(0);
m_pLanguageLB->SetSelectHdl( LINK( this, SvxEditModulesDlg, LangSelectListBoxHdl_Impl )); m_xLanguageLB->connect_changed( LINK( this, SvxEditModulesDlg, LangSelectListBoxHdl_Impl ));
LangSelectHdl_Impl(m_pLanguageLB); LangSelectHdl_Impl(m_xLanguageLB.get());
} }
SvxEditModulesDlg::~SvxEditModulesDlg() SvxEditModulesDlg::~SvxEditModulesDlg()
{ {
disposeOnce(); for (int i = 0, nEntryCount = m_xModulesCLB->n_children(); i < nEntryCount; ++i)
delete reinterpret_cast<ModuleUserData_Impl*>(m_xModulesCLB->get_id(i).toInt64());
} }
void SvxEditModulesDlg::dispose() IMPL_LINK( SvxEditModulesDlg, SelectHdl_Impl, weld::TreeView&, rBox, void )
{ {
pDefaultLinguData.reset(); int nCurPos = rBox.get_selected_index();
m_pLanguageLB.clear(); if (nCurPos != -1)
for(sal_uLong i = 0; i < m_pModulesCLB->GetEntryCount(); i++)
delete static_cast<ModuleUserData_Impl*>(m_pModulesCLB->GetEntry(i)->GetUserData());
m_pModulesCLB.clear();
m_pPrioUpPB.clear();
m_pPrioDownPB.clear();
m_pBackPB.clear();
m_pMoreDictsLink.clear();
m_pClosePB.clear();
ModalDialog::dispose();
}
SvTreeListEntry* SvxEditModulesDlg::CreateEntry( OUString& rTxt, sal_uInt16 nCol )
{
SvTreeListEntry* pEntry = new SvTreeListEntry;
if (!m_xCheckButtonData )
{
m_xCheckButtonData.reset(new SvLBoxButtonData(m_pModulesCLB));
m_xCheckButtonData->SetLink( LINK( this, SvxEditModulesDlg, BoxCheckButtonHdl_Impl2 ) );
}
if (CBCOL_FIRST == nCol)
pEntry->AddItem(std::make_unique<SvLBoxButton>(SvLBoxButtonKind::EnabledCheckbox, m_xCheckButtonData.get()));
if (CBCOL_SECOND == nCol)
pEntry->AddItem(std::make_unique<SvLBoxString>("")); // empty column
pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(Image(), Image(), false));
pEntry->AddItem(std::make_unique<BrwStringDic_Impl>(rTxt));
return pEntry;
}
IMPL_LINK( SvxEditModulesDlg, SelectHdl_Impl, SvTreeListBox*, pBox, void )
{
if (m_pModulesCLB == pBox)
{ {
SvTreeListEntry *pEntry = pBox->GetCurEntry(); bool bDisableUp = true;
if (pEntry) bool bDisableDown = true;
ModuleUserData_Impl* pData = reinterpret_cast<ModuleUserData_Impl*>(rBox.get_id(nCurPos).toInt64());
if (!pData->IsParent() && pData->GetType() != TYPE_HYPH)
{ {
bool bDisableUp = true; if (nCurPos < rBox.n_children() - 1)
bool bDisableDown = true;
ModuleUserData_Impl* pData = static_cast<ModuleUserData_Impl*>(pEntry->GetUserData());
if(!pData->IsParent() && pData->GetType() != TYPE_HYPH)
{ {
sal_uLong nCurPos = static_cast<SvxCheckListBox*>(pBox)->GetSelectedEntryPos(); bDisableDown = reinterpret_cast<ModuleUserData_Impl*>(rBox.get_id(nCurPos + 1).toInt64())->IsParent();
if(nCurPos < pBox->GetEntryCount() - 1) }
{ if (nCurPos > 1)
bDisableDown = static_cast<ModuleUserData_Impl*>(pBox-> {
GetEntry(nCurPos + 1)->GetUserData())->IsParent(); bDisableUp = reinterpret_cast<ModuleUserData_Impl*>(rBox.get_id(nCurPos - 1).toInt64())->IsParent();
}
if(nCurPos > 1)
{
bDisableUp = static_cast<ModuleUserData_Impl*>(pBox->
GetEntry(nCurPos - 1)->GetUserData())->IsParent();
}
} }
m_pPrioUpPB->Enable(!bDisableUp);
m_pPrioDownPB->Enable(!bDisableDown);
} }
m_xPrioUpPB->set_sensitive(!bDisableUp);
m_xPrioDownPB->set_sensitive(!bDisableDown);
} }
else
{
OSL_FAIL( "pBox unexpected value" );
}
}
IMPL_LINK_NOARG( SvxEditModulesDlg, BoxCheckButtonHdl_Impl2, SvLBoxButtonData*, void )
{
BoxCheckButtonHdl_Impl(nullptr);
} }
IMPL_LINK_NOARG( SvxEditModulesDlg, BoxCheckButtonHdl_Impl, SvTreeListBox *, void ) IMPL_LINK( SvxEditModulesDlg, BoxCheckButtonHdl_Impl, const row_col&, rRowCol, void )
{ {
SvTreeListEntry *pCurEntry = m_pModulesCLB->GetCurEntry(); auto nPos = rRowCol.first;
if (pCurEntry) ModuleUserData_Impl* pData = reinterpret_cast<ModuleUserData_Impl*>(m_xModulesCLB->get_id(nPos).toInt64());
if (!pData->IsParent() && pData->GetType() == TYPE_HYPH)
{ {
ModuleUserData_Impl* pData = static_cast<ModuleUserData_Impl *>( // make hyphenator checkboxes function as radio-buttons
pCurEntry->GetUserData()); // (at most one box may be checked)
if (!pData->IsParent() && pData->GetType() == TYPE_HYPH) for (int i = 0, nEntryCount = m_xModulesCLB->n_children(); i < nEntryCount; ++i)
{ {
// make hyphenator checkboxes function as radio-buttons pData = reinterpret_cast<ModuleUserData_Impl*>(m_xModulesCLB->get_id(i).toInt64());
// (at most one box may be checked) if (!pData->IsParent() && pData->GetType() == TYPE_HYPH && i != nPos)
SvTreeListEntry *pEntry = m_pModulesCLB->First();
while (pEntry)
{ {
pData = static_cast<ModuleUserData_Impl*>(pEntry->GetUserData()); m_xModulesCLB->set_toggle(i, TRISTATE_FALSE, 0);
if (!pData->IsParent() &&
pData->GetType() == TYPE_HYPH &&
pEntry != pCurEntry)
{
lcl_SetCheckButton( pEntry, false );
m_pModulesCLB->InvalidateEntry( pEntry );
}
pEntry = m_pModulesCLB->Next( pEntry );
} }
} }
} }
} }
IMPL_LINK( SvxEditModulesDlg, LangSelectListBoxHdl_Impl, ListBox&, rBox, void ) IMPL_LINK_NOARG(SvxEditModulesDlg, LangSelectListBoxHdl_Impl, weld::ComboBox&, void)
{ {
LangSelectHdl_Impl(&rBox); LangSelectHdl_Impl(m_xLanguageLB.get());
} }
void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) void SvxEditModulesDlg::LangSelectHdl_Impl(const LanguageBox* pBox)
{ {
LanguageType eCurLanguage = m_pLanguageLB->GetSelectedLanguage(); LanguageType eCurLanguage = m_xLanguageLB->get_active_id();
static Locale aLastLocale; static Locale aLastLocale;
Locale aCurLocale( LanguageTag::convertToLocale( eCurLanguage)); Locale aCurLocale( LanguageTag::convertToLocale( eCurLanguage));
SvTreeList *pModel = m_pModulesCLB->GetModel();
if (pBox) if (pBox)
{ {
...@@ -1812,13 +1677,12 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1812,13 +1677,12 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
sal_Int32 nStart = 0, nLocalIndex = 0; sal_Int32 nStart = 0, nLocalIndex = 0;
Sequence< OUString > aChange; Sequence< OUString > aChange;
bool bChanged = false; bool bChanged = false;
for(sal_uLong i = 0; i < m_pModulesCLB->GetEntryCount(); i++) for (int i = 0, nEntryCount = m_xModulesCLB->n_children(); i < nEntryCount; ++i)
{ {
SvTreeListEntry *pEntry = m_pModulesCLB->GetEntry(i); ModuleUserData_Impl* pData = reinterpret_cast<ModuleUserData_Impl*>(m_xModulesCLB->get_id(i).toInt64());
ModuleUserData_Impl* pData = static_cast<ModuleUserData_Impl*>(pEntry->GetUserData()); if (pData->IsParent())
if(pData->IsParent())
{ {
if(bChanged) if (bChanged)
{ {
LangImplNameTable *pTable = nullptr; LangImplNameTable *pTable = nullptr;
sal_uInt8 nType = pData->GetType(); sal_uInt8 nType = pData->GetType();
...@@ -1836,7 +1700,7 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1836,7 +1700,7 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
} }
} }
nLocalIndex = nStart = 0; nLocalIndex = nStart = 0;
aChange.realloc(m_pModulesCLB->GetEntryCount()); aChange.realloc(nEntryCount);
bChanged = false; bChanged = false;
} }
else else
...@@ -1844,8 +1708,8 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1844,8 +1708,8 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
OUString* pChange = aChange.getArray(); OUString* pChange = aChange.getArray();
pChange[nStart] = pData->GetImplName(); pChange[nStart] = pData->GetImplName();
bChanged |= pData->GetIndex() != nLocalIndex || bChanged |= pData->GetIndex() != nLocalIndex ||
pData->IsChecked() != m_pModulesCLB->IsChecked(i); static_cast<TriState>(pData->IsChecked()) != m_xModulesCLB->get_toggle(i, 0);
if(m_pModulesCLB->IsChecked(i)) if (m_xModulesCLB->get_toggle(i, 0))
nStart++; nStart++;
++nLocalIndex; ++nLocalIndex;
} }
...@@ -1857,26 +1721,28 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1857,26 +1721,28 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
} }
} }
for(sal_uLong i = 0; i < m_pModulesCLB->GetEntryCount(); i++) for (int i = 0, nEntryCount = m_xModulesCLB->n_children(); i < nEntryCount; ++i)
delete static_cast<ModuleUserData_Impl*>(m_pModulesCLB->GetEntry(i)->GetUserData()); delete reinterpret_cast<ModuleUserData_Impl*>(m_xModulesCLB->get_id(i).toInt64());
m_xModulesCLB->clear();
// display entries for new selected language // display entries for new selected language
m_pModulesCLB->Clear(); if (LANGUAGE_DONTKNOW != eCurLanguage)
if(LANGUAGE_DONTKNOW != eCurLanguage)
{ {
sal_uLong n; sal_uLong n;
ServiceInfo_Impl* pInfo; ServiceInfo_Impl* pInfo;
int nRow = 0;
// spellchecker entries // spellchecker entries
SvTreeListEntry* pEntry = CreateEntry( sSpell, CBCOL_SECOND );
ModuleUserData_Impl* pUserData = new ModuleUserData_Impl( ModuleUserData_Impl* pUserData = new ModuleUserData_Impl(
OUString(), true, false, TYPE_SPELL, 0 ); OUString(), true, false, TYPE_SPELL, 0 );
pEntry->SetUserData( static_cast<void *>(pUserData) ); OUString sId(OUString::number(reinterpret_cast<sal_Int64>(pUserData)));
pModel->Insert( pEntry ); m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_text(nRow, sSpell, 1);
m_xModulesCLB->set_text_emphasis(nRow, true, 1);
++nRow;
Sequence< OUString > aNames( rLinguData.GetSortedImplNames( eCurLanguage, TYPE_SPELL ) ); Sequence< OUString > aNames( rLinguData.GetSortedImplNames( eCurLanguage, TYPE_SPELL ) );
const OUString *pName = aNames.getConstArray(); const OUString *pName = aNames.getConstArray();
...@@ -1897,7 +1763,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1897,7 +1763,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
if (!aImplName.isEmpty() && bIsSuppLang) if (!aImplName.isEmpty() && bIsSuppLang)
{ {
OUString aTxt( pInfo->sDisplayName ); OUString aTxt( pInfo->sDisplayName );
SvTreeListEntry* pNewEntry = CreateEntry( aTxt, CBCOL_FIRST );
LangImplNameTable &rTable = rLinguData.GetSpellTable(); LangImplNameTable &rTable = rLinguData.GetSpellTable();
const bool bHasLang = rTable.count( eCurLanguage ); const bool bHasLang = rTable.count( eCurLanguage );
...@@ -1906,21 +1771,27 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1906,21 +1771,27 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported
} }
const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0; const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0;
lcl_SetCheckButton( pNewEntry, bCheck );
pUserData = new ModuleUserData_Impl( aImplName, false, pUserData = new ModuleUserData_Impl( aImplName, false,
bCheck, TYPE_SPELL, static_cast<sal_uInt8>(nLocalIndex++) ); bCheck, TYPE_SPELL, static_cast<sal_uInt8>(nLocalIndex++) );
pNewEntry->SetUserData( static_cast<void *>(pUserData) ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
pModel->Insert( pNewEntry );
m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_toggle(nRow, bCheck ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
m_xModulesCLB->set_text(nRow, aTxt, 1);
++nRow;
} }
} }
// grammar checker entries // grammar checker entries
pEntry = CreateEntry( sGrammar, CBCOL_SECOND );
pUserData = new ModuleUserData_Impl( OUString(), true, false, TYPE_GRAMMAR, 0 ); pUserData = new ModuleUserData_Impl( OUString(), true, false, TYPE_GRAMMAR, 0 );
pEntry->SetUserData( static_cast<void *>(pUserData) ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
pModel->Insert( pEntry ); m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_text(nRow, sGrammar, 1);
m_xModulesCLB->set_text_emphasis(nRow, true, 1);
++nRow;
aNames = rLinguData.GetSortedImplNames( eCurLanguage, TYPE_GRAMMAR ); aNames = rLinguData.GetSortedImplNames( eCurLanguage, TYPE_GRAMMAR );
pName = aNames.getConstArray(); pName = aNames.getConstArray();
...@@ -1941,7 +1812,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1941,7 +1812,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
if (!aImplName.isEmpty() && bIsSuppLang) if (!aImplName.isEmpty() && bIsSuppLang)
{ {
OUString aTxt( pInfo->sDisplayName ); OUString aTxt( pInfo->sDisplayName );
SvTreeListEntry* pNewEntry = CreateEntry( aTxt, CBCOL_FIRST );
LangImplNameTable &rTable = rLinguData.GetGrammarTable(); LangImplNameTable &rTable = rLinguData.GetGrammarTable();
const bool bHasLang = rTable.count( eCurLanguage ); const bool bHasLang = rTable.count( eCurLanguage );
...@@ -1950,21 +1820,28 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1950,21 +1820,28 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported
} }
const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0; const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0;
lcl_SetCheckButton( pNewEntry, bCheck );
pUserData = new ModuleUserData_Impl( aImplName, false, pUserData = new ModuleUserData_Impl( aImplName, false,
bCheck, TYPE_GRAMMAR, static_cast<sal_uInt8>(nLocalIndex++) ); bCheck, TYPE_GRAMMAR, static_cast<sal_uInt8>(nLocalIndex++) );
pNewEntry->SetUserData( static_cast<void *>(pUserData) );
pModel->Insert( pNewEntry ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_toggle(nRow, bCheck ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
m_xModulesCLB->set_text(nRow, aTxt, 1);
++nRow;
} }
} }
// hyphenator entries // hyphenator entries
pEntry = CreateEntry( sHyph, CBCOL_SECOND );
pUserData = new ModuleUserData_Impl( OUString(), true, false, TYPE_HYPH, 0 ); pUserData = new ModuleUserData_Impl( OUString(), true, false, TYPE_HYPH, 0 );
pEntry->SetUserData( static_cast<void *>(pUserData) ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
pModel->Insert( pEntry ); m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_text(nRow, sHyph, 1);
m_xModulesCLB->set_text_emphasis(nRow, true, 1);
++nRow;
aNames = rLinguData.GetSortedImplNames( eCurLanguage, TYPE_HYPH ); aNames = rLinguData.GetSortedImplNames( eCurLanguage, TYPE_HYPH );
pName = aNames.getConstArray(); pName = aNames.getConstArray();
...@@ -1985,7 +1862,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1985,7 +1862,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
if (!aImplName.isEmpty() && bIsSuppLang) if (!aImplName.isEmpty() && bIsSuppLang)
{ {
OUString aTxt( pInfo->sDisplayName ); OUString aTxt( pInfo->sDisplayName );
SvTreeListEntry* pNewEntry = CreateEntry( aTxt, CBCOL_FIRST );
LangImplNameTable &rTable = rLinguData.GetHyphTable(); LangImplNameTable &rTable = rLinguData.GetHyphTable();
const bool bHasLang = rTable.count( eCurLanguage ); const bool bHasLang = rTable.count( eCurLanguage );
...@@ -1994,21 +1870,27 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -1994,21 +1870,27 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported
} }
const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0; const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0;
lcl_SetCheckButton( pNewEntry, bCheck );
pUserData = new ModuleUserData_Impl( aImplName, false, pUserData = new ModuleUserData_Impl( aImplName, false,
bCheck, TYPE_HYPH, static_cast<sal_uInt8>(nLocalIndex++) ); bCheck, TYPE_HYPH, static_cast<sal_uInt8>(nLocalIndex++) );
pNewEntry->SetUserData( static_cast<void *>(pUserData) ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
pModel->Insert( pNewEntry );
m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_toggle(nRow, bCheck ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
m_xModulesCLB->set_text(nRow, aTxt, 1);
++nRow;
} }
} }
// thesaurus entries // thesaurus entries
pEntry = CreateEntry( sThes, CBCOL_SECOND );
pUserData = new ModuleUserData_Impl( OUString(), true, false, TYPE_THES, 0 ); pUserData = new ModuleUserData_Impl( OUString(), true, false, TYPE_THES, 0 );
pEntry->SetUserData( static_cast<void *>(pUserData) ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
pModel->Insert( pEntry ); m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_text(nRow, sThes, 1);
m_xModulesCLB->set_text_emphasis(nRow, true, 1);
++nRow;
aNames = rLinguData.GetSortedImplNames( eCurLanguage, TYPE_THES ); aNames = rLinguData.GetSortedImplNames( eCurLanguage, TYPE_THES );
pName = aNames.getConstArray(); pName = aNames.getConstArray();
...@@ -2029,7 +1911,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -2029,7 +1911,6 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
if (!aImplName.isEmpty() && bIsSuppLang) if (!aImplName.isEmpty() && bIsSuppLang)
{ {
OUString aTxt( pInfo->sDisplayName ); OUString aTxt( pInfo->sDisplayName );
SvTreeListEntry* pNewEntry = CreateEntry( aTxt, CBCOL_FIRST );
LangImplNameTable &rTable = rLinguData.GetThesTable(); LangImplNameTable &rTable = rLinguData.GetThesTable();
const bool bHasLang = rTable.count( eCurLanguage ); const bool bHasLang = rTable.count( eCurLanguage );
...@@ -2038,53 +1919,56 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox) ...@@ -2038,53 +1919,56 @@ void SvxEditModulesDlg::LangSelectHdl_Impl(ListBox const * pBox)
SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported SAL_INFO( "cui.options", "language entry missing" ); // only relevant if all languages found should be supported
} }
const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0; const bool bCheck = bHasLang && lcl_SeqGetEntryPos( rTable[ eCurLanguage ], aImplName ) >= 0;
lcl_SetCheckButton( pNewEntry, bCheck );
pUserData = new ModuleUserData_Impl( aImplName, false, pUserData = new ModuleUserData_Impl( aImplName, false,
bCheck, TYPE_THES, static_cast<sal_uInt8>(nLocalIndex++) ); bCheck, TYPE_THES, static_cast<sal_uInt8>(nLocalIndex++) );
pNewEntry->SetUserData( static_cast<void *>(pUserData) ); sId = OUString::number(reinterpret_cast<sal_Int64>(pUserData));
pModel->Insert( pNewEntry );
m_xModulesCLB->append(nullptr);
m_xModulesCLB->set_id(nRow, sId);
m_xModulesCLB->set_toggle(nRow, bCheck ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
m_xModulesCLB->set_text(nRow, aTxt, 1);
++nRow;
} }
} }
} }
aLastLocale = aCurLocale; aLastLocale = aCurLocale;
} }
IMPL_LINK( SvxEditModulesDlg, UpDownHdl_Impl, Button *, pBtn, void ) IMPL_LINK( SvxEditModulesDlg, UpDownHdl_Impl, weld::Button&, rBtn, void )
{ {
bool bUp = m_pPrioUpPB == pBtn; bool bUp = m_xPrioUpPB.get() == &rBtn;
sal_uLong nCurPos = m_pModulesCLB->GetSelectedEntryPos(); int nCurPos = m_xModulesCLB->get_selected_index();
SvTreeListEntry* pEntry; if (nCurPos != -1)
if (nCurPos != TREELIST_ENTRY_NOTFOUND &&
nullptr != (pEntry = m_pModulesCLB->GetEntry(nCurPos)))
{ {
m_pModulesCLB->SetUpdateMode(false); m_xModulesCLB->freeze();
SvTreeList *pModel = m_pModulesCLB->GetModel();
OUString sId(m_xModulesCLB->get_id(nCurPos));
ModuleUserData_Impl* pData = static_cast<ModuleUserData_Impl*>(pEntry->GetUserData()); OUString sStr(m_xModulesCLB->get_text(nCurPos));
OUString aStr(m_pModulesCLB->GetEntryText(pEntry)); bool bIsChecked = m_xModulesCLB->get_toggle(nCurPos, nCurPos);
SvTreeListEntry* pToInsert = CreateEntry( aStr, CBCOL_FIRST );
pToInsert->SetUserData( static_cast<void *>(pData)); m_xModulesCLB->remove(nCurPos);
bool bIsChecked = m_pModulesCLB->IsChecked(nCurPos);
int nDestPos = bUp ? nCurPos - 1 : nCurPos + 1;
pModel->Remove(pEntry);
m_xModulesCLB->insert_text(nDestPos, sStr);
sal_uLong nDestPos = bUp ? nCurPos - 1 : nCurPos + 1; m_xModulesCLB->set_id(nDestPos, sId);
pModel->Insert(pToInsert, nDestPos); m_xModulesCLB->set_toggle(nDestPos, bIsChecked ? TRISTATE_TRUE : TRISTATE_FALSE, 0);
m_pModulesCLB->CheckEntryPos(nDestPos, bIsChecked );
m_pModulesCLB->SelectEntryPos(nDestPos ); m_xModulesCLB->thaw();
SelectHdl_Impl(m_pModulesCLB);
m_pModulesCLB->SetUpdateMode(true); m_xModulesCLB->select(nDestPos);
SelectHdl_Impl(*m_xModulesCLB);
} }
} }
IMPL_LINK_NOARG(SvxEditModulesDlg, ClickHdl_Impl, Button*, void) IMPL_LINK_NOARG(SvxEditModulesDlg, ClickHdl_Impl, weld::Button&, void)
{ {
// store language config // store language config
LangSelectHdl_Impl(m_pLanguageLB); LangSelectHdl_Impl(m_xLanguageLB.get());
EndDialog( RET_OK ); m_xDialog->response(RET_OK);
} }
IMPL_LINK_NOARG(SvxEditModulesDlg, BackHdl_Impl, Button*, void) IMPL_LINK_NOARG(SvxEditModulesDlg, BackHdl_Impl, weld::Button&, void)
{ {
rLinguData = *pDefaultLinguData; rLinguData = *pDefaultLinguData;
LangSelectHdl_Impl(nullptr); LangSelectHdl_Impl(nullptr);
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 --> <!-- Generated with glade 3.22.1 -->
<interface domain="cui"> <interface domain="cui">
<requires lib="gtk+" version="3.18"/> <requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/> <object class="GtkTreeStore" id="liststore1">
<columns>
<!-- column-name check1 -->
<column type="gboolean"/>
<!-- column-name text -->
<column type="gchararray"/>
<!-- column-name id -->
<column type="gchararray"/>
<!-- column-name checkvis1 -->
<column type="gboolean"/>
<!-- column-name checktri1 -->
<column type="gboolean"/>
<!-- column-name weight1 -->
<column type="gint"/>
</columns>
</object>
<object class="GtkListStore" id="liststore6">
<columns>
<!-- column-name text -->
<column type="gchararray"/>
<!-- column-name id -->
<column type="gchararray"/>
<!-- column-name image -->
<column type="GdkPixbuf"/>
</columns>
</object>
<object class="GtkDialog" id="EditModulesDialog"> <object class="GtkDialog" id="EditModulesDialog">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">6</property> <property name="border_width">6</property>
<property name="title" translatable="yes" context="editmodulesdialog|EditModulesDialog">Edit Modules</property> <property name="title" translatable="yes" context="editmodulesdialog|EditModulesDialog">Edit Modules</property>
<property name="modal">True</property>
<property name="default_width">0</property>
<property name="default_height">0</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child>
<placeholder/>
</child>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1"> <object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property> <property name="can_focus">False</property>
...@@ -104,10 +135,10 @@ ...@@ -104,10 +135,10 @@
<object class="GtkLabel" id="label2"> <object class="GtkLabel" id="label2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="editmodulesdialog|label2">Language:</property> <property name="label" translatable="yes" context="editmodulesdialog|label2">Language:</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="mnemonic_widget">language</property> <property name="mnemonic_widget">language</property>
<property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
...@@ -116,11 +147,24 @@ ...@@ -116,11 +147,24 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="svxcorelo-SvxLanguageBox" id="language"> <object class="GtkComboBox" id="language">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="halign">start</property> <property name="model">liststore6</property>
<property name="hexpand">False</property> <property name="entry_text_column">0</property>
<property name="id_column">1</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext9"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererPixbuf" id="cellrenderertext6"/>
<attributes>
<attribute name="pixbuf">2</attribute>
</attributes>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
...@@ -197,13 +241,54 @@ ...@@ -197,13 +241,54 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="svxcorelo-SvxCheckListBox" id="lingudicts:border"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<child internal-child="selection"> <property name="shadow_type">in</property>
<object class="GtkTreeSelection" id="Check List Box-selection5"/> <child>
<object class="GtkTreeView" id="lingudicts">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="vexpand">True</property>
<property name="model">liststore1</property>
<property name="headers_visible">False</property>
<property name="search_column">0</property>
<property name="show_expanders">False</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="Macro Library List-selection2"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<property name="resizable">True</property>
<property name="spacing">6</property>
<property name="alignment">0.5</property>
<child>
<object class="GtkCellRendererToggle" id="cellrenderer5"/>
<attributes>
<attribute name="visible">3</attribute>
<attribute name="active">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="resizable">True</property>
<property name="spacing">6</property>
<property name="alignment">0.5</property>
<child>
<object class="GtkCellRendererText" id="cellrenderer4"/>
<attributes>
<attribute name="text">1</attribute>
<attribute name="weight">5</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child> </child>
</object> </object>
<packing> <packing>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment