SimpleTV Bug Tracker

Просмотр подробностей проблемы перейти к комментариям ] вики ] история изменений ] печать ]
НомерПроектКатегорияВидимостьСозданИзменен
0000474Lua API[SimpleTV] Предложениеобщая2012-08-10 13:132014-12-20 13:50
ИнициаторPoshe80 
ОтветственныйSergeyVS 
ПриоритетобычныйСерьезностьмалаяВоспроизводимостьнеприменимо
СостояниеотработанРешениерешен 
ПлатформаОперационная системаВерсия ОС
Версия продукта[SimpleTV] 0.4.6 
Целевая версияРешен в версии 
Суть0000474: Описание функций API для доступа из lua
Подробностиhttp://iptv.gen12.net/dokuwiki/doku.php/mantis/simpletv/api [^]


К сожалению нигде не смог найти описания API который доступ из lua.
Из скриптов пока понял что можно делать страничку со своими настройками в HTML, перехватывать смену адреса плейлиста, если он определенного вида — то менять его.
МеткиLua API
Вложенные файлы

- Связи
связан с 0000839назначенSergeyVS Lua API Вопросы и ошибки по использованию LUA API SimpleTV 
связан с 0000933закрытSergeyVS SimpleTV Вопросы и ошибки по использованию LUA API SimpleTV 
связан с 0001053закрытSergeyVS SimpleTV Вопросы и ошибки по использованию LUA API SimpleTV 

-  Комментарии
(0002512)
SergeyVS (администратор)
2012-08-10 18:29

А описание API пока нет. Напишите что интересует в первую очередь, начну его писать.
(0002514)
SergeyVS (администратор)
2012-08-10 18:34
изменен: 2012-12-22 21:05

По файлам
\luaScr\

getadress.lua
Вызывается при старте канала

Признак замены адреса
m_simpleTV.Control.ChangeAdress- string(Yes|No)

Адрес
m_simpleTV.Control.CurrentAdress - string



events.lua
События
--input
--m_simpleTV.Control.Reason - Error|EndReached|Stopped
--m_simpleTV.Control.CurrentAdress - Address from database
--m_simpleTV.Control.RealAdress - Real Address

--output
--m_simpleTV.Control.CurrentAddress - Address from database
--m_simpleTV.Control.Action - dodefault|repeat



onconfig.lua
Вызывается при открытии окна настроек


refresh.lua
Вызывается при обновлении плейлиста(toolbar,menu)


startup.lua
Вызывается при старте программы


с версии 0.4.7 r2
Изменен принцип запуска файлов

onconfig.lua
refresh.lua
startup.lua
getadress.lua
Оставлены для совместимости.

Новая папка
/User/StartUp
Все LUA файлы,находящиеся в ней будут исполнены при запуке .

Новые функции (luaScr\lib\executehelper.lua)
AddFileToExecute(Имя события,Путь Lua файла)
RemoveFileFromExecute(Имя события,Путь Lua файла)
Пример
AddFileToExecute('getaddress',m_simpleTV.MainScriptDir .. "user/inetcom/getaddress.lua")
AddFileToExecute('onconfig',m_simpleTV.MainScriptDir .. "user\\inetcom\\initconfig.lua")

(0002515)
Poshe80 (инициатор)
2012-08-10 18:53
изменен: 2012-08-10 18:57

Ага, спасибо!

Еще я заметил папку `user`. Я так понял что она для пользовательских скриптов и расширений. Долго догадывался, почему не вызываются мои скрипты, когда потом заметил что их вызов должен быть явно прописан в `luaScr/startup.lua` например.

Получается я не смогу просто дать `zip`, чтобы его распаковали в `user`. Надо будет еще прописывать вызовы всех файлов.

Почему бы не сделать так: например `startup.lua`

<code>
for file in dir(m_simpleTV.MainScriptDir..'user') do
  if file.isDirectory? and file.open("startup.lua").isReadable?
    dofile file.open("startup.lua")
  end
end
</code>

