the mk builds (C#)

history-mkiii.png alkynedb mkiii
Expanded on the failed tag implementation in the previous mk. Designed this build with tags and filtering in mind. The database items are again hard coded in the mainwindow.cs file and no scanning or saving is implemented in this build.

Tags were built into the items class to allow for fully dynamic tag creation. No were in the code are the tags defined, instead they are created when creating an item. A limitless number of tags could be added. The only hard coded tags / properties are path, size and media type because these are universal to all items in the database.

The tag filter bar is fully dynamic. When adding the filter, it checks the database tags and allows you to add any tag in the database. Once added the "X" will remove it while clicking the tag name will allow you to add a filter value. Multiple filter values will allow you to filter only "Comedy Action" movies. The filter value can be removed by clicking on it. In this build the menu was not linked to the item viewport because they elements were not nested properly. Instead in order to do it I would have had to do some confusing roundabout coding, not what I want to do.

The debug log was optimized and now a collection of static functions. This makes it completely global so the write methods can be written in any method, class, part of code in the while program and when the output window is hooked to a window, all the messages will be displayed. In this build colors have not yet been enabled except for simple and repetitive ones like "succeed" or "failed" for ease of identifying whether everything is functioning properly.

The way the code UI elements like the viewpoint, the tag menu and the debug log are connected to the window is by hooking them to it. Each element is a custom build class which inherits a stock Microsoft WPF UI element. Then a similar method to install(UIElement theelement) is called for the particular new element like vp.install(mainwindow); for the viewpoint class where vp is the viewpoint i.e. vp = new viewpoint();. For this example, the viewpoint class inherits from a DockPanel and when install(Window window); is called, the viewpoint class sets itself as the content of the window. window.Content = this;.

history-mkii.png alkynedb mkii
mkii is the first build which I attempted to make the 'tag' browser and explorer. I had no idea how I was going to implement it and this resulted in a very badly realized setup.

The viewpoint (the list and menus) was a class that was inherited from a DockPanel (a WPF UI element) so that it can behave like a DockPanel except with the extra methods and variables I add. In essence, if I was building this with XAML I would make a DockPanel and then nest the rest of the elements inside, but I want this to be entirely dynamic so the entire UI is built at run-time. I know XAML was created to isolate the UI and code behind parts of the program.

The tag filter bar and user interaction with tag filter was not clearly thought out. The "X" removes the filter, and the tag. The "+" adds a new filter based on the tag type chosen and the ">>" allows the user to pick any tag value in the database to filter. The idea was to allow someone to filter through "Movies" under "Media Type" and then filter "Action >> Comedy" under "Genre" which means out of all the Movies, pick the action movies, and out of all the action movies also pick the comedies. The menus do not reflect this when using them and the program does not filter according to the choices made. I abandoned the build before I could implement any of that.

A purely code debug bar was also added which can be hidden by a parameter. This was also poorly implemented and ultimately was useless. I color system was used in the debugging to allow for easier reading and quick identification of the problems but sending messages in different colors was overly complicated and resulted in many lines of very long, confusing code. This color system was dropped in the future mks until a better way can be used.

The debug console could also save the log to a txt formatted file, and code was started to allow for saving in an xml formatted file to allow for preservation of the colors to make reading and analyzing the logs easier.

There is no directory scanning in this version or database item saving / loading. The entire database is hard coded in the mainwindow.cs file. The database IO methods and functionality would have been added later if I had not decided to abandon this version and start work on a newer on.

alkynedb mki
Not sure what happened to this build. I believe I replaced it and deleted it. Don't have an account of what was in it or what yet to be implemented. Chances are I was trying to get the tag filter idea fleshed out, and the best way I do that is spend a few hours screwing around in Visual Studio and see what I come up with, trying crazy things and learning new ways to exploit classes and methods.

notable pre-mk builds (C#)

There are so many pre-mk builds I wrote. I probably have 30-40 different versions, but there are usual written in a few hours to test an idea or see how something fits together. Most of these recycle code so they do build on the last, but others are focused in completely different areas. So are me trying to figure out how to link and make the UI. Others involve me build a console or trying to get C# to property list and sort database items.

alkynedb a0
This is the most notable and feature pack of my pre-mk builds. It comes preloaded with three different "Media Types" for filtering: Comics, Movies, TV Shows. These are hard coded so you cannot add new ones or edit the names. It can then scan a directory / list of directories and find media with the desired extensions. Then you can right click on an item in the main window and edit the "Name" and "Media Type" of that file. Finally you can save the database to an xml formatted database. This combined most of the work from all the pre-mks. I was still exploring with how to layout the UI and have it usable.

In the picture above, the first song says its a "Music" type but this was added by the right click menu. The program does not register "Music" as a valid media type and will not sort by it like it would any of the "Media Types" in the left navigation menu.

This one is a milestone. This is the very first attempt at making a program. I have been toying with the idea for sometime, researching my options of readily available software, each leaving something to be desired. I have tinkered in C# before and enjoyed programming and using it. I have been trying to get into GUI programming for a while but was using C++ at the time and found it very difficult and usually gave up before I every accomplished anything. .Net3 came out around this time introducing XAML and WPF. I saw some videos and really liked the markup so decided to download Visual Studio Express and play with it. I loved the added C# methods and methodology and became a convert. Then I screwed around and programmed random things, but nothing organized or complex. The state of my badly tagged MP3s and how I wish I could add every type of file to a Windows library and tag it (which apparently only a few formats support) so I decided to build my one all powerful sort, organize, browse program that could do everything I would ever want to do with my digital media.

This build did nothing. I had some dummy files on my computer which the program scanned the directory and added them to the database. No user interaction at all, just run the program and it does it all automatically.

Last edited Oct 14, 2010 at 9:00 PM by equalsP, version 4


No comments yet.