Показаны сообщения с ярлыком howto. Показать все сообщения
Показаны сообщения с ярлыком howto. Показать все сообщения

суббота, 8 ноября 2008 г.

"Правильная" обработка сигнала на активацию для GtkCellRendererToggle

Продолжаем бороться с GTK. На этот раз возникла необходимость отобразить дерево каталогов с возможностью выбора файлов/каталогов для скачивания примерно в таком виде:

На первый взгляд никаких проблем быть не должно: создаем GtkTreeViewColumn, в которую упаковываем GtkCellRendererToggle и GtkCellRendererText. Создали, упаковали - выглядит так, как и хотелось, но вот работает не так как надо. А именно, флажки переключаются даже тогда, когда пользователь щелкает по GtkCellRendererText с именем файла/директории. Подобное поведение может очень сильно раздражать, когда, например, пользователь ввиду слишком длинного списка с большим уровнем вложенности захочет просто кликнуть по имени файла, чтобы выделить всю строку и тем самым подсветить остальные колонки GtkTreeView, которых может быть довольно большое количество (размер, время модификации, тип файла и т. п.).

Как и в прошлый раз, для решения проблемы придется модифицировать внутренние структуры GTK, т. к. штатными средствами данную проблему похоже решить не удасться. Все, что нам нужно - это определить собственный обработчик сигнала для GtkCellRendererToggle. Пример того, как это можно сделать, представлен ниже. Все, что необходимо программисту - это вызвать функцию activate_cell_renderer_toggle_tree_mode(). После ее вызова все GtkCellRendererToggle'ы будут работать так, как требуется. Способ работает как с GTK, так и с Gtkmm.

понедельник, 29 сентября 2008 г.

Назначение обработчика сигнала для заголовка GtkTreeViewColumn

Недавно потребовалось сделать так, чтобы при нажатии правой кнопкой мыши по заголовку колонки GtkTreeView возникало меню, с помощью которого можно было бы выбрать для отображения или скрыть отдельные колонки. Порывшись в документации к GTK, я обнаружил, что это не так то просто. А именно - нет какой-либо функции, которая могла бы возвратить виджет заголовка колонки, к которому я бы смог привязать обработчик сигнала на нажатие кнопки мыши.

Т. к. поиск в документации не дал никаких результатов, я начал искать обходные пути решения данной проблемы. Оказалось, что GTK позволяет назначить собственный виджет, который будет помещен в кнопку заголовка GtkTreeViewColumn. По умолчанию, если пользователь не назначит собственный виджет, вместо него используется обычный GtkLabel с именем колонки. Если же мы назначим заголовку собственный виджет, то сможем подняться от него вверх по дереву содержащих его контейнеров и получить нужную нам кнопку.

Поэтому, недолго думая, я написал следующую функцию, которая возвращает заветную кнопку заголовка колонки (функция написана для Gtkmm, но переписать ее под обычный GTK не составит никакого труда):

суббота, 26 июля 2008 г.

Очередной HowTo по Vim

Ранее я уже выкладывал небольшой HowTo по Vim. Тогда я только начинал свое знакомство с ним и решил, что на начальном этапе изучения лучше руководствоваться различными tutorial'ами и HowTo, а официальную документацию пока оставить в стороне. Почему? А потому, что если вы только начинаете изучать Vim, то вы еще не знаете, что вам от него нужно - необходим определенный опыт работы, чтобы при чтении документации вы смогли бы наиболее точно оценить, какие функции будут вам полезны, а о каких можно забыть. Все команды вы все равно не запомните - уж слишком их много, поэтому приходится отсеивать только те, которыми вы действительно будете пользоваться.

Поработав в Vim достаточное количество времени, чтобы понять, что мне от него нужно, я наконец-то принялся за чтение документации. Просто так ее читать бесполезно - все не запомнишь, поэтому в процессе чтения я выписывал те сочетания клавиш, которые считал для себя полезными. Конечно, даже после этого список получился довольно большой, но я его составлял не для того чтобы потом сесть и зубрить. :) Нет, это вообщем-то и не нужно. Вполне достаточно внимательно прочитать его один раз, запомнив описываемые им возможности, чтобы в последствии, когда вы в очередной раз поймаете себя на выполнении повторяющихся действий, от вас потребовалось бы только заглянуть в этот список команд и подумать, как можно сделать то же самое одной комбинацией клавиш.

