LINUX.ORG.RU

GTKNotebook и табы


0

0

Не могу понять как задать максимальную ширину таба в GTKNotebook, чтобы вслучае очень длинного заголовка таб не превышал заданнаю ширину. А в идеале вообще чтобы размер таба менялся динамически, например так:

1 таб - знаимет сколько ему влезет места

n табов - меняется ширина так чтобы они уместились на доступном им пространстве

2n табов - также меняется ширина но не менее заданного(в этом случае появляется скролл табов)

★★★
Ответ на: комментарий от ttnl

>>>Навесь обработчик на сигналы "page-added" и "page-removed" и делай все руками.

Бред.

>>>2n табов - также меняется ширина но не менее заданного(в этом случае появляется скролл табов)

gtk_notebook_set_scrollable

>>>1 таб - знаимет сколько ему влезет места 

The "homogeneous" property

  "homogeneous"              gboolean              : Read / Write

Whether tabs should have homogeneous sizes.

Default value: FALSE

>>>n табов - меняется ширина так чтобы они уместились на доступном им пространстве 

сделав первые два пункта, этот будет сам собой работать.

Deleted
()

>чтобы вслучае очень длинного заголовка таб не превышал заданнаю ширину

вот про это забыл сказать... при добавлении нового таба, тебе нужно будет само стоятельно создать заголовок (он GtkWidget). Береш GtkLabel, устанавливаешь нужный текст. Далее тебе нужно вот это свойство...

The "ellipsize" property

"ellipsize" PangoEllipsizeMode : Read / Write

The preferred place to ellipsize the string, if the label does not have enough room to display the entire string, specified as a PangoEllisizeMode.

Note that setting this property to a value other than PANGO_ELLIPSIZE_NONE has the side-effect that the label requests only enough space to display the ellipsis "...". In particular, this means that ellipsizing labels do not work well in notebook tabs, unless the tab's "tab-expand" property is set to TRUE. Other ways to set a label's width are gtk_widget_set_size_request() and gtk_label_set_width_chars().

Default value: PANGO_ELLIPSIZE_NONE

Since 2.6

Deleted
()
Ответ на: комментарий от Deleted

про gtk_notebook_set_scrollable я вкурсе. про homogeneous тоже знаю.

Вопрос был втом чтобыт абы автоматом меняли свою ширину при набивании линейки. Но вся проблема в том что они не становятся меньше чем длина текста в табе. И если допустим 2 таба не взлазят на линеку то первый таб раздвигается во всю ширину, а второй таб доступен через скрол.

TheMixa ★★★
() автор топика
Ответ на: комментарий от Deleted

Идею понял но почемуто при применении в программе а не тестовом примере gtk_label_set_ellipsize(GTK_LABEL(tab->label),PANGO_ELLIPSIZE_END); за места тескста тольок "..."

Если можно с вами свзяться по мылу было бы здорово.

TheMixa ★★★
() автор топика

Это попа. Реальная попа. Потому как в GtkNotebook напихали функционала, который стоило бы разделить на несколько функционально законченных частей, но этого никто не далает и его гибкость оставляет желать лучшего.

Есть вариант переписать GtkNotebook заново. Определенно есть еще варианты, но не один из них не является хорошим.

ShprotX
()
Ответ на: комментарий от TheMixa

>Если можно с вами свзяться по мылу было бы здорово.

легко, инфа в профиле.

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