ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 18.04.08 19:54
Оценка: 93 (5)
Прикрутил вот Scintilla к Sciter. Как внешний behavior живущий в файле sciter-scintilla.dll (собственно scintilla + все lexers).
Описываю сейчас:

type Scintilla: Behavior
{
  ... все хозяйство ...
}


приделаю по свободе еще tiscript debugger и будет лепота.

В принципе ScIDE можно будет использовать как настраиваемый скриптами редактор общего назначения.
По идее и лексеры можно будет в скрипте описывать.

Вот такие вот пироги.
Re: ScIDE
От: Аноним  
Дата: 18.04.08 21:43
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Прикрутил вот Scintilla к Sciter. Как внешний behavior живущий в файле sciter-scintilla.dll (собственно scintilla + все lexers).

CS>Описываю сейчас:

CS>
CS>type Scintilla: Behavior
CS>{
CS>  ... все хозяйство ...
CS>}
CS>


CS>приделаю по свободе еще tiscript debugger и будет лепота.


CS>В принципе ScIDE можно будет использовать как настраиваемый скриптами редактор общего назначения.

CS>По идее и лексеры можно будет в скрипте описывать.

CS>Вот такие вот пироги.


Я тоже такое в Хипстер себе хочу! (в смысле, прикрученную к HTMLayout какую-то основу, а все скриптовое сделаю сам на Рубях). Ы?

//ЗХ
Re[2]: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 18.04.08 21:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я тоже такое в Хипстер себе хочу! (в смысле, прикрученную к HTMLayout какую-то основу, а все скриптовое сделаю сам на Рубях). Ы?


А>//ЗХ


CreateWindow и вперед. Какие проблемы-то?
Re: Screenshot
От: c-smile Канада http://terrainformatica.com
Дата: 19.04.08 19:47
Оценка:
Вот sciter-scintilla, загружен исходник документа который загружен в sciter.


Вот как выглядит html.tis — файл настроки Scintilla lexer на hypertext.

include "common.tis";

var emscript = // embedded script style
{
  font: "Courier New",
  back: offWhite,
  wholeLine: true;
}

