X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fmessage-item.c;h=e834d5a7b2d10626f150f5f944a3647176e395f4;hb=26bad54c73bdb354262a2434de93e632a286b0d3;hp=a44784fe2eac99b7b8291290366682fdcc83367e;hpb=f4bd801640ccaf1d41f45e0206e01e71d3e18604;p=pspp diff --git a/src/output/message-item.c b/src/output/message-item.c index a44784fe2e..e834d5a7b2 100644 --- a/src/output/message-item.c +++ b/src/output/message-item.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2010 Free Sonftware Foundation, Inc. + Copyright (C) 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,22 +20,25 @@ #include +#include "libpspp/i18n.h" #include "libpspp/message.h" #include "output/driver.h" #include "output/output-item-provider.h" +#include "output/text-item.h" #include "gl/xalloc.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + struct message_item * message_item_create (const struct msg *msg) { - struct message_item *item; - - item = xmalloc (sizeof *msg); - output_item_init (&item->output_item, &message_item_class); - item->msg = msg_dup (msg); - item->command_name = NULL; - + struct message_item *item = xmalloc (sizeof *msg); + *item = (struct message_item) { + .output_item = OUTPUT_ITEM_INITIALIZER (&message_item_class), + .msg = msg_dup (msg) + }; return item; } @@ -45,12 +48,31 @@ message_item_get_msg (const struct message_item *item) return item->msg; } +struct text_item * +message_item_to_text_item (struct message_item *message_item) +{ + struct text_item *text_item = text_item_create_nocopy ( + TEXT_ITEM_LOG, + msg_to_string (message_item_get_msg (message_item)), + xstrdup (output_item_get_label (message_item_super (message_item)))); + message_item_unref (message_item); + return text_item; +} + +static const char * +message_item_get_label (const struct output_item *output_item) +{ + const struct message_item *item = to_message_item (output_item); + return (item->msg->severity == MSG_S_ERROR ? _("Error") + : item->msg->severity == MSG_S_WARNING ? _("Warning") + : _("Note")); +} + static void message_item_destroy (struct output_item *output_item) { struct message_item *item = to_message_item (output_item); msg_destroy (item->msg); - free (item->command_name); free (item); } @@ -64,5 +86,6 @@ message_item_submit (struct message_item *item) const struct output_item_class message_item_class = { + message_item_get_label, message_item_destroy, };