Smart Home/End для меню/списков

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

Smart Home/End для меню/списков

Post by HaRT »

HaRT wrote: Mon 13 May, 2013 17:45 А на Home/End назначить умное (smart) поведение наподобие того, как Home ведёт себя в программерских редакторах, когда в начале строки есть незначащие (пробельные) символы.
Что-то меня торкнуло, и я реализовал нечто подобное для Home применительно к пометке элементов:
Наибольшая польза ожидается в историях полей ввода, где ряд элементов помечен и поэтому сгруппирован вверху.
В меню с нестандартными пометками элементов (например, меню фильтров панели) может вести себя неожиданно.
Если я чего-то не учёл или есть предложения по улучшению, прошу высказываться.
Last edited by HaRT on Fri 07 Feb, 2025 15:56, edited 1 time in total.
Reason: Код немного упрощён с использованием «скорописи» LuaFAR
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14580
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Smart Home/End для меню/списков

Post by John Doe »

Вы сознательно избегаете использования actl.GetWindowInfo, hDlg\ListInfo и пр.?
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

Smart Home/End для меню/списков

Post by HaRT »

John Doe wrote: Fri 07 Feb, 2025 12:15 Вы сознательно избегаете использования actl.GetWindowInfo, hDlg\ListInfo и пр.?
Нет, я про них просто не знал. Спасибо. Что ещё посоветуете упростить, не вылезая в Macro-API?

P.S. Я упростил код с учётом этих возможностей. Рад принять дальнейшие пожелания по улучшению.
Last edited by HaRT on Fri 07 Feb, 2025 15:58, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14580
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Smart Home/End для меню/списков

Post by John Doe »

Предлагаю упростить логику.
Если курсор на первом элементе, то работаем: ищем первый попавшийся неотмеченный элемент.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

Smart Home/End для меню/списков

Post by HaRT »

John Doe wrote: Fri 07 Feb, 2025 18:46 Предлагаю упростить логику.
Я пока поживу с реализованной и посмотрю, удобно ли. Если будет неудобно, попробую ваше предложение.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14580
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Smart Home/End для меню/списков

Post by John Doe »

John Doe wrote: Fri 07 Feb, 2025 18:46 Если курсор на первом элементе, то работаем: ищем первый попавшийся неотмеченный элемент.

Code: Select all

-- https://forum.farmanager.com/viewtopic.php?p=179739#p179739
F = far.Flags
Macro
  description:"Smart Home"
  area:'Menu'
  key:'Home'
  action: ->
    hDlg = actl.GetWindowInfo!.Id
    :SelectPos,:ItemsNumber = hDlg\ListInfo 1
    Keys"AKey"
    if (hDlg\ListInfo 1).SelectPos==SelectPos
      for idx=SelectPos,ItemsNumber
        item = hDlg\ListGetItem 1, idx
        if (bit64.band item.Flags, F.LIF_CHECKED + F.LIF_SEPARATOR + F.LIF_HIDDEN) == 0
          hDlg\ListSetCurPos 1, SelectPos: idx
          break
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11454
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

Smart Home/End для меню/списков

Post by HaRT »

John Doe wrote: Fri 07 Feb, 2025 22:32 if (bit64.band item.Flags, F.LIF_CHECKED + F.LIF_SEPARATOR) == 0
Если я правильно понимаю, это может дать нежелательный эффект для элементов с LIF_HIDDEN, LIF_DISABLE или LIF_GRAYED.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14580
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

Smart Home/End для меню/списков

Post by John Doe »

Для HIDDEN пожалуй соглашусь, а для DISABLE и GRAYED что-то не придумывается кейса, где их непременно надо было бы игнорировать.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Обсуждение макросов”