RE:Colorer for wxWidgets

View: New views
10 Messages — Rating Filter:   Alert me  

RE:Colorer for wxWidgets

by bakunin-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

==========================================================================
                        Здравствуйте !
                        ~~~~~~~~~~~~~~
>   1. Re: Colorer for wxWidgets (Igor Russkih)
        Вы не могли бы отправить письмо ещё раз? Большие проблемы с прочтением
        (прочитать удалось только то, что сейчас процитировано


--------------------------------------------------------------------------
     С уважением,
     Юрий Бакунин,
     bakunin@...
==========================================================================




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
colorer-talks mailing list
colorer-talks@...
https://lists.sourceforge.net/lists/listinfo/colorer-talks

Re: Colorer for wxWidgets

by Igor Russkih :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Моя позиция простая - я рад все продвижениям colorer-а в любых направлениях.
Конкретно об этом - я к сожалению никогда не использовал wxwidgets,
поэтому вряд ли смогу помочь с кодингом - но любые вопросы и
обсуждения - welcome.

My aim is simple - I'm glad with all proposal of colorer extensions in
any directions. Within this particular - unfortunately I never used
wxwidgets and never heard about this library, but I'm glad to help
anyway. Feel free to ask any questions...

--
 Igor
N╛HS^╣И ┼X╛╡ '╡┼чu╪╠<бз┌╨.²жКy╘"· ╝*m┼x%jx.j╜┘╚^фв╖vф╘╕X°jь╗·х╖╤▄m╘щ ├Б∙И·v&─╤в╖vь^√+чаФэjкZ²ьХ┼{az Б≥Г^╫Иh╔ЙЮ╝▀╘n╥ ▓)Ю┼{h╤╛²Л║ь╖┌в╚╝+h╞(m╤÷Ъ╠ИZ╡КjY┌w╜Чг╔rg√y$┴вOxА╦²ш█{шGZ╢в╝6r┴h╜ЙМjY,≥╗╔┼x%┼к\╒Z+z╩Z√K%┼кl╡▀╚qГХ╝╖zьm╤⌡?ЧX╛╤к(╨╥~┼Юzw╜ЧX╛╤оЕ┼кb²З?r┴h╜ЙМjY,

Re: Colorer for wxWidgets

by Eugene Efremov :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello!

27.03.2006 11:42 bakunin wrote:
>>   1. Re: Colorer for wxWidgets (Igor Russkih)
>>    
> Вы не могли бы отправить письмо ещё раз? Большие проблемы с прочтением
> (прочитать удалось только то, что сейчас процитировано
>  


Поскольку есть шанс, что второе письмо тоже не будет распознано --
привожу текст, который там был:

> Моя позиция простая - я рад все продвижениям colorer-а в любых направлениях.
> Конкретно об этом - я к сожалению никогда не использовал wxwidgets,
> поэтому вряд ли смогу помочь с кодингом - но любые вопросы и
> обсуждения - welcome.

2IR: Игорь, у тебя в письмах глюк с кодировкой в base64, в конец письма
добавляется мусор из каких-то обрывков адресов:

YXNrIGFueSBxdWVzdGlvbnMuLi4KCi0tCiBJZ29yCgThisSFNetemailissponsoredbyxPMLagr
oundbreakingscriptinglanguagethatextendsapplicationsintowebandmobilemediaAtt
endthelivewebcastandjointheprimedevelopergroupbreakingintothisnewcodingterri
toryhttp//selasusfalkagnet/selcmdlnkkid110944bid241720dat121642colorertalksm
ailinglistcolorertalkslistssourceforgenethttps//listssourceforgenet/lists/li
stinfo/colorertalks=

Очевидно, такое не все мейлеры могут переварить...

--
WBR, Eugene.





-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
colorer-talks mailing list
colorer-talks@...
https://lists.sourceforge.net/lists/listinfo/colorer-talks

Re: Colorer for wxWidgets

by Igor Russkih :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message



2IR: Игорь, у тебя в письмах глюк с кодировкой в base64, в конец письма
добавляется мусор из каких-то обрывков адресов:

YXNrIGFueSBxdWVzdGlvbnMuLi4KCi0tCiBJZ29yCgThisSFNetemailissponsoredbyxPMLagr
oundbreakingscriptinglanguagethatextendsapplicationsintowebandmobilemediaAtt
endthelivewebcastandjointheprimedevelopergroupbreakingintothisnewcodingterri
toryhttp//selasusfalkagnet/selcmdlnkkid110944bid241720dat121642colorertalksm
ailinglistcolorertalkslistssourceforgenethttps//listssourceforgenet/lists/li
stinfo/colorertalks=

имхо это не base64. это просто пробелы убиты в  тексте ;)
я шлю через gmail - так что либо он не сваривает исходную кодировку письма (через farmail посланного я так понимаю), либо одно из двух ;)

