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>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.