CELua[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    CE Compact View

    Запланировано Прикреплена Закрыта Перенесена Плагин-строй
    2 Сообщения 1 Posters 60 Просмотры 1 Watching
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • MasterGHM Не в сети
      MasterGH Администраторы
      отредактировано

      Функции

      1. Контекстное меню. Компактное/ не компактное окно CE
      2. Сохранение и загрузка положения и размера формы CE
      3. Сохранение и загрузка компактного состояния формы или не компактного

      После запуска, CE будет там, где её (CE) закрыли с позицией, размерами и с состоянием "Компактны режим", если последний был включен.

      Параметры сохраняются на жесткий диск в файл "..\autorun\userdata.txt"

      1 ответ Последний ответ Ответить Цитировать 0
      • MasterGHM Не в сети
        MasterGH Администраторы
        отредактировано

        Ниже находится обучающий пример плагина для CE Lua с установкой компактного режима применяя парадигму ООП — инкапсуляции.

        Для программирования плагинов на Lua могут пригодится приемы ООП. Это касается сущностей, их поведений и взаимодействий между ними. В данном примере CECompactView — описание класса на основе мета-таблицы и оно является сущностью. Функции класса — uncompact() и compact(), которые реализуют поведения этой сущности. Основной скрипт с описанием сущности можно поместить в отдельный файл .lua и далее можно кратко инициализировать сущность и управлять ей

        Например

        \-- Создание экземпляра класса через new() функцию, где аргументом является состояние компактный или некомпактный
        ce_compact_view = CECompactView:new(true)
        
        \-- Проверить состояние
        \--print(ce_compact_view:get_state() and 'Compact View Mode' or 'Full View Mode')
        
        \-- Установить компактный режим
        \--ce_compact_view:compact()
        
        \-- Установить не компактный режим
        \--ce_compact_view:uncompact()
        

        Сам класс или мета-таблица.

        \-- Класс инкапсулирующий поведения компактного состояния окна CE
        CECompactView = {}
        
        function CECompactView:new(state)
        
        	local obj = {}
        	
        	-- Состояние компактное или нет: true или false
        	obj.compact_mode = state
        	
        	-- Форма CE, где getMainForm — поддерживаемая функция CE и возвращает главную форму CE
        	obj.form_ce = getMainForm()
        	
        	-- Получение элементов контекстного меню главной формы
        	local menu_items = obj.form_ce.menu.items
        	
        	-- Создание нового контекстного меню с названием CompactView и именем ItemCompact
        	obj.menu_item_compact = createMenuItem(menu_items)
        	obj.menu_item_compact.name = 'ItemCompact'
        	obj.menu_item_compact.caption = 'CompactView'
        	
        	-- Добавление контекстного меню на главную форму
        	menu_items.add(obj.menu_item_compact)
        
        	-- Сменить состояние окна CE: компактное или нет
        	function obj:set(state)
        		-- view_components состояния скрытия компонентов
        		obj.compact_mode = state
        		-- видимость компонентов обратна компактному режиму
        		local view_components = not state
        		obj.form_ce.panel1.visible = view_components
        		obj.form_ce.panel4.visible = view_components
        		obj.form_ce.panel5.visible = view_components
        		obj.form_ce.Splitter1.visible = view_components
        		-- Записать имя по состоянию
        		obj.menu_item_compact.caption = state and 'Full View Mode' or 'Compact View Mode' 
        		-- Поставить обработчик по состоянию
        		obj.menu_item_compact.onClick = state and obj.compact or obj.uncompact
        		
        		print(state and 'Compact View Mode' or 'Full View Mode')
        	end
        
        	-- Некопактное окно CE
        	function obj:uncompact()
        		obj:set(true)
        	end
        
        	-- Компактное окно CE
        	function obj:compact()
        		obj:set(false)
        	end
        
        	-- Состояние окна CE: компактное или нет
        	function obj:get_state()
        		return obj.compact_mode
        	end
        
        	-- Связь таблицы (смотрим докуметацию по Lua)
        	setmetatable(obj, self)
        	obj.__index = self
        
        	-- Активировать состояние
        	obj:set(state)
        
        	-- Возвращает ссылку на экземпляр
        	return obj
        end
        \------------
        
        \-- Создание экземпляра класса
        ce_compact_view = CECompactView:new(true)
        
        \-- Проверить состояние
        \--print(ce_compact_view:get_state() and 'Compact View Mode' or 'Full View Mode')
        
        \-- Установить компактный режим
        \--ce_compact_view:compact()
        
        \-- Установить не компактный режим
        \--ce_compact_view:uncompact()
        

        Скрипт можно сохранить в Lua файл и добавить в папку autorun.

        1 ответ Последний ответ Ответить Цитировать 0

        • 1 / 1
        • Первое сообщение
          Последнее сообщение
        Powered by NodeBB | Contributors
        СeLua[RU] 2025©