Очевидно, такое не все мейлеры могут переварить...

--
WBR, Eugene.





-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
colorer-talks mailing list
colorer-talks@...
https://lists.sourceforge.net/lists/listinfo/colorer-talks



--
  Igor

Re[2]: Colorer for wxWidgets

by Alex Yaroslavsky :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello, Igor!

>> 2IR: Игорь, у тебя в письмах глюк с кодировкой в base64, в конец письма
>> добавляется мусор из каких-то обрывков адресов:
>>
>>
>> YXNrIGFueSBxdWVzdGlvbnMuLi4KCi0tCiBJZ29yCgThisSFNetemailissponsoredbyxPMLagr
>>
>> oundbreakingscriptinglanguagethatextendsapplicationsintowebandmobilemediaAtt
>>
>> endthelivewebcastandjointheprimedevelopergroupbreakingintothisnewcodingterri
>>
>> toryhttp//selasusfalkagnet/selcmdlnkkid110944bid241720dat121642colorertalksm
>>
>> ailinglistcolorertalkslistssourceforgenethttps//listssourceforgenet/lists/li
>> stinfo/colorertalks=
IR> имхо это не base64. это просто пробелы убиты в  тексте ;)
IR> я шлю через gmail - так что либо он не сваривает исходную кодировку письма
IR> (через farmail посланного я так понимаю), либо одно из двух ;)

IR> Очевидно, такое не все мейлеры могут переварить...
А при чём тут farmail? У меня всё ок, и все письма нормально приходят.

--
Bye,
    Alex.




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
colorer-talks mailing list
colorer-talks@...
https://lists.sourceforge.net/lists/listinfo/colorer-talks

Re: Colorer for wxWidgets

by Igor Russkih :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

        Начал делать компонент под названием wxColorer. Использую Colorer-take5
beta4. Пока что закинул в созданный проект все исходники - и что-то такое
даже собралось.
        В связи с этим возникли вопросы.
        1. Прочитал в документации, что можно собрать colorer в виде библиотеки,
но не нашёл makefile, который смог бы это сделать. Где он лежит? Можно
ли создать отдельно статическую и динамическую библиотеку?

в явном виде makefile-а для DLL нет. Его можно просто состряпать из например фаровского make-а...


        2. Нет ли случайно рабочих dsp и dsw -файлов для VC 6.0?
в src/colorer/ лежат для vs 2003.
 

        Теперь вопросы из другой области.
        3. Написал hrc-схему для конфигов своего плагина EditorUserMenu (EUM)
(http://forum.farmanager.com/viewtopic.php?t=1031 ). Куда её выслать, чтобы
она добавилась в следующую версию плагина colorer?
прислать мне ;) 

        4. Вопрос по синтаксису hrc:
        В плагине EUM используется чекбокс, который задаётся такой кострукцией:
        ,что работает только в усреднённо-примитивных ситуациях.

Если содержимое кавычек может быть многострочным, то описать количство параметров не удастся.
Если на одной строке то можно регулярным выражением для каждой команды.
Но вообще не очень вижу смысла, можно проще - обычными строчками...


--
  Igor

Re: Colorer for wxWidgets

by Eugene Efremov :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello!

