Re[5]: Небольшой фикс
От: Аноним  
Дата: 30.08.09 12:18
Оценка:
Здравствуйте, jenyavb, Вы писали:

J>Должен исчезать. Видимо это баг. У меня не воспроизводится.


Хм, сегодня и я воспроизвести не могу. Видимо, положение Юпитера сказывается

J>А как удается перемещать форму, так чтобы хинт не скрывался?


Ну, когда хинт не скрывался, так сделать было возможно.
Re[5]: Небольшой фикс
От: jenyavb  
Дата: 30.08.09 15:16
Оценка:
А>>Но в целом приятный контрол. А нельзя как-то уголки скруглить на один пиксел, как в Шарпдевелопе?
J>Попробую, если с Popup'ом проблем не будет, то можно конечно. Хотя незнаю нужно-ли, в студии то все квадратное.

Попробовал. Как я и думал — уродский попап не дает этого сделать. Фон у него черный, по этому по углам в случае скругления Border'а с подсказкой остается чернота. А свойства для визуальной настройки Popup'а просто ничего не делают.
Re: Кто может написать контрол - крутой хинт?
От: Аноним  
Дата: 30.08.09 20:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Есть задачка...


VD>Может кто-нибудь возьмется за эту задачу?


Ну я тоже решил попробовать написать этот хинт.
Вот что из этого получилось, авось кому-нибудь пригодится.
Re[2]: Кто может написать контрол - крутой хинт?
От: jenyavb  
Дата: 31.08.09 09:42
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Ну я тоже решил попробовать написать этот хинт.

А>Вот что из этого получилось, авось кому-нибудь пригодится.

Твоя реализация вроде хорошая. Но почему не сказал, что делаешь? Зачем одну и ту же работу два раза делать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: Кто может написать контрол - крутой хинт?
От: Andir Россия
Дата: 31.08.09 10:13
Оценка:
Здравствуйте, Аноним, Вы писали:

VD>>Может кто-нибудь возьмется за эту задачу?

А>Ну я тоже решил попробовать написать этот хинт.
А>Вот что из этого получилось, авось кому-нибудь пригодится.

Класс!
Однако тут тоже присутствует проблема с увеличенным DPI — хинт появляется гораздо ниже кнопки (и вложенный хинт тоже).

С Уважением, Andir!
Re[3]: Кто может написать контрол - крутой хинт?
От: jenyavb  
Дата: 31.08.09 10:16
Оценка:
Здравствуйте, Andir, Вы писали:

A>Класс!

A>Однако тут тоже присутствует проблема с увеличенным DPI — хинт появляется гораздо ниже кнопки (и вложенный хинт тоже).

Да и после клика на кнопку хинт уже не должен появляться.
Re[3]: Небольшой фикс
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.09 14:57
Оценка:
Здравствуйте, jenyavb, Вы писали:

J>Поправил баг, вот последняя версия.


Где самая свежая версия?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.09 15:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ну я тоже решил попробовать написать этот хинт.

А>Вот что из этого получилось, авось кому-нибудь пригодится.

Интересно. Но сразу столкнулся с проблемой. Попытался обернуть описание метода тегом <pre> и получил исключение:
<hint>
<pre><keyword>internal</keyword> <ref handler='GoToDef'> RunErrorOccured</ref>(
  loc : <ref handler='GoToTypeDef1' hint='Nemerle.Compiler.Location'>Location</ref>,
  msg : <text hint='System.String'>string</text>) : <keyword>void</keyword>,
</pre>
<b> 
 bold  </b>,
<b> bold <i> and italic</i></b>,
<pre><b>monospace</b> test</pre>,
<text><u><pre>inner hint test</pre></u>
<hint>
  <keyword>public class</keyword> 
  <ref handler='GoToDef2'> TestClass
{ .. }<hint> Hello form sub sub hint !!!</hint></ref>
</hint>
</text>
</hint>


ЗЫ

Лучше класть файлы на наш сервер. Это можно сделать в профайле или в ветке "Мой RSDN\Файлы".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Небольшой фикс
От: jenyavb  
Дата: 31.08.09 15:59
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Где самая свежая версия?

Здесь.

Кстати, тут
Автор:
Дата: 31.08.09
ещё одна реализация появилась. Как теперь быть, что будешь выбирать?
Re[3]: Кто может написать контрол - крутой хинт?
От: Аноним  
Дата: 31.08.09 17:22
Оценка:
J>Твоя реализация вроде хорошая. Но почему не сказал, что делаешь? Зачем одну и ту же работу два раза делать?

Да я поначалу и не думал доводить ее до ума, так хотел лишний раз потренкиться, благо задача попалась довольно интересная.


VD>Интересно. Но сразу столкнулся с проблемой. Попытался обернуть описание метода тегом <pre> и получил исключение:

VD> ...

VD>ЗЫ


VD>Лучше класть файлы на наш сервер. Это можно сделать в профайле или в ветке "Мой RSDN\Файлы".