Подобные HowTo просто подарок судьбы для начинающих пользователей Vim'a, т. к., прочитав их и скопипастив строчки из чужих конфигов в свои, они уже смогут работать в нем, не испытывая при этом особого дискомфорта. Данный HowTo предполагает, что вы уже знаете Vim в объеме Vim Tutor. Опытные пользователи, которые не смогли найти время для прочтения документации, также, возможно, найдут что-то полезное для себя в этой статье - я, например, к своему стыду, о командах gj и gk узнал именно из документации, но сколько же я без них мучился... :)

пятница, 13 июня 2008 г.

Установка и настройка Ubuntu 8.04 на ASUS Eee PC


Когда я покупал себе ASUS Eee PC, я совершенно не думал о том, какую операционную систему установлю на нем - однозначно это будет Ubuntu Linux. Во-первых, потому, что Ubuntu у меня стоит и дома и на работе, во-вторых, потому, что и дома и на работе у меня есть локальное зеркало репозитория Ubuntu, а в-третьих просто потому, что данный дистрибутив меня всем устраивает.

После покупки я сразу же полез в Интернет в поисках различных HowTo по установке Ubuntu 8.04 на Eee PC. Результат меня несколько удивил. Несмотря на огромный ажиотаж вокруг Eee PC, этих самых HowTo в сети не так уж и много + большинство из них нацелены на Ubuntu 7.10 и предлагают запустить некий скрипт, который заменит системные конфигурационные файлы своими, заточенными под Eee PC.

На эти скрипты я даже и смотреть не стал, т. к. они предназначены для Ubuntu 7.10, и их запуск на Ubuntu 8.04 может привести к нехорошим последствиям. Поэтому во время поиска необходимой информации в сети я обращал внимание только на те статьи, в которых описывается, как можно настроить Ubuntu под Eee PC "своими руками". Найти такой HowTo, в котором содержались бы ответы на все встающие передо мной вопросы, мне не удалось, поэтому я решил систематизировать собранную мной информацию и слить ее в одну статью. Сейчас моя система уже настроена, поэтому я постараюсь вспомнить все действия, которые я производил над ней, дабы все заработало так, как мне хочется. Надеюсь, я ничего не упущу. :)

четверг, 20 марта 2008 г.

ПСПЛ: Полезные Советы По Linux

Пару дней назад, когда я в очередной раз просматривал в Google Reader свои RSS ленты, в графе "Top Recommendations" он предложил мне почитать RSS ленту сайта ПСПЛ: Полезные Советы По Linux.

До настоящего момента Google Reader мне еще ни разу не советовал ни одной ленты, которая бы мне действительно понравилась, и я бы решил подписаться на нее. Этот же сайт оказался действительно интересным, поэтому я хочу вам его порекомендовать. Как можно догадаться из названия, он является сборником наиболее ценных советов относительно Linux.

Просмотрев весь сайт, я нашел для себя много интересного. Если у вас нет желания просматривать весь сайт целиком, приведу наиболее интересные, на мой взгляд, советы:

понедельник, 3 декабря 2007 г.

Работа с USB в VMWare под Ubuntu 7.10

Недавно заметил, что после перехода на Ubuntu 7.10 VMWare перестала цеплять USB устройства. Точнее, она их обнаруживала, но только в том случае, если они были подключены до загрузки операционной системы.

Решение проблемы подвернулось совершенно случайно, когда я стал ставить VirtualBox. Оказывается, у них схожие причины проблем с USB. А именно, чтобы и в VMWare и в VirtualBox (не в OSE варианте) нормально работали USB устройства, достаточно в /etc/fstab прописать следующую строку:
none /proc/bus/usb usbfs devgid=127,devmode=664 0 0
где 127 - идентификатор группы, к которой вы принадлежите.

пятница, 2 ноября 2007 г.

Mutt HOWTO

"All mail clients suck. This one just sucks less."