29.03.2006 12:01 bakunin wrote:
> Теперь вопросы из другой области.
> 3. Написал hrc-схему для конфигов своего плагина EditorUserMenu (EUM)
> (http://forum.farmanager.com/viewtopic.php?t=1031). Куда её выслать, чтобы
> она добавилась в следующую версию плагина colorer?
>  

Можно Игорю, можно мне.

> 4. Вопрос по синтаксису hrc:
> В плагине EUM используется чекбокс, который задаётся такой кострукцией:
> $chk"Title""true_value""false_value"
> Т.е. 3 параметра, каждый ограничен кавычками. Внутри кавычек могут
> встречаться последовательности $" - символ кавычки и $$ - символ $.
> Любой из трёх параметров может быть пустым (т.е ""), второй и третий
> могут быть многострочными.
>  

_Между_ параметрами перевод строк может быть?

> При этом сразу же после $chk"Title""true_value""false_value" может быть
> ещё одна или более кавычек, которые уже будут относится к другой конструкции.
>  

Сразу же? Или все-таки через перевод строки?

> Может ли кто-то помочь в написании схемы для этого дела?
> Пока что написал такую конструкцию ($txt может иметь только 2 параметра.
> Но я без понятия, как это описать!):
> <block start='/(\$(txt)|(chk))(\")/' end='/(((.[^$"])|\"\")?#2(\")([^"]|$)?=)|$/' scheme="DialogBlocks" region="Insertion"
> region00="PairStrongStart" region10="PairStrongEnd" region01="URL" region04="URL" region14="URL"/>
> ,что работает только в усреднённо-примитивных ситуациях.
>  

Если конструкция должна быть отделена от последующих хоть чем-то, что не
может встретиться между ее параметрами (например -- переводом строки),
то такое решаемо:

<block start="/\$(txt|chk)/" end="/$/" scheme="TxtChkContent"
    ...
/>

...

<scheme name="TxtChkContent">
    <block start='/(")/' end='/(")/' scheme="TxtChkParam"
        ...
    />
</scheme>


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


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

--
WBR, Eugene






-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
colorer-talks mailing list
colorer-talks@...
https://lists.sourceforge.net/lists/listinfo/colorer-talks

Re: EUM hrc-schema

by Eugene Efremov :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello!

30.03.2006 14:45 bakunin wrote:

>> После кавычки, закрывающей _последний_ параметр, появление еще одной
>> кавычки исключено? Если да, то
>> <block start='/\$(txt|chk)/' end='/\M[^"]/' ... />
>>    
> Не исключено. И лично у меня встречается очень часто. Например:
> # Copy one or zero into buf
> replace:strcpy(buf,"$chk"one? (zero otherwise)""one""zero"");
>
> Просто парсер знает, что ему следует для $chk искать ровно 3 параметра,
> и, если он их не сможет найти - то вывалит и $chk и всё содержимое.
>  

Проблема, однако в том, что колорер-то этого не знает. И знать не может.
Хотя...

Все, кажется, я понял, как этого достичь... Жуткое извращение, но должно
сработать...
Сейчас проверю... Вот:
 
<type name="block-start">
   
    <scheme name='curdate'>
        <regexp match="/\%\w/" region0='def:VarStrong'/>
    </scheme>
   
    <scheme name='chk'>
        <block scheme='curdate' region='def:String'>
            <start match='/(\$curdate)(")/' region1='def:Keyword'
                region0='def:StringEdge' region2='def:PairStart'
            />
            <end match='/(")/' region0='def:StringEdge'
region1='def:PairEnd'/>
        </block>
    </scheme>
   
    <scheme name='chk12'>
        <block scheme='chk'>
            <start match='/~/'/>
            <end match='/(")(")/' region0='def:StringEdge'
                region1='def:PairEnd' region2='def:PairStart'
            />
        </block>
        <inherit scheme="chk"/>
    </scheme>
   
    <scheme name='chk123'>
        <block scheme='chk12'>
            <start match='/~/'/>
            <end match='/(")(")/' region0='def:StringEdge'
                region1='def:PairEnd' region2='def:PairStart'
            />
        </block>
        <inherit scheme="chk"/>
    </scheme>
   
    <scheme name='dialog'>
        <block scheme='chk123' region='def:String'>
            <start match='/(\$chk)(")/' region1='def:Keyword'
                region0='def:StringEdge' region2='def:PairStart'
            />
            <end match='/(")/' region0='def:StringEdge'
region1='def:PairEnd'/>
        </block>
    </scheme>
   
    <scheme name="block-start">
        <block scheme='dialog' region='def:String'>
            <start match='/(")/' region0='def:StringEdge'
region1='def:PairStart'/>
            <end   match='/(")/' region0='def:StringEdge'
region1='def:PairEnd'/>
        </block>
        <inherit scheme="dialog"/>
    </scheme>
</type>

<prototype name="block-start" group="test">
    <filename>/block-start.test$/i</filename>
</prototype>


А файл "block-start.test" в моем примере был таким:

replace:strcpy(buf,"$chk"one? (zero otherwise)""one""zero"");
$chk"Вы&вести время"" Time: $curdate"%H:%M"""" ***

Подкрашивалось нормально, colorer take5-be5 из svn. Будет ли работать в
beta4 (после того, как изменить способ записи блоков, естественно) -- не
знаю, но, по идее, должно.
Принцип очень простой -- три параметра эмулируются тремя вложенными блоками.

> Да, а что такое \M ? Что-то не могу найти.
>  

Указывает, что, начиная с этой точки нужно передать управление
дальнейшим операторам. Аналогия просмотра вперед... А ~ -- это начало
блока. Еще есть \m. С ним -- сложнее...

Вообще-то, это еще в  4ever было. И там была подробная инструкция и по
регекспам и по hrc.


> что-то вроде (\".*?\"){3}
>  

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

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

Мда. Знакомая ситуация. Чтобы страшно небыло, нужно время от времени
останавливаться и приводить код в порядок, а не громоздить заплаты на
заплаты... Надеюсь, что в твоем случае это еще не поздно сделать...

> Ещё 2 месяца назад я юзал colorer4ever, так как боялся, что при переходе
> придётся переписывать 3 десятка своих собственных схем. Так и тут - есть
> уже около пятидесяти файлов eum, которые нужно будет (ручками!) переписывать.
>  

Стоп. Почему ручками? Раз твой плагин как-то работает -- у тебя там
должно быть хоть какое-то подобие парсера для этого твоего языка.
Заставь его, вместо выполнения команды, выдавать ее xml-эквивалент -- и
получишь готовый конвертер.

> И не только это. Например, необходимость заставить юзера в меню редактирования
> элемента руками вводить XML.
>  

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

> P.S. Кстати, в дистрибутиве colorer схема Diff/Patch запускается на txt-файлах,
> которые начинаются с '---'. Долго недоумевал, почему в моём чтиве не работают
> схемы. Так должно быть?
>  

В proto.hrc написано
<firstline weight='2'>/^(diff|Index|---|\+\+\+|\*\*\*)/si</firstline>
Значит, с точки зрения колорера -- должно. А насколько это оправданно --
не знаю.

--
WBR, Eugene




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
colorer-talks mailing list
colorer-talks@...
https://lists.sourceforge.net/lists/listinfo/colorer-talks

Re: EUM hrc-schema

by Igor Russkih :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Все, кажется, я понял, как этого достичь... Жуткое извращение, но должно
сработать...
Сейчас проверю... Вот:

страх. Пусть все кто придумывают свои синтаксисы сначала раскрашивают их в колорере а потом придумывают их заново...
Юра, я на все сто поддерживаю Женю - переписать это в xml хотябы ;)

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

рефакторинг - это никогда не поздно ;) поддерживаю...


--
  Igor

Re: Colorer for wxWidgets

by Igor Russkih :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


компоненту wxColorer. Сразу же появилась проблема.
Вот код, выполняющийся при загрузке файла в редактор:

    m_baseEditor->lineCountEvent(GetNumberOfLines());
    m_baseEditor->modifyLineEvent(0);


    m_baseEditor->startParsing(0);
    m_baseEditor->endParsing(GetNumberOfLines());
Вот эти две строки - лишние. это внутренние методы, их не надо извне дергать.
 

    m_baseEditor->idleJob(100); // здесь это нужно ?

нет. это метод для фонового разбора.

    HRCParser * pars = m_parserFactory->getHRCParser(); // не 0
    TextParser *tp = m_parserFactory->createTextParser();// не 0

Это вообще не надо. BaseEditor это оболочка поверх HRC&Text Parser объектов. он сам все сделает.

    tp->parse(0,GetNumberOfLines(),TPM_CACHE_OFF);
#ifdef _DEBUG
    wxMessageBox(m_baseEditor->getFileType()->getName()->getChars()); // OK
    // тип правильный
#endif

убрать.

        // До сих пор везде всё хорошо...
    LineRegion * lr = m_baseEditor->getLineRegions(0);
        // lr не нулевой. Но start,next,styled() НУЛЕВЫЕ!

после убирания того что я сказал должен начаться разбор...
При этом в зависимости от внешних событий в твоем редакторе нужно дергать
  baseEditor->visibleTextEvent(TopScreenLine, WindowSizeY);
  baseEditor->lineCountEvent(TotalLines);
  baseEditor->modifyEvent(mline);
 с соответствующими параметрами.


Очевидно, что чего-то в коде не хватает, либо что-то лишнее. Но что?

После этого baseEditor->getLineRegions(line) будет все возвращать...

 

 

Вводить же по старому:
replace:strcpy(buf,"$chk"one? (zero otherwise)""one""zero"");
$chk"Вы&вести время"" Time: $curdate"%H:%M"""" ***
а потом конвертить в XML - вообще лишено здравого смысла.

Подход "один раз потратить время и всё настроить" - здесь
как раз не подходит - как показала практика, большинство
наборов команд живут не более 15 минут - заюзал несколько
раз и удалил.

Вот тут и стопор. Если кто-то может предложить правильное
решение.

Ну а что если просто пересмотреть текущий синтаксис в пользу большей читабельности?
То что есть пока мне очень корежит  глаз ;)
Можно ввести  формальный функциональный  синтаксис,  представить все в виде функций с параметрами и т.д....
 

>В proto.hrc написано
><firstline weight='2'>/^(diff|Index|---|\+\+\+|\*\*\*)/si</firstline>
У себя уже давно поправил.
>Значит, с точки зрения колорера -- должно. А насколько это оправданно --
>не знаю.
IMHO, не оправданно, достаточно  /^(diff|Index)/si и проверки расширения.
Юзер знающий добавит остальное, если надо, а ламеру такая специфическая
схема не нужна.

не очень понял чем это ламерам мешает...

--
  Igor