А такое не поддерживается, стили задаются только внутри основных тэгов text, keуword, ref.
Если есть интерес, могу дорабатывать контрол под требования.
Только не помешало бы более подробное ТЗ, несколько типичных примеров использования, более точное описание формата входного текста.
В частности, есть непонятки с переносом текста, нужен ли для него отдельный тэг?
Re[4]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.09 20:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А такое не поддерживается, стили задаются только внутри основных тэгов text, keуword, ref.

А>Если есть интерес, могу дорабатывать контрол под требования.

Вопрос к анониму (кстати, неплохо было бы материализоваться ) и к jenyavb...

Не могли бы вы (каждый) произвести ревизию кода "конкурирующей фирмы" (с) Ося Бендер и выявить более интересные решения?
Как итог, было бы оптимально, получить один проект, но более гибкий, устойчивый и простой в реализации.

А>Только не помешало бы более подробное ТЗ, несколько типичных примеров использования, более точное описание формата входного текста.


Собственно использование планируется в интеграции Nemerle с VS (это, думаю, очевидно).
Отсюда и использование:
1. Вывод подсказок к членам классов и сслкам на них (методам, свойствам, полям и событиям).
2. Вывод подсказок к типам и ссылкам на них.
3. Вывод подсказок к различным участкам кода.
4. Вывод сообщений компилятора. В них так же встречаются описания (сигнатуры) методов и других элементов языка.

Загляни в редактор кода. Вот что-то подобное хотелось бы видеть в хинте. Наша задача — это в наиболее удобной форме дать информацию о коде. Скажем если у нас есть вызов функции:
func(x, y)

и пользователь подвел мышь к "func", то нам нужно вывести хинт описывающий:
1. Сигнатуру метода. В этой сигнатуре типы должны представляться односложными идентификаторами (без точек внутри), и каждый тип должен быть под-хинтом/ссылко показывающим полное имя типа (с указанием пространства имен и всех внешних типов), а ссылка долна позволять перейти к определению этого типа (или открыть некий более развернутый хинт.
2. Описание взятое из XML-документации (т.е. просто текст описывающий функцию, ее параметры и ее возвращаемое значение).
3. Список сообщений об ошибках, если таковые есть). Сообщения об ошибках могут быть иерархическими и так же могут содержать сингатуры методов (и т.п.) которые так же имеет смысл представлять в сжатом виде и встроенными под-подсказками.

А>В частности, есть непонятки с переносом текста, нужен ли для него отдельный тэг?


Мне кажется было бы удобнее использовать обычный конец строки (т.е. сочетание символов "\r\n", или отдельно "\n" или "\r"). А вот тег для выравнивания возможно был бы уместен. В прочем, для того чтобы ответить на этот вопрос нужно по-использовать ихнт на практике.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Небольшой фикс
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.09 20:24
Оценка:
Здравствуйте, jenyavb, Вы писали:

J>Кстати, тут
Автор:
Дата: 31.08.09
ещё одна реализация появилась. Как теперь быть, что будешь выбирать?


Я видел.

Пока детально ни твой, ни его хинт не смотрел.

Вообще, хорошо было бы, если бы вы произвели код-ревью проектов друг-друга и подумали как создать один общий проект использующий хорошие идеи из обоих.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.08.09 20:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В частности, есть непонятки с переносом текста, нужен ли для него отдельный тэг?


Подумал по-лучше...

Пожалуй, что нужно, но не просто тег говорящий, что вот тут нужно начать новый абзац, а нечто более сложное.

Смотри... У нас могут быть простые методы вроде:
SomeMethod(arg1 : string) : int

Если такой метод изображать перенесенным:
public SomeMethod(
  arg1 : string
) : int

то восприятие только ухудшится.
С другой стороны у нас могут быть вот такие методы:
public Nemerle.Compiler.Utils.Utils.MakeTextHintForTExprMethodRef(
  expr       : Nemerle.Compiler.Typedtree.TExpr,
  obj        : Nemerle.Compiler.Typedtree.TExpr,
  method     : Nemerle.Compiler.IMethod,
  typeArgs   : list[Nemerle.Compiler.TyVar],
  notvirtual : bool,
  ) : string

их как раз очень плохо отображать в одну строку:
public Nemerle.Compiler.Utils.Utils.MakeTextHintForTExprMethodRef(expr : Nemerle.Compiler.Typedtree.TExpr, obj : Nemerle.Compiler.Typedtree.TExpr, method : Nemerle.Compiler.IMethod, typeArgs : list[Nemerle.Compiler.TyVar],   notvirtual : bool) : string

Даже если сократить все тип:
public Utils.MakeTextHintForTExprMethodRef(expr : TExpr, obj : TExpr, method : IMethod, typeArgs : list[TyVar],   notvirtual : bool) : string

представление получается длинноватым.

Хорошо бы реализовать следующую фичу...

