Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15294
Рейтинг: 1518
#31: 2017-02-03 00:04:09 ЛС | профиль | цитата
tig-rrr писал(а):
А изменения планируются (чтоб не вызывались доп потоки, точка состояния...) или так и останется?

Так уже поправлено.

Assasin писал(а):
Да все та же проблема - на точку Start попадает Canvas.

Все верно. Тут надо точку InData добавлять как в остальных пакетах.
карма: 26
1
Голосовали:tig-rrr
Ответов: 165
Рейтинг: 6
#32: 2017-02-05 11:25:59 ЛС | профиль | цитата
Dilma, Examples > WebApp > Tabs > Charts > Gauge почему-то не работает. (самая последняя версия Google Chrome)
Pie оттуда же тоже не работает. Опытным путём определил, что такое происходит при заранее заполненном ChartData.

Вообще будет ли справка по компонентам?

Редактировалось 3 раз(а), последний 2017-02-05 11:33:13
карма: 4

0
Администрация
Ответов: 15294
Рейтинг: 1518
#33: 2017-02-05 18:02:03 ЛС | профиль | цитата
Nickname писал(а):
Gauge почему-то не работает.

Поправлена.

Nickname писал(а):
Вообще будет ли справка по компонентам?

Имеется ввиду описание свойств элементов с примерами? (вроде того, что есть для пакета Windows HTTP_PostBuilder)
карма: 26
0
Ответов: 497
Рейтинг: 16
#34: 2017-02-06 01:09:00 ЛС | профиль | цитата
удобно было бы параметр при котором при закрытии формы закрывалась и сама вкладка.
у меня в хроме постоянно с разным интервалом то появляется то пропадает подсказка точек при полной нерушимости курсора.
если графические элементы растягивать больше формы(случайно) то отпускания мыши не происходит
и в Host выдает такое

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
в самом компоненте думаю надо "http://ide.hiasm.com/server/core.php?ip" а не "server/core.php?ip"
карма: 1
        ]  
0
Ответов: 165
Рейтинг: 6
#35: 2017-02-07 12:22:38 ЛС | профиль | цитата
Dilma, да, как в пакете Windows. Думаю, многие привыкли выделять компонент и нажимать F1 при первом знакомстве. Кроме описания точек и примеров там, порой, была дополнительная информация.
Вот в графиках мне не очень понятно, как вводить данные.
карма: 4

0
Администрация
Ответов: 15294
Рейтинг: 1518
#36: 2017-02-07 16:41:34 ЛС | профиль | цитата
Nickname писал(а):
да, как в пакете Windows

Конечно будет.

Nickname писал(а):
Вот в графиках мне не очень понятно, как вводить данные.

Если данные статистические, то см. пример Tabs/Charts/Pie.sha, если динамические - Tabs/Charts/Line.sha. Элементов там не больше 10, т.ч. разобраться думаю можно и без справки.
карма: 26
0
Ответов: 2125
Рейтинг: 159
#37: 2017-02-07 17:15:37 ЛС | профиль | цитата
Dilma, допустим я переписал кодогенератор пакета FASM на PHP. Можно ли его как-то интегрировать в Hion?

Редактировалось 1 раз(а), последний 2017-02-10 14:43:16
карма: 1

0
Ответов: 165
Рейтинг: 6
#38: 2017-02-07 17:16:02 ЛС | профиль | цитата
Dilma, я туда за этим и полез, но в примерах не всегда раскрыты все тонкости. Документация, а именно справка, это здорово.
карма: 4

0
Администрация
Ответов: 15294
Рейтинг: 1518
#39: 2017-02-07 17:59:14 ЛС | профиль | цитата
tsdima писал(а):
Можно ли его как-то интегрировать в Hion?

Если он совместим с Hiasm 5, то да. В этой теме немного подробнее написано о положении дел с hiasm4 http://forum.hiasm.com/topic/66210.

Nickname писал(а):
Документация, а именно справка, это здорово.

Это само собой.
карма: 26
0
Ответов: 2125
Рейтинг: 159
#40: 2017-02-07 18:15:55 ЛС | профиль | цитата
Dilma писал(а):
Если он совместим с Hiasm 5, то да.

