// 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_)