Scintilla.lexers["hypertext"] =
{
  keywords: 
  {
    #markup: 
    { 
      id:0, 
      list:
        "a abbr acronym address applet area b base basefont "
        "bdo big blockquote body br button caption center "
        "cite code col colgroup dd del dfn dir div dl dt em "
        "fieldset font form frame frameset h1 h2 h3 h4 h5 h6 "
        "head hr html i iframe img input ins isindex kbd label "
        "legend li link map menu meta noframes noscript "
        "object ol optgroup option p param pre q s samp "
        "script select small span strike strong style sub sup "
        "table tbody td textarea tfoot th thead title tr tt u ul "
        "var xmlns "
        "abbr accept-charset accept accesskey action align alink "
        "alt archive axis background bgcolor border "
        "cellpadding cellspacing char charoff charset checked cite "
        "class classid clear codebase codetype color cols colspan "
        "compact content coords "
        "data datafld dataformatas datapagesize datasrc datetime "
        "declare defer dir disabled enctype "
        "face for frame frameborder "
        "headers height href hreflang hspace http-equiv "
        "id ismap label lang language link longdesc "
        "marginwidth marginheight maxlength media method multiple "
        "name nohref noresize noshade nowrap "
        "object onblur onchange onclick ondblclick onfocus "
        "onkeydown onkeypress onkeyup onload onmousedown "
        "onmousemove onmouseover onmouseout onmouseup "
        "onreset onselect onsubmit onunload "
        "profile prompt readonly rel rev rows rowspan rules "
        "scheme scope shape size span src standby start style "
        "summary tabindex target text title type usemap "
        "valign value valuetype version vlink vspace width "
        "text password checkbox radio submit reset "
        "file hidden image "
        "public !doctype xml" 
    },
    #java-script: 
    { 
      id:1, 
      list:
          "break case catch continue default include "
        "do else for function if return throw try var while" 
    },
    #vb-script: 
    { 
      id:2, 
      list:
          "and as byref byval case call const "
        "continue dim do each else elseif end error exit false for function global "
        "goto if in loop me new next not nothing on optional or private public "
        "redim rem resume select set sub then to true type while with "
        "boolean byte currency date double integer long object single string type "
        "variant" 
    }
  },
  styles:
  {
    #default:       { id:0, fore:black, back:white, size:10, font:"Verdana" },
    #tag:           { id:1, fore:darkBlue }, 
    #tag-unk:       { id:2, fore:red }, 
    #attr:          { id:3, fore:darkBlue }, 
    #attr-unk:      { id:4, fore:red }, 
    #number:        { id:5, fore:RGB(0x80,0,0x80) }, 
    #string-double: { id:6, fore:RGB(0,0x80,0) }, 
    #string-single: { id:7, fore:RGB(0,0x80,0) }, 
    #other:         { id:8, fore:RGB(0x80,0,0x80) }, 
    #comment:       { id:9, fore:RGB(0x80,0x80,0) }, 
    #entity:        { id:10,fore:RGB(0x80,0,0x80) }, 
    #tag-end:       { id:11,fore:darkBlue }, 
    #xml-start:     { id:12,fore:darkBlue }, // <?
    #xml-end:       { id:13,fore:darkBlue }, // ?>
    #script:        { id:14,fore:darkBlue, font:"Courier New" }, // <script
    #asp:           { id:15,fore:RGB(0x4F, 0x4F, 0), back: RGB(0xFF, 0xFF, 0) }, // <% ... %>
    #asp-at:        { id:16,fore:RGB(0x4F, 0x4F, 0), back: RGB(0xFF, 0xFF, 0) }, // <%@ ... %>

    #js-start:        { id:40, fore: RGB(0x80,0x80,0) },
    #js-default:      { id:41, fore: black, prototype:emscript },
    #js-comment:      { id:42, fore: darkGreen, prototype:emscript },
    #js-comment-line: { id:43, fore: darkGreen, prototype:emscript },
    #js-comment-doc:  { id:44, fore: darkGreen, prototype:emscript },
    #js-number:       { id:45, fore: RGB(0,0x80,0x80), prototype:emscript },
    #js-word:         { id:46, fore: black, prototype:emscript },
    #js-keyword:      { id:47, fore: darkBlue, prototype:emscript },
    #js-double-string:{ id:48, fore: RGB(0x80,0,0x80), prototype:emscript },
    #js-single-string:{ id:49, fore: RGB(0x80,0,0x80), prototype:emscript },
    #js-symbols:      { id:50, fore: black, prototype:emscript },
    #js-string-eol:   { id:51, fore: RGB(0x80,0,0x80), prototype:emscript },
    #js-regex:        { id:52, fore: RGB(0x80,0,0), prototype:emscript },
  }
};
Re[3]: ScIDE
От: Аноним  
Дата: 20.04.08 09:09
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, Аноним, Вы писали:


А>>Я тоже такое в Хипстер себе хочу! (в смысле, прикрученную к HTMLayout какую-то основу, а все скриптовое сделаю сам на Рубях). Ы?


А>>//ЗХ


CS>CreateWindow и вперед. Какие проблемы-то?


А шьёрт его знает, какие проблемы API у Скинтиллы балшой, правильно встроить ее через CreateWindow тоже надо задуматься... вот я и помечтал, что если б от нее "торчало" что-то простенькое совсем...
Re[4]: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 20.04.08 20:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, c-smile, Вы писали:


CS>>Здравствуйте, Аноним, Вы писали:


А>>>Я тоже такое в Хипстер себе хочу! (в смысле, прикрученную к HTMLayout какую-то основу, а все скриптовое сделаю сам на Рубях). Ы?


А>>>//ЗХ


CS>>CreateWindow и вперед. Какие проблемы-то?


