2012-05-29 13:31:11 +00:00
|
|
|
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
|
|
// Copyright (C) 2010 Winch Gate Property Limited
|
|
|
|
//
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
|
|
// it under the terms of the GNU Affero General Public License as
|
|
|
|
// published by the Free Software Foundation, either version 3 of the
|
|
|
|
// License, 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 Affero General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#if !defined(AFX_VIEWDIALOG_H__FDD49815_5955_4204_8D1C_2839AE39DDB3__INCLUDED_)
|
|
|
|
#define AFX_VIEWDIALOG_H__FDD49815_5955_4204_8D1C_2839AE39DDB3__INCLUDED_
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
#pragma once
|
|
|
|
#endif // _MSC_VER > 1000
|
|
|
|
// ViewDialog.h : header file
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
class CViewDialog;
|
|
|
|
|
|
|
|
/*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
class CListCtrlEx : public CListCtrl
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
void initIt();
|
|
|
|
void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
|
|
|
|
void RepaintSelectedItems();
|
|
|
|
//void OnKillFocus(CWnd* pNewWnd);
|
|
|
|
//void OnSetFocus(CWnd* pOldWnd);
|
|
|
|
|
|
|
|
void setViewDialog( CViewDialog *pt ) { _ViewDialog = pt; }
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
//{{AFX_MSG(CListCtrlEx)
|
|
|
|
afx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
|
|
|
|
//}}AFX_MSG
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
CViewDialog *_ViewDialog;
|
|
|
|
};
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CViewDialog dialog
|
|
|
|
|
|
|
|
class CViewDialog : public CDialog
|
|
|
|
{
|
|
|
|
// Construction
|
|
|
|
public:
|
|
|
|
CViewDialog(CWnd* pParent = NULL); // standard constructor
|
|
|
|
|
|
|
|
// Dialog Data
|
|
|
|
//{{AFX_DATA(CViewDialog)
|
|
|
|
enum { IDD = IDD_View };
|
|
|
|
CListCtrlEx m_ListCtrl;
|
|
|
|
CString m_Caption;
|
|
|
|
//}}AFX_DATA
|
|
|
|
|
|
|
|
/// Load, using the current filters
|
|
|
|
void reload();
|
|
|
|
|
|
|
|
/// Load trace
|
|
|
|
void reloadTrace();
|
|
|
|
|
|
|
|
/// Set the filters (and backup the previous ones for bookmark translation)
|
|
|
|
void setFilters( const std::vector<CString>& posFilter, const std::vector<CString>& negFilter );
|
|
|
|
|
|
|
|
/// Returns true if the string must be logged, according to the current filters
|
|
|
|
bool passFilter( const char *text, const std::vector<CString>& posFilter, const std::vector<CString>& negFilter ) const;
|
|
|
|
|
|
|
|
/// Resize
|
|
|
|
void resizeView( int nbViews, int top, int left );
|
|
|
|
|
|
|
|
/// Clear
|
|
|
|
void clear();
|
|
|
|
|
|
|
|
/// Return the nb of lines
|
|
|
|
int getNbLines() const;
|
|
|
|
|
|
|
|
/// Return the nb of visible lines
|
|
|
|
int getNbVisibleLines() const;
|
|
|
|
|
|
|
|
/// Set redraw state
|
|
|
|
void setRedraw( bool redraw ) { m_ListCtrl.SetRedraw( redraw ); }
|
|
|
|
|
|
|
|
/// Fill from getNbLines() to maxNbLines with blank lines
|
|
|
|
void fillGaps( int maxNbLines );
|
|
|
|
|
|
|
|
/// Load a log file or series
|
|
|
|
void loadFileOrSeries( const std::vector<int>& bookmarksAbsoluteLines );
|
|
|
|
|
|
|
|
/// Add one line
|
|
|
|
void addLine( const CString& line ) { Buffer.push_back( line ); }
|
|
|
|
|
|
|
|
/// Add several lines
|
|
|
|
void addText( const CString& lines );
|
|
|
|
|
|
|
|
/// Commit the lines previously added
|
|
|
|
void commitAddedLines();
|
|
|
|
|
|
|
|
/// Scroll
|
|
|
|
void scrollTo( int index );
|
|
|
|
|
|
|
|
/// Select
|
|
|
|
void select( int index );
|
|
|
|
|
|
|
|
/// Get selected index
|
|
|
|
int getSelectionIndex() { return m_ListCtrl.GetSelectionMark(); }
|
|
|
|
|
|
|
|
/// Return the index of the top of the listbox
|
|
|
|
int getScrollIndex() const;
|
|
|
|
|
|
|
|
/// Add the current scroll index to the bookmark list, or delete it if already inside the list
|
|
|
|
void addBookmark();
|
|
|
|
|
|
|
|
/// Scroll the listbox to the next found stored bookmkark (downwards from the current scroll index)
|
|
|
|
void recallNextBookmark();
|
|
|
|
|
|
|
|
/// Display string
|
|
|
|
void displayString();
|
|
|
|
|
|
|
|
/// Return the textcolor
|
|
|
|
COLORREF getTextColorForLine( int index, bool selected );
|
|
|
|
|
|
|
|
/// Return the background color
|
|
|
|
COLORREF getBkColorForLine( int index, bool selected );
|
|
|
|
|
|
|
|
///
|
|
|
|
std::string corruptedLinesString( const std::vector<unsigned int>& corruptedLines );
|
|
|
|
|
|
|
|
/// Reload with old filter to get bookmarks absolute line numbers (not called if there's no bookmark)
|
|
|
|
void getBookmarksAbsoluteLines( std::vector<int>& bookmarksAbsoluteLines );
|
|
|
|
|
|
|
|
//{{AFX_MSG(CViewDialog)
|
|
|
|
afx_msg void OnButtonFind();
|
|
|
|
//}}AFX_MSG
|
|
|
|
|
|
|
|
int Index;
|
|
|
|
CString Seriesname;
|
|
|
|
std::vector<CString> Filenames;
|
|
|
|
std::vector<CString> PosFilter, NegFilter, PreviousPosFilter, PreviousNegFilter;
|
|
|
|
CString LogSessionStartDate;
|
|
|
|
bool SessionDatePassed;
|
|
|
|
std::vector<CString> Buffer;
|
|
|
|
int BeginFindIndex;
|
|
|
|
CFindReplaceDialog *FindDialog;
|
|
|
|
CString FindStr;
|
|
|
|
bool FindMatchCase, FindDownwards;
|
|
|
|
float WidthR; // ratio to the app's client window
|
|
|
|
std::vector<int> Bookmarks;
|
|
|
|
int CurrentBookmark;
|
|
|
|
|
|
|
|
// Overrides
|
|
|
|
// ClassWizard generated virtual function overrides
|
|
|
|
//{{AFX_VIRTUAL(CViewDialog)
|
|
|
|
protected:
|
|
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
|
|
//}}AFX_VIRTUAL
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
protected:
|
|
|
|
|
|
|
|
afx_msg LRESULT OnFindReplace(WPARAM wParam, LPARAM lParam);
|
|
|
|
|
|
|
|
// Generated message map functions
|
|
|
|
//{{AFX_MSG(CViewDialog)
|
|
|
|
afx_msg void OnButtonFilter();
|
|
|
|
virtual BOOL OnInitDialog();
|
|
|
|
afx_msg void OnGetdispinfoList1(NMHDR* pNMHDR, LRESULT* pResult);
|
|
|
|
afx_msg void OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult);
|
|
|
|
afx_msg void OnSetfocusList1(NMHDR* pNMHDR, LRESULT* pResult);
|
|
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|
|
|
//}}AFX_MSG
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
};
|
|
|
|
|
|
|
|
//{{AFX_INSERT_LOCATION}}
|
|
|
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
|
|
|
|
|
|
#endif // !defined(AFX_VIEWDIALOG_H__FDD49815_5955_4204_8D1C_2839AE39DDB3__INCLUDED_)
|