В некоторых тегах (например, в теге code), некоторые символы должны интерпретироваться как "мягкие" концы строк и как символы "табличного выравнивания". В примере выше символом мягкого конца
строки должна служить запятая, а символом табличного выравнивания двоеточие.
Реализация хинта должна попытаться втиснуть содержимое такого тега в область хинта. Если это удается, то никаких дополнительных действий производить не надо. Если — нет, то нужно добавить концы строк полсе каждой запятой и по табуляции перед каждым двоеточием.
В итоге код в хинте должен выглядить следующим образом:
public Utils.MakeTextHintForTExprMethodRef(
  expr       : TExpr,
  obj        : TExpr,
  method     : IMethod,
  typeArgs   : list[TyVar],
  notvirtual : bool,
  ) : string

естественно, что каждый тип должен быть под-хинтом, слова "public" и встроенные типы (bool и string в данном примере) подсвечены синим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Кто может написать контрол - крутой хинт?
От: capgoat  
Дата: 11.10.09 19:24
Оценка: 138 (1)
Надеюсь все еще актуально
Тут новая версия.
Основные изменения коснулись парсера.
Доступные тэги:
1. <b>,<u>,<i> — стили
2. <pre> — сохранение форматирования
3. <lb/> — перенос строки
4. <code> — блок текста со шрифтом Courier New
4. <span hint=""> — блок текста с опциональным подхинтом
5. <keyword> — блок текста синего цвета
6. <ref hint="" handler=""> — ссылка

Также реализована фича с автолейаутом параметров методов.
Re[6]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.10.09 06:37
Оценка:
Здравствуйте, capgoat, Вы писали:

C>Надеюсь все еще актуально


Да, очень.

Открыл, попробовал...

1. Путь к проекту в солюшене и ссылке (в тестовом проекте) прописан не верно.
2. При прпытке открыть хинт вылетает исключение — NotSupportedException("text"), короче в хинте есть теги "text", но их парсинг не реализован.

C>Тут новая версия.

C>Основные изменения коснулись парсера.

C>Также реализована фича с автолейаутом параметров методов.


Можно подробнее?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.10.09 06:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>1. Путь к проекту в солюшене и ссылке (в тестовом проекте) прописан не верно.

VD>2. При прпытке открыть хинт вылетает исключение — NotSupportedException("text"), короче в хинте есть теги "text", но их парсинг не реализован.

Судя по всему ты прислал не ту версию тестового проекта. Кроме тега "text", еще происходит вылет на теге "hint".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Кто может написать контрол - крутой хинт?
От: capgoat  
Дата: 12.10.09 07:59
Оценка:
Здравствуйте, VladD2, Вы писали:

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


VD>>1. Путь к проекту в солюшене и ссылке (в тестовом проекте) прописан не верно.

VD>>2. При прпытке открыть хинт вылетает исключение — NotSupportedException("text"), короче в хинте есть теги "text", но их парсинг не реализован.

VD>Судя по всему ты прислал не ту версию тестового проекта. Кроме тега "text", еще происходит вылет на теге "hint".


Действительно, тестовый проект старый.
Вот подправил.
А автолейаут, вкратце, работает так: задаем спец. ширину контрола (WrapWidth), если при построении контрола ширина превысит WrapWidth,
происходит новое пересторение, при к-м параметры методов располагаются вертикально.
Re[9]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.10.09 11:40
Оценка:
Здравствуйте, capgoat, Вы писали:

C>Вот подправил.

C>А автолейаут, вкратце, работает так: задаем спец. ширину контрола (WrapWidth), если при построении контрола ширина превысит WrapWidth,
C>происходит новое пересторение, при к-м параметры методов располагаются вертикально.

Хорошо бы примерчик.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Кто может написать контрол - крутой хинт?
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.10.09 12:00
Оценка:
Здравствуйте, capgoat, Вы писали:

C>Действительно, тестовый проект старый.

C>Вот подправил.

На первый взгляд очень хорошо!

Что нужно сделать чтобы добавить отступы (мерджинг) по краям (чтобы текст не "прилипал" к краям)?
И как изменить размер шрифта используемый по умолчанию, а так же в режиме code/pre? А то шрифт несколько размытый получается и мелковатый.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Кто может написать контрол - крутой хинт?
От: capgoat  
Дата: 12.10.09 14:29
Оценка: 46 (1)
Здравствуйте, VladD2, Вы писали:

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


C>>Действительно, тестовый проект старый.

C>>Вот подправил.

VD>На первый взгляд очень хорошо!


VD>Что нужно сделать чтобы добавить отступы (мерджинг) по краям (чтобы текст не "прилипал" к краям)?

VD>И как изменить размер шрифта используемый по умолчанию, а так же в режиме code/pre? А то шрифт несколько размытый получается и мелковатый.

Отступ можно наглядно контроллировать свойством Padding в Border элементе xaml файла.
Добавил тэг <font size, face, color>. Нужные блоки соответственно оборачиваем этим тэгом.
Файл
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.