Code Monkey home page Code Monkey logo

twuieditor's Issues

Decide on how I'll support the various different version numbers of TWUI.

Expected properties and elements are the big change between versions, as well as the anticipated name of each.
I can potentially use attributes, keep them all to the same class structure and just add in attributes for [Version(Start,End)] or [Version(Start)].
It would be nice to not have them be built directly into code, but I'm not sure the best way to handle that structure. Making them clear code data files isn't a big issue, as long as there is support for "anonymous/unknown" types during the decoding process.

Parse Twui file into structs

Read the Twui file on open and parse it for the file version, the hierarchy, and then the components and their internal fields

  • Version
  • "Root" component
  • Children, by name
  • Hierarchy
  • Other internal fields, just hold in an array for now?

tweak Shell

add topbar menu and status bar and other vitals to the ShellView as is
move "main" commands into ShellViewModel
ScreenCollection in Shell, for dockable windows

How to handle properties within each element data model class

Handle them with attributes that have a "Name", a "Type", an "Input"(?), and a "Version".

Interrogate each element's internal properties to get all of the ones that are valid for the currently loaded Version, and try to find the Name in the XElement as an XAttribute, pull in the value as the type specified to the field here.

Each component "attribute" just needs to have a name and a value, with the value of variable type defined by the C# Attribute.

Restructure TwuiContentsView

TwuiContentsViewModel - master handler to hold all of the currently opened twui files, the tabs, the XML view, the properties, the hierarchy, etc.

View / Edit support for attributes and subelements for each component

Scrollable list of the attributes underneath a collapsible header category, with support to go down into subelements.
IE., highlight a component, see its id, offset, docking position, etc., and have a collapsible header to go into its states, images, etc.

Support for editing based on the types of each attribute - docking is a series of buttons, offset is an x/y coord, priority is an unsigned int, etc.
Support for "reference" GUIDs - clicking on "currentstate" GUID will let you scroll immediately to that state.

Make twui ed work with binary files as well as the XML version

IF it's not a complete pain in the ass.

May require some simple conversion; maybe it's actually an XML file but stripped of the extension; maybe it's going to require a lot of hard work to move over and is just not worth it, at which point I'll just not do it

solution structure

Project - Entry
-> App.xaml
-> Other main resources

Views

ViewModels

Models

Utilities

Schema[s]

Display "TwuiDataView" info more interestingly

Top of listview should have a nice header informing the user what exact component and element we're looking at (ie., we're looking at the root, and we're in its "newstate" state.)

Collapsible headers for subelements

C# Attributes to hold the subelements for each XML node

Should they be held in a single field, like the "Properties" list? Or should they be specific fields for each element?

How to handle the "list" vs "instance" elements?
IE., -> list of individual states, -> singular element w/ attributes.

How should the C# Attribute be setup?

TwuiElementAttribute(Name, DataModelType, bIsList, bRequired, uintVersionAdded, uintVersionRemoved)

Set up dockmanager systems

Work out a dock manager system to handle various Visual Studio esque micro-windows

  • View -> on menu bar
  • HierarchyPanel
  • PropertiesPanel
  • DesignerPanel (view finalized UI)
  • FileContentsPanel (XML view, optionally read-only)

Open a twui.xml file, from disk only to start

  • Route command from MenuBar
  • Open up a file dialog
  • Filter for only twui.xml
  • Class in background to handle the pointer to that file's location, any loaded details, any changes, etc
  • Display XML contents in one section
  • Display hierarchy treeview on one side
  • Display properties of selected element in hierarchy on another

File -> Open Twui

Display XML contents in one tab
Display the treeview of the TWUI in a side view
Display properties of each element, based on treeview selection, in another side view

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.