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 / Report.ycp < prev    next >
Text File  |  2006-11-29  |  19KB  |  693 lines

  1. /**
  2.  * File:    modules/Report.ycp
  3.  * Package:    yast2
  4.  * Summary:    Messages handling
  5.  * Authors:    Ladislav Slezak <lslezak@suse.cz>
  6.  * Flags:    Stable
  7.  *
  8.  * $Id: Report.ycp 31242 2006-06-01 12:59:16Z locilka $
  9.  *
  10.  * Report module collects warnings and errors from modules in auto installation mode.
  11.  * Collected messages can be displayed later.
  12.  *
  13.  */
  14.  
  15. {
  16.  
  17. module "Report";
  18. textdomain "base";
  19.  
  20. import "Popup";
  21. import "Summary";
  22.  
  23. // stored messages
  24. list<string> errors = [];
  25. list<string> warnings = [];
  26. list<string> messages = [];
  27. list<string> yesno_messages = [];
  28.  
  29. // display flags
  30. boolean display_errors = true;
  31. boolean display_warnings = true;
  32. boolean display_messages = true;
  33. boolean display_yesno_messages = true;
  34.  
  35. // timeouts
  36. integer timeout_errors = 0;
  37. integer timeout_warnings = 0;
  38. integer timeout_messages = 0;
  39. integer timeout_yesno_messages = 0;
  40.  
  41. // logging flags
  42. boolean log_errors = true;
  43. boolean log_warnings = true;
  44. boolean log_messages = true;
  45. boolean log_yesno_messages = true;
  46.  
  47.  
  48. global map message_settings = $[];
  49. global map error_settings = $[];
  50. global map warning_settings = $[];
  51. global map yesno_message_settings = $[];
  52.  
  53. /* default value of settings modified */
  54. global boolean modified = false;
  55.  
  56. /**
  57.  * Function sets internal variable, which indicates, that any
  58.  * settings were modified, to "true"
  59.  */
  60. global define void SetModified () {
  61.     modified = true;
  62. }
  63.  
  64. /**
  65.  * Functions which returns if the settings were modified
  66.  * @return boolean  settings were modified
  67.  */
  68. global define boolean GetModified () {
  69.     return modified;
  70. }
  71.  
  72.  
  73.  
  74.  
  75. /**
  76.  * Summary of current settings
  77.  * @return Html formatted configuration summary
  78.  */
  79. global define string Summary() ``{
  80.     string summary = "";
  81.     // translators: summary header for messages generated through autoinstallation
  82.     summary = Summary::AddHeader(summary, _("Messages"));
  83.     summary = Summary::OpenList(summary);
  84.  
  85.     // Report configuration - will be normal messages displayed?
  86.     // '%1' will be replaced by translated string "Yes" or "No"
  87.     summary = Summary::AddListItem(summary, sformat(_("Display Messages: %1"), (display_messages) ?
  88.     // translators: summary if the messages should be displayed
  89.                             _("Yes") : _("No")));
  90.     // Report configuration - will have normal messages timeout?
  91.     // '%1' will be replaced by number of seconds
  92.     summary = Summary::AddListItem(summary, sformat(_("Time-out Messages: %1"), timeout_messages));
  93.     // Report configuration - will be normal messages logged to file?
  94.     // '%1' will be replaced by translated string "Yes" or "No"
  95.     summary = Summary::AddListItem(summary, sformat(_("Log Messages: %1"), (log_messages) ?
  96.     // translators: summary if the messages should be written to log file
  97.                             _("Yes") : _("No")));
  98.     summary = Summary::CloseList(summary);
  99.     // translators: summary header for warnings generated through autoinstallation
  100.     summary = Summary::AddHeader(summary, _("Warnings"));
  101.     summary = Summary::OpenList(summary);
  102.     // Report configuration - will be warning messages displayed?
  103.     // '%1' will be replaced by translated string "Yes" or "No"
  104.     summary = Summary::AddListItem(summary, sformat(_("Display Warnings: %1"), (display_warnings) ?
  105.     // translators: summary if the warnings should be displayed
  106.                             _("Yes") : _("No")));
  107.     // Report configuration - will have warning messages timeout?
  108.     // '%1' will be replaced by number of seconds
  109.     summary = Summary::AddListItem(summary, sformat(_("Time-out Warnings: %1"), timeout_warnings));
  110.     // Report configuration - will be warning messages logged to file?
  111.     // '%1' will be replaced by translated string "Yes" or "No"
  112.     summary = Summary::AddListItem(summary, sformat(_("Log Warnings: %1"), (log_warnings) ?
  113.     // translators: summary if the warnings should be written to log file
  114.                             _("Yes") : _("No")));
  115.     summary = Summary::CloseList(summary);
  116.     // translators: summary header for errors generated through autoinstallation
  117.     summary = Summary::AddHeader(summary, _("Errors"));
  118.     summary = Summary::OpenList(summary);
  119.     // Report configuration - will be error messages displayed?
  120.     // '%1' will be replaced by translated string "Yes" or "No"
  121.     summary = Summary::AddListItem(summary, sformat(_("Display Errors: %1"), (display_errors) ?
  122.     // translators: summary if the errors should be displayed
  123.                             _("Yes") : _("No")));
  124.     // Report configuration - will have error messages timeout?
  125.     // '%1' will be replaced by number of seconds
  126.     summary = Summary::AddListItem(summary, sformat(_("Time-out Errors: %1"), timeout_errors));
  127.     // Report configuration - will be error messages logged to file?
  128.     // '%1' will be replaced by translated string "Yes" or "No"
  129.     summary = Summary::AddListItem(summary, sformat(_("Log Errors: %1"), (log_errors) ?
  130.     // translators: summary if the errors should be written to log file
  131.                             _("Yes") 
  132.     // translators: summary if the errors should be written to log file
  133.                             : _("No")));
  134.     summary = Summary::CloseList(summary);
  135.     /*
  136.     summary = Summary::AddHeader(summary, _("Yes or No Messages (Critical Messages)"));
  137.     summary = Summary::OpenList(summary);
  138.     // Report configuration - will be error messages displayed?
  139.     // '%1' will be replaced by translated string "Yes" or "No"
  140.     summary = Summary::AddListItem(summary, sformat(_("Display Yes or No Messages: %1"), (display_yesno_messages) ?
  141.                             _("Yes") : _("No")));
  142.     // Report configuration - will have error messages timeout?
  143.     // '%1' will be replaced by number of seconds
  144.     summary = Summary::AddListItem(summary, sformat(_("Time-out Yes or No Messages: %1"), timeout_yesno_messages));
  145.     // Report configuration - will be error messages logged to file?
  146.     // '%1' will be replaced by translated string "Yes" or "No"
  147.     summary = Summary::AddListItem(summary, sformat(_("Log Yes or No Messages: %1"), (log_yesno_messages) ?
  148.                             _("Yes") : _("No")));
  149.     summary = Summary::CloseList(summary);
  150.     */
  151.     return summary;
  152. }
  153.  
  154.  
  155.  
  156. /**
  157.  * Get all the Report configuration from a map.
  158.  *
  159.  * the map may be empty.
  160.  *
  161.  * @param settings Map with settings (keys: "messages", "errors", "warnings"; values: map
  162.  * @return    success
  163.  */
  164. global define boolean Import(map settings) ``{
  165.     message_settings  = settings["messages"]:$[];
  166.     error_settings = settings["errors"]:$[];
  167.     warning_settings = settings["warnings"]:$[];
  168.     yesno_message_settings = settings["yesno_messages"]:$[];
  169.  
  170.     // display flags
  171.     display_errors =  error_settings["show"]:true;
  172.     display_warnings = warning_settings["show"]:true;
  173.     display_messages = message_settings["show"]:true;
  174.     display_yesno_messages = yesno_message_settings["show"]:true;
  175.  
  176.     // timeouts
  177.     timeout_errors = error_settings ["timeout"]:0;
  178.     timeout_warnings = warning_settings["timeout"]:0;
  179.     timeout_messages = message_settings["timeout"]:0;
  180.     timeout_yesno_messages = yesno_message_settings["timeout"]:0;
  181.  
  182.     // logging flags
  183.     log_errors = error_settings["log"]:true;
  184.     log_warnings = warning_settings ["log"]:true;
  185.     log_messages = message_settings["log"]:true;
  186.     log_yesno_messages = yesno_message_settings["log"]:true;
  187.  
  188.     return true;
  189. }
  190.  
  191.  
  192. /**
  193.  * Dump the Report settings to a map, for autoinstallation use.
  194.  * @return map Map with settings
  195.  */
  196. global define map Export () ``{
  197.  
  198.     return ($[
  199.           "messages": $["log": log_messages, "timeout": timeout_messages, "show": display_messages ],
  200.           "errors": $["log": log_errors, "timeout": timeout_errors, "show": display_errors ],
  201.           "warnings": $["log": log_warnings, "timeout": timeout_warnings, "show": display_warnings ],
  202.           "yesno_messages": $["log": log_yesno_messages, "timeout": timeout_yesno_messages, "show": display_yesno_messages ]
  203.     ]);
  204. }
  205. /**
  206.  * Clear stored yes/no messages
  207.  * @return void
  208.  */
  209. global define void ClearYesNoMessages() ``{
  210.     yesno_messages = [];
  211. }
  212.  
  213. /**
  214.  * Clear stored messages
  215.  * @return void
  216.  */
  217. global define void ClearMessages() ``{
  218.     messages = [];
  219. }
  220.  
  221. /**
  222.  * Clear stored errors
  223.  * @return void
  224.  */
  225. global define void ClearErrors() ``{
  226.     errors = [];
  227. }
  228.  
  229.  
  230. /**
  231.  * Clear stored warnings
  232.  * @return void
  233.  */
  234. global define void ClearWarnings() ``{
  235.     warnings = [];
  236. }
  237.  
  238.  
  239. /**
  240.  * Clear all stored messages (errors, messages and warnings)
  241.  * @return void
  242.  */
  243. global define void ClearAll() ``{
  244.     ClearErrors();
  245.     ClearWarnings();
  246.     ClearMessages();
  247.     ClearYesNoMessages();
  248. }
  249.  
  250. /**
  251.  * Return number of stored yes/no messages
  252.  * @return integer number of messages
  253.  */
  254. global define integer NumYesNoMessages() ``{
  255.     return size(yesno_messages);
  256. }
  257.  
  258. /**
  259.  * Return number of stored messages
  260.  * @return integer number of messages
  261.  */
  262. global define integer NumMessages() ``{
  263.     return size(messages);
  264. }
  265.  
  266. /**
  267.  * Return number of stored warnings
  268.  * @return integer number of warnings
  269.  */
  270. global define integer NumWarnings() ``{
  271.     return size(warnings);
  272. }
  273.  
  274.  
  275. /**
  276.  * Return number of stored errors
  277.  * @return integer number of errors
  278.  */
  279. global define integer NumErrors() ``{
  280.     return size(errors);
  281. }
  282.  
  283. /**
  284.  * Question with headline and Yes/No Buttons
  285.  * @param headline Popup Headline
  286.  * @param message Popup Message
  287.  * @param yes_button_message Yes Button Message
  288.  * @param no_button_message No Button Message
  289.  * @param focus Which Button has the focus
  290.  * @return boolean True if Yes is pressed, otherwise false
  291.  */
  292. global define boolean AnyQuestion( string headline,
  293.                        string message,
  294.                        string yes_button_message,
  295.                        string no_button_message,
  296.                        symbol focus )    ``{
  297.     boolean ret = false;
  298.     if (display_yesno_messages)
  299.     {
  300.     if (timeout_yesno_messages > 0)
  301.     {
  302.             ret = Popup::TimedAnyQuestion(
  303.                     headline,
  304.                     message,
  305.                     yes_button_message,
  306.                     no_button_message,
  307.                     focus,
  308.                     timeout_yesno_messages);
  309.     }
  310.     else
  311.     {
  312.             ret = Popup::AnyQuestion(
  313.                     headline,
  314.                     message,
  315.                     yes_button_message,
  316.                     no_button_message,
  317.                     focus );
  318.  
  319.     }
  320.     }
  321.  
  322.     if (log_yesno_messages)
  323.     {
  324.     y2milestone(1, "%1", message);
  325.     }
  326.  
  327.     yesno_messages = add(yesno_messages, message);
  328.     return ret;
  329. }
  330.  
  331. /**
  332.  * Store new message text
  333.  * @param message_string message text, it can contain new line characters ("\n")
  334.  * @return void
  335.  */
  336. global define void Message(string message_string) ``{
  337.     if (display_messages)
  338.     {
  339.     if (timeout_messages > 0)
  340.     {
  341.         Popup::TimedMessage(message_string, timeout_messages);
  342.     }
  343.     else
  344.     {
  345.         Popup::Message(message_string);
  346.     }
  347.     }
  348.  
  349.     if (log_messages)
  350.     {
  351.     y2milestone(1, "%1", message_string);
  352.     }
  353.  
  354.     messages = add(messages, message_string);
  355. }
  356.  
  357. /**
  358.  * Store new message text, the text is displayed in a richtext widget - long lines are automatically wrapped
  359.  * @param message_string message text (it can contain rich text tags)
  360.  * @return void
  361.  */
  362. global define void LongMessage(string message_string) ``{
  363.     if (display_messages)
  364.     {
  365.     if (timeout_messages > 0)
  366.     {
  367.         Popup::TimedLongMessage(message_string, timeout_messages);
  368.     }
  369.     else
  370.     {
  371.         Popup::LongMessage(message_string);
  372.     }
  373.     }
  374.  
  375.     if (log_messages)
  376.     {
  377.     y2milestone(1, "%1", message_string);
  378.     }
  379.  
  380.     messages = add(messages, message_string);
  381. }
  382.  
  383. /**
  384.  * Store new message text
  385.  * @param headline_string Headline String
  386.  * @param message_string message text, it can contain new line characters ("\n")
  387.  * @return void
  388.  */
  389. global define void ShowText(string headline_string, string message_string) ``{
  390.     if (display_errors)
  391.     {
  392.     if (timeout_errors > 0)
  393.     {
  394.         Popup::ShowTextTimed(headline_string, message_string,
  395.                     timeout_errors);
  396.     }
  397.     else
  398.     {
  399.         Popup::ShowText(headline_string, message_string);
  400.     }
  401.     }
  402.  
  403.     if (log_messages)
  404.     {
  405.     y2milestone(1, "%1", message_string);
  406.     }
  407.  
  408.     messages = add(messages, message_string);
  409. }
  410.  
  411. /**
  412.  * Store new warning text
  413.  * @param warning_string warning text, it can contain new line characters ("\n")
  414.  * @return void
  415.  */
  416. global define void Warning(string warning_string) ``{
  417.     if (display_warnings)
  418.     {
  419.     if (timeout_warnings > 0)
  420.     {
  421.         Popup::TimedWarning(warning_string, timeout_warnings);
  422.     }
  423.     else
  424.     {
  425.         Popup::Warning(warning_string);
  426.     }
  427.     }
  428.  
  429.     if (log_warnings)
  430.     {
  431.     y2warning(1, "%1", warning_string);
  432.     }
  433.  
  434.     warnings = add(warnings, warning_string);
  435. }
  436.  
  437. /**
  438.  * Store new warning text, the text is displayed in a richtext widget - long lines are automatically wrapped
  439.  * @param warning_string warning text (it can contain rich text tags)
  440.  * @return void
  441.  */
  442. global define void LongWarning(string warning_string) ``{
  443.     if (display_warnings)
  444.     {
  445.     if (timeout_warnings > 0)
  446.     {
  447.         Popup::TimedLongWarning(warning_string, timeout_warnings);
  448.     }
  449.     else
  450.     {
  451.         Popup::LongWarning(warning_string);
  452.     }
  453.     }
  454.  
  455.     if (log_warnings)
  456.     {
  457.     y2warning(1, "%1", warning_string);
  458.     }
  459.  
  460.     warnings = add(warnings, warning_string);
  461. }
  462.  
  463.  
  464. /**
  465.  * Store new error text
  466.  * @param error_string error text, it can contain new line characters ("\n")
  467.  * @return void
  468.  */
  469. global define void Error(string error_string) ``{
  470.     if (display_errors)
  471.     {
  472.     if (timeout_errors > 0)
  473.     {
  474.         Popup::TimedError(error_string, timeout_errors);
  475.     }
  476.     else
  477.     {
  478.         Popup::Error(error_string);
  479.     }
  480.     }
  481.  
  482.     if (log_errors)
  483.     {
  484.     y2error(1, "%1", error_string);
  485.     }
  486.  
  487.     errors = add(errors, error_string);
  488. }
  489.  
  490. /**
  491.  * Store new error text, the text is displayed in a richtext widget - long lines are automatically wrapped
  492.  * @param error_string error text  (it can contain rich text tags)
  493.  * @return void
  494.  */
  495. global define void LongError(string error_string) ``{
  496.     if (display_errors)
  497.     {
  498.     if (timeout_errors > 0)
  499.     {
  500.         Popup::TimedLongError(error_string, timeout_errors);
  501.     }
  502.     else
  503.     {
  504.         Popup::LongError(error_string);
  505.     }
  506.     }
  507.  
  508.     if (log_errors)
  509.     {
  510.     y2error(1, "%1", error_string);
  511.     }
  512.  
  513.     errors = add(errors, error_string);
  514. }
  515.  
  516.  
  517. /**
  518.  * Error popup dialog can displayed immediately when new error is stored.
  519.  *
  520.  * This function enables or diables popuping of dialogs.
  521.  *
  522.  * @param display if true then display error popups immediately
  523.  * @param timeout dialog is automatically closed after timeout seconds. Value 0 means no time out, dialog will be closed only by user.
  524.  * @return void
  525.  */
  526. global define void DisplayErrors(boolean display, integer timeout) ``{
  527.     display_errors = display;
  528.     timeout_errors = timeout;
  529.     return;
  530. }
  531.  
  532.  
  533. /**
  534.  * Warning popup dialog can displayed immediately when new warningr is stored.
  535.  *
  536.  * This function enables or diables popuping of dialogs.
  537.  *
  538.  * @param display if true then display warning popups immediately
  539.  * @param timeout dialog is automatically closed after timeout seconds. Value 0 means no time out, dialog will be closed only by user.
  540.  * @return void
  541.  */
  542. global define void DisplayWarnings(boolean display, integer timeout) ``{
  543.     display_warnings = display;
  544.     timeout_warnings = timeout;
  545.     return;
  546. }
  547.  
  548.  
  549.  
  550. /**
  551.  * Message popup dialog can be displayed immediately when a new message  is stored.
  552.  *
  553.  * This function enables or diables popuping of dialogs.
  554.  *
  555.  * @param display if true then display message popups immediately
  556.  * @param timeout dialog is automatically closed after timeout seconds. Value 0 means no time out, dialog will be closed only by user.
  557.  * @return void
  558.  */
  559.  
  560. global define void DisplayMessages(boolean display, integer timeout) ``{
  561.     display_messages = display;
  562.     timeout_messages = timeout;
  563.     return;
  564. }
  565.  
  566. /**
  567.  * Yes/No Message popup dialog can be displayed immediately when a new message  is stored.
  568.  *
  569.  * This function enables or diables popuping of dialogs.
  570.  *
  571.  * @param display if true then display message popups immediately
  572.  * @param timeout dialog is automatically closed after timeout seconds. Value 0 means no time out, dialog will be closed only by user.
  573.  * @return void
  574.  */
  575.  
  576. global define void DisplayYesNoMessages(boolean display, integer timeout) ``{
  577.     display_yesno_messages = display;
  578.     timeout_yesno_messages = timeout;
  579.     return;
  580. }
  581.  
  582.  
  583. /**
  584.  * Set warnings logging to .y2log file
  585.  * @param log if log is true then warning messages will be logged
  586.  * @return void
  587.  */
  588. global define void LogWarnings(boolean log) ``{
  589.     log_warnings = log;
  590. }
  591.  
  592. /**
  593.  * Set yes/no messages logging to .y2log file
  594.  * @param log if log is true then  messages will be logged
  595.  * @return void
  596.  */
  597. global define void LogYesNoMessages(boolean log) ``{
  598.     log_yesno_messages = log;
  599. }
  600. /**
  601.  * Set messages logging to .y2log file
  602.  * @param log if log is true then  messages will be logged
  603.  * @return void
  604.  */
  605. global define void LogMessages(boolean log) ``{
  606.     log_messages = log;
  607. }
  608.  
  609. /**
  610.  * Set warnings logging to .y2log file
  611.  * @param log if log is true then warning messages will be logged
  612.  * @return void
  613.  */
  614. global define void LogErrors(boolean log) ``{
  615.     log_errors = log;
  616. }
  617.  
  618.  
  619. /**
  620.  * Create rich text string from stored warning, message or error messages.
  621.  *
  622.  * Every new line character "\n" is replaced by string "[BR]".
  623.  *
  624.  * @param w include warnings in returned string
  625.  * @param e include errors in returned string
  626.  * @param m include messages in returned string
  627.  * @param ynm include Yes/No messages in returned string
  628.  * @return string rich text string
  629.  */
  630. global define string GetMessages(boolean w, boolean e, boolean m , boolean ynm) ``{
  631.     string richtext = "";
  632.  
  633.     if (w)
  634.     {
  635.     // translators: warnings summary header
  636.     richtext = richtext + "<P><B>" + _("Warning:", "Warnings:", size(warnings) ) + "</B><BR>";
  637.  
  638.     foreach(string s, warnings, ``{
  639.         list<string> strs = splitstring(s, "\n");
  640.         foreach(string line, strs, ``{richtext = richtext + line + "<BR>";});
  641.         }
  642.     );
  643.  
  644.     richtext = richtext + "</P>";
  645.     }
  646.  
  647.     if (e)
  648.     {
  649.     // translators: errors summary header
  650.     richtext = richtext + "<P><B>" + _("Error:", "Errors:", size(errors)) + "</B><BR>";
  651.  
  652.     foreach(string s, errors, ``{
  653.         list<string> strs = splitstring(s, "\n");
  654.         foreach(string line, strs, ``{richtext = richtext + line + "<BR>";});
  655.         }
  656.     );
  657.  
  658.     richtext = richtext + "</P>";
  659.     }
  660.  
  661.     if (m)
  662.     {
  663.     // translators: message summary header
  664.     richtext = richtext + "<P><B>" + _("Message:", "Messages:", size(messages)) + "</B><BR>";
  665.  
  666.     foreach(string s, messages, ``{
  667.         list<string> strs = splitstring(s, "\n");
  668.         foreach(string line, strs, ``{richtext = richtext + line + "<BR>";});
  669.         }
  670.     );
  671.  
  672.     richtext = richtext + "</P>";
  673.     }
  674.  
  675.     if (ynm)
  676.     {
  677.     // translators: message summary header
  678.     richtext = richtext + "<P><B>" + _("Message:", "Messages:", size(yesno_messages)) + "</B><BR>";
  679.  
  680.     foreach(string s, yesno_messages, ``{
  681.         list<string> strs = splitstring(s, "\n");
  682.         foreach(string line, strs, ``{richtext = richtext + line + "<BR>";});
  683.         }
  684.     );
  685.  
  686.     richtext = richtext + "</P>";
  687.     }
  688.     return richtext;
  689. }
  690.  
  691. /* EOF */
  692. }
  693.