Вот тут не совсем понятно. Если посмотреть исходники Hiasm 5 на гитхабе, то понятно, что по прежнему используются conf/*.ini файлы. А в Hion вместо них elements.json. Что же тогда имеется ввиду под совместимостью?

Там в архиве есть моя реализация CGT, но она не полная. А CodeGen переписан на PHP практически один-в-один и использует аналогичный HiAsm 4 интерфейс CGT. Понятно, что я локально у себя имею свой core.php, который запускает мой кодогенератор. Я хотел спросить, нет ли желания интегрировать это всё в ide.hiasm.com? Просто, если переписать ещё и кодогенератор пакета Delphi, то можно будет компилировать и его схемы.
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#41: 2017-02-07 22:32:57 ЛС | профиль | цитата
tsdima писал(а):
Что же тогда имеется ввиду под совместимостью?

Имеется ввиду возможность установки пакета в hiasm5 и сборки приложений от туда.

tsdima писал(а):
Я хотел спросить, нет ли желания интегрировать это всё в ide.hiasm.com?

Что понимается под интеграцией?
карма: 26
0
Ответов: 2125
Рейтинг: 159
#42: 2017-02-07 22:47:41 ЛС | профиль | цитата
Dilma писал(а):
Имеется ввиду возможность установки пакета в hiasm5 и сборки приложений от туда.

А hiasm5 может в консольном режиме собрать схему? Или есть какой-то другой "сборщик"?

Dilma писал(а):
Что понимается под интеграцией?

Вызов кодогенератора, написанного на PHP, непосредственно из core.php. Но раз hion вызывает для сборки исключительно hiasm5, то наверное такой способ кодогенерации ты не рассматриваешь.

Я так понимаю, сейчас *.ini файлы из hiasm5 должны в точности соответствовать elements.json из hion. Есть для этого какая-то конвертилка?
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#43: 2017-02-08 10:35:22 ЛС | профиль | цитата
tsdima писал(а):
А hiasm5 может в консольном режиме собрать схему?

Конечно.

tsdima писал(а):
Вызов кодогенератора, написанного на PHP, непосредственно из core.php

Сейчас на сервере используется php backend, но потом это будет nodejs и для такого кодогенератора все равно придется делать мост. Поэтому работу пакета лучше сразу делать через hiasm5 - меньше проблем с совместимостью.

tsdima писал(а):
Есть для этого какая-то конвертилка?

Есть.
карма: 26
0
Ответов: 2125
Рейтинг: 159
#44: 2017-02-08 11:32:35 ЛС | профиль | цитата
Dilma писал(а):
Конечно.

Не нашёл в исходниках обработку параметров командной строки. У тебя, видимо, какой-то свой hico.cpp

Dilma писал(а):
потом это будет nodejs

Ясно.

Dilma писал(а):
Есть.

Где брать?
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#45: 2017-02-08 13:11:41 ЛС | профиль | цитата
tsdima писал(а):
Не нашёл в исходниках обработку параметров командной строки. У тебя, видимо, какой-то свой hico.cpp

В репозитории нет этого модуля.

tsdima писал(а):
Где брать?

Для пакета Windows:

<?php

$sdb = new SQLite3("<путь к пакету>/elements.db");
$result = $sdb->query("SELECT * FROM groups ORDER BY pos ASC");

function specchar($text) {
return preg_replace("#\"#i", "\\\\\"", preg_replace("#\\\\#i", "\\\\\\", iconv("windows-1251", "utf-8", $text)));
}

$grounpIndex = 0;

function loadConf($tab, $name) {
global $json, $lang, $grounpIndex;

if($name == "VisualStrings") {
$json .= " \"$name\": { \"tab\": \"Tools\" },\n";
return;
}

$conf = @file_get_contents("<путь к пакету>/conf/$name.ini");
if($conf) {
$lines = preg_split("#\r\n#", $conf);

if($name == "EditMulti" || $name == "MRA_Wire")
$tab = "";

$json .= " \"$name\": {\n";
$json .= " \"tab\": \"$tab\"";

$section = 0;
$props = "";
$mt = "";
$group = "";
foreach ($lines as $line) {
if($line == "[About]") {
$section = 0;
}
else if($line == "[Type]") {
$section = 1;
}
else if($line == "[Property]") {
$section = 2;
}
else if($line == "[Methods]") {
$section = 3;
}
else if($line == "[Edit]") {
$section = 4;
}
else if ($line) {
$pars = preg_split("#=#", $line, 2);
if($section == 1) {
if($pars[0] == "Class") {
$class = $pars[1];
if($class == "EditMulti")
$class = "MultiElementEditor";
if($class == "EditMultiEx")
$class = "MultiElementEditorEx";

if($class == "MultiElementEditor" || $class == "MultiElementEditorEx") {
$json .= ",\n \"sys\": [\n";
$json .= ' { "name": "VOffset", "type": 1, "def": 0 },
{ "name": "HOffset", "type": 1, "def": 0 },
{ "name": "Color", "def": "#969696" },
{ "name": "Width", "type": 1, "def": 300 },
{ "name": "Height", "type": 1, "def": 200 }';
$json .= "\n ]";
}
if($class == "Cable")
$class .= "Element";

if($class != "Element")
$json .= ",\n \"class\": \"$class\"";
}
else if($pars[0] == "Sub") {
$sub = $pars[1];
$json .= ",\n \"sub\": \"$sub\"";
}
else if($pars[0] == "Inherit") {
$sub = $pars[1];
$json .= ",\n \"inherit\": \"$sub\"";
}
else if($pars[0] == "Interfaces") {
$sub = $pars[1];
$json .= ",\n \"interfaces\": \"$sub\"";
}
}
else if($section == 2) {
if(count($pars) > 1) {
if($pars[0][0] == "#") {
$group = substr($pars[0], 2);
continue;
}

if($props) $props .= ",\n";
$args = preg_split("#\|#", preg_replace("#\\|\\|#i", "/", $pars[1]));
$type = "";
$list = "";
$def = "";
if(count($args) > 1) {
if(trim($args[1]))
$type = ", \"type\": $args[1]";
if(count($args) > 2)
$def = ", \"def\": ".(is_numeric($args[2]) ? $args[2] : "\"".preg_replace("#\\\\#i", "\\\\\\", $args[2])."\"");
if(count($args) > 3)
$list = ", \"list\": \"$args[3]\"";

if(!$def && $args[1] == 3)
$def = ", \"def\": \"\"";
}
else {

}

$pname = $pars[0];
$flags = 0;
if($pname[0] == "+") {
$pname = substr($pname, 1);
$flags |= 0x1;
}
if($pname[0] == "@") {
$pname = substr($pname, 1);
$flags |= 0x2;
}

$pflags = $flags ? ", \"flags\": $flags" : "";

$pgroup = $group ? ", \"group\": \"$group\"" : "";
$props .= " { \"name\": \"$pname\"$type$def$list$pgroup$pflags }";
}
else {
if($pars[0] == "##")
$group = "";
}
}
else if($section == 3) {
if(count($pars) > 1) {
if($mt) $mt .= ",\n";
$args = preg_split("#\|#", preg_replace("#\\|\\|#i", "/", $pars[1]));
$type = "";
$data = "";
$flags = "";
$pname = $pars[0];
if($pname[0] == "*") {
$pname = substr($pname, 1);
$flags = ", \"flags\": 1";
}
if(count($args) > 1) {
$type = ", \"type\": $args[1]";
//$data = ", \"def\": ".(is_numeric($args[2]) ? $args[2] : "\"".preg_replace("#\\\\#i", "\\\\\\", $args[2])."\"");
}
else {

}
$pparts = preg_split("#%#", $pname);
$mt .= " { \"name\": \"$pparts[0]\"$type$data$flags }";

$lang .= ",\n \"$name.$pname\": \"".specchar($args[0])."\"";
}
}
}
}

if($props)
$json .= ",\n \"props\": [\n$props\n ]";
if($mt)
$json .= ",\n \"points\": [\n$mt\n ]";

$json .= "\n },\n";
}
}

$lang = "{";

$json = "{\n";
$json .= " \"element\": {},\n";

while ($arr = $result->fetchArray()) {
if($arr['name']) {
if($lang != "{") $lang .= ",";
$lang .= "\n \"tab.$arr[name]\": \"".iconv("windows-1251", "utf-8", $arr['info'])."\"";
}

$res = $sdb->query("SELECT * FROM elements WHERE tab = ".$arr['id']." ORDER BY pos ASC");
$tab = $arr['name'];
if(!$tab)
$tab = "*";
while ($e = $res->fetchArray()) {
if($e['name'][0] == "*") {
$name = iconv("windows-1251", "utf-8", $e['name']);
$pars = preg_split("#_#", $name);
if(count($pars) == 2)
$name = $pars[1];
$group = "group$grounpIndex";
$json .= " \"$group\": { \"tab\": \"$tab\", \"group\": true },\n";
$lang .= ",\n \"group.$group\": \"".$name."\"";
$grounpIndex++;
}
else {
$name = $e['name'];
if(substr($name, 0, 3) == "Gl_")
$name[1] = "L";
$lang .= ",\n \"el.$name\": \"".iconv("windows-1251", "utf-8", preg_replace("#\\\\#i", "\\\\\\", $e['info']))."\"";
loadConf($tab, $name);
}
}
}

$arr = array("ImgDrawPoint", "ImgDrawXY", "WinControl", "WinSplitter", "WinLayout", "WinRushControl", "EditMultiEx",
"PlotSeries", "Sprite", "XPMenu", "PrintControl");
foreach ($arr as $value) {
loadConf("", $value);
}

$json .= ' "design": {},
"InfoTip": {},
"LinkTip": {},
"PictureTip": {},
"spheme": {},
"HubEx": {},
"GetDataEx": {},
"LineBreak": {},
"LineBreakEx": {},
"PointHint": {}
';
$json .= "}";

$lang .= "\n}";

echo $json;

file_put_contents("<путь к пакету hion>/elements.json", $json);
file_put_contents("<путь к пакету hion>/lang/ru.json", $lang);

$sdb->close();
карма: 26
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)