Mesqalito Posted September 20, 2010 Share Posted September 20, 2010 А именно: как вставить перенос строки? Пробовал \r\n, но не работает. Пробовал <br> - тоже не работает) Кусок кода примерно такой: Code: desc = userMods.ToWString("News\r\n<br>" .. userMods.FromWString(news) .. "Description\n" .. userMods.FromWString(desc)) Это модификация к GuildGui1b, файл ScriptGuildGui1b.lua, после строки 552. Хочу сделать тултип, в котором было бы описание гильдии и новость дня(т.к. сейчас новость вообще никаким способом нельзя посмотреть - она обрезается даже в офф. гилд-манагере). Quote Link to comment Share on other sites More sharing options...
Nikon Posted September 20, 2010 Share Posted September 20, 2010 Это WString. Видимо никак Попробуй SetMultiline() и SetWrapText() Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 21, 2010 Author Share Posted September 21, 2010 Я так понимаю, SetMultiline() и SetWrapText() отвечают за перенос текста у края контейнера, но мне нужно не это. Мне нужен перенос строки в конкретном месте. Что это вообще за WString такой и почему он не опознает спец символы? Quote Link to comment Share on other sites More sharing options...
SLA Posted September 21, 2010 Share Posted September 21, 2010 Я как раз починил и навернул GuildGui1b, сегодня выложу его. Quote Link to comment Share on other sites More sharing options...
Guest Carnifex Posted September 21, 2010 Share Posted September 21, 2010 try this: Code: desc = userMods.ToWString("<html>News<br>" .. userMods.FromWString(news) .. "Description\n" .. userMods.FromWString(desc).."</html>") Quote Link to comment Share on other sites More sharing options...
SLA Posted September 21, 2010 Share Posted September 21, 2010 As far as I know, both <br> and <br/> don't work. Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 21, 2010 Author Share Posted September 21, 2010 Carnifex, it doesn't work, as predicted. Тем не менее, я нашел решение, хотя и осознаю, что это костыль. Просто вставить в месте нужного переноса строку из 200 пробелов(которая по длине наверняка не влезет в контейнер). По причине мне неведомой эта строка не будет переноситься на вторую, а просто уйдет за экран, а на новой строке будет уже первый печатный символ. Code: desc = userMods.ToWString("NEWS:" .. " " .. userMods.FromWString(news) .. " " .. "DESCRIPTION:" .. " " .. userMods.FromWString(desc)) Quote Link to comment Share on other sites More sharing options...
Guest Carnifex Posted September 21, 2010 Share Posted September 21, 2010 But it works in the tooltips of items ingame, and i thought, that are also WStrings. (In our bad localisation you can sometimes see the html-code of the tooltips, because the gms make mistakes with the html-tags and there you can see the <br/>-tag to). But if it work, you must start with <html> and end with </html> (try this with multiline set true) Quote Link to comment Share on other sites More sharing options...
duvo Posted September 21, 2010 Share Posted September 21, 2010 Эм, а если так? Code: desc = userMods.ToWString( string.format( "NEWS:\n%s\nDESCRIPTION:\n%s", userMods.FromWString(news), userMods.FromWString(desc) ) ) Quote Link to comment Share on other sites More sharing options...
SLA Posted September 21, 2010 Share Posted September 21, 2010 Carnifex говорит, ему приходилось видеть в игре <br/>. Предлагает попробовать <br/>, при том, что весь текст нужно обернуть в <html> и </html>, и выставить multiline true. Имхо, стоит попробовать. Quote Link to comment Share on other sites More sharing options...
Nikon Posted September 21, 2010 Share Posted September 21, 2010 Все это замечательно работет, если писать в лог (Mods.txt) С TextView, куда походу и надо выводить, не прокатывает ЗЫ. Может проще править не строчку, а сам файл ресурса? Куда там пишется она. Сделать 2 TextView вместо 1 Quote Link to comment Share on other sites More sharing options...
SLA Posted September 21, 2010 Share Posted September 21, 2010 200-символьные строки можно заменить на: Code: string.rep(" ",200) Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 21, 2010 Author Share Posted September 21, 2010 Разница только в использовании string.format вместо конкатенации, но на выходе все равно получается тот же string со спец-символами, которые при конвертировании в WString куда-то теряются. Ниже писали, возможно, это проблема именно контейнера. Посмотрим, что там SLA намутил с GuildGui1b и если че, буду издеваться над его версией уже Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 21, 2010 Author Share Posted September 21, 2010 Работает, гут! По крайней мере, код выглядеть стал чуть-чуть лучше. Но костыль это не отменяет) В общем, выложишь свою версию, а там посмотрим. Quote Link to comment Share on other sites More sharing options...
duvo Posted September 21, 2010 Share Posted September 21, 2010 Да, чо-т невнимательно первое сообщение прочел и предложил тоже самое о_0 Quote Link to comment Share on other sites More sharing options...
Nikon Posted September 21, 2010 Share Posted September 21, 2010 Вдогонку. Возможно ли как то определить ширину строчки? У Нивала тултипы по ширине разные, в зависимости от текста. Они вручную выставляют или атоматом как то считается? Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 21, 2010 Author Share Posted September 21, 2010 Если я правильно тебя понял, в том же файле дальше по коду: Code: local dlina = string.len(userMods.FromWString( desc ))sizeY = math.ceil (dlina/80) * 25 Quote Link to comment Share on other sites More sharing options...
Nikon Posted September 21, 2010 Share Posted September 21, 2010 А, не. Немного неправильно выразился Как узнать (и можно ли вообще) ширину текста в TextView? Не, конечно, можно тупо заранее посчитать количество символов в txt-шнике которые будут отображаться, потом каждый раз суммировать длину строк во всех текстовых валуях и тех символов, подставлять в формулу... У меня не стоит ГилдГуи. Как оно себя ведет на разных разрешениях и при разных размерах шрифта? Менять каждый раз формулу? Quote Link to comment Share on other sites More sharing options...
SLA Posted September 22, 2010 Share Posted September 22, 2010 Quote: Не, конечно, можно тупо заранее посчитать количество символов в txt-шнике Так и сделано в GuildGui1b, но это ОЧЕНЬ ОЧЕНЬ приблизительный метод. Потому, что все буквы имеют разную ширину - буква щ в три раза шире буквы i. В WinAPI, например, существует специальная функция, которой указываешь строку, шрифт, размер шрифта, и она возвращает числа, ширину и высоту строки в пикселях... Сомневаюсь, что что-то такое есть в АО. Очевидно, тут дело в тегах XBD-файлов. Потому, что Lua-код, формирующий тултип, вообще не занимается такими подсчётами.Quote: У меня не стоит ГилдГуи. Как оно себя ведет на разных разрешениях и при разных размерах шрифта? Да там sizeY = math.ceil (dlina/80) * 25 с огромным запасом место дано, поэтому не обрезается. А вычисление это, вообще, лишнее. Если бы знать, как выглядит XDB контейнера тултипа, то нужно просто сделать нормальный "резиновый" контейнер, и всё.P.S. Обновление GuildGui1b уже залито P.S. @Vomitus Стоит попробовать то, что предложил Carnifex несколькими постами выше. А то, его дельное предложение осталось незамеченным во вчерашней бурной дискуссии...Он говорит, в gPotato переводчиками работают гуманитарии, которые, как и положено гуманитариям, при переводе "не замечают" html-тегов, и портят их ) Так, в игре иногда проскакивают сообщения с "видимыми" html-тегами (в русской версии тоже иногда бывает). И Carnifex видел среди них тег </br>. Возможно, и я тоже видел </br> где-то в АО. Так что, имхо, стоит попробовать предложенный им вариант. Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 22, 2010 Author Share Posted September 22, 2010 Я пробовал с html тегом как и описано - теги выводятся простым текстом. Видимо, нужно(если можно) задать в контейнере тип отображения html вместо текста - может тогда что-то выйдет. Еще раз вопрос: что собой представляет тип WString? Где можно посмотрет ьего спецификацию? Quote Link to comment Share on other sites More sharing options...
Nikon Posted September 23, 2010 Share Posted September 23, 2010 Дело наверно все-таки не в типе строчки, а в том куда ее выводят Quote: Строки в формате Unicode - WSTRING. Этот тип подобен строкам с завершающим нулевым байтом, но для каждого символа предусмотрено два байта (wide characters). Quote Link to comment Share on other sites More sharing options...
SLA Posted September 28, 2010 Share Posted September 28, 2010 Знаю, ЗНАЮ КАК !!! =D Говорил же, Carnifex был прав, когда говорил,что видел <br> в игре! Хотите верьте, хотите проверьте. Переносом строк можно полюбоваться в аддоне SampleLibDnD, который приаттачен в конце первого сообщения в теме HOW-TO: LibDnD.lua (Библиотека Drag&Drop). Конечно, контейнер должен быть помечен как Multiline. Ключевой момент - оказывается, <br> должен иметь открывающий и закрывающий теги (!), как будто это "параграф" (<p>) в HTML'е: Code: Строка1<br>Строка2</br><br>Строка3</br> или, абсолютно то же самое, но выглядит аккуратнее: Code: <br>Строка1</br><br>Строка2</br><br>Строка3</br> А теперь, бонус <p> тоже работает! Но делает бОльшие расстояния между строками, чем <br>: Code: <p>Строка1</p><p>Строка2</p><p>Строка3</p> Quote Link to comment Share on other sites More sharing options...
Mesqalito Posted September 28, 2010 Author Share Posted September 28, 2010 Чет у меня не получается. Добавил мультилайн в файл News.(WidgetTextView).xdb(подсмотрел в SampleLibDnD_2010-09-28.zip/Text.(WidgetTextView).xdb): Code: <?xml version="1.0" encoding="UTF-8" ?> <WidgetTextView> <Name>News</Name> <Placement> <X> <Align>WIDGET_ALIGN_BOTH</Align> <Pos>95</Pos> <HighPos>95</HighPos> </X> <Y> <Align>WIDGET_ALIGN_LOW</Align> <Pos>35</Pos> <Size>30</Size> </Y> </Placement> <TextStyle> <multiline>true</multiline> </TextStyle> <FormatFileRef href="News.txt" /> <reactionOnPointing>description</reactionOnPointing> </WidgetTextView> Содержимое такое: Code: userMods.ToWString("<html><p>NEWS:</p>" .. string.rep(" ", 400) .. userMods.FromWString(news) .. string.rep(" ", 400) .. "<br>DESCRIPTION:</br>" .. string.rep(" ", 400) .. userMods.FromWString(desc) .. "</html>") В итоге html форматирования нет, теги отображаются в чистом виде. Что я не так делаю? PS Мучаю все тот же GuildGui1b. Quote Link to comment Share on other sites More sharing options...
SLA Posted September 28, 2010 Share Posted September 28, 2010 Нет нет, теги нельзя указывать в самом тексте, иначе они и будут показаны "как есть". Тут есть только два варианта: а) Вписать теги прямо в TXT-файл,привязанный к этому WidgetTextView, как сделано во всех аддонах. Например, в файле Description.txt: <header alignx = "left" fontsize="13"><tip_white><rs class="class"><r name="DESC"/><br><r name="DESC2"/></br></rs></tip_white></header> В Lua вот так: wtDescription:SetVal( "DESC", news ) wtDescription:SetVal( "DESC2", desc ) б) Никогда не видел этого в аддонах, но формат WidgetTextView можно задать прямо из Lua, функцией SetFormat(): wtDescription:SetFormat( "<header alignx = \"left\" fontsize=\"13\"><tip_white><rs class=\"class\"><r name=\"DESC\"/></rs></tip_white></header>" ) wtDescription:SetVal( "DESC", news ) wtDescription:SetVal( "DESC2", desc ) Quote Link to comment Share on other sites More sharing options...
Guest Carnifex Posted October 16, 2010 Share Posted October 16, 2010 BTW: Here you can see the <html>-tag. The speedpot is broken after the update to 1.1.02: Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.