Hello,

short story:
in yast2-printer I use a DialogTree and in one of its tabs
(which is not its initial tab) I like to stay in the tab
after the user clicked Next when an error happened
while writing the settings to the system so that the user
can change the settings in the tab until it works
or he can click [Cancel] to enforce leaving the dialog.

Details:
in yast2-printer I have in src/dialogs.ycp
--------------------------------------------------------------------------
  widgets_handling =
  ...
  "NETWORKPRINTING" : $[ "widget" : `custom,
                         "custom_widget" : widgetNetworkPrinting,
                         "init" : initNetworkPrinting,
                         "handle" : handleNetworkPrinting,
                         "help" : HELPS["printing_via_network_dialog"]:""
                       ],
.
.
.
  tabs_description =
  ...
         "network" : $[ "header" : _("Print via Network"),
                        "tree_item_label" : _("Print via Network"),
                        "caption" : _("Print via Network"),
                        "contents" : `VBox( "NETWORKPRINTING" ),
                        "widget_names" : ["NETWORKPRINTING"]
                      ],
.
.
.
  DialogTree::ShowAndRun
  ( $[ "ids_order" : [ "overview", "network", ... ],
       "initial_screen" : "overview",
--------------------------------------------------------------------------

I like to stay in the "NETWORKPRINTING" tab when writing its
settings fails.

In src/printingvianetwork.ycp I have currently in
the handleNetworkPrinting() function:
----------------------------------------------------------------------------
  if( `next == event["ID"]:nil )
  { if( ! ApplyNetworkPrintingSettings() )
    { Popup::Error( // Popup::Error message:
                    _("Failed to apply the settings to the system.")
                  );
      // In case of an error stay on the "Print via Network" dialog
      // so that the user can either change his settings until it works
      // or he can use the [Cancel] button to return to the Overview dialog:
      return nil;
    }
----------------------------------------------------------------------------
but this does not work.

Instead the whole YaST module is exiting with `next regardless
that I explicitely "return nil" and in y2log there is:
------------------------------------------------------------------------------
2009-11-06 11:06:28 <1> nelson(6379) [liby2] Y2ProgramComponent.cc(result):159
 Sending result: `result (nil)
2009-11-06 11:06:28 <1> nelson(6379) [liby2] genericfrontend.cc(main):777
 Finished YaST2 component 'y2base'
2009-11-06 11:06:28 <1> nelson(6379) [liby2] genericfrontend.cc(main):782
 Exiting with client return value '`next'
------------------------------------------------------------------------------


Kind Regards
Johannes Meixner
--
SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
AG Nuernberg, HRB 16746, GF: Markus Rex
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to