После того, как я перешел на Linux, в качестве почтового клиента я долгое время использовал Mozilla Thunderbird. Потом, посмотрев на своего друга, я решил попробовать Mutt. В итоге Thunderbird был удален, и с тех пор почту я читаю только при помощи Mutt.

пятница, 26 октября 2007 г.

Небольшая подборка русскоязычных сайтов по UNIX тематике

С того времени как я начал использовать Linux, у меня скопился определенный набор ссылок на русскоязычные сайты по UNIX тематике, на которых можно найти много интересной информации. В данной заметке я бы хотел дать ссылки на наиболее, на мой взгляд, полезные из них. Возможно, пригодится тем, кто только входит в мир UNIX и не знает с чего начать.

суббота, 6 октября 2007 г.

Использование команд VIM с русской раскладкой клавиатуры

Наконец-то нашел способ, позволяющий использовать команды VIM при включенной русской раскладке клавиатуры.

В сети довольно много советов, устраняющих данную проблему, но все те из них, которые попадались мне, не работают, если в качестве локали вы используете xx_XX.UTF-8.

Все, что нужно сделать - это прописать в ~/.vimrc следующие строки:

суббота, 22 сентября 2007 г.

Несколько примочек для Blogger

1. Вставка кода
Наверное, все современные форумы поддерживают тег [code][/code], позволяющий размещать в своих сообщениях блоки кода. В Blogger такой возможности нет. Я реализовал ее следующим образом:
В шаблоне, где описываются все стили (между тегами <b:skin><![CDATA[ и ]]></b:skin>) вставляем
pre.my_code_box {
border: 1px solid #aaaaaa;
overflow: auto;
padding: 10px;
font-family: courier new;
}
Теперь, чтобы выделить какой-нибудь текст как код, окружите его тегами <pre class="my_code_box"></pre> (естественно, в режиме "Изменить Html").

Update 07.12.2008:
Относительно вопроса подсветки синтаксиса: могу порекомендовать статью Highlighting thoughts, в которой автор рассмотрел различные подходы к решению данной проблемы.



2. Читать полностью...
Если хотите использовать "свертывание" статьи в ссылку "Читать полностью...", пропишите за тегом ]]></b:skin>, но в пределах <head> строки
<b:if cond='data:blog.pageType == "item"'>
<style>span.fullpost {display:inline;}</style>
<b:else/>
<style>span.fullpost {display:none;}</style>
</b:if>
Теперь перейдите в "расширенный" режим редактирования шаблона и найдите в нем тег <data:post.body/>. Сразу после него ставим
<b:if cond='data:blog.pageType != "item"'>
<br/><a expr:href='data:post.url'>Читать полностью...</a>
</b:if>
Свертываемую часть сообщения надо заключить в тэг <span class=fullpost></span>.


3. Облако тегов
То, как его сделать, описано тут.


4. Вставка в текст сообщения специальных символов
Если в тексте вашего сообщения содержатся специальные символы (к примеру, при вставке кода), то для того, чтобы они отображались так, как вы хотите, их нужно экранировать. Для этого замените следующие символы указанными последовательностями:
& - &#38;
< - &#60;
> - &#62;
" - &#34;

Вставлять их нужно в режиме "Изменить Html" и после этого не переключать режимы, иначе Blogger "забудет" о том, что вы их экранировали.

воскресенье, 9 сентября 2007 г.

Vim HOWTO

Как и обещал, выкладываю свой Vim HOWTO, который я составил для себя в качестве шпоргалки. Большей своей частью это нарезка Vim - кратко обо всем, а также официальной документации и других HOWTO.

четверг, 6 сентября 2007 г.

Немного о VIM

Вот уже около недели я в качестве основного текстового редактора и среды разработки использую VIM. Не скажу, что я уже нашел в нем все, что мне необходимо, чтобы не ощущать никакого дискомфорта при работе, но то, что я найду ответы на все вопросы, я не сомневаюсь - просто это дело времени.

Когда я приступил к знакомству с VIM'ом, я первым делом полез в документацию с твердым намерением всю ее прочитать. Но довольно быстро я понял, что это не самый лучший способ изучить его. Если распечатать всю документацию по VIM'у, то она займет около 1000 страниц. И дело не в том, что у меня не хватит терпения всю ее прочитать - даже если я все прочитаю, то в голове у меня вряд ли останется и пара процентов от прочитанной информации.

