[MonoDevelop] Task Class Wizard

Michael Hutchinson m.j.hutchinson at gmail.com
Tue Sep 16 01:41:05 EDT 2008


On Tue, Sep 16, 2008 at 12:50 AM, dave <knottnhupfer at gmail.com> wrote:
> Hi,
>
> 2008/9/11 Michael Hutchinson <m.j.hutchinson at gmail.com>:
>
>> Please review this thread:
>> http://lists.ximian.com/pipermail/monodevelop-list/2008-February/007334.html
>>
>> There is a lot of discussion there about different ideas for the wizard.
>
> here [0] a new proposal for the class wizard according the old thread
> from olivier dufour. The only think about I'm not sure are the GNOME
> guidelines.
> I have to read them ;)
>
> The fields "Base classes" and "Interfaces" will be handled with auto
> completition.
> In the field "methods to override" each line consists of a check box
> and the method name. If the check box is marked the method will be
> overridden otherwise not. I'm thinking about to add here also a auto
> completion to search trough the methods.

Okay, a few points here (briefly, as I'm about to go to bed :-)

Firstly, for the override/implement members, it may be better to have
a single tree/list, like the "Override/implement dialog" in MD trunk:
http://anonsvn.mono-project.com/viewvc/trunk/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/OverridesImplementsDialog.cs?view=markup
(it's on the context menu for classes in the code). It might be
possible to share code, but even if it isn't, the improved consistency
will help to make MD more usable. The base class and interfaces could
be added/removed to this tree/list directly. Note that it's only
possible to have one base class in .NET.  Given this, it might be good
to unify the GUI for adding the base class / interfaces.

Also, a class cannot be protected (unless it's an inner class, which I
don't think will be possible with this dialog), so the only visibility
modifiers are public/internal. Since internal is the default for C#,
maybe only a checkbox for "public" is needed.
"static", "partial" and "abstract" should also be checkboxes, since
they can be combined (except static and abstract, I think, so
selecting either one should disable the other).

Here's an ascii mockup of my proposed tweaks:

Name:              [_________________]
Namespace:   [_________________]
Modifiers:         [x] Public   [x] Partial
                           [x] Static   [x] Abstract
Inherits:    [________________] [Add][Remove]
---------------------TreeView--------------------
Name                          Implement  Explicit
------------------------------------------------------
BaseClass1               [x]
  - Method (...)             [x]
  - Property1                [x]
       - get                       [x]
       - set                       [x]
Interface                      [x]                  [ ]
  -- Method2                [x]                  [x]
-------------------------------------------------------

         [cancel][more options][create class]


"More options" would go through to the constructor generation wizard
(if it ever appears).
The "TreeView" would behave like the existing override/implement dialog
"Inherits" would track the class/interface selection in the treeview
so that it's clear what the "Remove" button applies to.
"Namespace" and "Inherits" would autocomplete
"Name" would validate for conflicts and invalid characters.

> Is there any guide how to create a GUI? I googled but I didn't find
> really useful links.

Generally our built-in designer is the easiest way.
http://monodevelop.com/Creating_a_simple_user_interface_with_MonoDevelop

GTK# docs can be found here:
http://www.go-mono.com/docs/monodoc.ashx?tlink=4@N%3aGtk

Also, many of the concepts in the GTK tutorial
(http://library.gnome.org/devel/gtk-tutorial/stable/) can be applied
to GTK#.

> And another question, is there any documentation for monodevelop for developer?

Pretty much all we have is this: http://monodevelop.com/Developers

We tend to find it easier to give answers and guidance when people ask :)

-- 
Michael Hutchinson
http://mjhutchinson.com


More information about the Monodevelop-list mailing list