Автор Тема: RuleUser / Портирование на GTK3  (Прочитано 30365 раз)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
RuleUser / Портирование на GTK3
« : 22.09.2019 09:51:52 »
Всем привет!
Недавно узнал, что из репозиториев p8+ данное приложение пропало по понятным причинам.
Решил немного поковыряться, вроде приложение несложное, и попытаться выполнить портирование на GTK3.
Исходный код взял отсюда https://github.com/temaps/ruleuser и начал колдовать.
Сейчас добился запуска приложения и оно выглядит так (см. вложения).
Дальше продвинуться пока тяжело, так как с Python и GTK в принципе практически не знаком.
Есть некоторые ошибки, которые не получается никак решить, поэтому этот код пришлось банально закомментировать. Может быть есть на форуме умельцы или просто желающие, которые в состояние их разрешить или хотя бы подсказать решение ?
В ближайшее время подготовлю pull request и отправлю на GitHub.

Сейчас ошибки примерно такие:
--
w = Gdk.get_default_root_window()
p = Gdk.atom_intern('_NET_WORKAREA', False)
x = w.property_get(p)[2][2:4][0] - 10
y = w.property_get(p)[2][2:4][1] - 30
AttributeError: 'X11Window' object has no attribute 'property_get'
--
self.userList.set_default_sort_func(None)
TypeError: Argument 1 does not allow None as a value
--
self.icon_theme = Gtk.icon_theme_get_default()
AttributeError: 'gi.repository.Gtk' object has no attribute 'icon_theme_get_default'
--
self.fontDefault = self.read_config("tree", "font_default")
Gtk.settings_get_default().props.gtk_font_name = self.fontDefault
AttributeError: 'gi.repository.Gtk' object has no attribute 'settings_get_default'
--
self.cfg.bg_color = self.window.get_style().copy().bg[Gtk.STATE_NORMAL]
AttributeError: 'gi.repository.Gtk' object has no attribute 'STATE_NORMAL'
--
self.cfg.treeView.set_events(Gdk.POINTER_MOTION_MASK)
AttributeError: 'gi.repository.Gdk' object has no attribute 'POINTER_MOTION_MASK'
--
TARGETS = [('TREE_MAIN', Gtk.TARGET_SAME_WIDGET, 0), ('TEXT', 0, 0)]
AttributeError: 'gi.repository.Gtk' object has no attribute 'TARGET_SAME_WIDGET'
--
button.unset_flags(Gtk.CAN_FOCUS)
AttributeError: 'Button' object has no attribute 'unset_flags'
--
self.toolbarMain.set_tooltips(True)
AttributeError: 'Toolbar' object has no attribute 'set_tooltips'
--
button.unset_flags(Gtk.CAN_FOCUS)
AttributeError: 'ToolButton' object has no attribute 'unset_flags'
--
self.vboxMain.pack_start(self.hbox_entry, expand=False, fill=False, padding=0)
AttributeError: Program instance has no attribute 'hbox_entry'
--
renderer.set_property("weight", Pango.WEIGHT_BOLD)
AttributeError: 'gi.repository.Pango' object has no attribute 'WEIGHT_BOLD'
--
renderer.set_property("weight", Pango.WEIGHT_NORMAL)
AttributeError: 'gi.repository.Pango' object has no attribute 'WEIGHT_NORMAL'
--
AttributeError: 'gi.repository.Gtk' object has no attribute 'SELECTION_MULTIPLE'
AttributeError: 'gi.repository.Gtk' object has no attribute 'SHADOW_ETCHED_IN'
AttributeError: 'gi.repository.Gtk' object has no attribute 'POLICY_AUTOMATIC'
AttributeError: 'gi.repository.Gtk' object has no attribute 'ORIENTATION_HORIZONTAL'
AttributeError: 'gi.repository.Gtk' object has no attribute 'EXPAND'
AttributeError: 'gi.repository.Gtk' object has no attribute 'TOOLBAR_ICONS'
AttributeError: 'gi.repository.Gtk' object has no attribute 'RELIEF_NONE'
AttributeError: 'gi.repository.Gtk' object has no attribute 'EXPAND'
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #1 : 23.09.2019 20:19:21 »
Немного продвигаюсь, интерфейс начинает приобретать похожий вид.
Но появились некоторые вопросы.
В текущем варианте так:
item.set_expand(Gtk.EXPAND)
self.buttonHideTimer.unset_flags(Gtk.CAN_FOCUS)
Никто не подскажет, как это должно выглядеть в GTK3 ?
Найти не могу в документации.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #2 : 24.09.2019 21:30:04 »
https://github.com/berkut-174/ruleuser/tree/gtk3-porting

Пока вот так (см. вложения).
Проблемные места замазал #~ в начале.
Кто хочет присоединиться и помочь, я не откажусь :-)

