// $Source: /usr/local/SimSoft/Sfx3D/src/gts/gtsmdg.cpp,v $
// $Revision: 1.2 $
// $Author: baum $
// $Date: 2001/11/29 15:18:10 $
//
// Login name of the user who locked the revision
// $Locker:  $
// Tag name used to checkout the file
// $Name: Release-14 $
// State assigned to revision
// $State: Exp $
//
//
// $Log: gtsmdg.cpp,v $
// Revision 1.2  2001/11/29 15:18:10  baum
// -Realzeitsteuerung eingebaut
// -Handsteuerung eingebaut
//

/*** Windows headers ***/
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
//#include <winnt.h>
#endif /*WIN32*/

#include "gtsglob.h"
#include "gtsmdg.h"

typMeldung::typMeldung() : ObjSpeicherText (""), ObjInSpeicher (false)
{ } // typMeldung

void typMeldung::Ausgabe (char* meld)
{
  GTS_Meldungen (meld);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (Ustring meld)
{
  GTS_Meldungen (meld.str());
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, char* meld)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), meld);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, Ustring meld)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), meld.str());
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr)
{
  if (HoleMeldung (fnr)) GTS_Meldungen ((char*)ObjText.str());
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4, int p5)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4, p5);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4, int p5,
                                   int p6)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4, p5, p6);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4, int p5,
                                   int p6, int p7)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4, p5, p6, p7);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4, int p5,
                                   int p6, int p7, int p8)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4, p5, p6, p7, p8);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4, int p5,
                                   int p6, int p7, int p8, int p9)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4, p5, p6, p7, p8, p9);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe


void typMeldung::Ausgabe (int fnr, int p1, int p2, int p3, int p4, int p5,
                                   int p6, int p7, int p8, int p9, int p10)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
  GTS_Meldungen (ObjBuffer);
}  // ENDE Ausgabe

void typMeldung::setStatusZeile (const char *str, const bool save)
{
  char buf[255];
  if (save)
     sprintf (buf, "set StatusZeile1 \"%s\"; "
                   "set StatusZeile2 \"%s\"; "
                   "set StatusZeileMerken 1;", str, str);
  else
     sprintf (buf, "set StatusZeile1 \"%s\"; "
                   "set StatusZeileMerken 0;", str);

  Tcl_GlobalEval (GTSInterpreter, buf);
}  // ENDE setStatusZeile

void typMeldung::deleteStatusZeile (const int zeile)
{
  char buf[255];
  sprintf (buf, "deleteStatusZeile \" %d \"; ", zeile);
  Tcl_GlobalEval (GTSInterpreter, buf);
}  // ENDE deleteStatusZeile

void typMeldung::StatusZeile (Ustring meld, const bool save)
{
  setStatusZeile (meld.str(), save);
}  // ENDE StatusZeile

void typMeldung::StatusZeile (int fnr, Ustring meld, const bool save)
{
  if (!HoleMeldung (fnr)) return;
  sprintf (ObjBuffer, (char*)ObjText.str(), meld.str());
  setStatusZeile (ObjBuffer, save);
}  // ENDE StatusZeile

void typMeldung::StatusZeile (int fnr, const bool save)
{
  if (HoleMeldung (fnr)) setStatusZeile ((char*)ObjText.str(), save);
}  // ENDE StatusZeile

void typMeldung::setSpeicher (const Ustring str)
{
  ObjInSpeicher   = true;
  ObjSpeicherText = str;
}  // ENDE setSpeicher

void typMeldung::setSpeicher (const int fnr)
{
  if (HoleMeldung (fnr))
  {
    ObjInSpeicher   = true;
    ObjSpeicherText = ObjText;
  }
}  // ENDE setSpeicher

Ustring typMeldung::getSpeicher ()
{
  return ObjSpeicherText;
}  // ENDE getSpeicher

bool typMeldung::isSpeicher ()
{
  return ObjInSpeicher;
}  // ENDE  isSpeicher

void typMeldung::deleteSpeicher ()
{
  ObjInSpeicher   = false;
  ObjSpeicherText = "";
}  // ENDE deleteSpeicher

