Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.
   

Вернуться   Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. > Разработка > Поддержка локальной разработки модулей

Ответ
 
Опции темы Опции просмотра
Старый 21.02.2014, 11:32   #1
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию PyXBMCt - фреймворк для создания интерфейса плагинов

Тема на оф. форуме существует уже давно, и я решил, что стоит написать и здесь.
PyXBMCt - фреймворк для создания плагинов XBMC с собственным интерфейсом на чистом Питоне. Фреймворк абстрагирует классы модуля xbmcgui, предлагая API, сильно напоминающий известный фреймворк PyQt, отсюда и название. Те, кто знаком с Питоновскими фреймворками для создания десктопных GUI - PyQt, PySide, Tkinter и т. п. - должны легко его освоить.
Фреймворк полностью готов к использованию и включает все необходимые текстуры для оформления элементов интерфейса плагина XBMC.
Пример использования для создания диалога входа на сайт можно увидеть в моем плагине plugin.video.ex.ua.alternative: http://xbmc.ru/forum/showthread.php?t=4291

PHP код:
# -*- coding: utf-8 -*-
# Name:        login_widow
# Author:      Roman V.M.
# Created:     18.02.2014
# Licence:     GPL v.3: http://www.gnu.org/copyleft/gpl.html

import sys
import xbmcaddon

_addon 
xbmcaddon.Addon()
sys.path.append(_addon.getAddonInfo('path').decode('utf-8'))
from pyxbmct.addonwindow import *


class 
LoginWindow(AddonDialogWindow):
    
""" Login window class """
    
def __init__(selfusername=''password=''captcha=''):
        
""" Class constructor """
        
super(LoginWindowself).__init__()
        
self.setGeometry(50030052)
        
self.setWindowTitle(u'Вход на ex.ua')
        
self.username username
        self
.password password
        self
.captcha captcha
        self
.captcha_text ''
        
self.captcha_present len(self.captcha)
        
self.login_cancelled True
        self
.set_controls()
        
self.set_navigation()
        
self.doModal()

    
def set_controls(self):
        
""" Set UI controls """
        
username_label Label(u'Имя пользователя:')
        
self.placeControl(username_label00)
        
self.username_entry Edit(u'Введите имя пользователя')
        
self.placeControl(self.username_entry01)
        
self.username_entry.setText(self.username)
        
password_label Label(u'Пароль:')
        
self.placeControl(password_label10)
        
self.password_entry Edit(u'Введите пароль'isPassword=True)
        
self.placeControl(self.password_entry11)
        
self.password_entry.setText(self.password)
        
self.captcha_image Image(self.captcha)
        
self.placeControl(self.captcha_image20rowspan=2)
        
self.captcha_image.setVisible(self.captcha_present)
        
self.captcha_label Label(u'Текст на картинке:')
        
self.placeControl(self.captcha_label21)
        
self.captcha_label.setVisible(self.captcha_present)
        
self.captcha_entry Edit(u'Введите текст на картинке')
        
self.placeControl(self.captcha_entry31)
        
self.captcha_entry.setVisible(self.captcha_present)
        
self.cancel_button Button(u'Отмена')
        
self.placeControl(self.cancel_button40)
        
self.connect(self.cancel_buttonself.close)
        
self.login_button Button(u'Войти')
        
self.placeControl(self.login_button41)
        
self.connect(self.login_buttonself.login)

    
def set_navigation(self):
        
""" Set navigation rules for controls """
        
self.username_entry.controlUp(self.login_button)
        
self.username_entry.controlDown(self.password_entry)
        
self.password_entry.controlUp(self.username_entry)
        if 
self.captcha_present:
            
self.password_entry.controlDown(self.captcha_entry)
            
self.captcha_entry.controlUp(self.password_entry)
            
self.captcha_entry.controlDown(self.login_button)
            
self.login_button.setNavigation(self.captcha_entryself.username_entryself.cancel_buttonself.cancel_button)
            
self.cancel_button.setNavigation(self.captcha_entryself.username_entryself.login_buttonself.login_button)
        else:
            
self.password_entry.controlDown(self.login_button)
            
