← Back to team overview

kicad-developers team mailing list archive

Re: writing a new top level wxPython based project manager

 

Hi all,

Please find attached a quick view of 3 possibles frame on wxpython
project manager.
I'm not a specialist of ergonomics/design but it is some ideas I have.

1/ a welcome frame
Should include logo, welcome message and a list of last opened projects
for example

2/ Projects
On the two options project are tabs (horizontal). Two options for the
content of a project frame:
 
 Option1: Vertical tabs for schematic/footprint association/pcb
   => In this case all configuration (project configuration...) should
be done inside the main menu as before

 Option2: Tree
  => In this case a rigth click on project open a submenu with
configuration options
  => Same for all others tree entries (right click on pcb will allow
edition of pcb parameters...)
  => The schematic hiearchicy should be visible directly on this tree as
sub items

To build this I use wxFormBuilder to start and some override to handle
event/image/content...

Is it the way you are waiting for ?
Suggestions, comments ?

@dick
For the moment, the code do nothing it only a skeleton but I can
commit/push it you want

Le 02/04/2014 23:32, Dick Hollenbeck a écrit :
> On 04/02/2014 12:39 PM, Dick Hollenbeck wrote:
>> Here is more info, which will help you create some low level mock up classes.
>>
>> Class KIWAY_MGR:
>> (temporarily in kicad/kicad.cpp) will get swigged, creating a python class implemented
>> fully in C++.  It is a collection of PROJECTs/KIWAYs.  The constructor of this class may
>> take a wxFrame*, so we have the option of hooking child frames into that parent.  Possible
>> functions:
>>   createProject( full_path_to_pro_file )
>>   openProject( full_path_to_pro_file )
>>   listProjects()
>>
>>
>> Class KIWAY:
>> will get swigged, creating a python class implemented fully in C++.  Possible functions:
>>   openSchematic()  no args required, schematic's name is in the *.pro file.
>>   openBoard() no args required, board's name is in the *.pro file.
>>
>>
>> Just with this sketch, you should be able to mock enough both of these classes, enough to
>> work magic at in the UI layer.  If you want to open dummy child frames, that would be ok
>> from openSchematic and openBoard().
>>
>>
>> Feel free to add functions as you find needs for them.  This will give us an aspect of top
>> down design.
>>
>>
>> HTH,
>>
>> Dick
>>
>>
>>
>>
>>
>> On 04/02/2014 11:58 AM, Dick Hollenbeck wrote:
>>> Hi Jean-Samuel,
>>>
>>> Thanks very much for your willingness to help!
>>>
>>> In answer to your question:
>>>
>>> The wxPython project manager sketch up should concentrate on the user interface, not the
>>> actual loading of the sub programs.  In fact, if it did not load the subprograms at all,
>>> that would be acceptable.  The screen real-estate usage, and the icons and whatnot are
>>> what's important for now.  You could create scaffolding to mark a project and a kiface as
>>> being loaded, and test your UI code against that scaffolding, without ever loading any
>>> projects or opening any child frames.
>>>
>>> In milestone B) we are putting a top C++ API into the KIWAY, this is not designed yet.
>>> You should not use the KIFACE from python, that was never intended.  Python will use the
>>> KIWAY API, which in turn will manage the KIFACE's and projects using C++.
>>>
>>> If you really really want to launch something, then encapsulate that python code into
>>> something which will be replaced later, and simply load pcbnew.exe for now from that
>>> disposable code.  This code will get swapped out later, in favor of the KIWAY API, which
>>> will do the actuall loading of the *.kiface, again from C++.  This is necessary so that
>>> the KIFACE to KIFACE 
> oops, meant not "KIFACE to KIFACE", but rather
>
> "project specific KIWAY_PLAYER to KIWAY_PLAYER"
>
>
> comms can work for things like back annotation, and pcbnew<->eeschema
>>> cross-probing, per project.
>>>
>>>
>>> There's actually little value in loading executables or kiface's right now.  Folks will
>>> use the C++ project manager until the user interface in the python project manager is
>>> superior.  So please focus on the user interface, that's the value added stuff.
>>>
>>> After milestone B) that's when we start to worry about loading the submodules (kifaces).
>>>
>>>
>>> Thanks,
>>>
>>> Dick
>>>
>>>
>>>
>>> On 04/02/2014 11:23 AM, Jean-Samuel Reynaud wrote:
>>>> Hi
>>>>
>>>> As I understand, one of the feature of this new interface is to load directly from python
>>>> the kiface interface (instead of just launch the program aka pcbnew/cvpcb for example).
>>>> Is it right ?
>>>> As I see, the function KIFACE_1 return a struct with inside all function to use (one of
>>>> them is createwindow).
>>>> Could you confirm it's the way you think about ?
>>>> If yes, ctypes from python will help me and I think I'll fight with the structure
>>>> definition inside python...
>>>>
>>>>
>>>> Regards
>>>>
>>>>
>>>>
>>>> 2014-04-01 15:47 GMT+02:00 Dick Hollenbeck <dick@xxxxxxxxxxx <mailto:dick@xxxxxxxxxxx>>:
>>>>
>>>>
>>>>     In English there is a saying: "Competition breeds success."
>>>>
>>>>     I would consider it a luxury to be able to choose [pieces] from multiple implementations.
>>>>      Competition in this case is not exactly cruel and unusual punishment.  In fact it could
>>>>     be an *awful lot of fun*, since wxPython is such a high level language and so much can be
>>>>     done in so few lines of code.
>>>>
>>>>
>>>>     You may either compete or collaborate.   I think we'll get more ideas if there is
>>>>     competition.  After choices are made, you can continue to compete, improving, innovating
>>>>     and serving your own needs, even if your code is not merged up to that point in time.
>>>>     Repeat that last sentence.
>>>>
>>>>
>>>>     Any implementation which does not meet the primary objective: "showing which projects are
>>>>     open, among a larger set of project possibilities" will lose the competition.  (Even if
>>>>     there is only one entry into the competition, *multiple* open projects is a mandate.)
>>>>     Using screen real estate for a permanently visible directory tree may not be an optimal
>>>>     pathway to achieving the objective.
>>>>
>>>>     Some tips:
>>>>
>>>>     a) the directory tree does not give sufficient emphasis on what constitutes a project.
>>>>
>>>>     b) the directory tree does not give the ability to show several open projects without a
>>>>     sea of rows of actual files in between.
>>>>
>>>>     c) we need to be more project centric, less file centric.
>>>>
>>>>     d) once projects have been defined, the user interface procedure to opening the schematic
>>>>     or layout tools on any of those projects needs to be lean.
>>>>
>>>>     e) I'm thinking the set of files that constitute a project can continue to reside in the
>>>>     *.pro file.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>     On 04/01/2014 07:24 AM, dileep kushwaha wrote:
>>>>     > Hi,
>>>>     >      I have so far made the menubar for the wxPython. I now want to integrate the
>>>>     > mainmenu.py to KiCAD instead of .cpp codes. I little hint and guidence will be great. I
>>>>     > can send the code. Its ugly right now. i'll modify it according to guidlines after
>>>>     > completing significant portion...(i see three .cpp files that will have to changed)
>>>>     >
>>>>     >
>>>>     > On Tue, Apr 1, 2014 at 9:14 AM, dileep kushwaha <dilzverykool@xxxxxxxxx
>>>>     <mailto:dilzverykool@xxxxxxxxx>
>>>>     > <mailto:dilzverykool@xxxxxxxxx <mailto:dilzverykool@xxxxxxxxx>>> wrote:
>>>>     >
>>>>     >     Hi,
>>>>     >          Please accept my apology for the delay from my side. I can give you few results
>>>>     >     in maximum one week's time. I am able to make an exact replica of KiCAD window
>>>>     that we
>>>>     >     have right now. I was carried away and wanted the GUI to look pretty innovative.
>>>>     I was
>>>>     >     looking into the feasibility of an idea. The idea comes from a member who
>>>>     proposed it
>>>>     >     to have a game like GUI. I was thinking if right click would give list of options
>>>>     >     surrounding it in circle. I think I will have to wait a little more to get
>>>>     expertise.
>>>>     >
>>>>     >     I was shying away from showing my work. Apparently I will start uploading on the
>>>>     >     branch by evening 6PM IST(Indian Standard Time)
>>>>     >
>>>>     >
>>>>     >
>>>>     >     On Tue, Apr 1, 2014 at 2:27 AM, Jean-Samuel Reynaud <js.reynaud@xxxxxxxxx
>>>>     <mailto:js.reynaud@xxxxxxxxx>
>>>>     >     <mailto:js.reynaud@xxxxxxxxx <mailto:js.reynaud@xxxxxxxxx>>> wrote:
>>>>     >
>>>>     >         Ok I'm starting to work to meet window 1).
>>>>     >
>>>>     >
>>>>     >         2014-03-31 17:01 GMT+02:00 Dick Hollenbeck <dick@xxxxxxxxxxx
>>>>     <mailto:dick@xxxxxxxxxxx>
>>>>     >         <mailto:dick@xxxxxxxxxxx <mailto:dick@xxxxxxxxxxx>>>:
>>>>     >
>>>>     >             On 03/24/2014 10:19 AM, Jean-Samuel Reynaud wrote:
>>>>     >             > Hi,
>>>>     >             >
>>>>     >             > I can help too on this project. Tell me if you need more help.
>>>>     >
>>>>     >
>>>>     >
>>>>     >             https://code.launchpad.net/~kicad-developers/kicad/prj-mgr
>>>>     >
>>>>     >             is still empty, so therefore I need help.
>>>>     >
>>>>     >
>>>>     >             There are two windows of opportunity here, with a middle section where the
>>>>     >             window is not open:
>>>>     >
>>>>     >
>>>>     >             1) Now, before I get to milestone C)
>>>>     >
>>>>     >
>>>>     >             2) Me doing milestone C), where collisions of effort are so likely its most
>>>>     >             sensible to
>>>>     >             consider python contributions in this time un-helpful.  Plus I don't
>>>>     know what
>>>>     >             I'll have
>>>>     >             to work with at this point.  And I won't be waiting for it.
>>>>     >
>>>>     >
>>>>     >             3) After the C++ layer and framework are in place, then collisions of effort
>>>>     >             will not
>>>>     >             concern me, the python project manager can and should be expanded into a
>>>>     number of
>>>>     >             directions, and I don't expect to play a role in that.
>>>>     >
>>>>     >
>>>>     >             I want to be clear about these two windows of opportunity, 1) & 3), and the
>>>>     >             approximate
>>>>     >             timing, at least the sequencing.
>>>>     >
>>>>     >             The contributions that I would value most are in the window described by 1).
>>>>     >
>>>>     >
>>>>     >
>>>>     >
>>>>     >         _______________________________________________
>>>>     >         Mailing list: https://launchpad.net/~kicad-developers
>>>>     >         Post to    : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>>>     >         <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>>>>     >         Unsubscribe: https://launchpad.net/~kicad-developers
>>>>     >         More help  : https://help.launchpad.net/ListHelp
>>>>     >
>>>>     >
>>>>     >
>>>>     >
>>>>     >
>>>>     >
>>>>     >
>>>>     >
>>>>     > --
>>>>     > Dileep Kumar
>>>>     > M.Tech(VLSI Design)
>>>>     > Mob:9891455965
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp

Attachment: project_option1.png
Description: PNG image

Attachment: project_option2.png
Description: PNG image

Attachment: welcome.png
Description: PNG image


Follow ups

References