Наследование свойств стилей

Автор sab_chel, 11 ноября 2010, 22:36

0 Пользователи и 1 гость просматривают эту тему.

sab_chel

При наследовании стилей можно некоторые свойства переопределять, а некоторые оставлять наследуемыми от родительского. В окне редактирования стилей это никак визуально не различается. Через некоторое время уже и не вспомнишь какие свойства наследуются а какие переопределены. Есть ли в Writer средство для такого визуального разделения наследуемых и переопределенных свойств стилей.       

dr.Faust

Наследуются ВСЕ не переопределённые свойства, а переопределённые перечисляются в окне редактирования стилей. Это единственный способ отображения структуры стиля.
Свобода информации - свобода личности!

ape


prof-alex

Вопрос был не про то что наследуется, а про визуализацию наследования. Как отобразить какие параметры в стиле "свои", а какие унаследованы? Я такого инструмента не знаю. В случае "развестистой" структуры это может стать головной болью.

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

dr.Faust

#4
Цитата: prof-alex от 12 ноября 2010, 11:52Вопрос был не про то что наследуется
Не совсем - в вопросе предпологалось, что наследуются только некоторые свойства, но наследуюется не некоторые, а ВСЕ, при этом некоторые переопределяются.
Соответственно,  визуализировать наследуемые свойства нет никакого смысла - они как раз визуализаированы лучше всего - видишь его - значит унаследовано, а вот переопределено или нет - это да - вопрос. На на вкладке управления есть список переопределённых свойств.
Возможно ты говоришь о поколениях, наследования - т.е. о том, от в скольких старших поколениях данное свойсвто не переопределено.
Тут возникает определённая сложность - мы говорим, что в ООо нет ничего без стилей. Идиологически это верно. Но технически - враньё. Там полно объектов для которых стиля нет - когда ООо находит такой объект без стиля, то применяет к нему группу настроек конревого стиля.
Смотрим прикреплённые xml. Файлы отличаются только тем, что к тексту во втором применён стиль Базовый. На практике для пользователя они выглядят одинаково, а по факту - нет.
Т.е. в ООо может быть полно объектов без стиля. От чего унаследованы их свойства?
Дальше больше - не все свойства заданы корневым стилем - многие объекты могут вообще не иметь какого-то свойства, так как оно вообще не описывается корневым стилем. Просто для этих свойств есть некоторое состояние при котором оно не влияет на объект, т.е. такое как будто свойства не вовсе.
Отсюда - некоторые свойства в стилях не просто ни откуда не наследуются - их вообще нет ни в одном поколении предков.
Ну и как их визуализировать?

Вот такая вот диалектика...

[вложение удалено Администратором]
Свобода информации - свобода личности!

VlhOwn

Такую визуализацию ни в коем случае не следует встраивать в стандартный интерфейс, а вот расширение, которое могло бы строить "генеалогическое дерево" для выбранного стиля и в каждом узле этого дерева показывать отличия соответствующего узлу стиля от стиля-родителя, - это был бы высокий класс!

dr.Faust

Не сложно хотя и нудно. Но есть один нюанс - кто-нибудь знает как отличить переопределённое свойство - в объектной модели для каждого свойства указано состояние, в отличии от xml, но как-то же он их отличает? Или тупое сравнение с родителями?
Свобода информации - свобода личности!

VlhOwn


sab_chel

#8
Извиняюсь что не полно раскрыл вопрос. Дело вот собственно в чем. Создаю свой базовый стиль абзаца. От него делаю дочерний стиль. Например в базовом стиле высота шрифта 12 пт. Соответственно в  дочернем стиле высота шрифта такая же. По логике ООо если меняешь высоту шрифта в базовом стиле на 10 пт то дальше по цепочке во всех дочерних стилях эта высота также становиться 10 пт. Красота. "Легким движением руки" меняем высоту шрифта во всем документе. Но, если случайно изменить высоту шрифта в дочернем стиле то это свойство перестает наследоваться. И если теперь поменять высоту шрифта в базовом стиле то в дочернем она уже автоматически не измениться. Причем наследование теряется железно. Даже если вернешь в дочернем стиле такую же высоту шрифта как и в базовом это свойство все равно уже не наследуется и автоматически не изменяется, а это не есть хорошо. А поскольку визуально отличить наследуемые и переопределенные свойства нельзя, то создание системы стилей превращается в геморой. Достаточно одного неловкого движения и всю систему стилей можно удалять и выстраивать заново.

ЗЫ: Из сказанного возникает соответственно еще один вопрос. Как вернуть наследование переопределенного свойства, то есть чтобы при его изменении в родителе оно аналогично менялось и в дочернем стиле.   

vesvit

Нда.... все таки ООо это не С++ и даже не Паскаль :-)

VlhOwn

Цитата: sab_chel от 12 ноября 2010, 14:47Но, если случайно изменить высоту шрифта в дочернем стиле то ...
1. Если на Т-образном перекрестке случайно повернуть не в ту сторону, последствия могут оказаться еще более катастрофичными, нежели падение системы стилей...
2. Никакого разрушения системы стилей не происходит. Если Вы испортили N-ный стиль в иерархии, Вам нужно просто создать заново именно его, наследуя (N-1)-му стилю, и восстановить связь (N+1)-го стиля с N-ным. Система восстановится в первозданном виде. ИМХО, невысокая плата за случайность действий ...

sab_chel

Насчет "случайно изменить" это я конечно погорячился. Но отсутствие возможности восстановить наследование значения свойства огорчает. Согласитесь гораздо удобнее определять стили непосредственно "играя" значениями свойств - изменил - посмотрел как выглядит - понравилось оставил, не понравилось вернул все как было. но вот вернуть как было и не получается. Приходится удалять стиль и определять заново. При этом приходиться восстанавливать значения свойств, которые "удачно" переопределились, то есть их запоминать (записывать). При развесистой системе стилей удержать каждое свойство в голове невозможно, а писать для всех стилей  "портянку" как то не айс.         

dr.Faust

1. Это как-то возможно сделать - помню, что делал,но как не помню... Надо потыкаться - сначала ставишь такое же значение как у родителя, а потом что-то - возможно даже с родителем.
2. Можно же выставить % а не пт - он наследуется всегда - меняй не хочу.
Свобода информации - свобода личности!

AcetonKZ

ЦитироватьНда.... все таки ООо это не С++ и даже не Паскаль :-)
Это сладкое слово ПАСКАЛЬ ;D
Я никогда стилями не пользовался, всегда ручками,видимо не нужны были, поэтому проблему понять не могу, но думаю ,что легко решается, если всегда точно знать Что и Зачем делаешь!

VlhOwn

#14
Цитата: sab_chel от 12 ноября 2010, 15:45гораздо удобнее определять стили непосредственно "играя" значениями свойств - изменил - посмотрел как выглядит - понравилось оставил, не понравилось вернул все как было. но вот вернуть как было и не получается.
Создаем копию документа и играемся с ней, сколь душе будет угодно. А в рабочий документ переносим только готовые решения.


Цитата: dr.Faust от 12 ноября 2010, 16:592. Можно же выставить % а не пт - он наследуется всегда - меняй не хочу.
Про % можно подробнее? Где это?