CS>На левом sidebar — folder-view. Так вот хочется сделать какое-то визуальное разграничение типов файлов. CS>Попытка нарисовать там иконки из windows shell ни к чему хорошему не привела. Все они похожи. И большие. CS>Хочется чтобы сразу в глаза бросалось: вот файлы ruby, вот css, a вот C++ какой. Идеи есть?
Можно сделать как в visual studio, вложенное дерево. А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.
Здравствуйте, 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: 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 какую-то основу, а все скриптовое сделаю сам на Рубях). Ы?
Здравствуйте, Аноним, Вы писали:
А>Я тоже такое в Хипстер себе хочу! (в смысле, прикрученную к HTMLayout какую-то основу, а все скриптовое сделаю сам на Рубях). Ы?
А>//ЗХ
Вот 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 тоже надо задуматься... вот я и помечтал, что если б от нее "торчало" что-то простенькое совсем...
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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 clickfunction onDoubleClick( lineNo, charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
// something was changed, time to update toolbars, etc.function onUpdateUI() {}
// mofification notificationfunction 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 marginfunction 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 spotfunction onHotSpotClick( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
// same thing but twice.function onHotSpotDoubleClick( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
// indicator pressfunction onIndicatorPress( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
// indicator releasefunction onIndicatorRelease( charNo /*from doc start*/, shiftPressed, ctrlPressed, altPressed ) {}
//- Scintilla events
}
Здравствуйте, c-smile, Вы писали:
CS>Прикрутил вот Scintilla к Sciter. Как внешний behavior живущий в файле sciter-scintilla.dll (собственно scintilla + все lexers).
Окно Scintilla исчезает если в скрипте сделать view.frame = false;
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, c-smile, Вы писали:
CS>>Прикрутил вот Scintilla к Sciter. Как внешний behavior живущий в файле sciter-scintilla.dll (собственно scintilla + все lexers).
TK>Окно Scintilla исчезает если в скрипте сделать view.frame = false;
Это нужно Scintilla делать windowless. Физически возможно но аремени сейчас нет.
Здравствуйте, c-smile, Вы писали:
CS>В принципе ScIDE можно будет использовать как настраиваемый скриптами редактор общего назначения. CS>По идее и лексеры можно будет в скрипте описывать.
Обновил вот screenshot:
На левом sidebar — folder-view. Так вот хочется сделать какое-то визуальное разграничение типов файлов.
Попытка нарисовать там иконки из windows shell ни к чему хорошему не привела. Все они похожи. И большие.
Хочется чтобы сразу в глаза бросалось: вот файлы ruby, вот css, a вот C++ какой. Идеи есть?
Здравствуйте, yarus23, Вы писали:
Y>Здравствуйте, c-smile, Вы писали:
Y>Можно сделать как в visual studio, вложенное дерево.
Ну дык там сейчас folder view сделанный на <select>.
Или ты чего другое имеешь ввиду?
Y>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.
На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.
Здравствуйте, c-smile, Вы писали:
Y>>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.
CS>На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.
Можно оставить в виде дерева но, сделать подсветку файлов в соответствии с типом (все неактивные файлы оттображаются серым и не включать их в поиск при вводе с клавиатуры)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, c-smile, Вы писали:
Y>>>А можно даже не дерево использовать, а удобнее будет как в примере sliding-bar.htm — вложенные таб на каждый тип файлов.
CS>>На screenshot дерево реального проекта. сложно его делать flat. Хотя что-то есть в этом.
TK>Можно оставить в виде дерева но, сделать подсветку файлов в соответствии с типом (все неактивные файлы оттображаются серым и не включать их в поиск при вводе с клавиатуры)
Ну вот так примерно получилось:
Интересно что первый раз удалсь применить attr$="tail" селектор:
Здравствуйте, 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.
ПыСы: Стандартный windows dialog SHBrowseForFolder какой-то убито убогий.
Может у кого-то в хозяйстве валяется Plain API версия вот этого: http://www.codeproject.com/KB/dialog/selectfolder.aspx
? Буду вельми признателен.
pack-scide.cmd — это файл который делает дистрибутив (простой zip файл) scide.exe со товарищи если кому надо.
Почти все работает Если кому интересно под себя настроить — свистите. Хочется сделать что называется "редактор под себя". Т.е. удобный.
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, c-smile, Вы писали:
8>Не, вообще в sciter. Ну, что бы были не .tis файлики в чистом виде, 8>а уже откомпиленный байткод.
Сделаю.
Будет SciterCompile(string, output_stream);
Загрузку сделаю прозрачной. Т.е. <script src="something.tis"> может быть и исходник и bytecode.