Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Программирование
  3. Плагин-строй
  4. CE Compact View

CE Compact View

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

    Функции

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

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

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

    1 ответ Последний ответ
    0
  • MasterGHM Не в сети
    MasterGHM Не в сети
    MasterGH Администраторы
    написал в отредактировано
    #2

    Ниже находится обучающий пример плагина для 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

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы