View Issue Details

IDProjectCategoryView StatusLast Update
0001840WishesMacropublic2013-02-03 00:33
ReporterDAtaMan Assigned Tovskirdin  
PriorityhighSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.0 
Fixed in Version3.0 
Summary0001840: Macro && DB
DescriptionСохранение(считывание) макросов в(из) DB
TagsNo tags attached.
Build2291

Activities

DAtaMan

2011-07-25 06:51

reporter  

Macro&&DB.7z (39,507 bytes)

DAtaMan

2011-07-25 06:51

reporter   bugnote:0007309

Примечания:

1. Заодно вынес все *func(...) в отдельный файл (если не ошибаюсь, где-то видел эту идею).
2. Экспорт в XML есть, но импорта пока нет, т.к. структура DB может поменяться.
3. Всё, что связано с pluginfunctions, не тестировалось, т.к. многое может поменяться :)
4. Может KMFLAGS_REG_MULTI_SZ уже не нужен ? Хоть один плагин его использует ?
5. По поводу MacroView: может заменить его встроенным редактором макросов (а заодно, и переменных и констант) ?
   IMHO, это будет проще.

DrKnS

2011-07-25 08:00

administrator   bugnote:0007310

area и key как integer - как-то не фонтан, ибо без искаробочного редактора править нереально.

KMFLAGS_REG_MULTI_SZ для бд не нужен, да

macro.db => macros.db

DAtaMan

2011-07-25 11:51

reporter   bugnote:0007311

>area и key как integer - как-то не фонтан, ибо без искаробочного редактора править нереально.

Ну, если они точно не станут знаковыми...
А почему нереально править, кстати ?

>macro.db => macros.db

Назвал так потому, что там всё же не только макросы.
Может тогда 'macroconfig' ?

DrKnS

2011-07-25 11:58

administrator   bugnote:0007312

> А почему нереально править, кстати ?

Ну вот хочу вручную добавить макрос на F4 в область диалогов.
Как догадаться, что F4 - это "65651", а диалоги - это "4"?

DAtaMan

2011-07-25 12:58

reporter   bugnote:0007313

Когда будет импорт, будет проще. :)
Ещё можно добавить строковое поле для названия клавиши, и если поле с кодом пусто, то автоматом преобразовывать в код и записывать.

DrKnS

2011-07-25 13:12

administrator   bugnote:0007314

При наличии полноценного экспорта/импорта "читабельность" самой бд не существенна, да.

Но в xml записям вида area="4" и key="0000000000010073" думаю, не место.
Пусть будут всегда нормальные human-readable строки. Флаги тоже, наверное, лучше разворачивать.

DAtaMan

2011-07-25 14:17

reporter   bugnote:0007316

Наверное, всё-таки надо каждому макросу назначать Id. Тогда Area можно убрать, а флаги писать целиком, как есть.
Может и переменным/константам Id тоже нужен. Может их и в одну таблицу писать ?

Мдя, стрижка только началась.

vskirdin

2011-07-25 21:32

administrator   bugnote:0007322

"Area" по любаси нужна, т.к. ОНО обозначает "откуда стартовать".

DAtaMan

2011-07-25 22:09

reporter   bugnote:0007323

>"Area" по любаси нужна...
Не понял. Я про поле "Area" в БД. То есть будет примерно так:
id │ key │ flags │ sequence │ description
Ну и в MacroRecord тоже Id добавить.

Ещё подумал, может сделать возможность задавать макросу несколько областей, в виде флагов ?
Тогда из многих макросов изчезнут If(Editor || ...)
Не ?

JohnDoe

2011-07-27 09:53

updater   bugnote:0007325

>задавать макросу несколько областей, в виде флагов
Несколько областей можно задать точно так же строкой, а не флагами.

DAtaMan

2011-07-27 13:30

reporter   bugnote:0007326

>Несколько областей можно задать точно так же строкой
Я о внутреннем представлении.
А визуально это могут быть галочки в листбоксе или чекбоксы (но их будет много).

max rusov

2011-07-27 15:00

reporter   bugnote:0007327

Если уж думаете в эту сторону, то не забудьте о возможности привязки макросов к конкретным диалогам, по GUID.

DAtaMan

2011-07-28 19:05

reporter   bugnote:0007330

