HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 19.01.15 12:28
Оценка:
Приветствую!

Мне требуется перенос по словам, если слово не влезает в ширину, то оно то оно должно разрываться

Ставлю text-wrap:unrestricted — переносит точку или запятую в конце слова, получаются строки где перенесена только точка.
Как избавится от этого эффекта?
Re: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 19.01.15 23:29
Оценка:
Здравствуйте, zitz, Вы писали:

Z>Приветствую!


Z>Мне требуется перенос по словам, если слово не влезает в ширину, то оно то оно должно разрываться


Z>Ставлю text-wrap:unrestricted — переносит точку или запятую в конце слова, получаются строки где перенесена только точка.

Z>Как избавится от этого эффекта?

Я починил это дело в Sciter. И там это поведение описывается [теперь] стандартным свойством
word-wrap: break-word;


Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.
Re[2]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 22.01.15 12:53
Оценка:
Здравствуйте, 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 который тоже не компилится
Re[2]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 22.01.15 13:48
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.


Как сделать shellicon_behavior? HANDLE_DRAW отключен...

Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback?
Re[2]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 22.01.15 14:30
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.


Как в Sciter сделать мод HLM_SHOW_SELECTION?
Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy, HTMLayoutVisitElements, HTMLayoutGetElementInnerText?
Re[3]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 22.01.15 14:54
Оценка:
Здравствуйте, 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 как пережить при переходе ума не приложу
Re[3]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 22.01.15 17:58
Оценка:
Здравствуйте, zitz, Вы писали:

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


CS>>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.


Z>Как сделать shellicon_behavior? HANDLE_DRAW отключен...


behavior:file-icon; встроенный

См. {scitersdk}\samples\goodies\file-icon.htm

Z>Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback?


Для печати пока никакой альтернативы нет. Работаю над этим. На пока можно использовать HTMPrint***
Re[3]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 22.01.15 18:08
Оценка:
Здравствуйте, 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 и всё такое прочее.

HTMLayoutVisitElements -> SciterSelectElements
HTMLayoutGetElementInnerText -> SciterGetElementTextCB
Re[4]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 22.01.15 18:25
Оценка:
Здравствуйте, 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 как пережить при переходе ума не приложу


А чем ты компилируешь ?
Re[4]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 23.01.15 09:25
Оценка:
Здравствуйте, c-smile, Вы писали:

Z>>Как в Sciter сделать мод HLM_SHOW_SELECTION?

CS>в CSS написать
CS>
CS>body {
CS>  behavior:htmlarea;
CS>}
CS>

CS>и body content будет selectable.

Z>>Какая альтернатива HTMLayoutVisitElements, HTMLayoutGetElementInnerText?

CS>
CS>HTMLayoutVisitElements -> SciterSelectElements
CS>HTMLayoutGetElementInnerText -> SciterGetElementTextCB
CS>


C этим разобрался, спасибо.

Z>>Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy?

CS>Ctrl+C будет копировать выделение в clipboard и всё такое прочее.

Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего
А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано
Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект
Re[4]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 23.01.15 09:40
Оценка:
Здравствуйте, c-smile, Вы писали:

Z>>Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback?

CS>Для печати пока никакой альтернативы нет. Работаю над этим. На пока можно использовать HTMPrint***

Так их вместе не подключить — они конфликтуют по именам:
error C2371: 'HELEMENT' : redefinition; different basic types
И т.п.
Re[5]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 23.01.15 09:42
Оценка:
Здравствуйте, 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>А чем ты компилируешь ?


Проект старый на Visual Studio 6.
Re[5]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 23.01.15 17:27
Оценка:
Здравствуйте, zitz, Вы писали:

Z>>>Какая альтернатива HTMLayoutSelectionExist, HTMLayoutGetSelectedHTML, HTMLayoutClipboardCopy?

CS>>Ctrl+C будет копировать выделение в clipboard и всё такое прочее.

Z>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего

Z>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано
Z>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект

Вот пример behavior:htmlarea на <div class="selectable">.

Там объявлены:
  1. custom menu — <menu.context #for-htmlarea>
  2. getSelectedText() — функция возвращает plain text из selection
  3. getSelectedHTML() — функция возвращает HTML из selection

Эти две функции можно вызывать снаружи из C++

sciter::value result;
SciterCall(hwnd,"getSelectedText",0,nullptr,&result);


А можно всю твою обработку содержимого selection прямо в скрипте и делать.

