Андрей 77 (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
QUIK под Linux
 
При постановке заявок с графика в Linux/Wine все глюки пропали - и приклеивающаяся подсказка и проблемы с установкой количества лотов и дублирование формы .... сейчас все ОК, спасибо. Что-то радикально изменили ? Quick 9.5.0.42  Wine 6.23 Linux - Slackware 15.0


PSПравила: Проверьте, не был ли уже решен ваш вопрос, воспользовавшись поиском по архивному форуму.

http://forum-archive.quik.ru/ - домен не активен
сильно тормозит quik
 
Цитата
Daniil Pozdnyakov написал:
Прежде всего предлагаем выполнить рекомендации указанные в сообщении  #2  данного трэда.
>опция «Исходя из настроек открытых пользователем таблиц» в пункте меню  «Система» / «Настройки» / «Основные настройки» / «Программа» на вкладке  «Получение данных».
Нет такой (18.13.3.1)
QUIK под Linux
 
Цитата
Андрей 77 написал:

2. Сначала нужно было ее найти :), добавить в панель инструментов. Добавил. Никакие комбинации - вкл/выкл, указать в окошке счет или выбрать <не указан> ничего не меняют - счет не подставляется, можно только выбрать вручную.
Не счет, "Код клиента"
QUIK под Linux
 
1. Да, Linux,  Wine 4.0



2. Сначала нужно было ее найти :), добавить в панель инструментов. Добавил. Никакие комбинации - вкл/выкл, указать в окошке счет или выбрать <не указан> ничего не меняют - счет не подставляется, можно только выбрать вручную.

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

а при вводе заявки с графика всплывающая приклеена к курсору, не дает ничего сделать ...  


4. Да, очень хотелось бы иметь возможность сохранять настройки в один-два клика. С отдельной опцией "без подтверждения" можно было бы вообще в один клик или Ctrl+S.


6. Еще по формам ввода - почему при попытке увеличить(уменьшить) кол-во лотов стрелкой в окно вставляется какое-то сумасшедшее число (~2 млрд)
QUIK под Linux
 
При подаче заявки, при попытке указать торговый счет вываливается "Черный квадрат Малевича" :), сбивает с толку (в нестройках не выбран торговый счет).  


При указании в настройках (Троговля) Значения по умолчанию - кол-во лотов и код клиента (всегда брать код клиента по умолчанию) : кол-во лотов подставляется, а код клинета нет.


При попытке поставить заявку с графика поверх формы выскакивает назойливая подсказка, которая не дает ничего ввести ...


Страя просьба - для того, чтобы сохранить конфигурацию приходится кликать мышью аж 4 (четыре) раза, многовато ! При частых изменениях конфигурации очень раздражает.

Почему бы не сделать два, например  Ctrl+S,  "Yes"

Нет горячей клавиши для создания окна Котировок с графика (только через контекстное меню, чтобы его вызвать нужно еще попасть ...)
QUIK под Linux
 
Надеяться на Linux-версию не стоит, будем реалистами. А вот если бы разработчики учитывали пожелания тех, кто использует Linux+Wine было бы неплохо. Тем более, что все, в принципе, работает за исключением досадных мелких глюков с шрифтами, цветами и т.п. Думается это потребуети больших усилий. Может стоит откерыть на форуме отдельную ветку "Linux" ?
Синхронизация настроек QUIK
 
Ранее пожелание по автоматической "адаптации" настроек (размеры окон и т.д.) к разрешению ПК при переносе файла настроек я уже высказывал, ждем реализации ...
Некорректное отображение шрифта, При запуске генерации ключа, в окне все шрифты отображаются некорректно
 
Ничего удивительно. После установки Win10 не то что шрифты,  отваливаются принтеры и сканеры ... Удалите некорректную ОС и все наладится :))
Автоматическое навешивание тегов
 