А>А шьёрт его знает, какие проблемы API у Скинтиллы балшой, правильно встроить ее через CreateWindow тоже надо задуматься... вот я и помечтал, что если б от нее "торчало" что-то простенькое совсем...


API у Скинтиллы вообще никакой — просто набор SCI_*** сообщений + нотификации через WM_NOTIFY.

По хорошему надо было делать windowless обертку для scintilla но мне облом.

Сделал просто behavior который в attached() делает CreateWindow() и зовет dom::element::attach_hwnd(h).

Ну и сделал три native метода mII_I, mIS_I, mII_S которые оборачивают вызов WndProc(UINT msg, WPARAM wparam, LPARAM lparam).
В скрипте есть набор оберток типа:

type Scintilla: Behavior
{
  var lexers = {};
  
  function attached()
  {
    var lx = this.attributes#lexer || "hypertext"; 
    this.setLexer(lx);
  }
  
  //+ Lexer and styles support 
  function setLexer(lexerName)
  {
    this.xcall(#mIS_I, 4006 /*SCI_SETLEXERLANGUAGE*/, 0, lexerName);
    var def = Scintilla.lexers[lexerName];
    if( def ) this.loadStyleDef(def);
  }
  
  function setStyle(styleDef)
  {
    var id = styleDef.id || 0;
    var t ;
    t = styleDef.fore;      if( t != #undefined ) this.xcall(#mII_I, 2051 /*SCI_STYLESETFORE*/,   id, t);
    t = styleDef.back;      if( t != #undefined ) this.xcall(#mII_I, 2052 /*SCI_STYLESETBACK*/,   id, t);
    t = styleDef.bold;      if( t != #undefined ) this.xcall(#mII_I, 2053 /*SCI_STYLESETBOLD*/,   id, t);
    t = styleDef.italic;    if( t != #undefined ) this.xcall(#mII_I, 2054 /*SCI_STYLESETITALIC*/, id, t);
    t = styleDef.size;      if( t != #undefined ) this.xcall(#mII_I, 2055 /*SCI_STYLESETSIZE*/,   id, t);
    t = styleDef.font;      if( t != #undefined ) this.xcall(#mIS_I, 2056 /*SCI_STYLESETFONT*/,   id, t); 
    t = styleDef.wholeLine; if( t != #undefined ) this.xcall(#mII_I, 2057 /*SCI_STYLESETEOLFILLED*/,   id, t?1:0);
  }
  function setKeywords(id, sKeywords) {  this.xcall(#mIS_I, 4005 /*SCI_SETKEYWORDS*/, id, sKeywords); }
  function setStyleBits(n)            {  this.xcall(#mII_I, 2090 /*SCI_SETSTYLEBITS*/, n, 0); }
  function setDefaultStyle(sd)        {  sd.id = 32; /*STYLE_DEFAULT*/; this.setStyle(sd); } 
  function initAllStyles()            {  this.xcall(#mII_I, 2050 /*SCI_STYLECLEARALL*/, 0, 0); } // Copies global style to all others  
  
  function loadStyleDef(sd)
  {
    this.setStyleBits(7);
    this.setDefaultStyle(defaultStyle);
    this.initAllStyles();

    for( var kwgn in sd.keywords ) { var kwg = sd.keywords[kwgn];  this.setKeywords(kwg.id, kwg.list);  }
    for( var stn in sd.styles )    { var st = sd.styles[stn];      this.setStyle(st);  }
  }
  //- Lexer and styles  
  
  //+ Scintilla events. Overridable methods.
  
  // raised when document is getting/loosing "changed" state.
  function onChangedStatus(changed) { this.changed = changed; }
  // raised when character has been added.
  function onCharAdded(charCode) {}
  // raised when user attempts to modify RO document.
  function onModifyAttempt() {}
  // double click
  function onDoubleClick( lineNo, charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
  // something was changed, time to update toolbars, etc.
  function onUpdateUI() {}
  // mofification notification
  function onModified 
  (
    lineNo, // at line
    charNo, // at char (from doc start)
    modificationType, // see SC_MOD_INSERTTEXT .. SC_MOD_CHANGELINESTATE
    linesAdded,
    foldLevelNow,
    foldLevelPrev
    //text,   // modified text, can be undefined
  ) {}
  // click on margin
  function onMarginClick
  (
    lineNo, // at line
    charNo, // at char (from doc start)
    marginNo, 
    shiftPressed, ctrlPressed, altPressed 
  ) {}
  // hot spot click, no idea what is a heck that hot spot
  function onHotSpotClick( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
  // same thing but twice.
  function onHotSpotDoubleClick( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
  // indicator press
  function onIndicatorPress( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
  // indicator release
  function onIndicatorRelease( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
   
 
  //- Scintilla events
  
}
Re: ScIDE
От: TK Лес кывт.рф
Дата: 28.04.08 11:33
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Прикрутил вот Scintilla к Sciter. Как внешний behavior живущий в файле sciter-scintilla.dll (собственно scintilla + все lexers).


Окно Scintilla исчезает если в скрипте сделать view.frame = false;
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 28.04.08 16:22
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, c-smile, Вы писали:


CS>>Прикрутил вот Scintilla к Sciter. Как внешний behavior живущий в файле sciter-scintilla.dll (собственно scintilla + все lexers).


TK>Окно Scintilla исчезает если в скрипте сделать view.frame = false;


Это нужно Scintilla делать windowless. Физически возможно но аремени сейчас нет.
Re: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 02.05.08 06:55
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>В принципе ScIDE можно будет использовать как настраиваемый скриптами редактор общего назначения.

CS>По идее и лексеры можно будет в скрипте описывать.

Обновил вот screenshot:


На левом sidebar — folder-view. Так вот хочется сделать какое-то визуальное разграничение типов файлов.
Попытка нарисовать там иконки из windows shell ни к чему хорошему не привела. Все они похожи. И большие.
Хочется чтобы сразу в глаза бросалось: вот файлы ruby, вот css, a вот C++ какой. Идеи есть?
Re[2]: ScIDE
От: yarus23  
Дата: 02.05.08 08:27
Оценка: 17 (1)
Здравствуйте, c-smile, Вы писали:


CS>На левом sidebar — folder-view. Так вот хочется сделать какое-то визуальное разграничение типов файлов.

CS>Попытка нарисовать там иконки из windows shell ни к чему хорошему не привела. Все они похожи. И большие.
CS>Хочется чтобы сразу в глаза бросалось: вот файлы ruby, вот css, a вот C++ какой. Идеи есть?

Можно сделать как в visual studio, вложенное дерево. А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.
Re[2]: ScIDE
От: Аноним  
Дата: 02.05.08 15:33
Оценка: 17 (1)
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, c-smile, Вы писали:


CS>>В принципе ScIDE можно будет использовать как настраиваемый скриптами редактор общего назначения.

CS>>По идее и лексеры можно будет в скрипте описывать.

CS>Обновил вот screenshot:

CS>[...]

CS>На левом sidebar — folder-view. Так вот хочется сделать какое-то визуальное разграничение типов файлов.

CS>Попытка нарисовать там иконки из windows shell ни к чему хорошему не привела. Все они похожи. И большие.
CS>Хочется чтобы сразу в глаза бросалось: вот файлы ruby, вот css, a вот C++ какой. Идеи есть?

1. Использовать в качестве иконки разноцветно расширение файла (ПЕРЕД именем нарисовать 12х12 — синенькое .html, зелененькое .css, красненькое .png/.jpg/.gif и т.п.
2. Вместо или вместе с этим — можно раскрасить сами названия файлов. По опыту работы в Total Commander (который это позволяет) — получается весьма наглядненько.
Re[3]: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 02.05.08 17:01
Оценка:
Здравствуйте, yarus23, Вы писали:

Y>Здравствуйте, c-smile, Вы писали:


Y>Можно сделать как в visual studio, вложенное дерево.


Ну дык там сейчас folder view сделанный на <select>.
Или ты чего другое имеешь ввиду?

Y>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.


На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.
Re[4]: ScIDE
От: TK Лес кывт.рф
Дата: 02.05.08 17:26
Оценка:
Здравствуйте, c-smile, Вы писали:

Y>>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.


CS>На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.


Можно оставить в виде дерева но, сделать подсветку файлов в соответствии с типом (все неактивные файлы оттображаются серым и не включать их в поиск при вводе с клавиатуры)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[5]: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 02.05.08 22:45
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, c-smile, Вы писали:


Y>>>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.


CS>>На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.


TK>Можно оставить в виде дерева но, сделать подсветку файлов в соответствии с типом (все неактивные файлы оттображаются серым и не включать их в поиск при вводе с клавиатуры)


Ну вот так примерно получилось:

Интересно что первый раз удалсь применить attr$="tail" селектор:

@const COLOR_TIS: #700;
@const COLOR_HTM: #007;
@const COLOR_CSS: #050;

option[filename$=".js"], 
option[filename$=".tis"] { color: @COLOR_TIS; list-marker-color: @COLOR_TIS; }
option[filename$=".html"],
option[filename$=".htm"] { color: @COLOR_HTM; list-marker-color: @COLOR_HTM; }
option[filename$=".css"] { color: @COLOR_CSS; list-marker-color: @COLOR_CSS; }


bullets у <option> в дереве рисовать не стал. Слишком noisy что-ли.
Ну и так как это все в CSS то благодарные юзеры сами себ настроят если что.

Re[4]: ScIDE
От: yarus23  
Дата: 03.05.08 20:13
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, yarus23, Вы писали:


Y>>Здравствуйте, c-smile, Вы писали:


Y>>Можно сделать как в visual studio, вложенное дерево.


CS>Ну дык там сейчас folder view сделанный на <select>.

CS>Или ты чего другое имеешь ввиду?

Y>>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.


CS>На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.


Я имею в виду файлы засунуть еще в табы, css в одном табе, htm в другом. В табе можно красиво написать — CSS.
Re: Очередной screenshot.
От: c-smile Канада http://terrainformatica.com
Дата: 04.05.08 04:19
Оценка:
http://www.terrainformatica.com/screenshots/scide.png

Работаю вот над folder panel.

ПыСы: Стандартный windows dialog SHBrowseForFolder какой-то убито убогий.
Может у кого-то в хозяйстве валяется Plain API версия вот этого:
http://www.codeproject.com/KB/dialog/selectfolder.aspx
? Буду вельми признателен.
Re: 1.0..6.1
От: c-smile Канада http://terrainformatica.com
Дата: 15.05.08 05:59
Оценка:
Здравствуйте, c-smile, Вы писали:

Выложил SDK с ScIDE

pack-scide.cmd — это файл который делает дистрибутив (простой zip файл) scide.exe со товарищи если кому надо.
Почти все работает Если кому интересно под себя настроить — свистите. Хочется сделать что называется "редактор под себя". Т.е. удобный.
Re: ScIDE
От: 8bit  
Дата: 02.10.08 07:54
Оценка:
Да, круто

Кстати, а скрипты можно прекомпиленные использовать?
Re[2]: ScIDE
От: c-smile Канада http://terrainformatica.com
Дата: 02.10.08 18:43
Оценка:
Здравствуйте, 8bit, Вы писали:

8>Да, круто


8>Кстати, а скрипты можно прекомпиленные использовать?


Где? В SciIDE?
Re[3]: ScIDE
От: 8bit  
Дата: 02.10.08 20:54
Оценка:
Здравствуйте, c-smile, Вы писали:

Не, вообще в sciter. Ну, что бы были не .tis файлики в чистом виде,
а уже откомпиленный байткод.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.