Правда, я так понимаю, для этого надо будет таскать за собой или [lfs](http://keplerproject.github.com/luafilesystem/ [^]) или из программы передавать массив папок в lua.

(0002516)
Poshe80 (инициатор)
2012-08-10 18:55

А можно сразу в местную wiki то, что вынаписали?
(0002517)
SergeyVS (администратор)
2012-08-10 19:33

В Wiki попозже перенесу.

Для одиночных(простых, из одного файла) скриптов, которые только подменяют адрес, есть папки luaScr/user/video и luaScr/user/Rtmpdump. Туда можно просто кинуть файл он будет исполнен средствами LUA (video.lua,Rtmpdump.lua)
(0002518)
SergeyVS (администратор)
2012-08-10 20:00
изменен: 2012-12-22 20:54

WinInet
opt - необязательный параметр

m_simpleTV.WinInet.New (User Agent - str(opt),Flags - number(opt),AccessType - number(opt),Proxy - str(opt),ProxyBypass - str (opt)
return SesionId - number or nil

                              
m_simpleTV.WinInet.Close(SesionId - number)


m_simpleTV.WinInet.Post(SesionId - number,ServerUrl - str , ObjectUrl - str(opt), HeaderStr - str(opt), Body - str(Opt)


m_simpleTV.WinInet.Get(SesionId - number,ServerUrl - str , ObjectUrl - str(opt), bAsyn - number(opt))
с версии 0.4.7 r2
m_simpleTV.WinInet.Get(SesionId - number,ServerUrl - str , ObjectUrl - str(opt), bAsyn - number(opt), header(opt))


пример
local rc,data = m_simpleTV.WinInet.Get(SesionId,'http://iptv.gen12.net' [^])

rc - number | Код состояния HTTP - http://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP [^]
data - string | данные



m_simpleTV.WinInet.GetCookies (SesionId - number,ServerUrl - str,CookieName - str)
return cookie data - str or nil


m_simpleTV.WinInet.SetCookies(SesionId - number,ServerUrl - str,Cookie_name -str,Cookie_data -str)
return true/false


m_simpleTV.WinInet.GetFile(SesionId - number, ServerUrl - str , ObjectUrl - str, FileName - str, SizeToWait - number,CompleteEvent - string)


m_simpleTV.WinInet.SetOptionInt(SesionId - number,Option - number,Value - number,Flag - number)
return true/false


m_simpleTV.WinInet.GetRawHeader(SesionId - number)
return string


m_simpleTV.WinInet.SetOpenRequestFlags(SesionId - number,Flags - number)

(0002520)
Poshe80 (инициатор)
2012-08-10 20:54

Можно ли как-то в `WinInet.Get` передать порт на который соединяться, отличный от 80?
(0002521)
SergeyVS (администратор)
2012-08-10 21:23

начиная с версии 0.4.7 - ObjectUrl - необязательный параметр

ServerUrl - адрес в виде
<protocol>://<ServerUrl>:<port-number>[<path>]

Если ObjectUrl ~= nil то
ServerUrl - host
ObjectUrl - path
(0002522)
Poshe80 (инициатор)
2012-08-11 18:37

Из сигнатур методов следует что HTTP-заголовки можно передать только в `POST` запросах. Как быть с GET запросами?
(0002855)
Gogi (инициатор)
2012-11-21 18:57

Какой функцией в lua можно установить настройку текущих параметров, например, формат изображения, обрезка и т.д.? И откуда брать имена всех параметров.
Хотелось бы устанавливать формат картинки для определённых адресов прямо из скрипта.
(0002856)
SergeyVS (администратор)
2012-11-21 20:09

Нет таких функций.
Попробуйте
http://rghost.ru/41718946 [^] - версия r2, с поддержкой
#EXTINF:-1 aspect-ratio=4:3,
(0002857)
Gogi (инициатор)
2012-11-21 21:09

SergeyVS
Туда можно любые параметры VLC добавлять?
Круто...
(0002858)
SergeyVS (администратор)
2012-11-21 21:36

Нет, не все.
aspect-ratio
crop
deinterlace

Другие параметы vlc можно добавлять к адресу
$OPT:параметр=значение

#EXTINF:-1 aspect-ratio=4:3 crop=16:9 ,Название
адрес$OPT:параметр=значение$OPT:параметр=значение
(0002992)
SergeyVS (администратор)
2012-12-22 20:50
изменен: 2012-12-22 20:51

Загрузка плейлиста
p={}
p.TypeSourse = 1 -- 0-mdb 1-m3u
p.DeleteBeforeLoad = 0 -- база будет очищенна перед загрузкой
p.TypeSkip = 1 --
p.TypeFind = 0 --
p.AutoSearch = 1 -- авто поиск LOGO/EPG
p.NumberM3U = 1 -- учитывать номера из m3u
p.Find_Group = 1 -- учитывать группы из m3u
p.TypeCoding = 0 -- -1-auto 0 - plane text 1- UTF8 2- unicode
p.BorpasFileFormat=1 -- обработка спец. комманд (url-tvg,cache,tvg-name,tvg-shift,tvg-logo)
p.ExtFilter = '' -- название расширенного фильтра
p.AutoNumber = 1 -- авто нумерация каналов

local err,add,ref,names = m_simpleTV.Common.LoadPlayList(URI m3u файла,p,0,true,false)

err - ошибка (true/false)
add - кол-во добавленных каналов
ref - кол-во обновленных каналов
names - имена добавленных каналов с разделителем $end

(0004455)
DmitryR (руководитель)
2013-04-08 15:04

Сергей,
что означает
p.TypeSkip и p.TypeFind

p.DeleteBeforeLoad - c версии 0.4.7 r4 будер чистить всю базу или p.UpdateID?

"Если запись существует" из окна загрузки M3U какими ключами задается?
(0004456)
GladiatorX (руководитель)
2013-04-08 15:11

Например, входным параметром функции OnNavigateComplete является Object. Какие свойства можно "вытянуть" у этого объекта?
(0004460)
SergeyVS (администратор)
2013-04-08 19:51

DmitryR
p.TypeSkip аналог - combobox Обновлять если совпадает и тд (0,1,2)
p.TypeFind аналог - Имя или адрес (0/1)

p.DeleteBeforeLoad - будет чистить всю базу

GladiatorX
Object - это просто индетификатор (int)
(0004461)
DmitryR (руководитель)
2013-04-08 20:44

Сергей,
А очистить именно этот источник возможно?
(0004462)
SergeyVS (администратор)
2013-04-08 20:50

Будет возможно в r4

m_simpleTV.Database

Будет доступ к Action SQL
m_simpleTV.Database.ExecuteSql(Sql_str)
(0004474)
GladiatorX (руководитель)
2013-04-08 22:09

>просто индетификатор

т.е. оконный хэндл?
(0004476)
SergeyVS (администратор)
2013-04-08 22:27
изменен: 2013-04-08 22:28

Нет, это адрес C++ класса, для LUA это просто число
Пример на С++
//------------------------------------------------------------------
int CMyLuaConfig::LuaSetElementText(lua_State *L,BOOL UTF8)
{
 CString IdName,ValStr;
 CMyHtmlDialog * p;
TRY
 {
   p = (CMyHtmlDialog *)(lua_touserdata(L, CMyLua::ARG_1)); //Object
     
   if (!AfxIsValidAddress(p,sizeof(CMyHtmlDialog),FALSE))
                        AfxThrowUserException();
    
   if (!MultiByteToUnicode(IdName,CStringA((char*)lua_tostring(L, CMyLua::ARG_2)),UTF8))
                                    AfxThrowUserException();
   if (!MultiByteToUnicode(ValStr,CStringA((char*)lua_tostring(L, CMyLua::ARG_3)),UTF8))
                                    AfxThrowUserException();
   
  p->SetElementText(IdName,ValStr);
  lua_pushboolean(L,TRUE);
 }
  CATCH_ALL(e)
    {
     lua_pushboolean(L,FALSE);
    }END_CATCH_ALL

 return 1;
}
//------------------------------------------------------------------

(0005178)
GladiatorX (руководитель)
2013-05-19 13:13

Сергей! У меня вопрос по OnNavigateComplete. Он два раза выполняется при инициализации окна?
(0005645)
GladiatorX (руководитель)
2013-06-18 21:29
изменен: 2013-06-18 21:32

Сергей. А SimpleTV может сделать get-запрос по HTTPS протоколу?

(0007231)
SergeyVS (администратор)
2013-11-24 20:15

http://iptv.gen12.net/dokuwiki/doku.php/mantis/simpletv/api [^]
(0007389)
caxap (участник)
2013-12-06 03:22
изменен: 2013-12-06 03:31

Есть string 'Кино' в Unicode кодировке с json.
Вопрос: как конвертировать Unicode в UTF-8 в луа-скрипте, сам скрипт файл сохранён как ANSI as UTF-8? Пример:

local s = '!!u041a!!u0438!!u043d!!u043e'
debug_in_file('\nkino: '.. m_simpleTV.Common.string_UnicodeToUTF8(string.gsub(s, '!!u','\\u')))

Результат пишет вместо 'kino: Кино' такое (LuaDebug.txt formatted as UTF-8):
kino: 屜ふㄴ屡畜㐰㠳屜ふ㌴層畜㐰攳∀਀ᨭ煢ⴭ耀Ô
В чём проблема?

(0007390)
SergeyVS (администратор)
2013-12-06 13:19

В s не unicode a 'escaped unicode'

Примерно так надо
----------------------------------------------------------------------------------
function unescape2 (s)
  return string.gsub(s, "\\u(%x%x%x%x)", function (h)
          local i = tonumber(h,16)
          return string.char(i%256,math.floor(i/256))
          end)
end
----------------------------------------------------------------------------------


local s = '\\u041a\\u0438\\u043d\\u043e\\u0000'

debug_in_file(m_simpleTV.Common.string_UnicodeToUTF8(unescape2(s)))
(0007393)
caxap (участник)
2013-12-06 14:23
изменен: 2013-12-06 15:01

Сергей, спасибо!

local s = '!!u041a!!u0438!!u043d!!u043e'
s = string.gsub(s, '!!u','\\u')
s = s .. '\\u0000'
debug_in_file('\n\nkino: ' .. s)
debug_in_file('\nkino: ' .. unescape2(s))
debug_in_file('\nkino: ' .. m_simpleTV.Common.string_UnicodeToUTF8(unescape2(s)))

Здесь UTF-8 выход слова 'Кино' для unescape2, unescape1 и unescape соответственно:

kino: \u041a\u0438\u043d\u043e\u0000
kino: 8=>
kino: Кино

kino: \u041a\u0438\u043d\u043e\u0000
kino: Кино\u0000
kino: 髐룐뷐뻐畜〰〰

kino: \u041a\u0438\u043d\u043e\u0000
kino: \u041a\u0438\u043d\u043e\u0000
kino: 畜㐰愱畜㐰㠳畜㐰搳畜㐰攳畜〰〰

Что интересно, если убрать #0 терминатор с конца s, то получим такое:

kino: \u041a\u0438\u043d\u043e
kino: 8=>
kino: Кино✀

kino: \u041a\u0438\u043d\u043e
kino: Кино
kino: 髐룐뷐뻐

kino: \u041a\u0438\u043d\u043e
kino: \u041a\u0438\u043d\u043e
kino: 畜㐰愱畜㐰㠳畜㐰搳畜㐰攳

т.е. правильный результат оказался в двух случаях:
m_simpleTV.Common.string_UnicodeToUTF8(unescape2('\u041a\u0438\u043d\u043e\u0000')))
и
unescape1('\u041a\u0438\u043d\u043e')

Эквивалентны ли эти две функции или это чистое совпадение?

***
*** Теперь задача: Как преобразовать обратно с UTF-8 в escaped Unicode?? ***
***

т.е. нужны ещё функции:
 string_Utf8ToUnicode(str)
 string_EscUnicodeToUtf8(str)
 string_Utf8ToEscUnicode(str)

(0007394)
SergeyVS (администратор)
2013-12-06 15:08

>>Эквивалентны ли эти две функции или это чистое совпадение?
Нет, unescape1 описана в common.lua - возвращает UTF8 строку из Unicode, но только если это 'русский Unicode' - те \u04xx,
unescape2 переводить ескейп последовательность в дамп.

>>Теперь задача: Как преобразовать обратно с UTF-8 в escaped Unicode?? ***
сначала
m_simpleTV.Common.string_UTF8ToUnicode

потом - в common.lua есть функция escape по аналогии с ней можно сделать escape2 для unicode(надо чтобы брала пары и формат изменить), попозже напишу.
(0007396)
caxap (участник)
2013-12-06 16:14

OK, теперь вижу что описание m_simpleTV.Common.string_UTF8ToUnicode появилось.
Просьба - когда напишешь, чиркани escape2 здесь, чтобы не ждать пока новый билд с common.lua будет готов.
(0007408)
SergeyVS (администратор)
2013-12-06 22:09

function escape2 (s)
      s = string.gsub(s, '..', function (c)
            return string.format("\\u%02x%02x", string.byte( c:sub(2)),c:byte())
          end)
      return s
 end
(0007411)
caxap (участник)
2013-12-06 23:08

----------------------------------------------------------------------------------
function escUnicodeToUtf8(s)
    return m_simpleTV.Common.string_UnicodeToUTF8(unescape2(s .. '\\u0000'))
end
----------------------------------------------------------------------------------
function utf8ToEscUnicode(s)
    return escape2(m_simpleTV.Common.string_UTF8ToUnicode(s))
end
----------------------------------------------------------------------------------
(0007452)
caxap (участник)
2013-12-11 14:34

1. Можно описать параметры m_simpleTV.Common.LoadPlayList()?
2. Надо бы поправить орфографию поля p.TypeSourse -> p.SourceType или просто p.Source
3. p.DeleteBeforeLoad = 1 сейчас чистит всю базу, хотя обычно нужно чистить только по p.UpdateId, может, ввести доп значение = 2?
4. В плейлисте #EXTINF:-1 update-code="' .. updateId .. group .. channel .. '", а в LoadPlayList() p.UpdateId = updateId. В базе есть update-code канала и ExtFilter. Т.е. если канал провайдера меняет имя или группу, он больше не синхронизируется. Для локализации названий групп/категорий, предлагаю создать в базе таблицу групп/категорий с id, тогда смена группы или языка отображения (UI Language) не будет нарушать синхронизации. Update-code должен содержать цифровой идентификатор группы/категории, а не её имя. Кстати, вопрос по UpdateId: например RaketaTV01 - какова цель цифрового суффикса '01'?
5. Один канал ТВ вещания от разных провайдеров может иметь разные:
5А - задержки вещания (часовые пояса)
5Б - набор языков вещания (аудиодорожек)
5В - качество картинки (0 - радио, 1 - Low resolution QVGA etc., 2 - Std. reso PAL/VGA, etc., 3 - High Definition (720, etc.), 4 - FullHD
Поэтому, этим деталям канала, его стране и языку вещания по умолчанию, а также локализированноым названиям канала надо бы дать шанс в базе, причём списки каналов могут быть готовыми в базе (или по критерию дефолтного языка/страны вещания и/или провайдера).
6. Подумать о создании канальных гроздьев - гроздь это одно название канала, логотип, EPG источник с возможностью переопределения под конкретного провайдера (например логотип для HD качества, приоритет по качеству картинки/скорости сети, смещение на другой часовой пояс, доп. языковые дорожки и т.п.)
(0007456)
SergeyVS (администратор)
2013-12-11 21:54

1 - описание добавлено

3 - можно так, например
m_simpleTV.Database.ExecuteSql('DELETE Main.*, Main.UpdateID FROM Main WHERE (Main.UpdateID Like "RaketaTV01*");',true)

4
UpdateId - уникальный индетификатор канала, просто строка, за ее содержание полная отвественность на программисте скрипта
не обязательно делать
#EXTINF:-1 update-code="' .. updateId .. group .. channel ..
можно так
#EXTINF:-1 update-code="' .. updateId .. id_channel
и тп
>>какова цель цифрового суффикса '01'
а может появиться еще одна ракета TV ):

5,6 - это надо подумать, не хотелось бы слишком услажнять плейлист
(0007460)
caxap (участник)
2013-12-12 11:31

1 - спасибо,
вопрос: Судя по описанию,
p.NotDeleteWhenRefresh - если этот флаг выставлен, то только при не пустом p.UpdateId поле в базе data.mdb старый, т.е. не найденный по полному p.UpdateId, канал будет сохранён, во всех других случаях канал будет стёрт? Или, в случае p.NotDeleteWhenRefresh = 0 никаких действий со старым, т.е. без найденного полного имени p.UpdateId, каналом не производится? IMHO поле p.DeleteOldOnUpdate было бы понятнее.

И в чём разница выставления этого флага с SQL в п.3 - в том, что имя канала должно совпадать, а SQL убирает все старые каналы данного провайдера перед загрузкой свежих?
(0007474)
SergeyVS (администратор)
2013-12-12 17:58

Если p.UpdateId не указан p.NotDeleteWhenRefresh игнорируется
Если p.UpdateId указан алгоритм такой

1 Выставляется флаг обновления по p.UpdateId*
2 Каналы обновляются по update-code и сбрасывают флаг
3 Если p.NotDeleteWhenRefresh = 0 то происходит удаление каналов с установленным флагом, p.NotDeleteWhenRefresh = 1 - просто сбрасывается флаг обновления

>>И в чём разница выставления этого флага с SQL в п.3 -
Если запустить SQL, удаляются все каналы с p.UpdateId* с пользовательскими настройками и тп
(0007476)
caxap (участник)
2013-12-12 19:05

> 1 Выставляется флаг обновления по p.UpdateId*

Понял ли правильно, что
а. если p.UpdateId == nil, то ни один канал не удаляется; если имена каналов не совпадают (p.TypeSkip == 1), появляется ещё один канал;
б. если p.UpdateId = 'RaketaTV01', то флаг выставляется для всех каналов, UpdateId которых в базе начинается с 'RaketaTV01' и, если канал с точным значением update-code не найден, по умолчанию (p.NotDeleteWhenRefresh = 0 default?) он будет удалён?
(0007477)
SergeyVS (администратор)
2013-12-12 20:47

Да, все правильно.
(0007549)
caxap (участник)
2013-12-20 16:24

Вопрос: как из lua скрипта вызвать апдейт плейлистов, т.е. симулировать действие контекстного меню Playlist | Refresh playlist?
(0010816)
caxap (участник)
2014-12-04 19:21
изменен: 2014-12-04 19:24

Вопрос по API:

не работает вызов m_simpleTV.Config.AddEventHandler(Object,'OnChange','SelectBoxId','OnChangeFunction')

для html <select><option...> combobox (выпадающая) надо запустить lua функцию после изменения/выбора. OnKeyUp и OnClick не работают как надо - первый не реагирует на мышь, второй - срабатывает когда не надо и не срабатывает когда значение изменено. Сергей, есть ли выход без выкрутасов с клиентским скриптом? Можешь добавить сразу в какой-нибудь экзешник?

(0010827)
SergeyVS (администратор)
2014-12-04 21:19

>>есть ли выход без выкрутасов с клиентским скриптом
Какие выкрутасы ?
Этих событий более 500 штук и все их добавить нереально. Сделаю так
Добавлю в js функцию
window.external.CallLua('string_UTF8 param')

на html это будет выглядить так
  <select onchange="window.external.CallLua('somedata';"> ...

На Lua

 function JSCallBack(Object,param)
 end
(0010828)
BM (участник)
2014-12-04 21:45
изменен: 2014-12-04 22:02

caxap,
как раз на днях столкнулся с этим, попробуй так получать значение (для html в кодировке 1251):
---------------------------
...
m_simpleTV.Config.AddEventHandler(Object, "OnClick", "idList", "OnClickChangeL")
...
function OnClickChangeL(Object)
  local value = m_simpleTV.Config.GetComboValue(Object,"idList")
end




--------------------------

(0010829)
BM (участник)
2014-12-04 21:47

SergeyVS,
кстати по этому же поводу, вроде баг небольшой:
m_simpleTV.Config.GetComboValue_UTF8 возвращает значение в кодировке 1251, т.е. ничем не отличается от m_simpleTV.Config.GetComboValue
(0010832)
SergeyVS (администратор)
2014-12-04 22:04

BM
>>m_simpleTV.Config.GetComboValue_UTF8
ошибка была, исправил
(0010834)
SergeyVS (администратор)
2014-12-04 22:32

Добавлен вызов Lua из JS (с версии V0.4.8 b8)

JS
window.external.CallLua0();
window.external.CallLua1('somedata');
window.external.CallLua2('somedata1','somedata2');


LUA
function JSCallBack0(Object)
end
------------------------------------------------------------------
function JSCallBack1(Object,param_utf8)
end
------------------------------------------------------------------
function JSCallBack2(Object,param1_utf8,param2_utf8)
end
------------------------------------------------------------------
(0010847)
caxap (участник)
2014-12-05 01:34
изменен: 2014-12-05 01:36

SergeyVS,
пробую по инструкции первый вариант, без параметров, ругается:
http://pixs.ru/showimage/objectcall_3718433_15023517.png [^]
Что делаю не так?

-- configdialog.lua:
function OnNavigateComplete(object)
    ...
    m_simpleTV.Config.SetElementHtml(object, 'idProvider', '<select id="provider" onchange="window.external.CallLua();" style="width: 130px;">' .. options .. '</select>')
    ...
end

-- в том же configdialog.lua:
function JSCallBack0(object)
    local newIndex = tonumber(m_simpleTV.Config.GetComboValue(object,'provider',true))
    ...
end

(0010848)
SergeyVS (администратор)
2014-12-05 01:39

window.external.CallLua0()
(0010849)
caxap (участник)
2014-12-05 01:43

Спасибо, ступил к ночи, всё работает!
(0011082)
caxap (участник)
2014-12-15 04:30
изменен: 2014-12-15 04:31

Был m_simpleTV.Config.Close(object), теперь m_simpleTV.Dialog.Close(object).
Оба просто закрывают видимость элементам html-интерфейса, не закрывая самого диалога настроек (Preferences). Как закрыть из скрипта всё окно настроек с вариациями OK - Cancel? Например, для лучшего обзора работы скрипта с выводом на OSD.


- история изменений
Дата изменения Пользователь Поле Изменить
2012-08-10 13:13 Poshe80 Новый инцидент
2012-08-10 13:13 Poshe80 Состояние новый => назначен
2012-08-10 13:13 Poshe80 Ответственный => SergeyVS
2012-08-10 18:29 SergeyVS Комментарий добавлен: 0002512
2012-08-10 18:29 SergeyVS Состояние назначен => подтвержден
2012-08-10 18:34 SergeyVS Комментарий добавлен: 0002514
2012-08-10 18:34 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2012-08-10 18:35 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2012-08-10 18:35 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2012-08-10 18:38 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2012-08-10 18:39 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2012-08-10 18:53 Poshe80 Комментарий добавлен: 0002515
2012-08-10 18:55 Poshe80 Комментарий добавлен: 0002516
2012-08-10 18:57 Poshe80 Комментарий изменен: 0002515 просмотр ревизий
2012-08-10 19:33 SergeyVS Комментарий добавлен: 0002517
2012-08-10 20:00 SergeyVS Комментарий добавлен: 0002518
2012-08-10 20:02 SergeyVS Комментарий изменен: 0002518 просмотр ревизий
2012-08-10 20:54 Poshe80 Комментарий добавлен: 0002520
2012-08-10 21:23 SergeyVS Комментарий добавлен: 0002521
2012-08-10 21:45 SergeyVS Комментарий изменен: 0002518 просмотр ревизий
2012-08-10 21:46 SergeyVS Комментарий изменен: 0002518 просмотр ревизий
2012-08-11 18:37 Poshe80 Комментарий добавлен: 0002522
2012-11-21 18:57 Gogi Комментарий добавлен: 0002855
2012-11-21 20:09 SergeyVS Комментарий добавлен: 0002856
2012-11-21 21:09 Gogi Комментарий добавлен: 0002857
2012-11-21 21:36 SergeyVS Комментарий добавлен: 0002858
2012-12-22 20:50 SergeyVS Комментарий добавлен: 0002992
2012-12-22 20:51 SergeyVS Комментарий изменен: 0002992 просмотр ревизий
2012-12-22 20:54 SergeyVS Комментарий изменен: 0002518 просмотр ревизий
2012-12-22 21:02 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2012-12-22 21:05 SergeyVS Комментарий изменен: 0002514 просмотр ревизий
2013-04-08 15:04 DmitryR Комментарий добавлен: 0004455
2013-04-08 15:11 GladiatorX Комментарий добавлен: 0004456
2013-04-08 19:51 SergeyVS Комментарий добавлен: 0004460
2013-04-08 20:44 DmitryR Комментарий добавлен: 0004461
2013-04-08 20:50 SergeyVS Комментарий добавлен: 0004462
2013-04-08 22:09 GladiatorX Комментарий добавлен: 0004474
2013-04-08 22:27 SergeyVS Комментарий добавлен: 0004476
2013-04-08 22:28 SergeyVS Комментарий изменен: 0004476 просмотр ревизий
2013-05-19 13:13 GladiatorX Комментарий добавлен: 0005178
2013-06-18 21:29 GladiatorX Комментарий добавлен: 0005645
2013-06-18 21:32 GladiatorX Комментарий изменен: 0005645 просмотр ревизий
2013-11-24 20:13 SergeyVS Подробности изменены просмотр ревизий
2013-11-24 20:15 SergeyVS Комментарий добавлен: 0007231
2013-12-06 03:22 caxap Комментарий добавлен: 0007389
2013-12-06 03:31 caxap Комментарий изменен: 0007389 просмотр ревизий
2013-12-06 13:19 SergeyVS Комментарий добавлен: 0007390
2013-12-06 14:23 caxap Комментарий добавлен: 0007393
2013-12-06 14:25 caxap Комментарий изменен: 0007393 просмотр ревизий
2013-12-06 14:39 caxap Комментарий изменен: 0007393 просмотр ревизий
2013-12-06 14:41 caxap Комментарий изменен: 0007393 просмотр ревизий
2013-12-06 15:01 caxap Комментарий изменен: 0007393 просмотр ревизий
2013-12-06 15:08 SergeyVS Комментарий добавлен: 0007394
2013-12-06 16:14 caxap Комментарий добавлен: 0007396
2013-12-06 22:09 SergeyVS Комментарий добавлен: 0007408
2013-12-06 23:08 caxap Комментарий добавлен: 0007411
2013-12-11 14:34 caxap Комментарий добавлен: 0007452
2013-12-11 21:54 SergeyVS Комментарий добавлен: 0007456
2013-12-12 11:31 caxap Комментарий добавлен: 0007460
2013-12-12 17:58 SergeyVS Комментарий добавлен: 0007474
2013-12-12 19:05 caxap Комментарий добавлен: 0007476
2013-12-12 20:47 SergeyVS Комментарий добавлен: 0007477
2013-12-20 16:24 caxap Комментарий добавлен: 0007549
2014-12-04 19:21 caxap Комментарий добавлен: 0010816
2014-12-04 19:22 caxap Комментарий изменен: 0010816 просмотр ревизий
2014-12-04 19:24 caxap Комментарий изменен: 0010816 просмотр ревизий
2014-12-04 21:19 SergeyVS Комментарий добавлен: 0010827
2014-12-04 21:45 BM Комментарий добавлен: 0010828
2014-12-04 21:47 BM Комментарий добавлен: 0010829
2014-12-04 22:01 BM Комментарий изменен: 0010828 просмотр ревизий
2014-12-04 22:02 BM Комментарий изменен: 0010828 просмотр ревизий
2014-12-04 22:04 SergeyVS Комментарий добавлен: 0010832
2014-12-04 22:32 SergeyVS Комментарий добавлен: 0010834
2014-12-05 01:34 caxap Комментарий добавлен: 0010847
2014-12-05 01:35 caxap Комментарий изменен: 0010847 просмотр ревизий
2014-12-05 01:36 caxap Комментарий изменен: 0010847 просмотр ревизий
2014-12-05 01:39 SergeyVS Комментарий добавлен: 0010848
2014-12-05 01:43 caxap Комментарий добавлен: 0010849
2014-12-05 21:56 SergeyVS Прикрепленный инцидент нет => да
2014-12-15 04:30 caxap Комментарий добавлен: 0011082
2014-12-15 04:31 caxap Комментарий изменен: 0011082 просмотр ревизий
2014-12-20 11:54 GladiatorX Связь добавлена связан с 0000839
2014-12-20 13:22 SergeyVS Метка прикреплена: Lua API
2014-12-20 13:26 SergeyVS Прикрепленный инцидент да => нет
2014-12-20 13:39 SergeyVS Состояние подтвержден => отработан
2014-12-20 13:39 SergeyVS Решение открыт => решен
2014-12-20 13:50 SergeyVS Проект SimpleTV => Lua API
2015-05-29 15:00 пользователь5550 Инцидент клонирован в: 0000943


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker