Friday, June 15, 2012

Report No.2 GSoC 2012

This week I succeed with reading the source values/evaluated values and started with real editing.
So, for each rule 3 kinds of views are available:
- Source 
- Evaluated
- Package (Source String)

1. Source
In this view are displayed source values for properties, and user can edit the value. 
All the changes are reflected in the second - Evaluated View.


2. Evaluated
In this view are displayed evaluated values for properties, and user can only view (text boxes are disabled).


3. Source String


I added this view in order to offer the user a clear view of  the part of  .autopkg file, which is edited from the first tab - Source Value. Source String tab is in a view only mode - not for editing.


For the Undo/Redo functionality I used  Monitored Undo Framework  from  http://muf.codeplex.com/ 
The Root of the History is  MainViewModel and it keeps  the stack of changes for all View Models (Source Values). After Editing a Source Value, user can navigate to the Evaluated tab and see the changes (I think is especially interesting/important to see the reevaluated values when source value have parameters, ex: glib[${flavor}]  or  "libffi[${flavor}]-${libffi-dep-version}-${arch}-${libffi-dep-publickeytoken}"). When user press undo/redo having focus on the evaluated tab,  the reevaluated undo/redo undo is shown ( is not needed to navigate back to the source values to perform undo/redo - both view models are updated/synchronized).

Next week problems to solve:
  • WPF Focus  Issue - when perform undo/redo for the different rules located on different tabs, to set the focus on the corresponding control - tab, textbox etc. 
  • Support editing and undo/redo for the collections - ex: list of assemblies for the manifest rules, list of files, required package collections
  • Create User control  'Editable List for the Collections'
  • Create the Dynamic view for the #define rule
               For this rule the view is different, because there are no fixed properties which are expected,
               so the list of properties could be like : 

 #define {
    general-description : "GLib is a general-purpose utility library for C, mostly used with GTK and GNOME.";
};

#define {
    package-version : 2.32.3.7;
    author-version : 2.32.3;
    outercurve-publickeytoken : 1e373a58e25250cb;
    deps-publickeytoken : "${outercurve-publickeytoken}";
    libintl-dep-version : 0.18.1;
    libintl-dep-publickeytoken : "${deps-publickeytoken}";
    libffi-dep-version : 3.0.10;
    libffi-dep-publickeytoken : "${deps-publickeytoken}";
    zlib-dep-version : 1.2.5;
    zlib-dep-publickeytoken : "${outercurve-publickeytoken}";
    flavor : "${comp??vc10}";
    arch : "${plat??x86}";
};








No comments:

Post a Comment