benruehl / adonis-ui

Lightweight UI toolkit for WPF applications offering classic but enhanced windows visuals
https://benruehl.github.io/adonis-ui/
MIT License
1.71k stars 143 forks source link

Theme variety collection #85

Closed rasyidf closed 4 years ago

rasyidf commented 4 years ago

when we are started using adonisUI, we have to Install two assembly, one of them is AdonisUI.ClassicTheme. that bring me a lot of

I think you need to explain about that stuff, such as

thank you for your great library

benruehl commented 4 years ago

Good questions. Let me try to answer them:


will there will be any theme based on adonis? If it's true maybe there will be more contributors, willing to collaborate (Metro, Fluent, etc).

The idea with splitting the library into two assemblies was to separate the core definition (AdonisUI) from the actual implementation (AdonisUI.ClassicTheme). This way someone could create a different theme with totally different looking controls for the same behavior. In theory, a theme could be replaced by a different theme by only changing the one import line in the App.xaml and the whole application would still work like before, just look totally different.

Personally, I am not planning on creating another theme though. At least not currently. Creating another theme would mean to recreate almost all styles which is a lot of work. And once another theme is introduced, every change to the base library would require changes in both themes, of course.

But yeah, you are right, at least in theory someone could create a metro / fluent theme or something like that for Adonis UI.


how much dependent the adonis UI with the theme? this will measure the breaking changes if there's other theme.

AdonisUI.ClassicTheme is dependent on AdonisUI. AdonisUI contains the whole public API like names of colors, brushes, styles, templates, converters, dimensions, etc. This way an application depends only on AdonisUI and never on the concrete theme.

An application could use only AdonisUI without any theme as well. But then it misses all styles and templates and can use only some core features that are independent of the theme, like converters, colors, some attached properties that work without styles and AdonisWindow.


how to create new one or manipulating the existing? if you provide guide for that, other will understand more and will use more.

Creating a new theme could be done from scratch or by duplicating AdonisUI.ClassicTheme and using it as a base. All styles could be changed to look like desired. It should be tested whether all the custom functionality of Adonis UI works like expected (layers, watermarks, ripples, etc).

I can try to create a guide for that in the future. Although this is not completely thought out by myself. As I tried to convey, this architecture is based on thoughts I had at the beginning of this project. I might have missed things that would raise issues if someone really tried to create another theme. So it might require some cooperation in order to successfully do that. And let me say this again: It would mean a lot of work (depending on how the theme should look exactly, of course)! For my limited time at afternoons and weekends it would be multiple months - and slowing down future development as well. Just look at the source code of AdonisUI.ClassicTheme and imagine to reimplement everything. You could copy and paste some stuff of course, but still.

Maybe even this repository would not be the best place for another theme because the readme would need to show off both themes without being confusing to newcomers. Splitting the repo might be a better idea then.


how about the style naming conventions?? just like mahapps, will you provide naming convention like AdonisUI.Styles.Button or AdonisUI.Brushes.Accent

Could you please clarify what you mean here? Adonis UI already has resources like AdonisUI.Brushes.AccentBrush or AdonisUI.Styles.AccentButton. Is this what you mean?

rasyidf commented 4 years ago

Thank you for your great answer,

Could you please clarify what you mean here? Adonis UI already has resources like AdonisUI.Brushes.AccentBrush or AdonisUI.Styles.AccentButton. Is this what you mean?

oh right, I missed that point, what I intended to ask is the resource collection, like this image

benruehl commented 4 years ago

I like the idea of a list showing all available colors in the demo app, so I started working on this.

Current state:

image

I am still a bit confused regarding your last question though. At first, you asked for naming conventions which you did not mention later again. I hope this new view in the demo app is what you requested.

rasyidf commented 4 years ago

Great, that's what I meant

about the naming, I thought it wasn't there yet.

benruehl commented 4 years ago

Closing this because

  1. the color reference view has been added to the demo app successfully
  2. info about creating new themes has been given
  3. actually creating a new theme is not in the scope of this issue and currently not planned as well