Мне требуется перенос по словам, если слово не влезает в ширину, то оно то оно должно разрываться
Ставлю text-wrap:unrestricted — переносит точку или запятую в конце слова, получаются строки где перенесена только точка.
Как избавится от этого эффекта?
Здравствуйте, zitz, Вы писали:
Z>Приветствую!
Z>Мне требуется перенос по словам, если слово не влезает в ширину, то оно то оно должно разрываться
Z>Ставлю text-wrap:unrestricted — переносит точку или запятую в конце слова, получаются строки где перенесена только точка. Z>Как избавится от этого эффекта?
Я починил это дело в Sciter. И там это поведение описывается [теперь] стандартным свойством
word-wrap: break-word;
Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Здравствуйте, c-smile, Вы писали:
CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
C переходом проблемы:
Поставил define PLAIN_API_ONLY и пытаюсь подключить sciter-x.h
В value.h подключается value.hpp который не компилируется, добавил в строке 291 && !defined( PLAIN_API_ONLY ) — повылазили другие ошибки
В sciter-x-api.h и sciter-x-dom.hpp подключается tiscript.hpp который тоже не компилится
Здравствуйте, c-smile, Вы писали:
CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Как в Sciter сделать мод HLM_SHOW_SELECTION?
Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy, HTMLayoutVisitElements, HTMLayoutGetElementInnerText?
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>C переходом проблемы: Z>Поставил define PLAIN_API_ONLY и пытаюсь подключить sciter-x.h Z>В value.h подключается value.hpp который не компилируется, добавил в строке 291 && !defined( PLAIN_API_ONLY ) — повылазили другие ошибки Z>В sciter-x-api.h и sciter-x-dom.hpp подключается tiscript.hpp который тоже не компилится
Эти мелочи решаются — закомментил всё что мешало... А вот нехватку api как пережить при переходе ума не приложу
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>Как сделать shellicon_behavior? HANDLE_DRAW отключен...
behavior:file-icon; встроенный
См. {scitersdk}\samples\goodies\file-icon.htm
Z>Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback?
Для печати пока никакой альтернативы нет. Работаю над этим. На пока можно использовать HTMPrint***
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>Как в Sciter сделать мод HLM_SHOW_SELECTION? Z>Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy, HTMLayoutVisitElements, HTMLayoutGetElementInnerText?
в CSS написать
body {
behavior:htmlarea;
}
и body content будет selectable. Ctrl+C будет копировать выделение в clipboard и всё такое прочее.
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, zitz, Вы писали:
Z>>Здравствуйте, c-smile, Вы писали:
CS>>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>>C переходом проблемы: Z>>Поставил define PLAIN_API_ONLY и пытаюсь подключить sciter-x.h Z>>В value.h подключается value.hpp который не компилируется, добавил в строке 291 && !defined( PLAIN_API_ONLY ) — повылазили другие ошибки Z>>В sciter-x-api.h и sciter-x-dom.hpp подключается tiscript.hpp который тоже не компилится
Z>Эти мелочи решаются — закомментил всё что мешало... А вот нехватку api как пережить при переходе ума не приложу
C этим разобрался, спасибо.
Z>>Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy? CS>Ctrl+C будет копировать выделение в clipboard и всё такое прочее.
Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего
А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано
Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект
Здравствуйте, c-smile, Вы писали:
Z>>Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback? CS>Для печати пока никакой альтернативы нет. Работаю над этим. На пока можно использовать HTMPrint***
Так их вместе не подключить — они конфликтуют по именам:
error C2371: 'HELEMENT' : redefinition; different basic types
И т.п.
Здравствуйте, c-smile, Вы писали:
Z>>>C переходом проблемы: Z>>>Поставил define PLAIN_API_ONLY и пытаюсь подключить sciter-x.h Z>>>В value.h подключается value.hpp который не компилируется, добавил в строке 291 && !defined( PLAIN_API_ONLY ) — повылазили другие ошибки Z>>>В sciter-x-api.h и sciter-x-dom.hpp подключается tiscript.hpp который тоже не компилится
Z>>Эти мелочи решаются — закомментил всё что мешало...
CS>А чем ты компилируешь ?
Здравствуйте, zitz, Вы писали:
Z>>>Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy? CS>>Ctrl+C будет копировать выделение в clipboard и всё такое прочее.
Z>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего Z>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано Z>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект
Вот пример behavior:htmlarea на <div class="selectable">.
Там объявлены: custom menu — <menu.context #for-htmlarea>
getSelectedText() — функция возвращает plain text из selection
getSelectedHTML() — функция возвращает HTML из selection
Эти две функции можно вызывать снаружи из C++
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
Z>>>Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback? CS>>Для печати пока никакой альтернативы нет. Работаю над этим. На пока можно использовать HTMPrint***
Z>Так их вместе не подключить — они конфликтуют по именам: Z>error C2371: 'HELEMENT' : redefinition; different basic types Z>И т.п.
Ты их неправильно включаешь как-то.
Два .cpp — два разных include. Не должны мешать друг другу.
Здравствуйте, c-smile, Вы писали:
CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Еще проблемы повылазили:
1. SciterLoadFile возвращает FALSE
HTMLayoutLoadFile в аналогичной ситуации работает
Как узнать что ему не нравится?
Этот же файл открываю через sciter.exe — открывается без вопросов...
Эта функция просто отказывается работать чтобы я туда не подставлял.
2. Sciter перестал понимать bgcolor у table, tr и td. На HTMLayout такой проблемы нет.
3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS "html { overflow:auto scroll-manner( page-animation:false, step-animation:false, home-animation: false, wheel-animation:false ) }" — в окне жму клавишу End включается плавный скроллинг, к томуже еще не в низ, а вверх кудато...
4. Отключаю фон не загрузившихся картинок, делаю SciterAppendMasterCSS "img:busy { background-image:none; background-color:transparent; }", далее делаю SciterAppendMasterCSS "img:not(:busy):incomplete { background-image:none; background-color:transparent; }" — всё равно квадраты на местах картинок...
5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет.
6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл.
Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет.
Здравствуйте, c-smile, Вы писали:
Z>>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего Z>>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано Z>>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект
CS>Вот пример behavior:htmlarea на <div class="selectable">. CS>Там объявлены: CS> CS> custom menu — <menu.context #for-htmlarea> CS> getSelectedText() — функция возвращает plain text из selection CS> getSelectedHTML() — функция возвращает HTML из selection CS>CS>Эти две функции можно вызывать снаружи из C++
Ситуация следующая — я подгружаю внешний файл, мне нужно в нем копирование — во всем документе "body{ behavior:htmlarea; }", нужно получать выбранный текст и выбранный хтмл.
В данном примере я должен div.selectable заменить на body?
Если включить копирование я могу с помощью SetCss "body{ behavior:htmlarea; }", то как мне вставить <script type="text/tiscript">?
Для HTMLayoutClipboardCopy слать ему Ctrl + C напрямую? WM_COPY поймет?
CS>А можно всю твою обработку содержимого selection прямо в скрипте и делать.
Я понимаю что каноничное использование — это взять движок Sciter/HTMLayout и писать на нем приложения. Но я использую его не так. Для меня Sciter/HTMLayout — это то с помощью чего я могу описывать некоторые части интерфейса программы в html.
У меня своё меню, там свои функции (и копирование — не центровая), у них свои обработчики, свой стиль меню + на это всё накладывается локализация через свои обертки.
У меня есть пару окон которые выводят html — в одном случае я сам делаю ему html, во втором он получат внешний хтмл.
На HTMLayout все работает, но бага с word-wrap и со скачущим выделением. На Sciter не работает Selection, LoadFile, печать, проблемы со сроллином и фоном таблиц, зато работает word-wrap и выделение не пляшет...
Меня еще в HTMLayout давно интересовал вопрос — почему так мало внимания уделяется API для Selection? Этоже прекрасная вещь! Банальный поиск текста приходится делать через хайлайт, а не через селект... А теперь оно вообще убрано...
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>Еще проблемы повылазили:
Z>1. SciterLoadFile возвращает FALSE Z>HTMLayoutLoadFile в аналогичной ситуации работает Z>Как узнать что ему не нравится? Z>Этот же файл открываю через sciter.exe — открывается без вопросов... Z>Эта функция просто отказывается работать чтобы я туда не подставлял. Z>
Это внешинй URL? http://... и т.д.
Z>2. Sciter перестал понимать bgcolor у table, tr и td. На HTMLayout такой проблемы нет.
В HTML5 таких атрибутов уже нет. Могу конечно приделать но позже.
Z>3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS "html { overflow:auto scroll-manner( page-animation:false, step-animation:false, home-animation: false, wheel-animation:false ) }" — в окне жму клавишу End включается плавный скроллинг, к томуже еще не в низ, а вверх кудато...
Посмотрю.
Z>4. Отключаю фон не загрузившихся картинок, делаю SciterAppendMasterCSS "img:busy { background-image:none; background-color:transparent; }", далее делаю SciterAppendMasterCSS "img:not(:busy):incomplete { background-image:none; background-color:transparent; }" — всё равно квадраты на местах картинок...
Z>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет.
Ни разу не видел, надо HTML на посмотреть.
Z>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет.
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
Z>>>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего Z>>>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано Z>>>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект
CS>>Вот пример behavior:htmlarea на <div class="selectable">. CS>>Там объявлены: CS>> CS>> custom menu — <menu.context #for-htmlarea> CS>> getSelectedText() — функция возвращает plain text из selection CS>> getSelectedHTML() — функция возвращает HTML из selection CS>>CS>>Эти две функции можно вызывать снаружи из C++
Z>Ситуация следующая — я подгружаю внешний файл, мне нужно в нем копирование — во всем документе "body{ behavior:htmlarea; }", нужно получать выбранный текст и выбранный хтмл. Z>В данном примере я должен div.selectable заменить на body? Z>Если включить копирование я могу с помощью SetCss "body{ behavior:htmlarea; }", то как мне вставить <script type="text/tiscript">? Z>Для HTMLayoutClipboardCopy слать ему Ctrl + C напрямую? WM_COPY поймет?
Рекомендую следующее:
Грузить в Sciter по умолчанию следующий документ:
<html>
<head>
<style>
html { padding:0; margin:0; }
</style>
<script>
const frame = $(frame);
// API for native code:
function getSelectedText() {
// assumes that body has behavior:htmlarea
var docInFrame = frame[0];
return docInFrame.$(body).selection.text;
}
function getSelectedHTML() {
var docInFrame = frame[0];
return docInFrame.$(body).selection.html;
}
...
</script>
</head>
<body>
<frame src="docurl" content-style="cssurl">
loading ...
</frame>
</body>
</html>
Где
content-style="some.css"
это URL того css который будет применен поверх того что есть в документе, то что ты пытаешься сейчас append в master css как раз и должно быть в этом CSS.
Примерно так сделано в sciter help viewer.
Этот вот CSS: {scitersdk}/doc/styles/content.css грузится во frame для каждого документа:
См. {scitersdk}/doc/main.htm
CS>>А можно всю твою обработку содержимого selection прямо в скрипте и делать.
Z>Я понимаю что каноничное использование — это взять движок Sciter/HTMLayout и писать на нем приложения. Но я использую его не так. Для меня Sciter/HTMLayout — это то с помощью чего я могу описывать некоторые части интерфейса программы в html. Z>У меня своё меню, там свои функции (и копирование — не центровая), у них свои обработчики, свой стиль меню + на это всё накладывается локализация через свои обертки. Z>У меня есть пару окон которые выводят html — в одном случае я сам делаю ему html, во втором он получат внешний хтмл. Z>На HTMLayout все работает, но бага с word-wrap и со скачущим выделением. На Sciter не работает Selection, LoadFile, печать, проблемы со сроллином и фоном таблиц, зато работает word-wrap и выделение не пляшет...
Да, "взять движок Sciter/HTMLayout и писать на нем приложения" это primary use case. H/W accelerated rendering и high-dpi handling и всё такое.
По поводу "У меня своё меню..." и всё такое — нет проблем, просто нужно соотв. API написать по типу того что я привел выше.
Т.е. грузить в Sciter некий API layer + примитивную UI обработку, а уже в нем content твой грузить.
Z>Меня еще в HTMLayout давно интересовал вопрос — почему так мало внимания уделяется API для Selection? Этоже прекрасная вещь! Банальный поиск текста приходится делать через хайлайт, а не через селект... А теперь оно вообще убрано...
В Sciter selection именно тот что должен быть и функционально полный. В HTMLayout такого нет подавно.
Просто тебе несколько нужно перестроить ментальную модель:
1. Не я определяю конкретный API, это невозможно по определению — сколько людей столько и вариантов,
2. ты себе определяешь себе API который тебе нужен.
scripting это такая же декларация как и CSS по большлму счету. Только определят способ реакции на примитивные события, а не способ рисования.
Например в script можно добавить поддержу bgcolor и вообще много чего на эту тему.
Здравствуйте, c-smile, Вы писали:
Z>>1. SciterLoadFile возвращает FALSE Z>>HTMLayoutLoadFile в аналогичной ситуации работает Z>>Как узнать что ему не нравится? Z>>Этот же файл открываю через sciter.exe — открывается без вопросов... Z>>Эта функция просто отказывается работать чтобы я туда не подставлял. Z>>
CS>Это внешинй URL? http://... и т.д.
Нет, эту путь к файлу на диске.
Пробовал разные варианты — думал может путь длинный, думал может русские символы, разные файлы пробовал с разным содержимым, все равно 0 возвращает.
Z>>2. Sciter перестал понимать bgcolor у table, tr и td. На HTMLayout такой проблемы нет. CS>В HTML5 таких атрибутов уже нет. Могу конечно приделать но позже.
Было бы замечательно.
Либо пример как сделать так: > Например в script можно добавить поддержу bgcolor и вообще много чего на эту тему.
Я бы тогда еще поддержку align добавил
Z>>4. Отключаю фон не загрузившихся картинок, делаю SciterAppendMasterCSS...
Понял в чем проблема — не работает SciterAppendMasterCSS, хотя при вызове возвращает 1...
Передал всё на SciterSetCSS, заработало
Z>>3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS...
Проблема в следующем — отключение анимации не дружит с body{ behavior:htmlarea; } — при движении курсора все равно пытается плавно прокручивать.
Также не работают клавиши промотки вверх-вниз-home-end — он пытается ими двигать курсор. Мне двигать курсор не требуется, но требуется выделять мышью — можно как-то отключить движение курсора по клавишам стандартным способом? Или придется перехватывать?
Z>>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет. CS>Ни разу не видел, надо HTML на посмотреть.
Свою проблему решил так — после SciterLoadHtml принудительно отправляю окну WM_SIZE после этого отображается нормально
Кстати если этот html открыть в sciter.exe, то при уменьшении размера окна вообще два скролла появится
Z>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>Ни разу не видел, надо HTML на посмотреть.
Здравствуйте, c-smile, Вы писали:
CS>Рекомендую следующее: CS>Грузить в Sciter по умолчанию следующий документ: CS>... CS>Где CS> content-style="some.css" CS>это URL того css который будет применен поверх того что есть в документе, то что ты пытаешься сейчас append в master css как раз и должно быть в этом CSS. CS>... CS>Да, "взять движок Sciter/HTMLayout и писать на нем приложения" это primary use case. H/W accelerated rendering и high-dpi handling и всё такое. CS>По поводу "У меня своё меню..." и всё такое — нет проблем, просто нужно соотв. API написать по типу того что я привел выше. CS>Т.е. грузить в Sciter некий API layer + примитивную UI обработку, а уже в нем content твой грузить. CS>В Sciter selection именно тот что должен быть и функционально полный. В HTMLayout такого нет подавно. CS>Просто тебе несколько нужно перестроить ментальную модель: CS>1. Не я определяю конкретный API, это невозможно по определению — сколько людей столько и вариантов, CS>2. ты себе определяешь себе API который тебе нужен. CS>scripting это такая же декларация как и CSS по большлму счету. Только определят способ реакции на примитивные события, а не способ рисования.
Зачем такие сложности? Уж если корячить html, то можно SciterSetElementHtml сделать...
Я же не против перестроить свою корявую ментальную модель, но чтобы сделать себе эти API нужно уж очень хитро извратится: сделать html по умолчанию, в нем фрейм, в этот фрейм грузить css извне, содержимое извне... Это при том что у меня уже всё работает как надо на HTMLayout и я уже и так не кислый рефакторинг провел.
Ведь с CSS же всё просто — есть SciterSetCSS и SciterAppendMasterCSS, крути-верти как хочешь без особых плясок с бубном.
Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
Здравствуйте, c-smile, Вы писали:
Z>>3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS "html { overflow:auto scroll-manner( page-animation:false, step-animation:false, home-animation: false, wheel-animation:false ) }" — в окне жму клавишу End включается плавный скроллинг, к томуже еще не в низ, а вверх кудато... CS>Посмотрю.
Ковыряясь в api обнаружил HTMLayoutSetOption и параметр HTMLAYOUT_SMOOTH_SCROLL, надоже, как я его пропустил, проверил — то что надо, работает!
Смотрю в sciter api это есть, думаю сейчас решу эту проблему. Делаю ::SciterSetOption( GetSafeHwnd(), SCITER_SMOOTH_SCROLL, FALSE ) — возвращает 1, но всё равно плавный скролл...
Здравствуйте, c-smile, Вы писали:
CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Загружаю html, страница длинная, зажимаю мышкой скролл бар и тяну вниз — вылетает
<td> element is not allowed at ((244))
First-chance exception in proga.exe (SCITER32.DLL): 0xC0000005: Access Violation.
Здравствуйте, zitz, Вы писали:
Z>Зачем такие сложности? Уж если корячить html, то можно SciterSetElementHtml сделать... Z>Я же не против перестроить свою корявую ментальную модель, но чтобы сделать себе эти API нужно уж очень хитро извратится: сделать html по умолчанию, в нем фрейм, в этот фрейм грузить css извне, содержимое извне... Это при том что у меня уже всё работает как надо на HTMLayout и я уже и так не кислый рефакторинг провел. Z>Ведь с CSS же всё просто — есть SciterSetCSS и SciterAppendMasterCSS, крути-верти как хочешь без особых плясок с бубном.
Z>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
Зачем SciterSetScript если есть SciterEval ?
Этой функцией можно script непосредственно исполнить, а можно
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
Z>>>1. SciterLoadFile возвращает FALSE Z>>>HTMLayoutLoadFile в аналогичной ситуации работает Z>>>Как узнать что ему не нравится? Z>>>Этот же файл открываю через sciter.exe — открывается без вопросов... Z>>>Эта функция просто отказывается работать чтобы я туда не подставлял. Z>>>
CS>>Это внешинй URL? http://... и т.д.
Z>Нет, эту путь к файлу на диске. Z>Пробовал разные варианты — думал может путь длинный, думал может русские символы, разные файлы пробовал с разным содержимым, все равно 0 возвращает.
FALSE возвращается если
1. hwnd не sciter
2. url не local и sciter загрузит его позже.
3. Если SC_LOAD_DATA вернул LOAD_DISCARD — т.е. запретил загрузку.
Z>>>2. Sciter перестал понимать bgcolor у table, tr и td. На HTMLayout такой проблемы нет. CS>>В HTML5 таких атрибутов уже нет. Могу конечно приделать но позже.
Z>Было бы замечательно. Z>Либо пример как сделать так: >> Например в script можно добавить поддержу bgcolor и вообще много чего на эту тему. Z>Я бы тогда еще поддержку align добавил
function SetBGColor() {
this.style["background-color"] = this.attributes["bgcolor"];
}
Z>>>4. Отключаю фон не загрузившихся картинок, делаю SciterAppendMasterCSS...
Z>Понял в чем проблема — не работает SciterAppendMasterCSS, хотя при вызове возвращает 1... Z>Передал всё на SciterSetCSS, заработало
SciterAppendMasterCSS работает, в sciter.exe так добавляется "<checkbox>":
Z>>>3. Отключаю "волшебный" скроллинг через SciterAppendMasterCSS...
Z>Проблема в следующем — отключение анимации не дружит с body{ behavior:htmlarea; } — при движении курсора все равно пытается плавно прокручивать. Z>Также не работают клавиши промотки вверх-вниз-home-end — он пытается ими двигать курсор. Мне двигать курсор не требуется, но требуется выделять мышью — можно как-то отключить движение курсора по клавишам стандартным способом? Или придется перехватывать?
Я починил animation setup для caret movement, в след. билде будет.
caret будет двигаться в htmlarea всегда иначе например Shift+Left/Right выделение работать не будет.
Z>>>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет. CS>>Ни разу не видел, надо HTML на посмотреть.
Z>Пожалуйста: Z>
Z><HTML>
Z></HTML>
Z>
Z>Свою проблему решил так — после SciterLoadHtml принудительно отправляю окну WM_SIZE после этого отображается нормально
Это уже предмет для разговора...
Напиши там
html { overflow:hidden; }
body { overflow:scroll-indicator; size:*; }
// or body { overflow:auto; size:*; }
Z>Кстати если этот html открыть в sciter.exe, то при уменьшении размера окна вообще два скролла появится
Это нормально. Корневой документ там сознательно был оставлен с overflow:auto;
Z>>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>>Ни разу не видел, надо HTML на посмотреть.
Z>Пожалуйста: Z>
Z><HTML>...
Z></HTML>
Z>
Z>Эту странность не получается побороть...
Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях.
Здравствуйте, zitz, Вы писали:
Z>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.
Скажем если тебе нужно выполнить некую функцию для DOM элемента то пишем скрипт
utils.tis :
function Foo() {
this// here is the element
}
и вызываем эту скрипт функцию через CSS:
div[foo] {
aspect: Foo url(utils.tis);
}
для всех <div> у которых есть атрибут foo.
Можно также зайти с другой стороны:
в CSS:
html {
aspect: MyHtmlProcessor url(utils.tis);
}
объявлено что для <html> документа будет вызвана функция MyHtmlProcessor которая выглядит например так
function MyHtmlProcessor() {
for( var el in this.selectAll("div[foo]") )
// do something with each div[foo]
}
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Z>Загружаю html, страница длинная, зажимаю мышкой скролл бар и тяну вниз — вылетает Z><td> element is not allowed at ((244)) Z>First-chance exception in proga.exe (SCITER32.DLL): 0xC0000005: Access Violation.
Z>В sciter.exe эта бага не повторяется...
Бага случается из-за того что я после загрузки SciterLoadHtml делаю SciterSetCSS
img:busy { background-image:none; background-color:transparent; min-width:1x; min-height:1px; border:0px; border-color:transparent; }
img:not(:busy):incomplete { background-image:none; background-color:transparent; min-width:1px; min-height:1px; border:0px; border-color:transparent; }
Убираю эти два стиля — падения прекращаются
Здравствуйте, c-smile, Вы писали:
Z>>>>1. SciterLoadFile возвращает FALSE CS>FALSE возвращается если CS>1. hwnd не sciter CS>2. url не local и sciter загрузит его позже. CS>3. Если SC_LOAD_DATA вернул LOAD_DISCARD — т.е. запретил загрузку.
"SC_LOAD_DATA вернул LOAD_DISCARD" — ВАХ! Кто бы мог подумать — у меня обработчик стоит который режет всё кроме некоторых картинок и file:
А зачем так сделано? Если я делаю вызов SciterLoadFile разве это не значит что я хочу его загрузить?
uri файла приходит с замененными слешами на бекслеши — зачем? Причем ладно бы кодировал url символы и подставлял file:/// — так нет же, меняет только слеши...
Чтобы разрешить загрузку надо сделать sLoadedPath.Replace( _T("\\"), _T("/") ) и сравнить или он ещё какие символы по партизански портит?
Ну да ладно — это пол беды, самая главная проблема — не устанавливается baseUrl каталог с файлом — картинки которые лежат в том же каталоге не грузятся
Я тут параллельно уже накидал код который сам файл открывает, считывает и делает SciterLoadHtml.
Думал слеши на обратные поменяю в пути, да и всё раз уж он такой путь в SC_LOAD_DATA кидает, значит понимает... Ан нет...
Что за двойные стандарты Таки придется urlEncode писать...
Z>>>>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет. CS>>>Ни разу не видел, надо HTML на посмотреть. Z>>Пожалуйста: Z>>
Z>><HTML>
Z>></HTML>
Z>>
Z>>Свою проблему решил так — после SciterLoadHtml принудительно отправляю окну WM_SIZE после этого отображается нормально CS>Это уже предмет для разговора... CS>Напиши там CS>
CS>html { overflow:hidden; }
CS>body { overflow:scroll-indicator; size:*; }
CS>// or body { overflow:auto; size:*; }
CS>
В этом случае скрол всегда поверх текста отображается и WM_SIZE не спасает
Z>>>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>>>Ни разу не видел, надо HTML на посмотреть. Z>>Пожалуйста: Z>>
Z>><HTML>...
Z>></HTML>
Z>>
Z>>Эту странность не получается побороть... CS>Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях. CS>Попробуй вот: CS>Про margin: *; я рассказал в...
Проблема в том что margin: * не работает в HTMLayout — выравнивает только по горизонтали.
В Sciter этот margin: * работает как надо и эффект с исчезанием картинки пропал...
Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, zitz, Вы писали:
Z>>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
CS>Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.
Я не совсем понимаю... Можно скрипт в css запихнуть?
Или ты предлагаешь делать мне внешний файл и его скармлевать в Sciter через SciterEval?
Можно как то обойтись без создания файла и без нахлобучек ввиде фреймов? Требуется генерировать скрипт программно и сразу пихать его в Sciter?
Например, есть SciterSetCSS — удобно, практично, прекрасно! Я могу сгенерировать стиль и сразу его применить, хочешь так крути, хочешь сяк... В одном случае то, во втором это, в третьем по другому. Можно на лету менять. Не надо ничего никуда сохранять во внешние файлы — красота. В этом случае тоже можно же сказать — это API убираем, пусть все грузят через include...
Если будет SciterSetScript то он даст такуюже свободу, тем более что с помощью скриптов можно расширить API которые не хочет возвращать разработчик
Здравствуйте, zitz, Вы писали: Z>"SC_LOAD_DATA вернул LOAD_DISCARD" — ВАХ! Кто бы мог подумать — у меня обработчик стоит который режет всё кроме некоторых картинок и file: Z>А зачем так сделано? Если я делаю вызов SciterLoadFile разве это не значит что я хочу его загрузить? Z>uri файла приходит с замененными слешами на бекслеши — зачем? Причем ладно бы кодировал url символы и подставлял file:/// — так нет же, меняет только слеши... Z>Чтобы разрешить загрузку надо сделать sLoadedPath.Replace( _T("\\"), _T("/") ) и сравнить или он ещё какие символы по партизански портит? Z>Ну да ладно — это пол беды, самая главная проблема — не устанавливается baseUrl каталог с файлом — картинки которые лежат в том же каталоге не грузятся
Вообще-то SciterLoadFile() ожидает url.
Т.е. в случае файлов это что-то типа file://c:/.....
Если дашт URL — получишь URL в callback.
"А зачем так сделано?"
Были неоднократные запросы на тему "хотим чтобы весь трафик шел через SC_LOAD_DATA" для того чтобы
имплементирвать свой loader в одном месте. Посчитал что это разумно.
Z>Я тут параллельно уже накидал код который сам файл открывает, считывает и делает SciterLoadHtml. Z>Думал слеши на обратные поменяю в пути, да и всё раз уж он такой путь в SC_LOAD_DATA кидает, значит понимает... Ан нет... Z>Что за двойные стандарты Таки придется urlEncode писать...
Давай URL по всем правилам и будет тебе шастя. Z>В этом случае скрол всегда поверх текста отображается и WM_SIZE не спасает
У тебя было table { width:100% } что engine и исполнял — 100% от ширины окна. Но без scrollbars.
Т.е. либо надо флексы использовать либо overflow-y:scroll, а не overflow-y:auto как у тебя.
Либо вообще overflow:scroll-indicator — он места не занимает. Z>>>>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл. Z>>>>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет. CS>>>>Ни разу не видел, надо HTML на посмотреть. Z>>>Пожалуйста: Z>>>
Z>>><HTML>...
Z>>></HTML>
Z>>>
Z>>>Эту странность не получается побороть... CS>>Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях. CS>>Попробуй вот: CS>>Про margin: *; я рассказал в... Z>Проблема в том что margin: * не работает в HTMLayout — выравнивает только по горизонтали. Z>В Sciter этот margin: * работает как надо и эффект с исчезанием картинки пропал... Z>Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
Здравствуйте, zitz, Вы писали:
Z>Бага случается из-за того что я после загрузки SciterLoadHtml делаю SciterSetCSS Z>img:busy { background-image:none; background-color:transparent; min-width:1x; min-height:1px; border:0px; border-color:transparent; } Z>img:not(:busy):incomplete { background-image:none; background-color:transparent; min-width:1px; min-height:1px; border:0px; border-color:transparent; } Z>Убираю эти два стиля — падения прекращаются
Здравствуйте, zitz, Вы писали:
Z>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, zitz, Вы писали:
Z>>>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.
CS>>Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.
Z>Я не совсем понимаю... Можно скрипт в css запихнуть? Z>Или ты предлагаешь делать мне внешний файл и его скармлевать в Sciter через SciterEval? Z>Можно как то обойтись без создания файла и без нахлобучек ввиде фреймов? Требуется генерировать скрипт программно и сразу пихать его в Sciter?
SciterEval принимает на вход script to execute. Я не знаю как тебе объяснить еще.
Z>Например, есть SciterSetCSS — удобно, практично, прекрасно! Я могу сгенерировать стиль и сразу его применить, хочешь так крути, хочешь сяк... В одном случае то, во втором это, в третьем по другому. Можно на лету менять. Не надо ничего никуда сохранять во внешние файлы — красота. В этом случае тоже можно же сказать — это API убираем, пусть все грузят через include... Z>Если будет SciterSetScript то он даст такуюже свободу, тем более что с помощью скриптов можно расширить API которые не хочет возвращать разработчик
После загрузки DOM выполняется фактически это вот:
for each <script> in DOM
SciterEval ( text of that <script> element )
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, zitz, Вы писали:
Z>>Бага случается из-за того что я после загрузки SciterLoadHtml делаю SciterSetCSS Z>>img:busy { background-image:none; background-color:transparent; min-width:1x; min-height:1px; border:0px; border-color:transparent; } Z>>img:not(:busy):incomplete { background-image:none; background-color:transparent; min-width:1px; min-height:1px; border:0px; border-color:transparent; } Z>>Убираю эти два стиля — падения прекращаются
CS>Про <frame> я тебе уже сказал.
Можно ткнуть носом? Не совсем понимаю при чем тут frame...
Еще раз по шагам:
1. Шаг первый — грузим SciterLoadHtml с картинками, таблицами и пр., загрузка картинок запрещена или они не доступны по сети (проверял и так и так)
2. Шаг второй — вызываем функцию SciterSetCSS, куда передаем css с описанием img:busy и img:not(:busy):incomplete (описаны выше)
3. Шаг третий — в окне пытаемся проскроллить мышкой — падает в дебрях SCITER32.DLL
Я как-то не правильно использую SciterSetCSS? После её вызова надо ещё что-то сделать?
Я передаю в css стили различным элементам, падает только из-за img:busy и img:not(:busy):incomplete — комменчу эти два стиля — работает, раскомментирую — падает
Аналогично делаю в HTMLayout — сначала HTMLayoutLoadHtmlEx, потом HTMLayoutSetCSS — всё работает корректно
Здравствуйте, c-smile, Вы писали:
CS>Вообще-то SciterLoadFile() ожидает url. CS>Т.е. в случае файлов это что-то типа file://c:/..... CS>Давай URL по всем правилам и будет тебе шастя.
Хмм... Из документации это совершенно не следует.
Проблема в том что HTMLayoutLoadFile отрабатывает нормально, а для SciterLoadFile надо делать urlEncode...
Z>>В этом случае скрол всегда поверх текста отображается и WM_SIZE не спасает CS>Обрати внимание на table { width:* } CS>У тебя было table { width:100% } что engine и исполнял — 100% от ширины окна. Но без scrollbars. CS>Т.е. либо надо флексы использовать либо overflow-y:scroll, а не overflow-y:auto как у тебя. CS>Либо вообще overflow:scroll-indicator — он места не занимает.
Не помогает.
Багу можно повторить в sciter.exe — раскопируй тело у исходного html чтобы на экран не влезало и открой через load html in view.
CS>Забудь про проценты от размера view — они имеют другую семантику в desktop приложениях
Почему?
Я честно говоря не понимаю почему engine не учитывает scrollbars — во всех браузерах учитывает, в HTMLayout учитывает, а тут нет...
Браузер firefox — это desktop приложение? Все браузеры как то разруливают наличие скролбара и HTMLayout это тоже умеет, а тут нет...
Чем принципиально отличаются width:* и width:100%? Зачем делать неправильную обработку когда при парсинге можно привести 100% к *, а 50% к 0.5* и получится правильно
(в данном случае конечно это всё равно не помогает)
Z>>Проблема в том что margin: * не работает в HTMLayout — выравнивает только по горизонтали. Z>>В Sciter этот margin: * работает как надо и эффект с исчезанием картинки пропал... Z>>Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
CS><picture> использовать. Это блочный элемент.
picture не отображает gif анимацию
Как-то можно заставить быть img блочным? Я так понимаю display: block; не работает...
Пробовал сделать так
Здравствуйте, c-smile, Вы писали:
CS>SciterEval принимает на вход script to execute. Я не знаю как тебе объяснить еще. CS>После загрузки DOM выполняется фактически это вот:
CS>
CS>for each <script> in DOM
CS> SciterEval ( text of that <script> element )
CS>
Здравствуйте, zitz, Вы писали:
Z>picture не отображает gif анимацию Z>Как-то можно заставить быть img блочным? Я так понимаю display: block; не работает...
Здравствуйте, zitz, Вы писали:
Z>Можно ткнуть носом? Не совсем понимаю при чем тут frame... Z>Еще раз по шагам: Z>1. Шаг первый — грузим SciterLoadHtml с картинками, таблицами и пр., загрузка картинок запрещена или они не доступны по сети (проверял и так и так) Z>2. Шаг второй — вызываем функцию SciterSetCSS, куда передаем css с описанием img:busy и img:not(:busy):incomplete (описаны выше) Z>3. Шаг третий — в окне пытаемся проскроллить мышкой — падает в дебрях SCITER32.DLL Z>Я как-то не правильно использую SciterSetCSS? После её вызова надо ещё что-то сделать? Z>Я передаю в css стили различным элементам, падает только из-за img:busy и img:not(:busy):incomplete — комменчу эти два стиля — работает, раскомментирую — падает
У меня нет под рукой проекта на проверить. На той неделе попробую что-то избразить.