LINUX.ORG.RU

Как управлять элементом списка GtkComboBoxText не по номеру, а по ID элемента

 , , gtkcomboboxtext, id of item


0

1

Есть такой вот кусок ui файла Gtk

<child>
          <object class="GtkComboBoxText" id="colscalemin">
            <property name="can_focus">False</property>
            <items>
              <item id="Automatic" translatable="yes" context="conditionalentry|colscalemin">Automatic</item>
              <item id="Min" translatable="yes" context="conditionalentry|colscalemin">Min</item>
              <item id="Max" translatable="yes" context="conditionalentry|colscalemin">Max</item>
              <item id="Percentile" translatable="yes" context="conditionalentry|colscalemin">Percentile</item>
              <item id="Value" translatable="yes" context="conditionalentry|colscalemin">Value</item>
              <item id="Percent" translatable="yes" context="conditionalentry|colscalemin">Percent</item>
              <item id="Formula" translatable="yes" context="conditionalentry|colscalemin">Formula</item>
            </items>
          </object>
          <packing>
            <property name="left_attach">0</property>
            <property name="top_attach">2</property>
          </packing>
        </child>

и есть вот такой кусок кода, который получает этот контрол

ScColorScale2FrmtEntry::ScColorScale2FrmtEntry( vcl::Window* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat )
    : ScCondFrmtEntry(pParent, pDoc, rPos)
{
    get(maLbColorFormat, "colorformat");
    get(maLbEntryTypeMin, "colscalemin");
    get(maLbEntryTypeMax, "colscalemax");
    get(maEdMin, "edcolscalemin");
    get(maEdMax, "edcolscalemax");
    get(maLbColMin, "lbcolmin");
    get(maLbColMax, "lbcolmax");
    get(maFtMin, "Label_minimum");
    get(maFtMax, "Label_maximum");

    maFtMin->Show();
    maFtMax->Show();

    // remove the automatic entry from color scales
    maLbEntryTypeMin->RemoveEntry(0);
    maLbEntryTypeMax->RemoveEntry(0);

Как видно, переменная maLbEntryTypeMin рулит элементами списка, используя порядковый номер элемента в списке.

Вопрос: каждый элемент (item) в списке имеет в ui файле свой уникальный ID, можно ли в строке maLbEntryTypeMin->RemoveEntry(0) вместо 0 использовать item's ID из ui файла? Если да, то как?

можно ли в строке maLbEntryTypeMin->RemoveEntry(0) вместо 0 использовать item's ID из ui файла? Если да, то как?

это же С++, нужно всего лишь перегрузить RemoveEntry чтоб оно принимало item's ID из ui файла.

ukr_unix_user ★★★★
()

хотя там есть

void ListBox::RemoveEntry( const OUString& rStr )
{
    RemoveEntry( GetEntryPos( rStr ) );
}

и

sal_Int32 ListBox::GetEntryPos( const OUString& rStr ) const
{
    if (!mpImplLB)
        return LISTBOX_ENTRY_NOTFOUND;
    sal_Int32 nPos = mpImplLB->GetEntryList()->FindEntry( rStr );
    if ( nPos != LISTBOX_ENTRY_NOTFOUND )
        nPos = nPos - mpImplLB->GetEntryList()->GetMRUCount();
    return nPos;
}

может это оно?

ukr_unix_user ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.