Создание пользовательской боковой панели с помощью LibreOffice SDK

Автор AntonSukhov, 14 августа 2023, 15:32

0 Пользователи и 1 гость просматривают эту тему.

AntonSukhov

Добрый день.
Вопрос: как с помощью LibreOffice SDK в LibreOffice Calc можно создать пользовательскую боковую панель (см. рисунок)?

sokol92

Проще (на мой взгляд) будет создать немодальный диалог.
Владимир.

AntonSukhov

А как его создать? Подскажите пожалуйста. Мне нужно, чтобы эта форма была закреплена в боковой части, как боковая панель

sokol92

О диалогах написано в главе 18 "Диалоги и элементы управления" классической книги А.Питоньяка OOME_4_0.odt (к сожалению, сейчас, по-видимому, проблемы с сайтом А.Питоньяка).
Вы можете расположить диалог в любом месте экрана. Диалог можно сделать неперемещаемым.

Техника работы с немодальными диалогами имеет специфику. Когда у Вас будет работающий прототип,  мы сможем помочь с техническими деталями.
Владимир.

AntonSukhov

Вот пример кода, который реализует диалоговое окно, оно только модальное.
class DataDialog:
    """
    Окно Данные
    """
    def __init__(self, context):
        """
        Определяет для текущего класса атрибуты и их значения

        Параметры:
            context (any): контекст текущего класса
        """
        self.__context = context
        self.__serviceManager = context.getServiceManager()
   
    def CreateWindow(self):
        """
        Создаёт окно Данные
        """
        dialog = self.__serviceManager.createInstanceWithContext("com.sun.star.awt.UnoControlDialog", self.__context)
        dialogModel = self.__serviceManager.createInstanceWithContext("com.sun.star.awt.UnoControlDialogModel", self.__context)
        dialogModel.setPropertyValues(("Height", "Width", "Title",),
                                      (100, 100, "Данные",))
       
        dialog.setModel(dialogModel)
        dialog.setVisible(True)      #Показать окно

        dialogState: int = dialog.execute()

sokol92

В сети много примеров как модальных, так и немодальных диалогов.
Владимир.

economist

@AntonSukhov, "формы" ввода можно нарисовать контролами и прямо на листе Calc/странице Writer. Плюс данного подхода - необычный и крайне функциональный вид "диалогов", легкий подгон под разные разрешения экрана, готовая связь с SQL БД - odbc/jdbc/файловыми. Стандартные Basic-диалоги сложно кодятся и сделать их красивыми сложно, хороших примеров я не видел, чуть что-то нестандартное разрешение/зум - и все "поехало". 

Можно также нарисовать формы на Python - TKinter/EasyGUI, но сейчас модно-молодежно делать web-формы (готовая авторизация AD/LDAP под Apache/NGINX, автоподгон под моб. бразуеры, работа отовсюду итд).
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...