/////////////////////////////////////////////////////////////////////////////
// Name:        No names yet.
// Purpose:     Contrib. demo
// Author:      Aleksandras Gluchovas
// Modified by:
// Created:     2001/03/26
// RCS-ID:      $Id: outputwin.h,v 1.1 2001/04/04 12:22:14 aleksandras Exp $
// Copyright:   (c) Aleksandras Gluchovas
// Licence:   	GPL (version 2.0 or later)
/////////////////////////////////////////////////////////////////////////////

#ifndef __INF_OUTPUTWIN_G__
#define __INF_OUTPUTWIN_G__

#include "wx/string.h"
#include "wx/dynarray.h"

class wxTextEditorView; // from LSEditor

class OutputMsgInfo
{
public:
	wxString mText;
	wxString mFile;
	int mLine;
	int mType;
	
	enum OUTPUT_MESSAGE_TYPE
	{
		MSG_NORMAL,
		MSG_WARNING,
		MSG_ERROR
	};
};

WX_DEFINE_ARRAY( OutputMsgInfo*,  OutputMsgInfoListT );

class OutputWindowInfo
{
public:
	wxString mName;
	wxString mDisplayName;

	wxTextEditorView* mpView;
	OutputMsgInfoListT mMessages;
};

/*
 * Interface which allows adding and managing custom sections 
 * into output-messages window
 */

class I_OutputWindow
{
public:
	virtual void ClearOutputWindow( const wxString& name ) = 0;
	virtual void AddMessageLine( const wxString& line, 
								 const wxString& outWndName,
								 bool detect = FALSE ) = 0;

	virtual bool AddOutputWindow( const wxString& name, const wxString& displayName ) = 0;
	virtual bool DeleteOutputWindow( const wxString& name ) = 0;
	virtual OutputWindowInfo* FindOutputWindow( const wxString& outWndName ) = 0;
};

#endif // __INF_OUTPUTWIN_G__