← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH/RFC] Pcbnew initial startup user experience

 

On 3/4/2017 6:01 PM, John Beard wrote:
> Hi,
> 
> Here is a (proposed) patchset to modify the "user experience" (to use
> a buzzword) of Pcbnew and cvPcb when the user loads it for the first
> time with no fp-library-table.
> 
> The current behaviour is quite unfriendly, as it doesn't get the user
> to consent to an action when initialising the library, it does one of
> two actions (cpopy default table, or create empty table - which one
> depends on various conditions) which means that users click the OK
> button not fully knowing what just happened.
> 
> Furthermore, if they click though that dialog without reading it, they
> will then be frustrated by the lack of libraries later, which
> manifests as an error or an empty footprint chooser. Bear in mind, as
> far as users are concerned, the libraries are installed (e.g.
> /usr/share/kicad has content), but as far as KiCad is concerned, they
> are not necessarily configured (empty or default fp-lib-table in
> user's home).

It is perfectly acceptable to have an empty global library table and
always use the project library table for defining footprint libraries so
this check would be annoying to users who prefer this.

> 
> This has caused several people to struggle with getting started with
> KiCad, and people asking how to proceed is a semi-regular occurence on
> IRC.
> 
> This patch changes to the following process:
> 
> * If user fp-lib-table is found and it has at least one library,
> everything is normal
>   and the user isn't disturbed.
> * If fp-lib-table is missing:
>     * On Pcbnew/Cvpcb start, pop up a dialog saying this and giving
> these options:
>         * Quit - exit Pcbnew/cvPcb witohut attempting to create
> fp-lib-table. Users can then make their own arrangements.
>         * Copy default table - attempt to copy the default table. If
> this fails, return to the choice dialog.
>         * Create empty table - if this fails return to the dialog.
>     * In no case did the user get an fp-lib-table they didn't ask for.
>     * If a blank or default table is created, a second dialog appears,
> informing the user that the library table might need configuration.
> This provides three options:
>         * Cancel - user doesn't want to configure the table now, table
> is unchanged
>         * Open Manual - the manual referenced in the dialog message is
> opened so the user can read about library configuration
>         * Open FP Library Manager - go directly to the library
> manager, rather than expecting the user to cancel the dialog and find
> it themselves. The wizard is accessible from the manager dialog.
> * If fp-lib-table is found, but it's empty when the user goes to use
> it (e.g. on a keyword search for footprints), the
> Cancel/Manual/Manager dialog is shown again, but it's a warning rather
> than informational, as it was before.

Rather than go through all of this, why not just use a single wizard to
step the user all of the way through the configuration.  The first page
of the wizard should have a list of valid footprint table configuration
choices followed by appropriate wizard pages.  I can see five plausible
global fp-lib-table config options.

* Copy the default global footprint library table. (disabled if the
default global footprint table cannot be found)

* Copy a custom global footprint library table.

* I know what I'm doing and will configure my own footprint library table.

* Use the footprint library table wizard to help me create a custom
global footprint library table.

* I prefer to use project specific library tables, create an empty
global footprint library table.

> 
> The aim here is to ensure that the configuration is "management by
> consent" and that the user is:
> 
> * Not surprised by "secret" configuration behind the scenes
> * Informed of and consenting to specific actions
> * Guided though configuration with dialogs that give access to
> mentioned tools, rather than a block of text and an OK/Cancel button,
> after which they are on their own.
> 
> Technically speaking, this is done by moving the global fp-lib-table
> loading into common, and invoking it only when the frame is shown
> (rather than prior to the kiface load). The reason for this is so that
> the followup dialog can access the manager. Also, it reduces special
> casing before kiface load.
> 
> The on-show invocation is done by a small class subscribed to the
> frame's wx "Show" event, and once the event is received, the class
> unsubscribes itself (so it's a one-shot), and executes a lits of
> startup actions. The class is such that you can add multiple startup
> actions, any of which can "veto" startup if needed.
> 
> Sorry for the long email: the change is not really that complex, but
> the configuration process has several paths. As the first thing a new
> user to Pcbnew sees, I think this is a fairly important thing to get
> right.
> 
> Cheers,
> 
> John
> 
> 
> 
> _______________________________________________
> 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
> 



Follow ups

References