PS. Пока python2.7.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #3 : 25.09.2019 17:58:00 »
К сожалению эти строки не могу портировать:
$ grep '#~' *.py
config.py:        #~ self.userList.set_default_sort_func(None)
config.py:        #~ self.demoList.set_default_sort_func(None)
config.py:        #~ self.timersList.set_default_sort_func(None)
ruleuser.py:        #~ self.cfg.bg_color = self.window.get_style().copy().bg[Gtk.StateFlags.NORMAL]
ruleuser.py:        #~ toolbar.set_tooltips(True)
ruleuser.py:        #~ self.textviewStatus.modify_base(Gtk.StateFlags.NORMAL, self.cfg.bg_color)
ruleuser.py:        #~ self.toolbarMain.set_tooltips(True)
ruleuser.py:        #~ self.toolbarTree.set_tooltips(True)
widget.py:        #~ self.entry_base_color = self.entry.get_style().copy().base[Gtk.StateFlags.NORMAL]
widget.py:            #~ self.entry.modify_base(Gtk.StateFlags.NORMAL, self.entry_base_color)
widget.py:        #~ toolbar.set_tooltips(True)
widget.py:    #~ base_color = entry.child.get_style().copy().base[Gtk.StateFlags.NORMAL]
widget.py:        #~ entry.child.modify_base(Gtk.StateFlags.NORMAL, base_color)
window2.py:        #~ toolbar.set_tooltips(True)
window2.py:        #~ self.toolbarTree.set_tooltips(True)
window2.py:        #~ color = self.textview.get_style().copy().base[Gtk.StateFlags.NORMAL]
window2.py:        #~ self.textview.modify_base(Gtk.StateFlags.INSENSITIVE, color)

Часть из них видимо устарела и возможно вообще не требуется, не знаю.
В остальном приложение запускается, работает на первый взгляд, но нужно проверять на клиентах уже именно подключение. Интерфейс немного "съехавший", нужно править размеры элементов видимо. Ещё один нюанс заметил, после формирования окна удалённого клиента в окне программы и наведении на верхнюю панельку мышкой, всё это окно становится серым. Как это исправить, пока не знаю, но мне кажется что-то такое было, когда xak-altsp разрабатывал, а я тестировал. Как он это фиксил, понятия не имею.

Да, буду рад, если кто cможет проверить на клиентах p9.
« Последнее редактирование: 25.09.2019 19:05:40 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #4 : 25.09.2019 20:02:46 »
Собрал пакеты для p9.
« Последнее редактирование: 26.09.2019 15:13:47 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн tema

  • alt linux team
  • ***
  • Сообщений: 2 073
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #5 : 26.09.2019 01:50:21 »
Я пытался им заниматься и использую в компьютерном классе. Но закопался со школьными делами и никак не могу к нему вернуться из-за этого  :'-(

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #6 : 26.09.2019 07:20:59 »
Понятно.
Ну так что с версией - делаю 1.2.0 или 2.0.0 ?
Просто можно уже вернуть текущую версию в бранчи, я бы завёл баг на багзилле о просьба сделать это, всё остальное уже есть, включая спек.
Сноси Винду, переходи на Линукс ! :)

Оффлайн tema

  • alt linux team
  • ***
  • Сообщений: 2 073
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #7 : 26.09.2019 12:04:50 »
Понятно.
Ну так что с версией - делаю 1.2.0 или 2.0.0 ?
Просто можно уже вернуть текущую версию в бранчи, я бы завёл баг на багзилле о просьба сделать это, всё остальное уже есть, включая спек.
Можно я сегодня вечером гляну код. Просто там есть изменения, которые я у себя вносил для поддержки кое-какрго оборудования и настроек. Я сразу напишу сюда

Оффлайн goodluck

  • Завсегдатай
  • *
  • Сообщений: 90
Re: RuleUser / Портирование на GTK3
« Ответ #8 : 26.09.2019 13:28:36 »
Здравствуйте. Поставил пакеты на p9. Из меню запускаться не хочет, а из терминала выдает это
[alex@teacher ~]$ ruleuser
Traceback (most recent call last):
  File "ruleuser.py", line 37, in <module>
    from vnc import *
  File "/usr/share/ruleuser/vnc.py", line 35, in <module>
    from tree import *
  File "/usr/share/ruleuser/tree.py", line 35, in <module>
    from util import *
  File "/usr/share/ruleuser/util.py", line 35, in <module>
    import gi
ImportError: No module named gi

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #9 : 26.09.2019 13:35:08 »
ImportError: No module named gi
Забыл добавить зависимость я видимо:
apt-get install python-module-pygobject
Сноси Винду, переходи на Линукс ! :)

Оффлайн goodluck

  • Завсегдатай
  • *
  • Сообщений: 90
Re: RuleUser / Портирование на GTK3
« Ответ #10 : 26.09.2019 13:38:43 »
python-module-pygobject установлен. А если система 64-битная может надо i586-python-module-pygobject.32bit?

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #11 : 26.09.2019 13:41:47 »
А если система 64-битная может надо i586-python-module-pygobject.32bit?
Нет, не должно.

Я чуть позже гляну список установленных у меня модулей и напишу, сейчас нет доступа к той машине и клиентов на p9 тоже нет проверить под рукой.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #12 : 26.09.2019 13:53:09 »
Так третий нужно ставить, второй не содержит gi:
apt-get install python-module-pygobject3
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #13 : 26.09.2019 15:09:34 »
И ещё нужно выполнить:
apt-get install libgtk3vnc-gir
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 147
    • Email
Re: RuleUser / Портирование на GTK3
« Ответ #14 : 26.09.2019 15:15:36 »
Поправил файлы выше, лучше на них сразу и проверить, они должны вытащить по зависимостям недостающие пакеты.
Сноси Винду, переходи на Линукс ! :)