Pull to refresh

Comments 19

У новичка в Gtk (в лице меня) возникло желание повторить все написанное.
Смотрел по диагонали (ибо GTK+ не знаю и не планировал изучать) и возникло три вопроса — 1) почему не выровнять name, health, power, text color? В какой-нибудь layout. Смотрится неаккуратно. 2) что за жуткая мода прикручивать нестандартные цвета наполовину. Нужно либо следовать исключительно системной палитре, либо полностью свою применять. Вот Вы поставили голубой, а у пользователя тёмная тема и голубой — стандартный цвет шрифта — и он же не видит никакого power. 3) в GTK+ цвет кодируется по 16 бит на канал?
Ну голубой фон — просто для того, что показать как это делается. Ето же пример для обучения, поэтому тут используется как можно больше всего.
Ну, я сторонник, что даже в примерах стоит показывать «как надо делать», а не «как не надо делать», поэтому и придираюсь :) Просто не раз сталкивался, когда авторы программ начинают делать кастомизацию приложений и не учитывают работу в нестандартных условиях.
Спасибо большое за вопросы
1) Я пока не стал усложнять пример (потому что считаю, что и так много всего накручено), целью было как раз показать как работать с GtkTreeView и GtkListStore. Можно попробовать использовать тот же горизонтальный контейнер GtkHBox (кому интересно могут попробовать и посмотреть что получится). Вообще про слои в GTK+ можно написать отдельный огромный пост, там много интересного и не так всё просто как кажется. Будет время займусь обязательно этим.
2) Вы абсолютно правы, но я к сожалению пока не нашел способа как это задать в Glade. возможно прийдётся опять какой-то хак делать в нём. Если кто-то мне подскажет, буду рад.
3) Да, цвет кодируется 16 бит на канал и представляется вот в такой структуре:
typedef struct {
guint32 pixel;
guint16 red;
guint16 green;
guint16 blue;
} GdkColor;

А чего такое guint32 pixel; в этой структуре?
Это поле обычно рекомендуют игнорировать, этот параметр служит для отрисовки конкретного писеля на экране. Если попробовать проследить за ним, например отладчике или вывести в лог, то каждый раз он будет разный.
Спасибо за ответы :) ИМХО, первый пункт действительно стоило бы раскрыть — если не здесь, то в отдельном топике.
Я ни коим образом не специалист по GTK+, но я прочитал по диагонали этот и предыдущий ваши посты по GTK+.

Там тоже задавали этот вопрос, но внятный ответ так и не был получен.

Поэтому спрошу ещё раз здесь: почему вы используете C++, а не C?
Я показываю как можно в С++ проект добавить использование библиотеки пользовательских интерфейсов GTK+, как раз одним из её плюсов и является, что можно писать на большим количестве языков. Также мне как-то ближе С++, чем C. Да, есть специальная обёртка gtkmm для того чтобы писать на C++ и она как раз заточена для этого, но чтобы лучше понять GTK+ я всё же считаю учиться на «чистом» GTK+, а потом уже перейти, например, на gtkmm или PyGTK (обёртка для питона).
Также мне как-то ближе С++, чем C.
Я насчитал только три вещи из C++, которые здесь используются:
extern "C"
static_cast<>
false (тип bool)

Сомнительная мотивация только из-за них использовать C++.

В остальном больше вопросов нет. И я бы с радостью почитал статью про gtkmm.
О. Спасибо, буду знать. Википедия говорит, что он появился начиная с C99.
Так и есть. Но по-моему все уже используют C99 хотя бы из-за for(type var = ...;; )
Отличная статья! Обязательно попробую повторить все вышеизложенное! :]
Спасибо за подробный туториал.

У меня вопрос несколько не по теме, но просто к знатоку GTK. В Exaile ведь используются именно эти виджеты?

Вопрос такой. Если текст в колонке не умещается в ее ширину, то он отображается с многоточием в конце. Это понятно. А чтобы при наведении на него мышкой появлялось всплывающая подсказка с полным текстом, какие нужно сделать телодвижения? По умолчанию этого не происходит?

Для сравнения, в Windows в системных TreeView и ListView это по умолчанию есть, и следовательно работает во всех программах одинаково (если только разработчик сам это не запрещает). А в Линуксе, сколько встречаю программ на GTK, где-то работает, но в большинстве нет. Что порой очень расстраивает.
Да в Exaile используются эти виджеты — виджеты библиотеки GTK+.
По поводу Вашего вопроса. Я поискал решение и могу Вам предложить вот такой вариант. Если интефейс спроектирован в редакторе Glade, то нажимайте на GtkTreeView идёте в свойства, вкладка General. Там в самом низу будет свойство Tooltip column



и там нужно поставить номер колонки из хранилища GtkListStore (который как раз я в посте описывал) данные из которой для данной строки Вы хотите чтобы появлялись во всплывающей подсказке при наведении на строку.



Я подумаю еще над этим вопросом. Мне тоже интересно. Если интерфейс спроектирован не в Glade я тоже подумаю как сделать, там с помощью методов я уверен.
По-моему это не то, о чем писал я. Я о том, чтобы для любой колонки в tooltip'е отображался текст из этой же колонки.

Раз вы меня сразу не поняли, скорее всего такого в GTK+ нет. :) Во всяком случае по умолчанию. Печально.
Sign up to leave a comment.

Articles