Quote:
Originally Posted by WrongSizeGlass
To be honest, I really don't want to use OOP to work on web pages, or deal with OOP documents as if they were web pages.
|
I had a feeling that comment might be misunderstood. I didn't mean I want to use OO for working on web pages (I can't really imagine why one would use it for that; I use BBEdit for web stuff). I meant it would be nice to have a similar feature -- in whatever program -- that gives me an overview of the CSS styles in use on a particular web page. The closest thing we've got are the DOM inspectors in Firefox (and now Webkit) -- which are great, but aren't specifically made for viewing the style hierarchy and as such, don't give the same comprehensive view of styles as OO's Styles View. My point being, it's a nice feature, and helpful in resolving any confusion about how styles are being applied in a particular situation.
Quote:
Originally Posted by WrongSizeGlass
What I said was I can't make a Style "not bold", not that I can't 'remove' bold. I can manually remove bold, but I cannot set a predefined Style to be "not bold".
|
Understood. It seems you thought I was replying to your comments directly, when I was actually just speaking generally. I actually agree with most of your points, and if we continue to discuss it I'm sure we can identify what actually needs to be done.
I recognize that you can't specify a Named Style as being "not bold" (or other defaults) -- you can only specify a default style for an object that has an inherited value for that attribute. As has already been pointed out, if you Command-drag a style instead of just dragging it, it will also remove any styles not specified in that style. But that doesn't really solve the whole problem, because it isn't really removing styles (it's overriding them), and will only remove unwanted styles on the particular row(s) it's been dragged to. As I see it, this leaves us with two main problems:
1. A style cannot be set to
only include the attributes specified therein. If one wanted a particular Named Style to always behave that way, one would always have to Command-drag that style. This also means that the style cannot be applied with a keyboard shortcut, because it's not possible to hold Command while pressing the shortcut and get the same effect.
2. Since the method for "removing" unwanted style attributes is to override whichever unwanted ones happen to be present in the target rows
at the time a style is applied, if the inherited attributes change, you will again have styles you don't want, and have to Command-drag the Named Styles to the affected rows again. This defeats at least part of the purpose of using Named Styles.
The ability to explicitly set a style attribute to its default value (in any context) would be helpful. However, I have another idea that may prove more useful in most situations: a new rule called "don't inherit styles", which could be applied to Named Styles, or even to individual rows or text. In general, I feel this is a better way to solve the problem of only wanting the attributes given in a particular style.
However, I still think we should be able to explicity set a style attribute to its default value; this would allow us to override a particular inherited rule without eliminating all the others.
One other thing that might help us here (and in other situations) would be the ability to apply rules to "all descendants" of any given row. Currently the only way to apply rules to descendants is to do so for each descendent-level manually. By applying my proposed "don't inherit styles" rule to "all descendants" of a particular row, you could opt that entire section of the outline out of the global style rules.
Quote:
Originally Posted by WrongSizeGlass
There is a huge misconception that we all want to have all text within a section or group of sections related by level, etc, to have the same Style.
|
Not on my part there isn't. I frequently apply styles to individual rows or even selections of text within those. Perhaps you misunderstood me, or perhaps I'm misunderstanding you.
Quote:
Originally Posted by WrongSizeGlass
That is part of the problem. Adding extra steps to undo things you don't want to do in the first place is making it more complicated.
|
This is true, but even though we currently don't have all the tools we need to control inheritance properly (making it difficult to create exceptions), the concept of inheritance is the foundation of the styles system, and what makes it so powerful.
I believe we need to carefully evaluate ways to give advanced users control over the inheritance, and at the same time, ways to allow users who don't want to deal with all the complexity to avoid these problems in the first place.
In regard to the latter point, I think the main thing that needs to be done is to turn off "Automatic Level Styles" by default (and from what I understand, that's Omni's plan). Since I don't use that feature, I won't say that it should be removed entirely; some people might like the way it works. But if it's off by default, then at least new users will be shielded from the potential problems and confusion of style inheritance. For those who don't need or want the complexity, or aren't even aware of the whole style system, styles would always be applied explicitly to selections of text or rows, and would always be easy to remove or change.
Quote:
Originally Posted by WrongSizeGlass
As a professional programmer for 24 years, I am in no way, shape or form an 'average user'. The implication that those of us who "don't find the Style implementation intuitive" just don't understand it is ridiculous.
|
I didn't mean to suggest that anyone who finds the style system unintuitive or confusing is somehow at fault. The complexity of the system makes it confusing for average users (because the default "Automatic Level Styles" thrusts everyone into it) and occasionally frustrating even for those who understand how it works (because it lacks proper means to control inheritance).
It's my hope that the changes I've suggested will help with both of these problems. Since I tend to be overly thorough (i.e. "babble on and on") about things, I'll summarize my suggestions here:
1. "Automatic Level Styles" should be off by default.
2. An additional style rule -- "don't inherit styles" -- should be available, and able to be applied to any row, level, or Named Style.
3. We should also be able to explicitly set a style attribute to its default value in any context (not just when it happens to inherit a different value for that attribute).
4. It should be possible to apply style rules to "all descendants" of a particular row (not just to individual descendant-levels).
P.S. I have one other idea as well. It introduces additional complexity and is not immediately relevant to the main topic here, but would nonetheless be useful. A Named Style could also include rules for its descendants, which would allow you to set the styles for a row and all of its descendants in a single step. If you want to have particular subsections of a document styled a certain way that differs from the global styles, this would be the answer. This idea makes sense in my head, but might end up opening a can of worms of additional problems, so it'll require some thought and discussion.