self.login_button.setNavigation(self.password_entryself.username_entryself.cancel_buttonself.cancel_button)
            
self.cancel_button.setNavigation(self.password_entryself.username_entryself.login_buttonself.login_button)
        
self.setFocus(self.username_entry)

    
def login(self):
        
""" Login user """
        
self.login_cancelled False
        self
.username self.username_entry.getText()
        
self.password self.password_entry.getText()
        if 
self.captcha_present:
            
self.captcha_text self.captcha_entry.getText()
        
self.close()

    
def close(self):
        
""" Cancel login """
        
if self.login_cancelled:
            
self.username ''
            
self.password ''
            
self.captcha_text ''
        
super(LoginWindowself).close()

def main():
    
pass

if __name__ == '__main__':
    
main() 

Тема на оф форуме: http://forum.xbmc.org/showthread.php?tid=174859
Репозиторий на гитхабе: https://github.com/romanvm/PyXBMCt
Документация на английском: http://romanvm.github.io/PyXBMCt/
Миниатюры
Нажмите на изображение для увеличения
Название: screenshot001.jpg
Просмотров: 374
Размер:	40.5 Кб
ID:	3451  
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.

Последний раз редактировалось Roman_V_M; 13.02.2016 в 00:40.
Roman_V_M вне форума   Ответить с цитированием
   
Старый 25.02.2014, 02:07   #2
Silhouette
Senior Member
 
Регистрация: 29.12.2010
Сообщений: 776
По умолчанию

Спасибо, нарыл когда то тему на офф сайте, успешно используется в некоторых плагинах
__________________
https://github.com/Silhouette2022/kodi/raw/master/repository.silhouette.zip
Silhouette вне форума   Ответить с цитированием
Старый 27.02.2014, 23:28   #3
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Silhouette Посмотреть сообщение
Спасибо, нарыл когда то тему на офф сайте, успешно используется в некоторых плагинах
Спасибо. Рад, что этим пользуется еще кто-то, кроме меня. Кстати, обратите внимание на последний коммит на гитхабе. Он решает проблему несовместимости с XBMC под Виндой с русскими буквами в путях.
Как выяснилось, декодировать в utf-8 нужно только путь импорта, если используется. Пути к картинкам перекодировать не нужно и, наоборот, вредно.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 12.02.2016, 17:58   #4
-=Vd=-
Senior Member
 
Аватар для -=Vd=-
 
Регистрация: 14.02.2012
Адрес: Одесса
Сообщений: 1,689
По умолчанию

Роман, какая-то непонятка, добавляю ListView в окно и хочу установить фокус на него:
Код:
		self.list = pyxbmct.List('font14', _itemHeight=80)
		self.placeControl(self.list, 0, 0)
		self.setFocus(self.list)
		self.connect(self.list, self.make_choice)
а он мне такой в логе
Код:
16:55:01 T:24468   ERROR: Control 3005 in window 13000 has been asked to focus, but it can't
ну и на клавиатуру реагирует, если навести курсор мыши на него.
-=Vd=- вне форума   Ответить с цитированием
Старый 12.02.2016, 20:26   #5
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от -=Vd=- Посмотреть сообщение
Роман, какая-то непонятка, добавляю ListView в окно и хочу установить фокус на него:
Код:
		self.list = pyxbmct.List('font14', _itemHeight=80)
		self.placeControl(self.list, 0, 0)
		self.setFocus(self.list)
		self.connect(self.list, self.make_choice)
а он мне такой в логе
Код:
16:55:01 T:24468   ERROR: Control 3005 in window 13000 has been asked to focus, but it can't
ну и на клавиатуру реагирует, если навести курсор мыши на него.
Может потому, что List пустой? Ведь с технической точки зрения фокусируется не сам список, а ListItem в нем.
Глянул в своем старом плагине субтитров для Addic7ed (если честно, давно не использовал сабж) - у меня фокус ставился после заполнения списка.
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 13.02.2016, 00:22   #6
-=Vd=-
Senior Member
 
Аватар для -=Vd=-
 