Поэтому я решил, что на начальном этапе обучения следует обратить свое внимание на различные HOWTO. В сети подобных руководств можно найти довольно много, и, прочитав даже одно из них, вы уже вполне сможете комфортно работать в VIM (не забывайте про замечательный VIM Tutor, который поставляется вместе с VIM и переведен на русский язык). Свой конфигурационный файл вы будете формировать тоже, скорее всего, глядя на чужие конфигурационные файлы и выбирая из них интересные для вас опции.

Поэтому я решил выложить свои конфигурационные файлы сюда - вдруг кому-нибудь пригодится. Также, в процессе чтения различных HOWTO я выписывал для себя команды, которые могут оказаться полезными для меня, и в результате у меня получился свой собственный MiniHOWTO :), который я тоже выложу, но чуть позднее, когда приведу его в читабельный вид. В данной заметке я выложу свои конфигурационные файлы и приведу пару интересных, на мой взгляд, ссылок по VIM.

Хочу заметить, что все вышесказанное не означает, что я отговариваю вас читать официальное руководство. Сам я его обязательно прочту, но не сейчас, а где-нибудь через пол года или год. К тому времени я как раз получу достаточный опыт в работе с VIM'ом и накоплю список вопросов, на которые мне стоит по-внимательней обратить внимание в руководстве. Вам я советую поступить также.

Так что удачи вам и терпения. Затраченное на обучение время обязательно окупится.

среда, 29 августа 2007 г.

Создание зеркала сайта

Захотелось выкачать какой-нибудь сайт для последующего локального просмотра?

Я для этого использую либо расширение ScrapBook для Firefox, либо программу httrack. Использовать их очень просто, так что расписывать, как с ними работать, я не буду - все итак интуитивно понятно. Ограничусь лишь несколькими замечаниями.

понедельник, 20 августа 2007 г.

Как скачать ролик с любого видеохостинга (Firefox)

В последнее время просмотр видеороликов, размещенных на различных видеохостингах вроде YouTube стал очень популярен. Практически на любом современном портале ежедневно выкладывается по несколько роликов, предоставляемых различными сервисами, количество которых увеличивается с каждым днем.

Бывает, что просмотрев очередной ролик, у вас возникает желание сохранить его к себе на компьютер. Для этого существует огромное количество расширений к браузерам, онлайн сервисов и программ. Но все они не успевают подстраиваться под постоянно растущее количество видеохостингов. И в конце концов вы натыкаетесь на какой-нибудь интересный ролик, размещенный на недавно появившимся видеохостинге, и не имеете возможности его сохранить. Вот тут то вам может пригодиться мой способ, который я собираюсь осветить в данной статье, т. к. он в некоторой степени универсальный, хотя и потребует произвести немного больше телодвижений для получения результата, нежели обычные плагины.

суббота, 18 августа 2007 г.

Получение информации о видеофайле

Сегодня очень большое количество пользователей интернета регулярно скачивают фильмы с Bittorrent трекеров. Есть также люди (их гораздо меньше), которые эти фильмы на трекеры выкладывают. Эта статья, для тех, кто выкладывает. :)

Когда вы в очередной раз хотите что-нибудь зарелизить на трекер, перед вами непременно встает проблема оформления раздачи, т. к. по-моему на всех трекерах администрация требует, как минимум, добавить в описание раздачи информацию о файле и серию скриншотов из выкладываемого видеофайла.

Если вы очень редко релизите что-либо на трекер, то в таком случае можно вручную наделать скриншотов, посмотреть в своем любимом плеере информацию о видеофайле во время его проигрывания и переписать ее в форму создания раздачи на трекере.

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

пятница, 17 августа 2007 г.

Создание FTP сервера с поддержкой русских имен файлов

После того, как вы установили Linux, вам, возможно, захочется поднять свой FTP сервер. Если до этого вы до сих пор не задавались такой целью, то, скорее всего, побродив по интернету в поисках наиболее удобного для вас сервера и даже поставив пару из них, вы обнаружите, что ни один из них не умеет правильно работать с файлами, имена которых содержат русские буквы.