Здравствуйте, SergeaS, Вы писали:
SS>Здравствуйте, WFrag, Вы писали:
WF>>Вот набросок идеи: http://ccfit.nsu.ru/~dubrov/Style.zip
SS>А нельзя-ли закачать, допустим, на RSDN, а то что-то сайт не грузится.
Здравствуйте, WFrag, Вы писали:
WF>Подумал еще немного . Смысла делать xml с набором свойств, управляемых стилизатором, по-моему, нет. Все равно он будет сильно завязан на код, поэтому, все же, самый простой вариант будет сделать конфиг, такой же, как и Config.cs.
Да не нужнен отдельный конфиг. Просто нужно добавить цвета.
PS
Заниметесь трепом. Соделайте мне нормальную сериализацию свойств типа Color и я вам за час сделаю поддержку цветов. А схемы сделаете простым копированием (пробежитесь по свойствам отберете тольк те что относятся к цветам и шрифтам и скопруете их в отдельный хмле и на оборот).
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Теперь о кривоте. Все же не здорово что программно будет видно два свойтсва одно текстовое, другое цетное. Нельзя ли сделать текстовое свойство протектед?
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, WFrag, Вы писали:
VD>Во. [XmlIgnore] — это все что было нужно.
VD>Теперь о кривоте. Все же не здорово что программно будет видно два свойтсва одно текстовое, другое цетное. Нельзя ли сделать текстовое свойство протектед?
Нельзя, XmlSerializer сериализует только публичные поля.
Или использовать не Color, а какой-нибудь CustomColor, который бы сериализовался XmlSerialize-ом (публичные поля были бы еще и на запись). Но тогда нужно будет сделать, чтобы PropertyGrid его правильно понимал. Еще нужно будет к нему ColorEditor прикрутить... Короче, ничего приятного .
В принципе, ничего плохого в двух свойствах нет . Разный взгляд на одни и те же данные.
Здравствуйте, VladD2, Вы писали:
VD>Да не нужнен отдельный конфиг. Просто нужно добавить цвета.
VD>PS
VD>Заниметесь трепом. Соделайте мне нормальную сериализацию свойств типа Color и я вам за час сделаю поддержку цветов. А схемы сделаете простым копированием (пробежитесь по свойствам отберете тольк те что относятся к цветам и шрифтам и скопруете их в отдельный хмле и на оборот).
Нет, лучше отдельную закладку сделать. Нефиг все в одну кучу кидать.
P.S. А насчет трепа — лучше все заранее обдумать. Торопиться с кодингом не стоит, все же нет цели сделать функциональность за ограниченный срок. Тем более стили — это не так критично
Здравствуйте, VladD2, Вы писали:
AVK>>Вот только нужно не только цвета, но еще и шрифты хотя бы настраивать.
VD>Да какая разница. Если задать фрифт для формы/контрола, то все цвета и шрифты которые небыли заданы вручную будут считаны с парента.
Но для парента то задать надо? Да и потом — у браузера от парента ничего не отнаследуется, надо стили править.
Здравствуйте, VladD2, Вы писали:
VD>Да. Я вот дернулся... думал все просто. А оказалоь, что не очень.
Ну так поиск или спросить.
VD>Мне нужно в программе иметь доступ к ывету, а не к стороке (иначе будут тромоза).
Да никаких проблем. Сделай два свойства — одно для сериализации, другое для доступа. Или кешируй внутри своих классов
VD>Да и самому броузеру свойство тоже нужен колор (он, то вотличии от кривого сериалайзера цвет понимает).
Блин, надоели твои вопли уже про кривоту. Надо разобраться, а потом орать. Я тебе еще раз говорю — это нормальное явление, сериалайзер работает именно так как должен.
VD>А сериализовать нужно именно строку. Конвертер конечно есть, но вызывать его должен именно сериалайзер. Надо бы что-то там поправит, если публичных свойств нет, чтобы производилась попытка конвертировать в строку.
Слишком многого ты от него хочешь. Если подобные выверты реализовывать, то получится нафик икому не нужный монстр. Тем им хорош XmlSerializer, что все его действия подконтрольны. И слава богу что в нем нет такой хитрой и неочевидной логики.
AVK>>Сериализатор тут не при чем. При чем Color.
VD>Не надо песен. Форматеры цвет сохраняют влет. Он атрибутом Serializable помечен.
XmlSerializer это не форматтер.
AVK>>Эта задача уже решена, называется ColorTypeConvertor.
VD>Языком. А ты сделай чтобы твой конфиг цвета сериализовал.
А сам что, не можешь?
AVK>>Я думаю не стоит в конфиге хранить всю схему. Лучше только имя файла, а саму схему в отдельном файле, чтобы человек мог просто готовый файл скачать.
VD>Зачем эти сложности? Ваши схемы — это не боле чем набор цветов, который просто нужно в тупую копировать поверх текущих.
VD>Не надо делать извращений. Иначе нельзя будет поменять один цвет.
Ну ну. Если я захочу схему с сайта поставить мне придется руками конфиг править? Может это как раз и есть извращение?
Здравствуйте, WFrag, Вы писали:
WF>P.S. А насчет трепа — лучше все заранее обдумать. Торопиться с кодингом не стоит, все же нет цели сделать функциональность за ограниченный срок.
Здравствуйте, WFrag, Вы писали:
WF>Нет, лучше отдельную закладку сделать. Нефиг все в одну кучу кидать.
Какую кучу? Будет раздел "Цвета". Нафиг мне 22 закладки? А галвное, нафиг мне два одинаковых конфига?
WF>P.S. А насчет трепа — лучше все заранее обдумать. Торопиться с кодингом не стоит, все же нет цели сделать функциональность за ограниченный срок. Тем более стили — это не так критично
Нам нужно уже сейчас цвета для подсветки своих сообщений. И это критично.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WFrag, Вы писали:
WF>Нельзя, XmlSerializer сериализует только публичные поля.
Хорошо. А есть какой-нить IXmlSerializeble? Можно ручную сериализацию для цвета или обртки над ним сделать?
WF>Или использовать не Color, а какой-нибудь CustomColor, который бы сериализовался XmlSerialize-ом (публичные поля были бы еще и на запись). Но тогда нужно будет сделать, чтобы PropertyGrid его правильно понимал. Еще нужно будет к нему ColorEditor прикрутить... Короче, ничего приятного .
WF>В принципе, ничего плохого в двух свойствах нет . Разный взгляд на одни и те же данные.
Это и плохо. Не смертельно. Но плохо.
Ладно. Пока пусть так.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
VD>Да. Я вот дернулся... думал все просто. А оказалоь, что не очень.
AVK>Ну так поиск или спросить.
Я у тебя спросил. Более того проситл тебя сделать. Ты вредничать начал.
AVK>Да никаких проблем. Сделай два свойства — одно для сериализации, другое для доступа. Или кешируй внутри своих классов
Два — это криво. Хотя похоже другого выхода нет. Вернее другой — это совсем сложно. А кэшировать — это тоже криво, неудобно.
VD>Да и самому броузеру свойство тоже нужен колор (он, то вотличии от кривого сериалайзера цвет понимает).
AVK>Блин, надоели твои вопли уже про кривоту. Надо разобраться, а потом орать. Я тебе еще раз говорю — это нормальное явление,
В чем? Все и так ясно. Схема сериализации отлична от той на которую рассчитан Color (не стандартная). От сюда и проблемы.
AVK>сериалайзер работает именно так как должен.
Он работает плохо. Не удобно. Средств расширения нет. Нефига защищать кривые вещи.
AVK>Слишком многого ты от него хочешь. Если подобные выверты реализовывать, то получится нафик икому не нужный монстр. Тем им хорош XmlSerializer, что все его действия подконтрольны. И слава богу что в нем нет такой хитрой и неочевидной логики.
Какой монстр? Все форматеры цвет едет на ура. В КодДом он сериализуется влет. А этот не может. Кривь — это.
AVK>XmlSerializer это не форматтер.
Ну, и? КодДом тоже. Но тем не менее цвет жрет. В общем, еще раз. Не придумывай орпавдания для надоделанных решений. Может где-то его и достаточно, но нам бы как раз подходит плохо.
AVK>>Эта задача уже решена, называется ColorTypeConvertor. VD>Языком. А ты сделай чтобы твой конфиг цвета сериализовал. AVK>А сам что, не можешь?
Если бы мог, давно сдела бы. Я в его алгоритмах ни ухом ни рылом.
AVK>Ну ну. Если я захочу схему с сайта поставить мне придется руками конфиг править? Может это как раз и есть извращение?
Зачем? Сделай отдельное свойство "Цветовая схема". Или отдельную закладку. На ней выдавай список схем (из хмл-ных файлов) и просто коприуй значения из выбранной в конфиг. Просто, удобно и всегда можно зименить одно значение не меняя всей схемы.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVK>>Ну так поиск или спросить.
VD>Я у тебя спросил.
Я тебе ответил
VD>Более того проситл тебя сделать. Ты вредничать начал.
Я не вредничать начал, нет пока возможности делать все сразу. Вон до сих пор непонятно что с тулбаром делать.
AVK>>Блин, надоели твои вопли уже про кривоту. Надо разобраться, а потом орать. Я тебе еще раз говорю — это нормальное явление,
VD>В чем? Все и так ясно. Схема сериализации отлична от той на которую рассчитан Color (не стандартная).
Не надо путать XmlSerializer и форматтеры, ну сколько можно повторять. XmlSerializer не предназначен для хранения любых классов, он предназначен для автоматического преобразования определенных классов в заданную структуру. Т.е фактически просто способ упростить чтение/запись данных в/из xml. Вот из этого и надо исходить.
VD>Он работает плохо. Не удобно. Средств расширения нет. Нефига защищать кривые вещи.
Средства расширения есть и нормально он работает. Просто цели и задачи у него совершенно иные. Хочешь универсальной сериализации любых объектов, пользуй форматтер. XmlSerializer не для этого.
VD>Какой монстр? Все форматеры цвет едет на ура.
Потому что это форматтеры, у них задача сериализовать все и вся.
VD>В КодДом он сериализуется влет.
Потому что TypeConverter для Color специально заточен под это и умеет преобразовывать его в InstanceDescriptor.
AVK>>XmlSerializer это не форматтер.
VD>Ну, и?
Ну и не надо от него требовать свойств форматтера.
VD> КодДом тоже. Но тем не менее цвет жрет.
Потому что Color специально под CodeDOM заточен.
AVK>>А сам что, не можешь?
VD>Если бы мог, давно сдела бы. Я в его алгоритмах ни ухом ни рылом.
А тебе не надо никаких алгоритмов знать. Тебе просто нужно объявить два свойства:
private Color _SomeColor;
[XmlIgnore]
public Color SomeColor
{
get { return _SomeColor; }
set { _SomeColor = value; }
}
[Browsable(false)]
public string SerSomeColor
{
get { TypeDescriptor.GetConverter(typeof (Color)).ConvertToString(_SomeColor);}
set { _SomeColor = TypeDescriptor.GetConverter(typeof (Color)).ConvertFromString(value); }
}
AVK>>Ну ну. Если я захочу схему с сайта поставить мне придется руками конфиг править? Может это как раз и есть извращение?
VD>Зачем? Сделай отдельное свойство "Цветовая схема". Или отдельную закладку. На ней выдавай список схем (из хмл-ных файлов) и просто коприуй значения из выбранной в конфиг. Просто, удобно и всегда можно зименить одно значение не меняя всей схемы.
Не знаю, не нравится мне это решение, слишком много телодвижений.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, VladD2, Вы писали:
AVK>>Ну так поиск или спросить.
VD>Я у тебя спросил.
AVK>Я тебе ответил
Точнее сказать отбрехался.
AVK>Не надо путать XmlSerializer и форматтеры, ну сколько можно повторять. XmlSerializer не предназначен для хранения любых классов, он предназначен для автоматического преобразования определенных классов в заданную структуру. Т.е фактически просто способ упростить чтение/запись данных в/из xml. Вот из этого и надо исходить.
Значит в данном случае он использован не по назначению. В конфиге должны сериализоваться любые типы.
AVK>А тебе не надо никаких алгоритмов знать. Тебе просто нужно объявить два свойства: AVK>
AVK>private Color _SomeColor;
AVK>[XmlIgnore]
AVK>public Color SomeColor
AVK>{
AVK> get { return _SomeColor; }
AVK> set { _SomeColor = value; }
AVK>}
AVK>[Browsable(false)]
AVK>public string SerSomeColor
AVK>{
AVK> get { TypeDescriptor.GetConverter(typeof (Color)).ConvertToString(_SomeColor);}
AVK> set { _SomeColor = TypeDescriptor.GetConverter(typeof (Color)).ConvertFromString(value); }
AVK>}
AVK>
Собственно это от тебя и росли. Если бы ты не вредничал, давно уже были бы настраиваемые цвета.
VD>Зачем? Сделай отдельное свойство "Цветовая схема". Или отдельную закладку. На ней выдавай список схем (из хмл-ных файлов) и просто коприуй значения из выбранной в конфиг. Просто, удобно и всегда можно зименить одно значение не меняя всей схемы.
AVK>Не знаю, не нравится мне это решение, слишком много телодвижений.
Каких? Не придумывай находу. В любом другом случае траха будт в разы больше.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
VD>Хорошо. А есть какой-нить IXmlSerializeble?
AVK>Есть
Ну, так может написать обертку? Не трахаться же так каждый раз?
AVK>Для цвета нельзя, это структура. А для обертки придется еще свой Editor писать, но для обертки XmlSerializable не нужен.
Зачем свой? Редактор уже есть. Нужно только перемап сделать. Чтобы он вместо самого класса цвет менял.
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVK>>Я тебе ответил
VD>Точнее сказать отбрехался.
Что значит отбрехался? Я тебе объяснил в чем проблема. Ты все таки не чайник, тебе же не нужно элементарные вещи разжевывать.
VD>Значит в данном случае он использован не по назначению. В конфиге должны сериализоваться любые типы.
Ну так предложи вариант лучше. Вариант переписать XmlSerializer не лучший
VD>Собственно это от тебя и росли. Если бы ты не вредничал, давно уже были бы настраиваемые цвета.
Я думал что тебе не надо элементарные вещи объяснять.
VD>>Зачем? Сделай отдельное свойство "Цветовая схема". Или отдельную закладку. На ней выдавай список схем (из хмл-ных файлов) и просто коприуй значения из выбранной в конфиг. Просто, удобно и всегда можно зименить одно значение не меняя всей схемы.
AVK>>Не знаю, не нравится мне это решение, слишком много телодвижений.
VD>Каких?
Со стороны пользователя
1) Скачал в нужный каталог
2) зашел в настройку, нажал кнопку загрузить, загрузил
3) Выбрал загруженную схему
В случае отдельного файла достаточно положить файл в каталог, а затем в настройках его выбрать. При обновлениях еще проще — просто заменяем файл.
Со стороны программера
1) Создать класс, представляющий схему
2) создать сериализуемую в xml коллекцию схем
3) написать редактор этой коллекции, чтобы было можно погружать в нее внешние файлы
В случае же отдельного файла достаточно 1 строковое свойство и подключить к нему FileNameEditor
VD> Не придумывай находу. В любом другом случае траха будт в разы больше.
Это вряд ли. Я уже с пресетами наелся. Там как раз реализовано так как ты предлагаешь. Траху по самое нехочу.
Здравствуйте, VladD2, Вы писали:
VD>Ну, так может написать обертку? Не трахаться же так каждый раз?
Для обертки IXmlSerializable не нужно.
AVK>>Для цвета нельзя, это структура. А для обертки придется еще свой Editor писать, но для обертки XmlSerializable не нужен.
VD>Зачем свой? Редактор уже есть. Нужно только перемап сделать.
Здравствуйте, AndrewVK, Вы писали:
AVK>Что значит отбрехался? Я тебе объяснил в чем проблема. Ты все таки не чайник, тебе же не нужно элементарные вещи разжевывать.
Если я спрашиваю, значит я не знаю. И мне нужен не отбрех, а ответ.
AVK>Ну так предложи вариант лучше. Вариант переписать XmlSerializer не лучший
В принципе конечно лучшуй, но не самый простой.
VD>Собственно это от тебя и росли. Если бы ты не вредничал, давно уже были бы настраиваемые цвета. AVK>Я думал что тебе не надо элементарные вещи объяснять.
Я с этим еще рне возлся. Дернулся... не вышло... дернул тебя... ты полез вредничать.
AVK>Со стороны пользователя AVK>1) Скачал в нужный каталог AVK>2) зашел в настройку, нажал кнопку загрузить, загрузил AVK>3) Выбрал загруженную схему
AVK>В случае отдельного файла достаточно положить файл в каталог, а затем в настройках его выбрать. При обновлениях еще проще — просто заменяем файл.
Все тоже самое. Скачал, положил, выбрал. Снова у тебя аргументов нет и ты притягиваешь их за уши.
AVK>Со стороны программера AVK>1) Создать класс, представляющий схему AVK>2) создать сериализуемую в xml коллекцию схем AVK>3) написать редактор этой коллекции, чтобы было можно погружать в нее внешние файлы
AVK>В случае же отдельного файла достаточно 1 строковое свойство и подключить к нему FileNameEditor
Та же фигня. Схема будет в отдельном файле, а цвета цветами.
В общем это притягивание за уши. Ты лучше скажи что ты будешь делать когда пользователь захочет изменить один цвет? Заставишь его фйл править или будешь ще один редактор конфигов делать?
VD> Не придумывай находу. В любом другом случае траха будт в разы больше.
AVK>Это вряд ли. Я уже с пресетами наелся. Там как раз реализовано так как ты предлагаешь. Траху по самое нехочу.
И в чем он? Пробежаться и отобрать свойства одного типа?
... << RSDN@Home 1.1 alpha 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.