Регистрация: 14.02.2012
Адрес: Одесса
Сообщений: 1,689
По умолчанию

Цитата:
Сообщение от Roman_V_M Посмотреть сообщение
Может потому, что List пустой? Ведь с технической точки зрения фокусируется не сам список, а ListItem в нем.
Глянул в своем старом плагине субтитров для Addic7ed (если честно, давно не использовал сабж) - у меня фокус ставился после заполнения списка.
Ага, список то я заполняю позже. Спасибо, проверим.
-=Vd=- вне форума   Ответить с цитированием
Старый 06.03.2017, 18:40   #7
matkin
Member
 
Аватар для matkin
 
Регистрация: 01.03.2016
Сообщений: 87
По умолчанию

Уважаемый Roman_V_M
Если Вам не трудно, подскажите, пожайлуста, как обстоят дела с script.module.pyxbmct
в Kodi (17.1-RC1 Git:20170223-nogitfound) со скином Estuary ?
Скрипт не работает.
__________________
Раннее развитие детей, воспитание ребенка, восстановление после родов. Портал Активная Мама https://active-mama.com/ про школу и детский сад. Здоровье ребенка, красота и здоровье кормящей матери, отдых и игры с детьми.
matkin вне форума   Ответить с цитированием
Старый 07.03.2017, 09:13   #8
matkin
Member
 
Аватар для matkin
 
Регистрация: 01.03.2016
Сообщений: 87
По умолчанию

Уважаемый Roman_V_M
Установить script.module.pyxbmct-master.zip не получилось - ругается на отсутствие addon.xml
Пришлось выцарапать директорию script.module.pyxbmct, зазиповать ее и затем установить.
Установилось нормально и скрипт заработал.
__________________
Раннее развитие детей, воспитание ребенка, восстановление после родов. Портал Активная Мама https://active-mama.com/ про школу и детский сад. Здоровье ребенка, красота и здоровье кормящей матери, отдых и игры с детьми.
matkin вне форума   Ответить с цитированием
Старый 07.03.2017, 15:32   #9
Roman_V_M
Senior Member
 
Аватар для Roman_V_M
 
Регистрация: 12.06.2011
Адрес: Киев
Сообщений: 1,933
По умолчанию

Устанавливать автоматически генерируемый Гитхабом ZIP - это надо додуматься. Чем вас вкладка с релизами или официальный репозиторий Коди не устраивает?
__________________
Координатор русского перевода Kodi:
https://www.transifex.com/projects/p/kodi-main/
------------------------------
Raspberry PI 2 + LibreELEC 8 (Kodi 17)
Samsung Galaxy Tab A 10.1 + Kodi 17 for Android
------------------------------
Читаем и пополняем Википедию форума: http://xbmc.ru/wiki
------------------------------
На любые личные сообщения, не связанные с переводом Kodi, не отвечаю. Для обсуждений и советов есть форум.
Roman_V_M вне форума   Ответить с цитированием
Старый 07.03.2017, 16:48   #10
matkin
Member
 
Аватар для matkin
 
Регистрация: 01.03.2016
Сообщений: 87
По умолчанию

Уважаемый Roman_V_M
Для простого лузера: что Гитхаб, что НЕГитхаб все едино (как у Высоцкого - "Земле: ей все едино - аппатиты и навоз...")
Вопрос такой есть - как при помощи script.module.pyxbmct выводить на экран текст крупным шрифтом? Шрифта, крупнее font13 или font14 я несмог вывести. Например - font20
__________________
Раннее развитие детей, воспитание ребенка, восстановление после родов. Портал Активная Мама https://active-mama.com/ про школу и детский сад. Здоровье ребенка, красота и здоровье кормящей матери, отдых и игры с детьми.
matkin вне форума   Ответить с цитированием
Ответ
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Артефакты интерфейса Gam Поддержка платформы Windows 19 12.01.2014 00:17
Глючок интерфейса Basilio_Cat Общие темы для обсуждения 4 25.12.2011 20:26
Инструменты для создания скинов dremius Помощь по скинам 4 03.03.2010 10:25


Текущее время: 21:02. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.