obmenu3 - замена obmenu

и еще пара мелких замечаний:
-в HelpString не указан емайл, куда слать баг-репорты
-нигде не нашел лицензию
:)

А так код хорошо читаемый, "закладок" не нашел.
minoshi
и еще :
http://i.pixs.ru/storage/5/6/0/21png_7138185_9209560.png
Что подскажите?

Ну в общем появилось время, сам разобрался
в событии TForm1.FormCreate(Sender: TObject); вызов TreeView1.Selected := TreeView1.Items[1]; происходит без предварительной проверки переменной "i". Должно быть так:

  if i > 1 then
  TreeView1.Selected := TreeView1.Items[1]; 

И еще в качестве маленькой придирки: нигде не сохраняется значение "encoding" из строки
<?xml version="1.0" encoding="utf-8"?>
что-нибудь вроде:
__encoding := bmenu.Encoding;
и дальнейшее сохранение при сохранении меню
minoshi
minoshi
и еще :
Что подскажите?

Ну в общем появилось время, сам разобрался
[skip]
Спасибо. Завтра поправлю и это, и по другим замечаниям. А можно мне выслать menu.xml, на котором оно падает на akorop@ukr.net? Что-то я не въезжаю, как может быть i < 1.
например битый файл :)

а вообще у меня i = 1
а menu.xml у меня такой:
<?xml version="1.0" encoding="utf-8"?>
<openbox_menu>
	<menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator -i">
	</menu>
</openbox_menu>
у меня сборка manjaro-openbox
minoshi
например битый файл :)

а вообще у меня i = 1
а menu.xml у меня такой:
<?xml version="1.0" encoding="utf-8"?>
<openbox_menu>
	<menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator -i">
	</menu>
</openbox_menu>
у меня сборка manjaro-openbox
Хм... К такому меню редактор как-то и приложить некуда. Впрочем, это не повод, чтобы программа падала. Спасибо.
malya
Подскажите, а как вы реализовали поиск иконки согласно приложению ?
Криво реализовал. Ищется png-файл последовательно в трёх каталогах:
/usr/share/pixmaps/
/usr/share/icons/hicolor/16x16/apps/
/usr/share/icons/gnome/16x16/apps/
А надо бы, как минимум, использовать текущую тему. А хорошо бы пройтись и по всем темам и разрешениям (хотя бы 48x48), и не только по apps. А ещё надо бы учитывать $XDG_DATA_DIRS и что-то подобное от KDE.
По-хорошему, вместо всей этой самодеятельности следовало бы воспользоваться встроенными средствами gtk. Скажем, в Питоне это можно сделать так:
import gtk
...
icon_theme = gtk.icon_theme_get_default()
icon = icon_theme.lookup_icon(icon_name, 16, 0)
if icon:
    print (icon.get_filename())
else:
    print ("not found")
Но в Лазарусе я аналогичной привязки не нашёл.
ну а если глянуть код этого самого gtk.icon_theme_get_default()?
minoshi
ну а если глянуть код этого самого gtk.icon_theme_get_default()?
В том, что устанавливется, исходника нет, это имя, и lookup_icon сидят внутри _gtk.so. Можно, конечно, нарыть исходники _gtk.so, что-то там поглядеть, но наверняка оно выведет на функцию из какой-то общей so, не входящей в Питон. А как к ней обратиться из Лазаруса - сходу не понятно. Проблема, конечно, решаемая, но если заранее этой кухни не знаешь, то решать придётся не час, и не вечер.
Увы, это оборотная сторона переносимости Лазаруса - Линукс-специфические штучки программируются очень туго.
Обновил до 0.91.
0.91
 [*] help changed
 [+] "Restore" button added
 [-] crash on void menu fixed
 [*] now gtk2 engine used for icon search
 [+] deleting from the holdbos impoved
 [+] now Ins key in the holdbox restore item
 [*] keep "encoding" attribute (custom laz2_xmlwrite, see laz2_xmlwrite.patch)
akorop
minoshi
ну а если глянуть код этого самого gtk.icon_theme_get_default()?
В том, что устанавливется, исходника нет, это имя, и lookup_icon сидят внутри _gtk.so. Можно, конечно, нарыть исходники _gtk.so, что-то там поглядеть, но наверняка оно выведет на функцию из какой-то общей so, не входящей в Питон. А как к ней обратиться из Лазаруса - сходу не понятно.
Разобрался. Оказалось, в модуле gtk2 всё есть. Так что всю самодеятельность ампутировал и заменил штатным gtk-шным поиском.
 
Зарегистрироваться или войдите чтобы оставить сообщение.