Мне требуется перенос по словам, если слово не влезает в ширину, то оно то оно должно разрываться
Ставлю 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.