Описание поля StartPanelMode в структуре OpenPanelInfo

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by buniak_a_h »

Помогите, пожалуйста, разобраться!
Делал панельный модуль в LUA-скрипте и наткнулся на следующее:
Manual of LuaFAR 3 wrote: StartPanelMode
Режим просмотра, который будет установлен после создания панели плагина. Он должен быть в формате '0'+<номер режима просмотра>. Например, '1' или 0x31 будут устанавливать Краткий режим просмотра. Если вы не хотите менять режим просмотра панели после запуска плагина, установите StartPanelMode в 0.
А на самом деле замечено следующее:
  • при StartPanelMode="1" режим не устанавливается в "Краткий" (как написано в мануале), зато учитывается поле CustomColumnData в структуре tPluginPanelItem
  • при StartPanelMode=0x031 не учитывается поле CustomColumnData в структуре tPluginPanelItem, зато режим устанавливается в первый (краткий)
  • «должен быть в формате '0'+<номер режима просмотра>» - что-то совсем странное: указываю StartPanelMode = "0n" (где n - от 1 до 4-х) - во всех случаях режим панели √ Alternative full. То ли я не понимаю описания, то ли ошибка в мануале, то ли в реализации (панельного модуля?)
Дополнительный вопрос - пожелание: нельзя ли в мануале отразить, какие факторы могут влиять на CustomColumnData? Я, например, нигде не нашёл, почему оно зависит от StartPanelMode (представляете, как я искал причину того, что CustomColumnData просто игнорируется!!!).
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by Shmuel »

buniak_a_h wrote: Tue 10 Mar, 2020 00:52 Manual of LuaFAR 3 писал(а):
Вроде бы "Manual of LuaFAR 3" такого не содержит. Видимо скопировано из Энциклопедии.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by Shmuel »

'0'+<номер режима просмотра> означает символ от '0' до '9' в терминах языка C.
В Lua используйте числа: ("0"):byte() ... ("9"):byte() то есть от 0x30 до 0x39.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by buniak_a_h »

Shmuel wrote: Tue 10 Mar, 2020 02:00 Вроде бы "Manual of LuaFAR 3" такого не содержит. Видимо скопировано из Энциклопедии.
Да, видимо, энциклопедия. Просто в процитированный раздел я перешёл из описания export.GetOpenPanelInfo, а оно - в мануале по ЛуаФАР 3. Заголовок остался.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by IgorZ »

Можно посмотреть, как это сделано у меня в TmpPanel. Там и установка режима, и CustomColumnData используется.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by buniak_a_h »

IgorZ, я как раз сделал по образу и подобию, но ненавижу делать что-то без понятия, "как попка". У Вас там присвоена "1" - в мануале написано, что это - первый (краткий) режим, а устанавливается 10-й (альтернативный). Я попробовал менять "1" на другие цифры - эффект только для "0", но не то, что хотелось бы. И Ваш пример противоречит сообщению Shmuel-я. К тому же в комментариях к этой строке написано вообще -- активный режим (наш единственный) - (а) я так и не понял, почему он "единственный", когда прекрасно можно переключиться на другой; (б) почему включается именно 10-й и (в) почему в другом режиме не учитывается поле CustomColumnData в структуре tPluginPanelItem.
Last edited by buniak_a_h on Fri 13 Mar, 2020 10:51, edited 1 time in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by IgorZ »

buniak_a_h wrote: Fri 13 Mar, 2020 10:51 IgorZ, я как раз сделал по образу и подобию, но ненавижу делать что-то без понятия, "как попка". У Вас там присвоена "1" - в мануале написано, что это - первый (краткий) режим, а устанавливается 10-й (альтернативный). Я попробовал менять "1" на другие цифры - эффект только для "0", но не то, что хотелось бы. И Ваш пример противоречит сообщению Shmuel-я. К тому же в комментариях к этой строке написано вообще -- активный режим (наш единственный) - (а) я так и не понял, почему он "единственный", когда прекрасно можно переключиться на другой; (б) почему включается именно 10-й и (в) почему в другом режиме не учитывается поле CustomColumnData в структуре tPluginPanelItem.
Смотрим код:

Code: Select all

    PanelModesArray = {{ -- режим колонок 0
        ColumnTypes = "C0", -- пользовательская колонка
        ColumnWidths = "0", -- на всю панель
        ColumnTitles = {L.ColumnName}, -- заголовок колонки
        StatusColumnTypes = "N", -- в статусной строке - имя
        StatusColumnWidths = "0", -- на всю панель
        Flags = F.PMFLAGS_FULLSCREEN, -- панель занимает весь экран
      },{},{},{},{},{},{},{},{},{ -- режим колонок 9
        ColumnTypes = "C0", -- пользовательская колонка
        ColumnWidths = "0", -- на всю панель
        ColumnTitles = {L.ColumnName}, -- заголовок колонки
        StatusColumnTypes = "N", -- в статусной строке - имя
        StatusColumnWidths = "0", -- на всю панель
        Flags = F.PMFLAGS_NONE, -- панель не занимает весь экран
      },
    },
    PanelModesNumber = 10, -- количество переопределённых режимов
    StartPanelMode = S.FullScreen and 0x30 or 0x39, -- активный режим
Массив PanelModesArray содержит 10 таблиц. Этому соответстует PanelModesNumber = 10. Из комментариев видно, что каждая таблица соответствует режиму от 0-го (тот, что Вы безосновательно называете 10-м) до 9-го. Все таблицы, кроме первой и последней, пустые, то есть, соответствующие режимы не переопределяются, на самом деле. StartPanelMode, в зависимости от настроек, присваивается или 0x30 или 0x39, что полностью соответствует
Shmuel wrote: Tue 10 Mar, 2020 02:08 '0'+<номер режима просмотра> означает символ от '0' до '9' в терминах языка C.
В Lua используйте числа: ("0"):byte() ... ("9"):byte() то есть от 0x30 до 0x39.
Комментарий "(наш единственный)" в актуальной версии не найден.
ColumnTypes = "C0" указывает, что в данном режиме выводится только одна колонка: как раз CustomColumnData.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Описание поля StartPanelMode в структуре OpenPanelInfo

Post by buniak_a_h »

IgorZ, спасибо. Дело оказалось в поле PanelModesArray[1].ColumnTypes .
Очень много разных факторов связано, упустил.
IgorZ wrote: Fri 13 Mar, 2020 11:24 Комментарий "(наш единственный)" в актуальной версии не найден.
У меня самая первая версия Вашего скрипта, к тому же мною переделанная (я Вам высылал - фильтрация и "внутренние" архивированные файлы). Но потом совсем отказался. С тех пор у Вас многое изменилось, я уже не следил.
Last edited by buniak_a_h on Fri 13 Mar, 2020 11:52, edited 1 time in total.
Post Reply

Return to “Нужна помощь”