Project Ideas

Developer
Jul 10, 2012 at 11:52 PM
In response to cyberknet's comment to issue # 18341 I figured I will create a post with my ideas about the project, so that more people can contribute. 

I have the following suggestions/ideas: 

  • Should we use MVP (Model-View-Presenter) as the main architecture for the project. Therefore dividing the solution into three main projects
    • View (Which would contain all the xaml files, icons etc.)
    • Domain (Which would contain the business logic. )
    • Data (Which in this case since we don't have a database would end up containing the xml file and any logic that deals with information being retrieved from it)
  • Make the IBaubleButton a base class of some sort that holds the information common for all the icons (Clock, Shortcut and more). So for example it can have a List of Objects(ShortcutInfo which would contain all the information for a shortcut (everything that is stored in the xml)) 
Coordinator
Jul 11, 2012 at 2:48 AM

I'm really glad you started this thread. I think it will be great for discussing plans.

I actually had messed around with creating the IBaubleButton a base class... what I couldn't figure out was how to be able to still create things using XAML afterward... admittedly that could easily be because I know very little about WPF and XAML - I started this project as a way to learn both of them.

I haven't used MVP before - although for web work I have used MVC and liked it quite a bit. This sounds somewhat similar, so I think it really does bear looking into. Perhaps we could create a branch to try this idea out as we move forward?

Some thoughts/ideas I have had:

  • I'd like to get people's thoughts about whether the XML file is the best way to store the icon configuration as well.
  • I'm thinking about rebuiliding the IconWindow xaml into several stack panels instead of a grid. This does have some impact on the theme support I committed recently, but could simplify some of the logic in the main form significantly.
  • I'd like to move the settings class out of the main Bauble project (Which seems to line up with your idea of MVP), but it needs to be separate from Bauble.Common because Settings uses IIconFlow and IBaubleButton ... and Bauble.Buttons and Bauble.IconFlows both reference Bauble.Common. So this would necessitate another separate project. Just for settings though? Not sure it's worth it.
  • I'm really not sure that the IconFlow framework is the best way to handle updating icon sizes. It seemed like the obvious starting point, but I just can't get the resizing in the pop icon flow OR the curve icon flow to feel fluid like RocketDock does. It feels twitchy as the items resize and the total width of the form expands and contracts. RocketDock expands as the mouse moves into the dock, but never as it moves from icon to icon. I'm beginning to wonder if what I created for IconFlows is a fatally flawed starting point.

Finally - the big idea that I have tried many times and never got to work acceptably...

I originally really wanted to separate out Bauble.Buttons and Bauble.IconFlows into a plugin framework so that it would be easy for people to contribute their own without having to recompile the entire application. I tried using the System.AddIn pipeline, but it had a huge limitation... if you want FrameworkElements to transit the pipeline then you cannot have transparency enabled on the parent form they will be placed on. For Bauble, that was a non-starter. I'd love people's thoughts as to how we could accomplish this goal. I've spent many, many hours messing with System.AddIn pipeline - my conclusion is it is just not possible with System.AddIn. What else could we do?

Jul 11, 2012 at 8:55 AM

I admire you so much, the project you up to it's such a great idea. Congrats!

 

____________________________

profile structurale

finisaje

Developer
Jul 12, 2012 at 12:12 PM

Feel free to join us. The more the Merrier