mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-01 15:41:39 +00:00
114 lines
3.2 KiB
C++
114 lines
3.2 KiB
C++
/* Copyright (C) 2021 Free Software Foundation, Inc.
|
|
Contributed by Oracle.
|
|
|
|
This file is part of GNU Binutils.
|
|
|
|
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
|
|
the Free Software Foundation; either version 3, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
|
MA 02110-1301, USA. */
|
|
|
|
#include "config.h"
|
|
#include <stdio.h>
|
|
|
|
#include "PreviewExp.h"
|
|
#include "Data_window.h"
|
|
#include "DbeSession.h"
|
|
#include "Emsg.h"
|
|
#include "Print.h"
|
|
#include "i18n.h"
|
|
|
|
PreviewExp::PreviewExp (): Experiment () { }
|
|
|
|
PreviewExp::~PreviewExp () { }//~PreviewExp
|
|
|
|
Experiment::Exp_status
|
|
PreviewExp::experiment_open (char *path)
|
|
{
|
|
// Find experiment directory
|
|
if ((status = find_expdir (path)) != SUCCESS)
|
|
{
|
|
size_t len = strlen (path);
|
|
is_group = ((len > 4) && !strcmp (&path[len - 4], NTXT (".erg")));
|
|
return status;
|
|
}
|
|
else
|
|
is_group = 0;
|
|
|
|
read_log_file ();
|
|
if (status == FAILURE)
|
|
return status;
|
|
|
|
if (status == INCOMPLETE && resume_ts != MAX_TIME)
|
|
// experiment is incomplete and "resumed" (non-paused)
|
|
// PreviewExp does not process all the packets, therefore...
|
|
// ... last_event does not reflect reality
|
|
// ... we don't know the duration or the end.
|
|
last_event = ZERO_TIME; // mark last_event as uninitialized
|
|
|
|
read_notes_file ();
|
|
return status;
|
|
}
|
|
|
|
Vector<char*> *
|
|
PreviewExp::preview_info ()
|
|
{
|
|
Vector<char*> *info = new Vector<char*>;
|
|
if (is_group)
|
|
info->append (GTXT ("Experiment Group"));
|
|
else
|
|
info->append (GTXT ("Experiment"));
|
|
info->append (expt_name);
|
|
|
|
if (status == FAILURE /* != SUCCESS */)
|
|
{
|
|
if (is_group)
|
|
{
|
|
Vector<char*> *grp_list = dbeSession->get_group_or_expt (expt_name);
|
|
for (int i = 0, grp_sz = grp_list->size (); i < grp_sz; i++)
|
|
{
|
|
char *nm = grp_list->fetch (i);
|
|
char *str = dbe_sprintf (GTXT ("Exp.#%d"), i + 1);
|
|
info->append (str);
|
|
info->append (nm);
|
|
}
|
|
delete grp_list;
|
|
}
|
|
else
|
|
{
|
|
info->append (GTXT ("Error message"));
|
|
info->append (mqueue_str (errorq, GTXT ("No errors\n")));
|
|
}
|
|
return info;
|
|
}
|
|
info->append (GTXT ("Experiment header"));
|
|
info->append (mqueue_str (commentq, GTXT ("Empty header\n")));
|
|
info->append (GTXT ("Error message"));
|
|
info->append (mqueue_str (errorq, GTXT ("No errors\n")));
|
|
info->append (GTXT ("Warning message"));
|
|
info->append (mqueue_str (warnq, GTXT ("No warnings\n")));
|
|
info->append (GTXT ("Notes"));
|
|
info->append (mqueue_str (notesq, GTXT ("\n")));
|
|
return info;
|
|
}
|
|
|
|
char *
|
|
PreviewExp::mqueue_str (Emsgqueue *msgqueue, char *null_str)
|
|
{
|
|
char *mesgs = pr_mesgs (msgqueue->fetch (), null_str, "");
|
|
char *last = mesgs + strlen (mesgs) - 1;
|
|
if (*last == '\n')
|
|
*last = '\0';
|
|
return mesgs;
|
|
}
|