>Если уж думаете в эту сторону
Я-то думаю, но... :)
Но это, наверняка, тема для отдельного виша (а то и для темы-голосовалки на форуме)

DAtaMan

2011-07-28 19:06

reporter   bugnote:0007331

Такой формат для экспорта/импорта годится ?

<keymacros>
    <area name="Shell">
        <key name="Up">
           <field name="sequence" value="Up Up"/>
           <field name="description" value="2 раза вверх"/>
              <flags>
                 <flag name="DisableOutput" value="1"/>
                 <flag name="Selection" value="1"/>
                 <flag name="NoSendKeysToPlugins" value="1"/>
              </flags>
        </key>
        ...
    </area>
    ...
</keymacros>

vskirdin

2011-07-28 19:56

administrator   bugnote:0007332

> name="sequence"
как мультилайн и всякие \n & < > будут выглядеть?

DAtaMan

2011-07-28 20:20

reporter   bugnote:0007333

Last edited: 2011-07-28 20:34

\n без изменений
" & < > как принято в XML. tinyxml сама конвертит.
А вот с мультилайн непонятно. Как его вводить ?

Upd: Движок Мантиса слишком умный. :)

max rusov

2011-07-28 22:12

reporter   bugnote:0007334

> А вот с мультилайн непонятно. Как его вводить ?
CDATA? (у меня дежавю :) )

DAtaMan

2011-07-28 23:12

reporter   bugnote:0007335

Last edited: 2011-07-28 23:46

>> А вот с мультилайн непонятно. Как его вводить ?
> CDATA?
Да нет, в диалоге по CtrlShift. (пока "допиленного" DialogTools нет)

>у меня дежавю :)
По поводу чего ?

UPD: В общем, экспортируется в виде амперсанд#x0A

JohnDoe

2011-07-29 12:32

updater   bugnote:0007336

Last edited: 2011-07-29 12:37

А может покомпактнее?
<flags DisableOutput="1" Selection="1" NoSendKeysToPlugins="1"/>
<sequence>Up Up</sequence>

P.S.
sequence в CDATA наверно

P.P.S.
И может не стоит макросы группировать по областям/клавишам?
Пусть все будут равны, но в каждом указана область (потенциально не одна)
Впрочем, тут возникает проблема уникальности имён... Но она рано или поздно всё равно возникнет.

Maximus

2011-07-29 12:32

reporter   bugnote:0007337

Чем тебя старый DialogTools не устраивает?

DAtaMan

2011-07-29 14:13

reporter   bugnote:0007338

>И может не стоит макросы группировать по областям/клавишам?
Да, пожалуй. Будет достаточно сортировки по области.

>Чем тебя старый DialogTools не устраивает?
Тем, что пока не работает под враппером, а новый не компилируется.

Maximus

2011-07-29 23:39

reporter   bugnote:0007339

Все бы собралось, если чуть проект допилить

JohnDoe

2011-07-30 18:19

updater   bugnote:0007340

>Да, пожалуй. Будет достаточно сортировки по области.
В идеале бы убрать группировку по области.

SUSim

2011-08-03 06:14

reporter   bugnote:0007355

А еще бы снять ограничение имя=сочетанию_клавиш.

vskirdin

2011-08-03 07:03

administrator   bugnote:0007356

разжуй

SUSim

2011-08-03 07:35

reporter   bugnote:0007357

сейчас макрос может иметь название равное сочетанию клавиш его вызывающее (например AltBS) или искуственное (например Alt10000), при наличии макрокоманды eval("кнопкосочетание", 2) иногда трудно вспомнить что-же висело на этом "кнопкосочетании" приходится закрывать редактор(а он модальный :( ) и лезть смотреть что там за макрос... есть конечно vars которым можно дать осмысленные названия, но к ним из макровью не долезешь и, как я понимаю, они компилятся каждый раз при вызове в отличии от обычного макроса компилируемого при старте.
Если бы имя макроса могло быть произвольным то например макрос смены диска с сохранением пометок:
eval("AltM",2) AltF1 превратился в
eval("SaveSelectionFiles",2) AltF1, имхо, удобнее...

DAtaMan

2011-08-03 07:43

reporter   bugnote:0007358

>В идеале бы убрать группировку по области.
Пока так:
        <keymacros>
            <macro>
                <area name="Shell" />
                <key name="Up" />
                <sequence>
                    <![CDATA[Up Up]]>
</sequence>
                <description>
                    <![CDATA[Вверх]]>
</description>
            </macro>
        .....
        </keymacros>
Годится?

P.S. С флагами отдельная грустная песня.

DAtaMan

2011-08-03 07:46

reporter   bugnote:0007359

2SUSim
В текущей реализации коды клавиш пишутся в базу как коды :)
Плюс - быстрая загрузка макросов из DB.

DrKnS

2011-08-03 07:48

administrator   bugnote:0007360

А напомните, зачем там CDATA, из-за мултилайна?
Его нельзя через \n как-то передавать?

DAtaMan

2011-08-03 08:39

reporter   bugnote:0007361

Ага, из-за мултилайна.
А если в тексте макроса используется \n? Или \r\n?
Парсить в configdb?

DrKnS

2011-08-03 08:59

administrator   bugnote:0007362

Если в строковых литералах макроса используются управляющие последовательности, то при экспорте их надо экранировать обратным слешем (в *.reg всегда так и было).
Неэкранированные в этом случае будут относиться к самому строковому представлению макроса.

DrKnS

2011-08-03 09:06

administrator   bugnote:0007363

Хотя не факт, что это лучше, да.

JohnDoe

2011-08-03 10:04

updater   bugnote:0007364

Last edited: 2011-08-03 12:36

>А напомните, зачем там CDATA, из-за мултилайна?
Не только:

& (&), < (<), > (>), ' (') и " (") — последние две полезны для записи разделителей внутри значений атрибутов.

P.S.
CDATA ведь можно сделать не обязательным?

vskirdin

2011-08-03 10:52

administrator   bugnote:0007365

> eval("SaveSelectionFiles",2) AltF1, имхо, удобнее...
"– Помыслил, может, им знаком Просперо?" (Дэн Симмонс, Илион)

Имхо удобнее будет вот когда:
1. Клавишам - клавишное, т.е. оставляем как сейчас
2. "SaveSelectionFiles" - это будет функция в разделе Func
3. Вместо
  eval("SaveSelectionFiles",2) AltF1
пишем
  SaveSelectionFiles() AltF1
4. Юзеровские функции (не в плагинах) допилю, пока будут без параметров и без возвратов (хотя и здесь можно придумать, скажем ввести оператор return)

max rusov

2011-08-03 11:19

reporter   bugnote:0007366

Если макросы все-таки планируется развивать - то очень советую сделать как в MacroLib - возможность привязки макроса к произвольному количеству обастей/клавиш. Т.е. сделать Area и Key строковыми атрибутами макроса. Потом менять форматы будет сложнее.

JohnDoe

2011-08-03 11:26

updater   bugnote:0007367

> Т.е. сделать Area и Key строковыми атрибутами макроса
Именно так и предлагается автором тикета чуть выше: http://bugs.farmanager.com/view.php?id=1840#c7358

max rusov

2011-08-03 11:35

reporter   bugnote:0007368

Да, не заметил, извините. Только как то очень громоздко. Почему бы не упростить?

<keymacros>
  <macro area="Shell" key="Up" description="Вверх">
     <![CDATA[Up Up]]>
  </macro>
  ...
</keymacros>

JohnDoe

2011-08-03 11:51

updater   bugnote:0007369

Потенциально и area, и key могут иметь более одного значения, а description может быть многострочным.
Не думаю, что запись "в кучу" что-то упрощает.
Разве что сделать оба варианта записи равнозначными.

max rusov

2011-08-03 12:00

reporter   bugnote:0007370

Много значений - никаких проблем, разделять пробелами. Упрощает - если редактировать вручную.

JohnDoe

2011-08-03 12:10

updater   bugnote:0007371

В таком случае идеально было бы сделать оба варианта равнозначными для импорта.
А экспортировать можно и развёрнуто.

max rusov

2011-08-03 12:11

reporter   bugnote:0007372

Зачем два, когда можно - один?

JohnDoe

2011-08-03 12:35

updater   bugnote:0007373

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

Если XML предназначен не только для машины, то строчки весьма желательны короткие.

max rusov

2011-08-03 13:13

reporter   bugnote:0007374

Спорно.

Рассмотрим XML запись простого fml макроса, например этого:
http://far-macro-library.googlecode.com/svn/trunk/Common/AltScreens.fml

"Сокращенная" форма:

<macro
  area="Shell Editor Viewer"
  key="Alt1 Alt2 Alt3 Alt4 Alt5 Alt6 Alt7 Alt8 Alt9 Alt0"
  description="Use Alt-Digit to switch between screens">
<![CDATA[
  %s = Key(#AKey);
  %c = substr(%s, len(%s) - 1, 1);
  F12
  $If ( CheckHotkey (%c) )
    eval(%c)
  $Else
    Esc
    eval(%s)
  $End
]]>
</macro>

"Полная" форма:

<macro>
  <area name="Shell" />
  <area name="Editor" />
  <area name="Viewer" />
  <key name="Alt1" />
  <key name="Alt2" />
  <key name="Alt3" />
  <key name="Alt4" />
  <key name="Alt5" />
  <key name="Alt6" />
  <key name="Alt7" />
  <key name="Alt8" />
  <key name="Alt9" />
  <key name="Alt0" />
  <description>
    <![CDATA[Use Alt-Digit to switch between screens]]>
  </description>
  <sequence>
    <![CDATA[
      %s = Key(#AKey);
      %c = substr(%s, len(%s) - 1, 1);
      F12
      $If ( CheckHotkey (%c) )
        eval(%c)
      $Else
        Esc
        eval(%s)
      $End
    ]]>
  </sequence>
</macro>

Как раз для человека, мне кажется, первый вариант предпочтительней.

JohnDoe

2011-08-03 13:31

updater   bugnote:0007375

Last edited: 2011-08-03 14:08

Не надо утрировать до такой степени.
Для Area - одна строка
Для Key - одна строка
 <macro>
  <area>Shell Editor Viewer</area>
   <key>Alt1 Alt2 Alt3 Alt4 Alt5 Alt6 Alt7 Alt8 Alt9 Alt0</key>
   <description>Use Alt-Digit to switch between screens</description>
   <sequence>
     <![CDATA[
       %s = Key(#AKey);
       %c = substr(%s, len(%s) - 1, 1);
       F12
       $If ( CheckHotkey (%c) )
         eval(%c)
       $Else
         Esc
         eval(%s)
       $End
     ]]>
   </sequence>
 </macro>

P.S.
Это в общем мало чем отличается от вашего сокращённого.
Если при экспорте фар отформатирует как у вас - этого для человека будет достаточно.
При условии что работать с этим мы будем только средствами фара.

max rusov

2011-08-03 13:36

reporter   bugnote:0007376

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

JohnDoe

2011-08-03 13:52

updater   bugnote:0007377

Last edited: 2011-08-03 14:03

В значениях атрибутов нельзя использовать неэкранированные сущности, даже кавычки/апострофы (актуально для key).
CDATA нельзя использовать внутри атрибутов (актуально для description).

И чтобы атрибуты отформатировать так человекоориентированно как в вашем "сокращённом" - вероятно нужна дополнительная обработка (врядли стандартные библиотеки это делают, но пусть специалисты меня поправят)

max rusov

2011-08-03 14:11

reporter   bugnote:0007378

Last edited: 2011-08-03 14:15

> В значениях атрибутов нельзя использовать неэкранированные кавычки/апострофы (актуально для key).

Но при этом придется экранировать другие символы - шило на мыло.

>CDATA нельзя использовать внутри атрибутов (актуально для description).

Я бы не сказал, что это очень актуально. Вероятность, что в описании макроса встретятся символы требующие экранирования очень мала, от конструкции "<![CDATA[...]]>" - читаемость страдает гораздо больше.

JohnDoe

2011-08-03 14:18

updater   bugnote:0007379

Last edited: 2011-08-03 14:20

>Но при этом придется экранировать другие символы - шило на мыло.
О каких других символах речь?

>Вероятность, что в описании макроса встретятся символы требующие экранирования очень мала
Разве??
У меня в 99% макросов содержится что-либо из набора <>&'"

P.S.
Возможно конструкцию <![CDATA[...]]> можно сделать опциональной, т.е. использовать только там где необходимо.

max rusov

2011-08-03 14:29

reporter   bugnote:0007380

Last edited: 2011-08-03 14:30

> О каких других символах речь?

"<", ">", "&" - их придется экранировать: Alt&gt; Или использовать CDATA.

>Разве?? У меня в 99% макросов содержится что-либо из набора <>&'"

В _описании_ ? Про текст макропоследовательности - я не спорю.

JohnDoe

2011-08-03 14:37

updater   bugnote:0007381

Last edited: 2011-08-03 15:00

> "<", ">", "&" - их придется экранировать: Alt> Или использовать CDATA.
- в атрибутах необходимо экранировать <>&'"
- в тегах необходимо экранировать <>&
Очевидно, что в тегах экранировать придётся немного меньше, а при использовании CDATA - не придётся практически ничего. (в атрибутах же использование CDATA не допускается)

Впрочем, можно конечно рассмотреть возможность создания собственного XSD, где будет разрешено CDATA для атрибутов...

>В _описании_ ?
В описании вероятность встретить "сущности" конечно меньше.
Но те что всё-же встретяться - приятнее в CDATA. И не забываем о потенциальной возможности многострочных описаний.

JohnDoe

2011-08-03 14:47

updater   bugnote:0007382

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

При редактировании XML руками никто не навязывает использовать CDATA.

Тем не менее, может оказаться хорошим тоном использовать его всегда (именно в sequence): это защитит от случайных ошибок.

max rusov

2011-08-03 14:51

reporter   bugnote:0007383

> - в атрибутах необходимо экранировать <>&'"
Вроде бы экранировать < > ' - не обязательно.

JohnDoe

2011-08-03 14:54

updater   bugnote:0007384

Last edited: 2011-08-03 15:48

>Вроде бы экранировать < > ' - не обязательно.
Это не совсем так, но в любом случае: как ни крути, а в значениях атрибутов ограничений больше.

---
А вот ещё вопрос ко всем: все эти пляски вокруг сущностей...
Может сделать импорт/экспорт в формат Macrolib?

Плюсы: проще в редактировании, не множатся форматы
Минусы: вместо использования стандартных библиотек придётся изобретать свой велосипед

?

max rusov

2011-08-03 14:58

reporter   bugnote:0007385

Я то вообще не понимаю зачем пихать макросы в БД. Кроме геморроя это ничего не дает...

JohnDoe

2011-08-03 15:06

updater   bugnote:0007386

Парсер типа macrolib - это по сути велосипед.
Использовать велосипед в одном месте, и полнофункциональные базы данных во всех других местах как-то непоследовательно.

Я вот хочу ассоциации в файле, кто-то ещё - другие настройки в файле.
Возникает вопрос нафига нам тогда база данных?

...

И в чём вы видите геморрой? Всё будет в базе данных, как по сути и сейчас. Т.е. со стороны фара минимальные изменения, т.е. минимальный геморрой.

max rusov

2011-08-03 15:16

reporter   bugnote:0007387

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

> И в чём вы видите геморрой? Всё будет в базе данных, как по сути и сейчас.
Вот сейчас - и есть геморрой. А будет еще больше.

> Возникает вопрос нафига нам тогда база данных?
Это хороший вопрос, но здесь - offtopic.

Denis

2011-08-03 15:33

reporter   bugnote:0007388

Тогда требуется доп. апи для доставания макросов из плагина.

JohnDoe

2011-08-03 15:39

updater   bugnote:0007389

Last edited: 2011-08-03 15:44

>Вот сейчас - и есть геморрой.
Переделывать всё заново - ещё больший геморрой.

Переделывать надо, только как по мне, то начать надо с другой стороны.
Я вот за то чтобы работа макросов максимально приблизилась к тому что умеет Macrolib.
А как оно при этом там хранится - вопрос десятый.

Не проблема ведь загружать плагином из файла, да?

vskirdin

2011-08-03 15:54

administrator   bugnote:0007390

Э, народ, а кто мешает импорт/экспорт делать не в xml, а, скажем в том же формате, с каким работает плагин?

> Тогда требуется доп. апи для доставания макросов из плагина.
что есть "доставания макросов из плагина"?

Что на счет моего предложения http://bugs.farmanager.com/view.php?id=1840#c7365
(правда это наверное не в этом тикете, но все же)

max rusov

2011-08-03 15:55

reporter   bugnote:0007391

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

JohnDoe

2011-08-03 16:14

updater   bugnote:0007393

>(правда это наверное не в этом тикете, но все же)
Давайте не здесь, потому что потеряется ведь: и так уже понаписали всякого.

>от неудачного выбранного формата все оставшееся время будут страдать все
В том-то и дело, сейчас не происходит никакой смены формата: как было, так и остаётся. Другой вопрос, если вы призываете его прямо сейчас революционно сменить.

Предлагаю для начала принять формат экспорта/импорта устраивающий всех (Macrolib).
После чего уже обсуждать чем нас не устраивает фактический формат хранения в базе. Полагаю, в этом тикете это уже офтопик, а на форуме будет самый раз, и намного удобнее.

JohnDoe

2011-08-03 16:19

updater   bugnote:0007394

Здесь обсуждаем необходимость смены представления макросов в базе, и возможный отказ от хранения в базе (в пользу файлов): http://forum.farmanager.com/viewtopic.php?f=15&t=6561

DrKnS

2011-08-03 17:49

administrator   bugnote:0007395

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

А вот "Esc = CtrlO" - это программа или скрипт?


> Предлагаю для начала принять формат экспорта/импорта устраивающий всех (Macrolib).

Основная проблема с форматом Macrolib - необходимость писать парсер, что, насколько мне известно, никого не вдохновляет.

vskirdin

2011-08-03 22:30

administrator   bugnote:0007398

> необходимость писать парсер, что, насколько мне известно, никого не вдохновляет.
ну, если автор Macrolib сподобится на патч - тут можно подумать...
;-)

vskirdin

2011-09-01 12:17

administrator   bugnote:0007587

Что-то все заглохло...
Предлагаю актуализировать патч на последние сорцы и применить его (с предварительным анализом)
Допиливать импорт/экспорт будем потом - на крайний случае есть куча г-на по управлению sqlite-баз (минималистичный вариант - sqlite.exe).

DAtaMan

2011-09-01 13:33

reporter   bugnote:0007589

>Предлагаю актуализировать патч на последние сорцы и применить его (с предварительным анализом)

Ok, но я надеялся на развитие макродвига (начало же уже положено, небольшое). Или это потом? :)

1. Макрофункции в отдельные файлы выносить?
2. Экспорт/импорт вообще (даже пустышки) не интегрировать?
3. Что решили с редактором макросов?

JohnDoe

2011-09-01 13:45

updater   bugnote:0007590

1), 2) и 3) это отдельные задачи, которые можно решить и после.
Или нет?

vskirdin

2011-09-01 14:56

administrator   bugnote:0007593

Давайте сделаем первый шаг - повторим в sqlite структуру реестра для макросов.
А потом уже будем думать/обсуждать/строить планы/etc что будет вторым/третьим/etc шагом.
Это к тому, что так движение получится быстрее (когда что-то будет сломано ;-)))

DAtaMan

2011-09-01 16:15

reporter   bugnote:0007595

Угу, главное - двигаться :)

А что по 1 и 2?
И есть предложение заменить "void* Id" в MacroRecord на "__int64 Id"

DrKnS

2011-10-21 07:16

administrator   bugnote:0007941

up

vskirdin

2011-10-21 07:58

administrator   bugnote:0007942

а чем void не устраивает?

DrKnS

2011-12-02 20:13

administrator   bugnote:0008038

2274.

vskirdin

2011-12-04 12:27

administrator   bugnote:0008051

имеет смысл имена назначенных клавиш и имена областей не числами в базе держать, а именами

vskirdin

2011-12-06 08:05

administrator   bugnote:0008060

смысл "имена вместо чисел":
1. проще программно контролировать значения
2. удобство работы с базой :-)
К тому же Флаги уже именами сделаны!

max rusov

2011-12-06 10:13

reporter   bugnote:0008061

3. Потенциально увеличивает шанс портируемости.

DrKnS

2011-12-06 10:50

administrator   bugnote:0008062

в xml уже и так всё именами.

надо ли хранить в базе в строковом представлении - я хз, потенциально это медленнее, т.к. больше преобразований при каждом старте, но возможно, это сущие копейки.

Вот бы померял кто.

vskirdin

2011-12-06 11:27

administrator   bugnote:0008063

Last edited: 2011-12-06 11:30

Надо!
Кто сказал, что завтра AltF10 == 0x02000000+0x00010000+VK_F10?
А если я области перетусую?
На счет медленно - в реестре все было символьно :-)

В Базе area, key & flags должны быть строками. без кодов.

CREATE TABLE IF NOT EXISTS key_macros(area TEXT NOT NULL, key TEXT NOT NULL, flags TEXT, sequence TEXT, description TEXT, PRIMARY KEY (area, key));

CREATE TABLE IF NOT EXISTS plugin_functions(plugin_guid TEXT NOT NULL, function_name TEXT NOT NULL, nparam INTEGER NOT NULL, oparam INTEGER NOT NULL, flags TEXT, sequence TEXT, syntax TEXT NOT NULL, description TEXT, PRIMARY KEY (plugin_guid, function_name));

Здесь у flags убран NOT NULL, т.к. флагов может и не быть.

vskirdin

2011-12-06 12:12

administrator   bugnote:0008064

переделал. коммитить?
(пред.базу macros.db нужно удалить)

vskirdin

2011-12-08 13:24

administrator   bugnote:0008099

Так... я так думаю этот тикет можно переводить в решенные.
Основное (идея) отработано. Прочие глюки - отдельными Инцами.
Иные мнения есть?

Issue History

Date Modified Username Field Change
2011-07-25 06:51 DAtaMan New Issue
2011-07-25 06:51 DAtaMan File Added: Macro&&DB.7z
2011-07-25 06:51 DAtaMan Note Added: 0007309
2011-07-25 08:00 DrKnS Note Added: 0007310
2011-07-25 11:51 DAtaMan Note Added: 0007311
2011-07-25 11:58 DrKnS Note Added: 0007312
2011-07-25 12:58 DAtaMan Note Added: 0007313
2011-07-25 13:12 DrKnS Note Added: 0007314
2011-07-25 14:17 DAtaMan Note Added: 0007316
2011-07-25 21:32 vskirdin Note Added: 0007322
2011-07-25 22:09 DAtaMan Note Added: 0007323
2011-07-27 09:53 JohnDoe Note Added: 0007325
2011-07-27 13:30 DAtaMan Note Added: 0007326
2011-07-27 15:00 max rusov Note Added: 0007327
2011-07-28 19:05 DAtaMan Note Added: 0007330
2011-07-28 19:06 DAtaMan Note Added: 0007331
2011-07-28 19:56 vskirdin Note Added: 0007332
2011-07-28 20:20 DAtaMan Note Added: 0007333
2011-07-28 20:34 DAtaMan Note Edited: 0007333
2011-07-28 22:12 max rusov Note Added: 0007334
2011-07-28 23:12 DAtaMan Note Added: 0007335
2011-07-28 23:46 DAtaMan Note Edited: 0007335
2011-07-29 12:32 JohnDoe Note Added: 0007336
2011-07-29 12:32 Maximus Note Added: 0007337
2011-07-29 12:33 JohnDoe Note Edited: 0007336
2011-07-29 12:36 JohnDoe Note Edited: 0007336
2011-07-29 12:37 JohnDoe Note Edited: 0007336
2011-07-29 14:13 DAtaMan Note Added: 0007338
2011-07-29 23:39 Maximus Note Added: 0007339
2011-07-30 18:19 JohnDoe Note Added: 0007340
2011-08-03 06:14 SUSim Note Added: 0007355
2011-08-03 07:03 vskirdin Note Added: 0007356
2011-08-03 07:35 SUSim Note Added: 0007357
2011-08-03 07:43 DAtaMan Note Added: 0007358
2011-08-03 07:46 DAtaMan Note Added: 0007359
2011-08-03 07:48 DrKnS Note Added: 0007360
2011-08-03 08:39 DAtaMan Note Added: 0007361
2011-08-03 08:59 DrKnS Note Added: 0007362
2011-08-03 09:01 DrKnS Note View State: 0007360: private
2011-08-03 09:01 DrKnS Note View State: 0007360: public
2011-08-03 09:06 DrKnS Note Added: 0007363
2011-08-03 10:04 JohnDoe Note Added: 0007364
2011-08-03 10:22 JohnDoe Note Edited: 0007364
2011-08-03 10:35 JohnDoe Note Edited: 0007364
2011-08-03 10:52 vskirdin Note Added: 0007365
2011-08-03 11:19 max rusov Note Added: 0007366
2011-08-03 11:26 JohnDoe Note Added: 0007367
2011-08-03 11:35 max rusov Note Added: 0007368
2011-08-03 11:51 JohnDoe Note Added: 0007369
2011-08-03 12:00 max rusov Note Added: 0007370
2011-08-03 12:10 JohnDoe Note Added: 0007371
2011-08-03 12:11 max rusov Note Added: 0007372
2011-08-03 12:35 JohnDoe Note Added: 0007373
2011-08-03 12:36 JohnDoe Note Edited: 0007364
2011-08-03 13:13 max rusov Note Added: 0007374
2011-08-03 13:31 JohnDoe Note Added: 0007375
2011-08-03 13:35 JohnDoe Note Edited: 0007375
2011-08-03 13:36 max rusov Note Added: 0007376
2011-08-03 13:52 JohnDoe Note Added: 0007377
2011-08-03 14:03 JohnDoe Note Edited: 0007377
2011-08-03 14:08 JohnDoe Note Edited: 0007375
2011-08-03 14:08 JohnDoe Note Edited: 0007375
2011-08-03 14:11 max rusov Note Added: 0007378
2011-08-03 14:13 max rusov Note Edited: 0007378
2011-08-03 14:15 max rusov Note Edited: 0007378
2011-08-03 14:18 JohnDoe Note Added: 0007379
2011-08-03 14:20 JohnDoe Note Edited: 0007379
2011-08-03 14:29 max rusov Note Added: 0007380
2011-08-03 14:30 max rusov Note Edited: 0007380
2011-08-03 14:37 JohnDoe Note Added: 0007381
2011-08-03 14:39 JohnDoe Note Edited: 0007381
2011-08-03 14:42 JohnDoe Note Edited: 0007381
2011-08-03 14:45 JohnDoe Note Edited: 0007381
2011-08-03 14:47 JohnDoe Note Added: 0007382
2011-08-03 14:49 JohnDoe Note Edited: 0007381
2011-08-03 14:51 max rusov Note Added: 0007383
2011-08-03 14:54 JohnDoe Note Added: 0007384
2011-08-03 14:58 max rusov Note Added: 0007385
2011-08-03 15:00 JohnDoe Note Edited: 0007381
2011-08-03 15:06 JohnDoe Note Added: 0007386
2011-08-03 15:16 max rusov Note Added: 0007387
2011-08-03 15:33 Denis Note Added: 0007388
2011-08-03 15:39 JohnDoe Note Added: 0007389
2011-08-03 15:42 JohnDoe Note Edited: 0007389
2011-08-03 15:44 JohnDoe Note Edited: 0007389
2011-08-03 15:48 JohnDoe Note Edited: 0007384
2011-08-03 15:54 vskirdin Note Added: 0007390
2011-08-03 15:55 max rusov Note Added: 0007391
2011-08-03 16:14 JohnDoe Note Added: 0007393
2011-08-03 16:19 JohnDoe Note Added: 0007394
2011-08-03 17:49 DrKnS Note Added: 0007395
2011-08-03 22:30 vskirdin Note Added: 0007398
2011-09-01 12:17 vskirdin Note Added: 0007587
2011-09-01 13:33 DAtaMan Note Added: 0007589
2011-09-01 13:45 JohnDoe Note Added: 0007590
2011-09-01 14:56 vskirdin Note Added: 0007593
2011-09-01 16:15 DAtaMan Note Added: 0007595
2011-10-21 07:16 DrKnS Note Added: 0007941
2011-10-21 07:58 vskirdin Note Added: 0007942
2011-12-02 20:13 DrKnS Note Added: 0008038
2011-12-02 20:13 DrKnS Status new => feedback
2011-12-04 12:27 vskirdin Note Added: 0008051
2011-12-06 08:05 vskirdin Note Added: 0008060
2011-12-06 10:13 max rusov Note Added: 0008061
2011-12-06 10:50 DrKnS Note Added: 0008062
2011-12-06 11:27 vskirdin Note Added: 0008063
2011-12-06 11:30 vskirdin Note Edited: 0008063
2011-12-06 12:12 vskirdin Note Added: 0008064
2011-12-08 13:24 vskirdin Note Added: 0008099
2011-12-23 08:26 alexy Build => 2291
2011-12-23 08:26 alexy Status feedback => closed
2011-12-23 08:26 alexy Assigned To => vskirdin
2011-12-23 08:26 alexy Resolution open => fixed
2011-12-23 08:26 alexy Fixed in Version => 3.0
2013-02-03 00:33 alexy Severity major => feature