Цитата
Николай Камынин написал:
каким образом будет формироваться идентификатор по умолчанию - это определят разработчики.
Например,
к имени окна дописывается имя инструмента(для инструмента) ,
либо имя индикатора(для индикатора).
-------------------------------
Важно два момента.
1) идентификатор по умолчанию устанавливается лишь в пустую позицию
2) возможность замены идентификатора  из скрипта .
Я в свое время призывал при создании новой диаграммы вместо чего-то типа "Графики" и необходимости потом вручную править заголовок окна давать осмысленный заголовок (ведь добавляемый инструмент известен).
И вот мы теперь имеем: "SRM6 Графики цены и объема #2". То есть код инструмента добавляется и даже порядковый номер появляется.  Создаем еще окно, "SRM6 Графики цены и объема #3". "Графики цены и объема"
здесь явно лишнее, достаточно было бы SRM6#2.  И опят-таки,   "возможность замены идентификатора  из скрипта" - идентификатора какого  графика ? Чтобы заменить идентификатор графика, необходимо знать идентификатор
того самого графика, идентификатор которого вы хотите заменить :). Чем SRM6#2 плох ?
Автоматическое навешивание тегов
 
Цитата
Николай Камынин написал:
.
Предлагаю сделать:
1)  установку идентификатора графика  по умолчанию.
2) установку идентификатора графика  из скрипта.
3) чтение в скрипте списка идентификаторов на графике.
А как вы это себе представляете ?
Вот открыл я два окна и в каждом график Сбера, какие идентификаторы должны получить эти два графика ?
Для того, чтобы установить идентификатор графика на него надо как-то сослаться (идентифицировать), как ?
Автоматическое навешивание тегов
 
Тэг - это идентификатор конкретного графика на одной из диаграмм. Для того, чтобы "навесить" что-либо на график, нужно знать, как его идентифицировать, то есть знать его тэг.  
CreateDataSource
 
Цитата
Egor Zaytsev написал:
Добрый день.

В данном случае проверяется код класса и имя параметра если он есть.
В случае несуществующего инструмента - не nil.
В каком данном случае ? Почему функция не делает элементарную проверку ? Инструмент не существует, а источник данных по нему "создается. То есть в случае простой опечатки не будет возможности обнаружить, что код по одному из инструментов не работает ...
помогите начинающему
 
>Только приступил к QPILE
Вовремя :). Разработчики только что объявили о возможном окончании поддержки ...
Может лучше сразу начинать с QLua ?
CreateDataSource
 
CreateDataSource(class,sec,int) возвращает nil если задан неверный класс, однако задание несуществующего инструмента возвращает таблицу (не nil)
Вместо констант INTERVAL_M? удобно указывать переменную с целыми значениями (минутами), однако функция не производит проверку и принимает
любое значение.
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Похоже, можно обойтись и без update_func
Код
function cb(o,i)
     message(string.format("%s : %.3f",o.sec_code,o:C(i))) 
end

   class_code = "SPBFUT"
   sec_code = "RIZ6"
   interval = INTERVAL_M1

   ds  = CreateDataSource(class_code, sec_code, interval)
   assert(ds)
   ds.class_code = class_code
   ds.sec_code = sec_code
   ds:SetUpdateCallback(function(index) cb(ds,index) end)
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Michael Bulychev написал:
>Это не было реализовано потому, что пользователи могут сделать реализацию самостоятельно.

Ну  да, так работает. Действительно, зачем реализовывать, лучше сделать  полуфабрикат, чтобы пользователи не скучали и сами все реализовывали :).
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Цитата
Sergey Gorokhov написал:
Цитата
Код
   ds: SetUpdateCallback ( function (index) cb(index,class,security)  end )  
Здесь не cb определяет , а мы явно передаем security. Кроме того, такой метод имеет одну крайне неприятную особенность.
Вот если, например, сделать так:
Код
security='LKOH'

   ds1 = CreateDataSource(class,security,INTERVAL_M1)
   ds1:SetUpdateCallback(function(index) cb(index,class,security) end)

sleep(10000)

security='SBER'

   ds2 = CreateDataSource(class,security,INTERVAL_M1)
   ds2:SetUpdateCallback(function(index) cb(index,class,security) end)