bool typMeldung::HoleMeldung (int fnr)
{
 switch (fnr)
 {
  case   1 : ObjText="Datei '%s' wird eingelesen\n";                                break;
  case   2 : ObjText="Fehler in TGB.BB: NULL-Vektor in Satz %d, Zeile %d\n";        break;
  case   3 : ObjText="Lesen der Modelldatei mit Fehler beendet !!!\n";              break;
  case   4 : ObjText="Typ %d und Typ %d kann nicht miteinander verknüpft werden\n"; break;
  case   5 : ObjText="Eine Senke besitzt keine Ausgänge\n";                         break;
  case   6 : ObjText="Eine Quelle besitzt keine Ausgänge\n";                        break;
  case   7 : ObjText="Das Modell wurde gespeichert\n";                              break;
  case   9 : ObjText="Baustein %d ist im Modell nicht vorhanden\n";                 break;
  case  10 : ObjText="Baustein (Typ: %d, Variante: %d) ist nicht vorhanden\n";      break;
  case  11 : ObjText="Transportroute von Bst. %d nach Bst. %d nicht vorhanden\n";   break;
  case  12 : ObjText="Baustein %d ist nicht in Transportroute %d integriert\n";     break;
  case  13 : ObjText="ACHTUNG: Das aktuelle Modell muß vorher gelöscht werden\n";   break;
  case  14 : ObjText="ACHTUNG: Die Modell >%s< besitzt keine Modell-Ini-Datei\n";   break;
  case  35 : ObjText="Verknüpfung von PoolBaustein %d:\n";                          break;
  case  36 : ObjText="Baustein %d, Typ %d kann nicht verknüpft werden\n";           break;
  case  40 : ObjText="Transportroute von Bst. %d -> Bst. %d wurde geloescht\n";     break;
  case  43 : ObjText="Baustein %d ist nicht verknüpft\n";                           break;
  case  49 : ObjText="Baustein %d ist bereits mit Baustein %d verknüpft\n";         break;
  case  50 : ObjText="Es sind keine Arbeitspläne vorhanden\n";                      break;
  case  80 : ObjText="Poolverwalter %d verwaltet keine Bausteine\n";                break;
  case  84 : ObjText="Baustein %d ist nicht vom Typ Verwalter\n";                   break;
  case  93 : ObjText="Prozessbeschreibung %d ist nicht vorhanden\n";                break;
  case  94 : ObjText="Prozessnummer %d ist bereits vorhanden\n";                    break;
  case  95 : ObjText="Default-Prozess %d für Arbeitsplan %d wurde erzeugt\n";       break;
  case  96 : ObjText="FEHLER: Default-Prozess %d konnte wurde nicht erzeugt\n";     break;
  case  99 : ObjText="Transportroute: von Bst. %d nach Pool %d nicht vorhanden\n";  break;
  case 100 : ObjText="Transportroute: von Pool %d nach Bst. %d nicht vorhanden\n";  break;
  case 101 : ObjText="Transportroute von Baustein %d ist nicht erlaubt\n";          break;
  case 102 : ObjText="Transportroute nach Baustein %d ist nicht erlaubt\n";         break;
  case 103 : ObjText="Bsttyp %d nicht erlaubt\n";                                   break;
  case 104 : ObjText="Transportroute von Bst. %d nach Bst. %d nicht möglich\n";     break;
  case 105 : ObjText="Baustein %d ist bereits in Transportroute vorhanden\n";       break;
  case 106 : ObjText="Bsttyp %d als Startbaustein ist nicht erlaubt\n";             break;
  case 107 : ObjText="Bsttyp %d als Endbaustein ist nicht erlaubt\n";               break;
  case 110 : ObjText="Prg.Prozesse dürfen nicht als Ereignis eingeplant werden\n";  break;
  case 111 : ObjText="Info Verknüpfung: Baustein auswählen!";                        break;
  case 112 : ObjText="Erzeuge Verknüpfung: von Baustein?";                           break;
  case 113 : ObjText="Erzeuge Verknüpfung: nach Baustein?         (ABBRUCH=ESCAPE)"; break;
  case 114 : ObjText="Lösche Verknüpfung: von Baustein?";                            break;
  case 115 : ObjText="Lösche Verknüpfung: nach Baustein?          (ABBRUCH=ESCAPE)"; break;
  case 116 : ObjText="Info Transportroute: von Baustein?";                          break;
  case 117 : ObjText="Info Transportroute: nach Baustein?        (ABBRUCH=ESCAPE)"; break;
  case 118 : ObjText="Erzeuge Transportroute: von Baustein?";                       break;
  case 119 : ObjText="Erzeuge Transportroute: nach Baustein?     (ABBRUCH=ESCAPE)"; break;
  case 121 : ObjText="Lösche Transportroute: von Baustein?";                        break;
  case 122 : ObjText="Lösche Transportroute: nach Baustein?      (ABBRUCH=ESCAPE)"; break;
  case 190 : ObjText="Das Modell wurde neu sortiert!\n";                            break;
  case 210 : ObjText="Positive Prozessnummer eingeben!\n";                          break;
  case 218 : ObjText="Der %d. Vorgang hat einen falschen Bausteintyp!\n";           break;
  case 219 : ObjText="Der erste Vorgang hat einen falschen Bausteintyp!\n";         break;
  case 220 : ObjText="Der letzte Vorgang hat einen falschen Bausteintyp!\n";        break;
  case 221 : ObjText="Prüfe Arbeitsplan %d\n";                                      break;
  case 222 : ObjText="Ende der Modellüberprüfung (Keine Fehler!)\n";                break;
  case 223 : ObjText="Modell wird überprüft   --- BITTE WARTEN ---\n";              break;
  case 224 : ObjText="Arbeitsplan %d: Eingangsartikel bzw. Variante falsch\n";      break;
  case 225 : ObjText="Arbeitsplan %d: Anzahl Artikel > 1 Elemente\n";               break;
  case 226 : ObjText="Arbeitsplan %d besitzt keine Artikel!\n";                     break;
  case 227 : ObjText="Arbeitsplan %d: Vorgangsliste enthält nur 1 Element\n";       break;
  case 228 : ObjText="--- ACHTUNG --- Modellüberprüfung mit Fehler beendet!\n";     break;
  case 229 : ObjText="Fehlende Transportrote wird erzeugt!\n";                      break;
  case 230 : ObjText="Alle fehlende Transportroten wurden erzeugt!\n";              break;
  case 280 : ObjText="Arbeitsplan %d ist nicht vorhanden!\n";                       break;
  case 281 : ObjText="Arbeitsplan %d ist bereits vorhanden!\n";                     break;

  default  :
  {
    sprintf (ObjBuffer, "HoleMeldung: Meldung = %d nicht vorhanden\n", fnr);
    GTS_Meldungen (ObjBuffer);
    return false;
  }
 }
 return true;
}  // ENDE HoleMeldung
