* Copyright (c) 1998-2007 Matthijs Hollemans
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef GREP_WINDOW_H
#define GREP_WINDOW_H
#include <Catalog.h>
#include <InterfaceKit.h>
#include <FilePanel.h>
#include <Locale.h>
#include "Model.h"
#include "GrepListView.h"
class BMessageRunner;
class ChangesIterator;
class Grepper;
class GrepWindow : public BWindow {
public:
GrepWindow(BMessage* message);
virtual ~GrepWindow();
virtual void FrameResized(float width, float height);
virtual void FrameMoved(BPoint origin);
virtual void MenusBeginning();
virtual void MenusEnded();
virtual void MessageReceived(BMessage* message);
virtual void Quit();
private:
void _InitRefsReceived(entry_ref* directory,
BMessage* message);
void _SetWindowTitle();
void _CreateMenus();
void _UpdateMenus();
void _CreateViews();
void _LayoutViews();
void _TileIfMultipleWindows();
void _LoadPrefs();
void _SavePrefs();
void _StartNodeMonitoring();
void _StopNodeMonitoring();
void _OnStartCancel();
void _OnSearchFinished();
void _OnNodeMonitorEvent(BMessage* message);
void _OnNodeMonitorPulse();
void _OnReportFileName(BMessage* message);
void _OnReportResult(BMessage* message);
void _OnReportError(BMessage* message);
void _OnRecurseLinks();
void _OnRecurseDirs();
void _OnSkipDotDirs();
void _OnRegularExpression();
void _OnCaseSensitive();
void _OnTextOnly();
void _OnInvokeEditor();
void _OnCheckboxShowLines();
void _OnInvokeItem();
void _OnSearchText();
void _OnHistoryItem(BMessage* message);
void _OnTrimSelection();
void _OnCopyText();
void _OnSelectInTracker();
void _OnQuitNow();
void _OnFileDrop(BMessage* message);
void _OnRefsReceived(BMessage* message);
void _OnOpenPanel();
void _OnOpenPanelCancel();
void _OnSelectAll(BMessage* message);
void _OnNewWindow();
void _OnSetTargetToParent();
void _OnGlobFilterChange();
void _ModelChanged();
bool _OpenInEditor(const entry_ref& ref, int32 lineNum);
void _RemoveFolderListDuplicates(BList* folderList);
status_t _OpenFoldersInTracker(BList* folderList);
bool _AreAllFoldersOpenInTracker(BList* folderList);
status_t _SelectFilesInTracker(BList* folderList,
BMessage* refsMessage);
private:
BTextControl* fSearchText;
BTextControl* fGlobText;
GrepListView* fSearchResults;
BMenuBar* fMenuBar;
BMenu* fFileMenu;
BMenuItem* fNew;
BMenuItem* fOpen;
BMenuItem* fSetTargetToParent;
BMenuItem* fClose;
BMenuItem* fQuit;
BMenu* fActionMenu;
BMenuItem* fSelectAll;
BMenuItem* fSearch;
BMenuItem* fTrimSelection;
BMenuItem* fCopyText;
BMenuItem* fSelectInTracker;
BMenuItem* fOpenSelection;
BMenu* fPreferencesMenu;
BMenuItem* fRecurseLinks;
BMenuItem* fRecurseDirs;
BMenuItem* fSkipDotDirs;
BMenuItem* fCaseSensitive;
BMenuItem* fRegularExpression;
BMenuItem* fTextOnly;
BMenuItem* fInvokeEditor;
BMenu* fHistoryMenu;
BMenu* fEncodingMenu;
BMenuItem* fUTF8;
BMenuItem* fShiftJIS;
BMenuItem* fEUC;
BMenuItem* fJIS;
BCheckBox* fShowLinesCheckbox;
BButton* fButton;
Grepper* fGrepper;
BString fOldPattern;
BString fIncludeFilesGlob;
Model* fModel;
bigtime_t fLastNodeMonitorEvent;
ChangesIterator* fChangesIterator;
BMessageRunner* fChangesPulse;
int32 fCurrentHistoryIndex;
BFilePanel* fFilePanel;
};
#endif