то сразу будет видно, что callback в момент вызова получает не значение параметра security в момент его связывания с ds, а просто переменную security  и любое ее изменение в main првиедет к измнению работы callback'a. А почему нельзя в CreateDataSource, SetUpdateCallback предусмотреть чтобы и class и security и ds были доступны cb ? Но только не переменные с такими именами, а их значения.
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Цитата
Vitaly Skorobogatov написал:
Тема вызвала большой резонанс, поэтому чувствуем необходимость прояснить свою позицию по данному вопросу. Нам действительно не хочется продолжать поддерживать QPILE, тут секрета никакого нет. Но окончательного решения по этому вопросу не принято и тема была поднята для выяснения отношения общественности к этому вопросу. На основании Ваших ответов мы будем думать, что делать дальше. Если вскроется, что существует целый пласт задач, которые можно решить только на QPILE - решение о прекращении поддержки QPILE будет отложено на неопределенное время. До тех пор, пока существующие ограничения LUA не будут каким-то образом преодолены. Сейчас мы просто собираем информацию и благодарны за то, что ей с нами делятся.
Ситуация понятная. QPILE имеет ряд "родовых" пороков, его нужно упразднять ..  Силы лучше направить на развитие и поддержку более современных/мощных средств. Lua - достойный выбор, однако к QLua постоянно всплывает ряд вопросов. Вот на этом и следует сосредоточиться. И ... документация, боже, она что, специально пишется с целью запудрить пользователям мозги и сделать использование QUIK невозможным ?
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Цитата
Sergey Gorokhov написал:
Цитата
Андрей 77   написал:
"В LUA нет пары тройки функций от QPILE
Но в QPILE нет сотен тысяч функций LUA"

LUA - не QLUA. Трейдерам не нужны "сотни тысяч"  функций Lua, им нужны десятки функций, но такие, которыми можно пользоваться,надежно реализовывать алгоритмы, а не  ломать постоянно голову, что это за зверь и как его вообще можно с пользой применить ...
А чем не устраивают имеющиеся функции? Только пожалуйста давайте обсуждать конкретику а не общий случай.
Я уже писал про SearchItems, сейчас борюсь с SetUpdateCallback. Не подскажите, как из callback'a этой функции узнать, какой инструмент ее вызвал ?
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
"В LUA нет пары тройки функций от QPILE
Но в QPILE нет сотен тысяч функций LUA"

LUA - не QLUA. Трейдерам не нужны "сотни тысяч"  функций Lua, им нужны десятки функций, но такие, которыми можно пользоваться,надежно реализовывать алгоритмы, а не  ломать постоянно голову, что это за зверь и как его вообще можно с пользой применить ...
SetUpdateCallback
 
Если бы это было возможно, можно было бы просто писать

function ucb(index,ds)
   c = ds:C(index)
   ...
end

for i=1,n do
 sec[i].ds = CreateDataSource(sec[i].ClassCode,sec[i].SecCode,sec[i].Int)
 sec[i].ds:SetUpdateCallback(ucb)  
end
SetUpdateCallback
 
Странная наблюдается закономерность. Как и в случае с SearchItems,  https://forum.quik.ru/messages/forum10/message15516/topic36/#message15516
пользоваться функциями QLUA непосредственно в реальных ситуациях крайне неудобно. Всегда нужны какие-от дополнительные обертки, костыли ...
Вот и SetUpdateCallback для CreateDataSource. В руководстве приведен замечательный пример, который сразу же вызывает вопросы (такие же как и
в случае с SearchItems) Там функция обратного вызова содержит явное использование источника данных, который никак туда не передается. Это что
же, для каждого источника писать свою функцию, даже когда нужна одинаковая стандартная обработка ? Фактически так и есть и остроумное решение
https://forum.quik.ru/messages/forum10/message1689/topic233/#message1689 лишь скрывает этот факт (еще одна обертка).

С другой стороны, ds:SetUpdateCallback(ucb)   эквивалентен  ds.SetUpdateCallback(ds,ucb) и источник данных должен быть доступен
в SetUpdateCallback через self, но тогда что мешает явно передать его ucb ?


 
SearchItems
 
Еще один вариант. Суть та же, но чуть попроще, чем у Михаила (я минималист :)). По сути - одна дополнительная универсальная функция, 17 строк. Работает так же, даже чуть быстрее (на 2%), правда у меня ПК в 4 раза медленнее, чем у Михаила :(
Код
-- SelectItems
-- Возвращает таблицу с номерами элементов в 'tables', удовлетворяющих 
-- набору критериев вида p = { par1=val1, par2=val2, ... }
-- s - start, e - end
--

function SelectItems(tables,s,e,p)

local t,fields={},""

    for key,val in pairs(p) do
        fields = fields .. "," .. tostring(key)                    
        t[#t+1] = val
    end

local function fn(...)

local args = {...}
    for key,val in ipairs(args) do
        if t[key] ~= val then
            return false
        end
    end
    return true
end
    return SearchItems(tables,s,e,fn,fields)
end


-- ---------------------------------------------------------------------
-- Пример использования SelectItems
-- ---------------------------------------------------------------------

function main()

local table,n,N,params

    table = "all_trades"
    n = getNumberOf(table)-1
    params = {sec_code='RIM6',class_code='SPBFUT',qty=1}

    N = 100
    
    message("Selecting from "..table.." ("..n..") "..N.." times")
    _start = os.clock()

    for i = 1, N do
        st = SelectItems(table,0,n,params)
    end

    _end = os.clock()

    time = _end - _start
    message("Found: "..#st..",time: "..string.format("%.1f",time),1)

end



.
SearchItems
 
Никакой разницы не будет. Ибо всю работу выполняет SearchItems. Все остальное просто сервис подготовки fn.
ГО на покпку/продажу
 
Да, помогло, спасибо.
SearchItems
 
Это все замечательно, но не меняет того странного обстоятельства, что вызов функции SearchItems не предполагает передачу значений параметров. Вместо написания конкретной функции fn для каждой выборки вы предлагаете использовать громоздкую новую функцию, вся задача которой - передавать значения параметров в SearchItems.

Проблема в самой реализации SearchItems. Очевидно, все определяется тем, как SearchItems вызывает fn. Нельзя ли дополнить ее таким образом, чтобы можно было передавать параметры и их значения в самой SearchItems ? Либо в виде последовательности параметров и значений (как в моем примере) либо в виде единой строки "par1=val1,par2=val2".
TRANSPARENT_BACKGROUND
 
Цитата
s_mike@rambler.ru написал:
**  верхнего левого **
Так вот оно в чем дело ! Спасибо, а то я уже голову сломал :)
Ну разумеется, не удивительно, что именно у метки продажи - перевернутого цветного треугольника верхний левый пиксель имеет цвет (красный), причем отличный от фона и потому прозрачность не работает. Он должен быть цвета фона или альфа.
SearchItems
 
Разумеется, достаточно возвращать номера таблиц(сделок), поэтому можно вместо table.insert(f,k,t) написать
Код
table.insert(f,k,n)
TRANSPARENT_BACKGROUND
 
Обнаружил ОЧЕНЬ странное поведение QUIK при обработке меток с TRANSPARENT_BACKGROUND = 1.
Началось с того, что при включении прозрачности одна метка (buy - 32 bit, зеленый треугольник с альфа каналом) отображается нормально, другая (точно такой же, но красный - sell) вообще
практически не отображается. Попытки пересоздать красный треугольник из зеленого к успеху не привели :(. Зато другая метка - красная стрелка размером побольше на черном фоне,
прекрасно отображается с прозрачным фоном. Попытка уменьшить ее работает, но до некоторого размера, потом тоже все ломается ...  
ГО на покпку/продажу
 
Я хотел узнать как связаны ГО на покупку/продажу при подаче заявок с ГО покупателя/продавца из ТТП (ТТТ) ?
SearchItems
 
Да, конечно.
Код
--
-- SearshTables
--


--
-- Универсальная функция обратного вызова для SearchTables. 
-- Реализует проверку условий для переменного набора параметров 
-- Возвращает true если удовлетворены ВСЕ условия (AND), иначе - false
-- 

function fn(t,...)

    local arg = {...}

    for k,v in ipairs(arg) do

        if k % 2 == 1 then
            key = v
        else
            val = v
            if t[key] ~= val then
                return false
            end

        end

    end

    return true

end 


--
-- Функция поиска элементов (таблиц) удовлетворяющих набору критериев. 
-- Переменное число параметров и соответствующих значенией, например :
-- 
-- SearchTables("trades",0,getNumberOf("trades")-1,fn,"seccode","SBER","qty",1,"price",120)
--
-- Возвращает таблицу, сожержащую сделки (таблицы) по SBER с qty=1 И price=120.


function SearchTables(tables,s,e,fn,...)

local f = {},k
local arg = {...}

    k = 0
    for n = s,e do

        local t = getItem(tables,n)

        if fn(t,...) then  
            k = k+1
            table.insert(f,k,t)
        end

    end

        return f
end


--
-- Пример использования SearchTables
--

function main()


    st =  SearchTables("trades",0,getNumberOf("trades")-1,fn,"seccode","SRM6","price",12138,"qty",1)

    message("Found trades: "..#st,1)


end
ГО на покпку/продажу
 
Вопрос: как рассчитывается "ГО на покупку/продажу" при вызове заявки с графика ?
SearchItems
 
В данном случае замедления не будет, а удобство налицо - fn один раз приводится для любых проверок/выборок с любым набором параметров. А раз все равно getItem используется, то такой подход дает максимальное удобство при сохранении скорости. Конечно, если понадобится другой тип выборки (например qty > 1 and qty < 10) то придется отдельную функцию писать.
SearchItems
 
"Никто не мешает в fn передавать какие нибудь параметры."

Дело даже не в значениях параметров. В приведенных примерах fn - принципиально различные функции. Одна принимает таблицу и проверяет один конкретный параметр,
другая получает и проверяет три параметра.

Например, вот такая универсальная функция получает произвольное число параметров (пар имя, значение) и проверяет то, что ВСЕ они для заданной таблицы удовлетворены.
Код
function fn(t,...)
    local arg = {...}
    for k,v in ipairs(arg) do
        if k % 2 == 1 then
            key = v
        else
            val = v
            if t[key] ~= val then
                return false
            end
        end
    end
    return true
end 
Эргономика сайта аркатэч, в картинках
 
Да, с сайтом (навигацией) перемудрили. Приходится долго круги нарезать пока найдешь, что хочешь ...
SearchItems
 
Пытаюсь постичь глубокий смысл этой функции. Но, что-то не получается.
Примеры, приведенные в руководстве, содержат функции обратного вызова с

Код
function fn(t)
if t.qty == 103 then
или
Код
function fn(par1, par2, par3)
if par1 == 103 and par2 == “SPBFUT” and par3 == “RIM3” then

Это что же, для каждой конкретной выборки свою функцию писать !?

Хотелось бы иметь универсальную fn, а набор контролируемых параметров и их значения  задавать при вызове SearchItems.

В принципе, я написал такую функцию, function SearchTables(tables,s,e,fn,...). Работает с переменным списком аргументов, а универсальная fn(t,...) выбирает таблицы, удовлетворяющие ВСЕМ условиям, например:

Код
st =  SearchTables("trades",0,getNumberOf("trades")-1,fn,"price",119.35,"qty",10)
Но она использует getItem(), а как я понимаю,  именно из-за слишком медленной ее работы и была создана SearchItems ...
Параметры меток
 
В продолжение. Часть параметров для SetLabelParams нужно задавать так

Params.image_path = "image.bmp"
Params.font_face_name = "Arial'

а часть так

Params.R = 255
Params.YVALUE

При этом они сохраняются как
Params.r
Params.yvalue

Хорошо бы навести здесь единообразие и порядок.
Параметры меток
 
Странно. Для того, чтобы создать метку необходимо как минимум задать два параметра: DATE и TIME. Причем именно так, а не date, time.

   Params.DATE = "20010101"
   Params.TIME = "100000"
   lid = AddLabel(Tag,Params)

При чтении же параметров метки сразу после ее создания

   Params = GetLabelParams(Tag,lid)

оказывается, что никаких DATE, TIME там нет, но зато есть date и time (Params.date, Params.time)
Редактирование таблиц
 
При вызове окна редактирования таблиц отображаются списки "Доступные параметры" и "Выбранные параметры".
Было бы удобнее и логичнее, если бы в Доступных отображались только те параметры, которые не были выбраны (отсутствуют в списке "Выбранные параметры").
Стоп лосс с задержкой
 
Вероятно автор имел ввиду задержку исполнения стопа, а не временной интервал действия. В качестве защиты от краткосрочных резких изменений цены.
Инструкция LUA
 
Хотелось бы понять, какой смысл имеет, например, Приложение 1  в справках по QLUA, где используется некая "quik_table_wrapper.lua".
Вместо того, чтобы показать как правильно использовать описанные в руководстве функции.
СТОП-ЗАЯВКИ
 
Для заявок из портфеля и значения по умолчанию логично самому задавать в портфеле.
Луа скрипты
 
Как, на мой взгляд, должен выглядеть этот интерфейс.
Во-первых, как я уже писал когда-то, иконки (красный)треугольник и (зеленый)квадрат всюду и везде означают Play и Stop,
Если уж их использовать, то они должны располагаться на кнопках Запустить (треугольник) и Остановить (квадрат).

Хотелось бы иметь горячую клавишу (Ctrl-U) сразу открывающую панель "Сервисы/Луа скрипты",
Подпись: "Доступные скрипты в C:\QUIK\scripts"
(текущий каталог скриптов, например "C:\QUIK\scripts", его нужно сохранять независимо от других, хорошо бы здесь же менять)
и ниже - перечень ИМЕН всех файлов с расширением lua (то есть без вызова доп. панели Windows, все время виснет ...), кнопку "Добавить" - удалить вообще или заменить на "Каталог".
В первой колонке напротив имен - красный кружок напротив загруженных, но не запущенных скриптов (активна кнопка Запустить), зеленый - напротив работающих (активна кнопка Остановить),
ничего нет напротив не загруженных скриптов - для них активна кнопка "Загрузить" (вместо Добавить).
Горячие клавиши
 
В новых версиях куда-то делись Ctrl-F10, Ctrl-F12.
Как теперь быстро перезагрузить скрипт ?

Правда Ctrl-F10 стал вызывать меню Система (зачем ?).
В то же время эта комбинация отсутствует в списке ГК по умолчанию ...

А вот ГК для вызова Сервисы/Луа скрипты до сих пор нет.
И вообще, управление ГК какое-то странное и убогое ..
Сохранение настроек
 
Достаточно было бы добавить возможность назначать горячую клавишу на "Сохранить настройки в файл" и убрать раздражающий запрос на подтверждение перезаписи файла (введя обязательное создание резервной копии с возможностью ее быстрого восстановления).
удивительное рядом!!!
 
Там свечка была до 10921

Интервал
 
Ну, если сделают более мощный и универсальный функционал, это только приветствуется. Но, боюсь, тогда нужно будет ждать не годы, а десятилетия :)
Ввод заявки из окна диаграммы
 
В стандартной теме еще как-то видно, включен режим или нет, а в темной нет.
Лучше бы сделать так, чтобы сама иконка (мишень) менялась.
Впрочем, не уверен, что эта кнопка вообще нужна. Чтобы ввести заявку с диаграммы
еще постараться нужно в свечку попасть ...

PS
Для смены темы нужна перезагрузка приложения :(( Хорошо, что не Windows :)
А что, тему сохранять/загружать невозможно, только выбрать из двух :( ?
Интервал
 
Когда то уже поднимал эту тему, может стоит вернуться  ...
Иногда хочется бросить взгляд на ВСЕ графики на текущей закладке с другим интервалом.
Переключать по очереди 10-15 окон, потом возвращать обратно ... !?
Для изменения интервала активного окна ведь уже есть контекстное меню, зачем же дублировать,
почему бы не использовать кнопку на верхней панели для задания интервала всех окон.

Правда может быть так, что различные окна открыты с различными интервалами. Хорошо бы запоминать
эти величины и иметь средство быстрого восстановления (одна из опций той же кнопки).
Сохранение настроек
 
Цитата
sandyman написал:
Может сразу, как в ворде - "Сохранять файл настроек каждые ... минут"? и вообще нажимать ничего не надо))

PS лично мне это не надо, я папку копирую до и после серьёзных изменений - просто предложил вариант
Это лишнее. Достаточно горячей клавиши или кнопки. А копировать папку - это отсутствие элементарного сервиса.
Должно быть так: изменил что-то, клик (сохранил), изменил, клик ... oops, Ctrl-Z, ...
Страницы: 1 2 След.
Наверх