Alt+F6 - тип ссылки по умолчанию

Здесь обсуждается всё, что касается макросов.
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

Мне, например, нужен не автовыбор между hardlink и junction, как сейчас. А всегда symlink. Хотя бы в far:config...

P.S.: А чем отличаются последние 3 типа выбора? Я так понимаю, нижние 2 были всегда, а после вот этого

Code: Select all

drkns 05.07.2010 11:00:00 +0200 - build 1604

1. Another "type" of symbolic links is available at link creation dialog,
   with no explicit notation whether it is a file or a directory.
   The necessary option is chosen automatically according to the attributes of
   referred object.

2  FLINK_SYMLINK flag is available in FSF.MkLink, it enables automatic
   selection of symbolic link type.
появился самый верхний, который автоматически выбирает папка/файл. И в чем смысл оставшихся 2 нижних?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Alt+F6 - тип ссылки по умолчанию

Post by citRiks »

я скоро допишу и опубликую универсальный скрипт для выборочного запоминания значений в диалогах.
другой вариант - есть где-то, даже возможно в стандартных примерах кажется, макрос для перевода типа линкования в комбобоксе этом.
хотя конечно же было бы лучше иметь тут какой конфиг на дефолтный тип линка

хм, само в связанных темах внизу вылезло:
viewtopic.php?f=4&t=11720
Кажется поиск этот "внизу" работает лучше чем "обычный"
Last edited by citRiks on Thu 10 Sep, 2020 10:13, edited 1 time in total.
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

Ага. Но сразу вдогонку к тому макросу вопрос: есть ли в фаровском луа нормальный человеческий способ обратиться к контролу в диалоге, нежели Keys. Это ж если не дай боже табордер поменяется - все слетит КЕМ
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by zg »

есть.
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

zg wrote: Thu 10 Sep, 2020 12:45есть.
Если вы про Dlg.SetFocus - то в нем используется ID. Он не меняется и не зависит от табордер?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by zg »

Pasha_ZZZ wrote: Thu 10 Sep, 2020 13:03Если вы про Dlg.SetFocus - то в нем используется ID. Он не меняется и не зависит от табордер?
Dlg.SetFocus тут вообще не нужен. в диалоге один комбобокс, находите, устанавливаете нужную вам позицию. не находите или находите больше двух, выводите ошибку.
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

zg wrote: Thu 10 Sep, 2020 13:47устанавливаете нужную вам позицию
Все сделал, только не нашел, как установить (SetValue нет ведь?).
И Dlg.GetValue(a, 1) == 10 работает, а если 10 заменить на DI_COMBOBOX - то нет
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by zg »

DM_LISTSETCURPOS
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Alt+F6 - тип ссылки по умолчанию

Post by Shmuel »

Pasha_ZZZ wrote: Thu 10 Sep, 2020 14:45 Dlg.GetValue(a, 1) == 10 работает, а если 10 заменить на DI_COMBOBOX - то нет
Если хотите сделать все константы глобальными - можно вставить в _macroinit.lua следующий код:
for k,v in pairs(far.Flags) do _G[k]=v end
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

Shmuel wrote: Thu 10 Sep, 2020 15:36Если хотите сделать все константы глобальными
Не, не хочу. С ними разобрался. Вот что вышло:

Code: Select all

Macro {
  description="Select symlink by default in Alt+F6 dialog";
  area="Shell"; key="AltF6";
  action=function()
    Keys("AltF6")
    if Dlg.Id == far.Guids.HardSymLinkId then
      local F = far.Flags
      local CBID = 0
      for a = 1, Dlg.ItemCount do
        if Dlg.GetValue(a, 1) == F.DI_COMBOBOX then
          if CBID == 0 then
            CBID = a
          else
            CBID = 0
            break
          end
        end
      end
      if CBID == 0 then
        far.Message("Must be exactly one ComboBox!", "Wrong dialog!")
      else
        local hDlg = far.AdvControl(F.ACTL_GETWINDOWINFO).Id
        hDlg:send(F.DM_LISTSETCURPOS, CBID, {SelectPos=3})
      end
    end
  end;
}
Еще бы заменить Keys("AltF6") на какой-то родной вызов диалога, а то глаза режет. ;-)
Last edited by Pasha_ZZZ on Thu 10 Sep, 2020 15:57, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Alt+F6 - тип ссылки по умолчанию

Post by HaRT »

Pasha_ZZZ wrote: Thu 10 Sep, 2020 15:56 Еще бы заменить Keys("AltF6") на какой-то родной вызов диалога, а то глаза режет. ;-)
Лучше вместо макроса с вызовом диалога повесить обработчик на его инициализацию. Посмотрите, например, в Dialog_Maximize.moon.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

HaRT wrote: Thu 10 Sep, 2020 17:35повесить обработчик на его инициализацию
С удовольствием бы, это было первой мыслью. Но там мунспик, да и что такое
Smitis wrote: Sat 26 May, 2018 23:27[win.Uuid G.HardSymLinkId]: {1,3,11}
я не особо понял (это что какое-то условное присвоение?). И какой заголовок этому всему надо забацать (тут всякие area=......., key=...... и т.п.).
И не будет ли это мешать другим обработчикам (данного) события? И сильно ли будет напрягать комп (я так понимаю, эта проверка будет при каждом вызове любого диалога)?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by buniak_a_h »

Pasha_ZZZ, рекомендую Переводчик moonscript -> lua
Конкретно приведённая фраза переводится так:

Code: Select all

{
  [win.Uuid(G.HardSymLinkId)] = {
    1,
    3,
    11
  }
}
Last edited by buniak_a_h on Fri 11 Sep, 2020 09:15, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by buniak_a_h »

Конкретно по предмету:
1. Я бы не вешал макрос на Alt+F6, а назначил Event на DE_DLGPROCINIT, в котором в condition сделал проверку GUID-а диалога, после чего перебором нашёл бы DI_COMBOBOX, и послал диалогу сообщение DM_SETTEXT со значением, прочитанным из %FARHOME%\Far*.lng (соответственно языку)
Pasha_ZZZ
Posts: 430
Joined: Mon 12 Jun, 2006 14:58
Has thanked: 1 time
Been thanked: 27 times
Contact:

Alt+F6 - тип ссылки по умолчанию

Post by Pasha_ZZZ »

buniak_a_h wrote: Fri 11 Sep, 2020 10:08назначил Event на DE_DLGPROCINIT
Это и хочу
buniak_a_h wrote: Fri 11 Sep, 2020 10:08в condition сделал проверку GUID-а диалога
Это легко. А по какому принципу работает condition? Что-то кудато надо вернуть или присвоить, чтобы action отработал (или не отработал)?

И уже чисто для спортивного интереса: как вызвать какой-нибудь диалог по GUID, а не через Keys?
Post Reply

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