<html>
  <head>
    <title>behavior:htmlarea demo</title>
    <style>
      div.selectable {
        border:1px solid;
        behavior:htmlarea;
        context-menu: selector(menu#for-htmlarea);
      }
    </style>
    <menu.context #for-htmlarea>
      <li command="edit:copy"    style="foreground-image:url(sciter:copy.png)"><label>Copy</label><span class="accesskey">Ctrl+C</span></li>
      <hr/>
      <li command="edit:selectall"><label>Select All</label><span class="accesskey">Ctrl+A</span></li>
      <hr/>
      <caption>Custom actions</caption>
      <li #selected-text><label>Show selected text</label></li>
      <li #selected-html><label>Show selected HTML</label></li>
    </menu>
    <script type="text/tiscript">
    
    function getSelectedText() {
      return $(div.selectable).selection.text;
    }
    
    function getSelectedHTML() {
      return $(div.selectable).selection.html;
    }

    function hasSelection() {
      return $(div.selectable).selection.type;
    }
    
    $(div.selectable).on("click","li#selected-text", function() { view.msgbox(#information,getSelectedText().htmlEscape()); })
                     .on("click","li#selected-html", function() { view.msgbox(#information,getSelectedHTML().htmlEscape()); })
                     .on("keydown", function(evt) { return true; /*supress key handling in selectable */ } );
    
    </script>
  </head>
<body>
  <p>Element below is selectable as it uses <code>behavior:htmlarea</code></p>
  <div.selectable>
    <h1>behavior:menu</h1>
    <p>This behavior provides basic hierarchical menu functionality</p>
    <h2>Elements</h2>
    <p>that have this behavior applied by default to:</p>
    <ul>
      <li><code>&lt;menu class=&quot;context&quot;&gt;</code> - context menu;</li>
      <li><code>&lt;menu class=&quot;popup&quot;&gt;</code> - popup menu.</li></ul>
    <h2>Model</h2>
    <p>Example of menu declaration in Sciter:</p>
 <div>
</body>
</html>
Re[5]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 23.01.15 17:31
Оценка:
Здравствуйте, zitz, Вы писали:

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


Z>>>Как организовать печать? Какая альтернатива функциям HTMPrintSetDataReady, HTMPrintSetCallback?

CS>>Для печати пока никакой альтернативы нет. Работаю над этим. На пока можно использовать HTMPrint***

Z>Так их вместе не подключить — они конфликтуют по именам:

Z>error C2371: 'HELEMENT' : redefinition; different basic types
Z>И т.п.

Ты их неправильно включаешь как-то.

Два .cpp — два разных include. Не должны мешать друг другу.
Re[2]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 26.01.15 11:43
Оценка:
Здравствуйте, 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 такого эффекта нет.
Re[6]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 26.01.15 13:38
Оценка:
Здравствуйте, c-smile, Вы писали:

Z>>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего

Z>>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано
Z>>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект

CS>Вот пример behavior:htmlarea на <div class="selectable">.

CS>Там объявлены:
CS>

    CS>
  1. custom menu — <menu.context #for-htmlarea>
    CS>
  2. getSelectedText() — функция возвращает plain text из selection
    CS>
  3. 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? Этоже прекрасная вещь! Банальный поиск текста приходится делать через хайлайт, а не через селект... А теперь оно вообще убрано...
Re[3]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 26.01.15 18:49
Оценка:
Здравствуйте, 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; }" — всё равно квадраты на местах картинок...


По усолчанию стили там:
svg:incomplete:not(:busy),
img:incomplete:not(:busy)   
{
   background-image :url(sciter:no-image.png);
   background-repeat: repeat; 
   min-width:20px; min-height:20px;
   border:1px solid; border-color: #aaa #eee #eee #aaa; }


Т.е. min-width/height нужно давить. И border.


Z>5. Сразу поле делаю SciterLoadHtml RedrawWindow и вызываю SciterSetScrollPos — внутри html таблица растягивается по ширине и скролл налезает на контент. На HTMLayout такого нет.


Ни разу не видел, надо HTML на посмотреть.

Z>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл.

Z>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет.

ditto.
Re[7]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 26.01.15 19:25
Оценка:
Здравствуйте, zitz, Вы писали:

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


Z>>>Допустим для HTMLayoutClipboardCopy можно послать ему Ctrl + C — хоть это и через задний проход, но всёже лучше чем ничего

Z>>>А вот с HTMLayoutSelectionExist что делать? Я делаю кастомное меню в котором пункт IDM_COPY задисейблен если ничего не выбрано
Z>>>Плюс как мне получить HTMLayoutGetSelectedHTML? Меня не устраивает по ряду причин то что копируется в буфер по дефолту, по этому я делаю свой обработчик чтобы исправить этот тект

CS>>Вот пример behavior:htmlarea на <div class="selectable">.

CS>>Там объявлены:
CS>>

    CS>>
  1. custom menu — <menu.context #for-htmlarea>
    CS>>
  2. getSelectedText() — функция возвращает plain text из selection
    CS>>
  3. 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 для каждого документа:

<frame #content src="" src="content/preface.htm" content-style="styles/content.css"/>


См. {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 и вообще много чего на эту тему.
Re[4]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 27.01.15 09:24
Оценка:
Здравствуйте, 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 на посмотреть.

Пожалуйста:
<HTML>
 <HEAD>
  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
  <style type='text/css'>
   body{ behavior: htmlarea; }
   body{ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
         font-size: 8pt;
         word-wrap: break-word;
         text-wrap: unrestricted; }
   html { overflow:auto scroll-manner( page-animation:false, step-animation:false, home-animation: false, wheel-animation:false, step:6.25%, page:100% ) }
   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; }
   table{ width: 100%;}
   .tableborderbottom{ border:1px; border-color:rgb( 235, 235, 235);border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: dashed; }
   td{ vertical-align: top; }
   a{ text-decoration: none; }
   a:hover{ text-decoration: underline; color: #559DE5 }
   .textUserName{ color: #559DE5; font-weight: bold; }
   .textMyName{ color: #808080; font-weight: bold; }
   .textTime{ color: #808080; }
   .textFileState{ color: #808080; }
   .textLink{ color: #559DE5; }
   .tdtime{ width: 50px; text-align: right; vertical-align: top; }
   .hidden{ display: none; }
   .shown{ }
   .selection{ color: white; background-color: green; }
   .shell-icon{ width: 16px; height: 16px; behavior: file-icon; }
  </style>
 </HEAD>
 <BODY>
  <DIV valign='center' align='center'>
<B>1</B> - 2
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <DIV valign='center'>
   <IMG src='img_clock' ALIGN='left'><B>3</B> - 4
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <TABLE  >
   <TR>
    <TD><FONT class='textMyName'>5</FONT></TD>
    <TD></TD>
   </TR>
   <TR tagUid='0021F0EE-F6B9-420A-8FC3-036C957ADC3E' tagDate='2015.1.22-18:12:12'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>18:12</FONT></TD>
   </TR>
  </TABLE>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <DIV valign='center'>
   <IMG src='img_clock' ALIGN='left'><B>3</B> - 4
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <TABLE class='tableborderbottom' >
   <TR>
    <TD><FONT class='textMyName'>5</FONT></TD>
    <TD></TD>
   </TR>
   <TR tagUid='BAF051A9-B128-447B-9556-969E82905605' tagDate='2015.1.26-10:45:1'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>10:45</FONT></TD>
   </TR>
  </TABLE>
  <TABLE class='tableborderbottom' >
   <TR tagUid='67992356-FC21-4317-AA3F-084B35620E8B' tagDate='2015.1.26-14:29:18'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:29</FONT></TD>
   </TR>
  </TABLE>
  <TABLE class='tableborderbottom' >
   <TR tagUid='6592F136-D252-4123-A7E2-010F87D9F232' tagDate='2015.1.26-14:31:28'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:31</FONT></TD>
   </TR>
  </TABLE>
  <TABLE class='tableborderbottom' >
   <TR tagUid='CC37B55A-7E88-41E3-B41C-7D5B58DB584F' tagDate='2015.1.26-14:40:25'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:40</FONT></TD>
   </TR>
  </TABLE>
  <TABLE  >
   <TR tagUid='FC13C629-56C8-4B2F-90F0-60EDAF0BD1FA' tagDate='2015.1.26-14:40:37'>
    <TD><DIV>одиннадцатиклассницаодиннадцатиклассницаодиннадцатиклассница...</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:40</FONT></TD>
   </TR>
  </TABLE>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <DIV valign='center'>
   <IMG src='img_clock' ALIGN='left'><B>4</B> - 1
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <TABLE  >
   <TR>
    <TD><FONT class='textMyName'>5</FONT></TD>
    <TD></TD>
   </TR>
   <TR tagUid='6BF48AFF-5E13-46B6-8F9F-F3567F58786C' tagDate='2015.1.27-11:53:19'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>11:53</FONT></TD>
   </TR>
  </TABLE>
 </BODY>
</HTML>

Свою проблему решил так — после SciterLoadHtml принудительно отправляю окну WM_SIZE после этого отображается нормально
Кстати если этот html открыть в sciter.exe, то при уменьшении размера окна вообще два скролла появится

Z>>6. Загружаю SciterLoadHtml картинку GIF — не отображается, надо подрыгать, размер поменять чтобы заработало, причем когда размер меняешь мигает скролл.

Z>>Повторяется на sciter.exe если этот html загрузить по кнопке load html in view. На HTMLayout такого эффекта нет.
CS>Ни разу не видел, надо HTML на посмотреть.

Пожалуйста:
<HTML>
 <HEAD>
  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
  <style type='text/css'>
   body{ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
         font-size: 8pt;
         background-color: #EEF2FB;
         margin: 0;
         padding: 0;
         height: 100%;
         text-wrap: unrestricted; }
   div#table { display: table;
               width: 100%;
               height: 100%; }
   div#row { display: table-row;
             width: 100%;
             height: 100%; }
   div#cell { display: table-cell;
              height: 100%;
              width: 100%;
              vertical-align: middle; }
   img { text-align: center;
         margin: 0 auto;
         border-bottom: #000 solid 1px;
         border-right: #000 solid 1px;
         border-top: #000 solid 1px;
         border-left: #000 solid 1px;
         display: block; }
  </style>
 </HEAD>
 <BODY>
  <div id='table'>
   <div id='row'>
    <div id='cell'>
     <img src='C:\gif.gif'>
    </div>
   </div>
  </div>
 </BODY>
</HTML>

Эту странность не получается побороть...
Re[8]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 27.01.15 09:57
Оценка:
Здравствуйте, 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.
Re[4]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 27.01.15 10:14
Оценка:
Здравствуйте, 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, но всё равно плавный скролл...
Re[2]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 27.01.15 10:52
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Если есть возможность перейти на Sciter то лучше это сделать по многим причинам включая эту.


Загружаю html, страница длинная, зажимаю мышкой скролл бар и тяну вниз — вылетает
<td> element is not allowed at ((244))
First-chance exception in proga.exe (SCITER32.DLL): 0xC0000005: Access Violation.

В sciter.exe эта бага не повторяется...
Re[9]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 27.01.15 17:29
Оценка:
Здравствуйте, zitz, Вы писали:

Z>Зачем такие сложности? Уж если корячить html, то можно SciterSetElementHtml сделать...

Z>Я же не против перестроить свою корявую ментальную модель, но чтобы сделать себе эти API нужно уж очень хитро извратится: сделать html по умолчанию, в нем фрейм, в этот фрейм грузить css извне, содержимое извне... Это при том что у меня уже всё работает как надо на HTMLayout и я уже и так не кислый рефакторинг провел.
Z>Ведь с CSS же всё просто — есть SciterSetCSS и SciterAppendMasterCSS, крути-верти как хочешь без особых плясок с бубном.

Z>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.


Зачем SciterSetScript если есть SciterEval ?

Этой функцией можно script непосредственно исполнить, а можно
SciterEval(hwnd, "include \"some.tis\";");
Re[5]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 27.01.15 18:13
Оценка:
Здравствуйте, 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 добавил

CSS:
td[bgcolor]{ aspect: SetBGColor url(html4helpers.tis); }


html4helpers.tis
function SetBGColor() {
  this.style["background-color"] = this.attributes["bgcolor"];
}


Z>>>4. Отключаю фон не загрузившихся картинок, делаю SciterAppendMasterCSS...


Z>Понял в чем проблема — не работает SciterAppendMasterCSS, хотя при вызове возвращает 1...

Z>Передал всё на SciterSetCSS, заработало

SciterAppendMasterCSS работает, в sciter.exe так добавляется "<checkbox>":

  const char* def = "checkbox { display:inline-block; display-model:inline-inside; style-set: \"std-checkbox\"; }";
  SciterAppendMasterCSS((const byte*)def,UINT(strlen(def)));


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 приложениях.

Попробуй вот:

<HTML>
 <HEAD>
  <style>
   body{ background-color: #EEF2FB;
         margin: 0;
         padding: 0; }
   img { 
         margin: *;
         border: #000 solid 1px;
         display: block; 
    }
  </style>
 </HEAD>
 <BODY>
    <img src='sciter:busy.png'>
 </BODY>
</HTML>


Про margin: *; я рассказал в статье
Re[9]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 27.01.15 20:28
Оценка:
Здравствуйте, 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]

}
Отредактировано 27.01.2015 20:29 c-smile . Предыдущая версия .
Re[3]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 28.01.15 13:20
Оценка:
Здравствуйте, 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; }
Убираю эти два стиля — падения прекращаются
Re[6]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 28.01.15 13:28
Оценка:
Здравствуйте, 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: * работает как надо и эффект с исчезанием картинки пропал...
Можно как-то по другому решить этот вопрос, чтобы работало и там и там?
Re[10]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 28.01.15 13:58
Оценка:
Здравствуйте, c-smile, Вы писали:

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


Z>>Слезно прошу, сделай, пожалуйста, такуюже штуку для скриптов — SciterSetScript — всё многократно упростится, тем более что "scripting это такая же декларация как и CSS по большому счету" и скрипты я как понял это и есть основная фишка Sciter по сравнению с HTMLayout.


CS>Про SciterEval я уже сказал выше но на самом деле тебе и это не надо.


Я не совсем понимаю... Можно скрипт в css запихнуть?
Или ты предлагаешь делать мне внешний файл и его скармлевать в Sciter через SciterEval?
Можно как то обойтись без создания файла и без нахлобучек ввиде фреймов? Требуется генерировать скрипт программно и сразу пихать его в Sciter?

Например, есть SciterSetCSS — удобно, практично, прекрасно! Я могу сгенерировать стиль и сразу его применить, хочешь так крути, хочешь сяк... В одном случае то, во втором это, в третьем по другому. Можно на лету менять. Не надо ничего никуда сохранять во внешние файлы — красота. В этом случае тоже можно же сказать — это API убираем, пусть все грузят через include...
Если будет SciterSetScript то он даст такуюже свободу, тем более что с помощью скриптов можно расширить API которые не хочет возвращать разработчик
Re[7]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 28.01.15 17:59
Оценка:
Здравствуйте, 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 не спасает


Попробуй так
  Твой markup
<HTML>
 <HEAD>
  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
  <style type='text/css'>
   html { overflow:hidden; }  
   body{ behavior: htmlarea; overflow:auto; size:*; margin:0; }
   body{ font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
         font-size: 8pt;
         word-wrap: break-word;
         text-wrap: unrestricted; }
   table{ width:*;}
   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; }
   .tableborderbottom{ border:1px; border-color:rgb( 235, 235, 235);border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: dashed; }
   td{ vertical-align: top; }
   a{ text-decoration: none; }
   a:hover{ text-decoration: underline; color: #559DE5 }
   .textUserName{ color: #559DE5; font-weight: bold; }
   .textMyName{ color: #808080; font-weight: bold; }
   .textTime{ color: #808080; }
   .textFileState{ color: #808080; }
   .textLink{ color: #559DE5; }
   .tdtime{ width: 50px; text-align: right; vertical-align: top; }
   .hidden{ display: none; }
   .shown{ }
   .selection{ color: white; background-color: green; }
   .shell-icon{ width: 16px; height: 16px; behavior: file-icon; }
  </style>
 </HEAD>
 <BODY>
  <DIV valign='center' align='center'>
<B>1</B> - 2
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <DIV valign='center'>
   <IMG src='img_clock' ALIGN='left'><B>3</B> - 4
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <TABLE  >
   <TR>
    <TD><FONT class='textMyName'>5</FONT></TD>
    <TD></TD>
   </TR>
   <TR tagUid='0021F0EE-F6B9-420A-8FC3-036C957ADC3E' tagDate='2015.1.22-18:12:12'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>18:12</FONT></TD>
   </TR>
  </TABLE>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <DIV valign='center'>
   <IMG src='img_clock' ALIGN='left'><B>3</B> - 4
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <TABLE class='tableborderbottom' >
   <TR>
    <TD><FONT class='textMyName'>5</FONT></TD>
    <TD></TD>
   </TR>
   <TR tagUid='BAF051A9-B128-447B-9556-969E82905605' tagDate='2015.1.26-10:45:1'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>10:45</FONT></TD>
   </TR>
  </TABLE>
  <TABLE class='tableborderbottom' >
   <TR tagUid='67992356-FC21-4317-AA3F-084B35620E8B' tagDate='2015.1.26-14:29:18'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:29</FONT></TD>
   </TR>
  </TABLE>
  <TABLE class='tableborderbottom' >
   <TR tagUid='6592F136-D252-4123-A7E2-010F87D9F232' tagDate='2015.1.26-14:31:28'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:31</FONT></TD>
   </TR>
  </TABLE>
  <TABLE class='tableborderbottom' >
   <TR tagUid='CC37B55A-7E88-41E3-B41C-7D5B58DB584F' tagDate='2015.1.26-14:40:25'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:40</FONT></TD>
   </TR>
  </TABLE>
  <TABLE  >
   <TR tagUid='FC13C629-56C8-4B2F-90F0-60EDAF0BD1FA' tagDate='2015.1.26-14:40:37'>
    <TD><DIV>одиннадцатиклассницаодиннадцатиклассницаодиннадцатиклассница...</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>14:40</FONT></TD>
   </TR>
  </TABLE>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <DIV valign='center'>
   <IMG src='img_clock' ALIGN='left'><B>4</B> - 1
  </DIV>
  <HR SIZE='1' COLOR='#CECECE' ALIGN='LEFT'>
  <TABLE  >
   <TR>
    <TD><FONT class='textMyName'>5</FONT></TD>
    <TD></TD>
   </TR>
   <TR tagUid='6BF48AFF-5E13-46B6-8F9F-F3567F58786C' tagDate='2015.1.27-11:53:19'>
    <TD><DIV>одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница. одиннадцатиклассница.</DIV></TD>
    <TD class='tdtime'><FONT class='textTime'><IMG class='hidden' src='img_not_received'>11:53</FONT></TD>
   </TR>
  </TABLE>
 </BODY>
</HTML>


Обрати внимание на table { width:* }

У тебя было 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>Можно как-то по другому решить этот вопрос, чтобы работало и там и там?

<picture> использовать. Это блочный элемент.

<html>
  <head>
    <style>
      picture { margin:* }  
    </style>
  </head>
<body>
  <picture src=alpha-back.png />
</body>
</html>
Re[4]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 28.01.15 18:25
Оценка:
Здравствуйте, 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>Убираю эти два стиля — падения прекращаются

Про <frame> я тебе уже сказал.
Re[11]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 28.01.15 20:16
Оценка:
Здравствуйте, 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 )


Это понятно?
Re[5]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 29.01.15 11:39
Оценка:
Здравствуйте, 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 — всё работает корректно
Re[8]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 29.01.15 12:14
Оценка:
Здравствуйте, 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; не работает...
Пробовал сделать так
<HTML>
 <HEAD>
  <style>
   body{ background-color: #EEF2FB; margin: 0; padding: 0; }
   div { margin: *; }
   img { border: #000 solid 1px; display: block; }
  </style>
 </HEAD>
 <BODY>
  <div>
   <img src='sciter:busy.png'>
  </div>
 </BODY>
</HTML>

HTMLayout отображается как надо, в Sciter нет — воспринимает его только как объект по высоте, а ширину игнорирует — пробовал даже вручную поставить
Re[12]: HTMLayout text-wrap:unrestricted
От: zitz  
Дата: 29.01.15 12:15
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>SciterEval принимает на вход script to execute. Я не знаю как тебе объяснить еще.

CS>После загрузки DOM выполняется фактически это вот:

CS>
CS>for each <script> in DOM 
CS>  SciterEval ( text of that <script> element )
CS>


CS>Это понятно?


Теперь понятно, спасибо! Буду пробовать
Re[9]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 29.01.15 18:14
Оценка:
Здравствуйте, zitz, Вы писали:

Z>picture не отображает gif анимацию

Z>Как-то можно заставить быть img блочным? Я так понимаю display: block; не работает...

в HTMLayout — никак. В Sciter display: block;

Вот это работает в SC и HL:

<html>
  <head>
    <title></title>
    <style>
      body {
        foreground-image: url(busy.png);
        foreground-repeat: no-repeat;
        foreground-position: 50% 50%;
      }
    </style>
  </head>
<body>
</body>
</html>


busy.png это анимирванный png.
Re[6]: HTMLayout text-wrap:unrestricted
От: c-smile Канада http://terrainformatica.com
Дата: 30.01.15 07:39
Оценка:
Здравствуйте, 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 — комменчу эти два стиля — работает, раскомментирую — падает

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