home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / modules / NetworkPopup.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  166 lines

  1. /**
  2.  * File:
  3.  *   NetworkPopup.ycp
  4.  *
  5.  * Summary:
  6.  *   Popup dialogs for browsing the local network
  7.  *
  8.  * Authors:
  9.  *    Martin Vidner <mvidner@suse.cz>
  10.  *    Ladislav Slezak <lslezak@suse.cz>
  11.  *
  12.  * $Id: NetworkPopup.ycp 33492 2006-10-18 12:02:47Z kmachalkova $
  13.  *
  14.  * Network browsing dialogs - all hosts, NFS servers, exports of the NFS server
  15.  *
  16.  */
  17.  
  18. {
  19.     module "NetworkPopup";
  20.  
  21.     textdomain "base";
  22.  
  23.     import "Label";
  24.     import "NetworkDevices";
  25.  
  26.     // cache all found hosts on the local network
  27.     list<string> found_hosts = nil;
  28.  
  29.     // cache all found NFS servers on the local network
  30.     list<string> found_nfs_servers = nil;
  31.  
  32.     /**
  33.      * Let the user choose one of a list of items
  34.      * @param title    selectionbox title
  35.      * @param items    a list of items
  36.      * @param selected    preselected a value in the list
  37.      * @return        one item or nil
  38.      */
  39.     global define string ChooseItem (string title, list<string> items, string selected) ``{
  40.     string item = nil;
  41.  
  42.     list Items = maplist(string i, items,  ``{
  43.         string device_name = NetworkDevices::GetValue(i, "NAME");
  44.         if (size(device_name) > 30) {
  45.             device_name = substring (device_name, 0, 27) + "...";
  46.         }
  47.         // translators: table item, informing that IP address is assigned via DHCP
  48.         return `item(`id(i),  NetworkDevices::GetDeviceType(i), device_name, (NetworkDevices::GetValue(i, "BOOTPROTO") == "dhcp" ?
  49.               _("DHCP address"): NetworkDevices::GetValue(i, "IPADDR")), i);
  50.         }
  51.     );
  52.  
  53.     UI::OpenDialog (
  54.         `VBox (
  55.         `HSpacing (60),
  56.         `HBox (
  57.             // translators: table header - details about the network device
  58.             `Table(`id(`items), `header(_("Device Type"),_("Device Name"),_("IP Address"),_("Device ID")), Items),
  59.             `VSpacing(10)
  60.             ),
  61.         `HBox (
  62.             `PushButton (`id(`ok), `opt(`default, `key_F10),
  63.                  Label::OKButton()),
  64.             `PushButton (`id(`cancel), `opt(`key_F9),
  65.                  Label::CancelButton())
  66.             )
  67.         ));
  68.     UI::ChangeWidget(`id(`items), `CurrentItem, selected);
  69.     UI::SetFocus (`id (`items));
  70.     symbol ret = nil;
  71.     do
  72.     {
  73.         ret = (symbol)UI::UserInput();
  74.     }
  75.     while (ret != `cancel && ret != `ok);
  76.  
  77.     if (ret == `ok)
  78.     {
  79.         item = (string)UI::QueryWidget (`id (`items), `CurrentItem);
  80.     }
  81.     UI::CloseDialog();
  82.  
  83.     return item;
  84.     }
  85.  
  86.     /**
  87.      * Give me NFS server name on the local network
  88.      *
  89.      * display dialog with all local NFS servers
  90.      * @param selected    preselected a value in the list
  91.      * @return        a hostname or nil if "Cancel" was pressed
  92.      */
  93.     global define string NFSServer(string selected) ``{
  94.  
  95.     if (found_nfs_servers == nil)
  96.     {
  97.         // label message
  98.         UI::OpenDialog(`Label(_("Scanning for hosts on this LAN...")));
  99.         found_nfs_servers = (list<string>)SCR::Read(.net.hostnames.rpc, "nfs");
  100.         UI::CloseDialog();
  101.  
  102.         if (found_nfs_servers == nil)
  103.         {
  104.         found_nfs_servers = [];
  105.         }
  106.         else
  107.         {
  108.         // sort list of servers
  109.         found_nfs_servers = sort(found_nfs_servers);
  110.         }
  111.     }
  112.  
  113.     // selection box label
  114.     string ret = ChooseItem(_("&NFS Servers"), found_nfs_servers, selected);
  115.     return ret;
  116.     }
  117.  
  118.     /**
  119.      * Give me one host name on the local network
  120.      *
  121.      * display dialog with all hosts on the local network
  122.      * @param selected    preselect a value in the list
  123.      * @return        a hostname or nil if "Cancel" was pressed
  124.      */
  125.     global define string HostName(string selected) ``{
  126.     if (found_hosts == nil)
  127.     {
  128.         // label message
  129.         UI::OpenDialog(`Label(_("Scanning for hosts on this LAN...")));
  130.         found_hosts = (list<string>)sort((list)SCR::Read(.net.hostnames));
  131.         UI::CloseDialog();
  132.  
  133.         if (found_hosts == nil)
  134.         {
  135.         found_hosts = [];
  136.         }
  137.     }
  138.  
  139.     // selection box label
  140.     string ret = ChooseItem(_("Re&mote Hosts"), found_hosts, selected);
  141.     return ret;
  142.     }
  143.  
  144.     /**
  145.      * Give me export path of selected server
  146.      *
  147.      * display dialog with all exported directories from the selected server
  148.      * @param server    a NFS server name
  149.      * @param selected    preselected a value in the list
  150.      * @return        an export or nil if "Cancel" was pressed
  151.      */
  152.     global define string NFSExport(string server, string selected) ``{
  153.     list<string> dirs = (list<string>)SCR::Read(.net.showexports, server);
  154.  
  155.     if (dirs == nil)
  156.     {
  157.         dirs = [];
  158.     }
  159.  
  160.     // selection box label
  161.     string ret = ChooseItem(_("&Exported Directories"), dirs, selected);
  162.     return ret;
  163.     }
  164.  
  165. }
  166.