1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright : (C) 2009 by Eran Ifrah
// file name : subversion_view.h
//
// -------------------------------------------------------------------------
// A
// _____ _ _ _ _
// / __ \ | | | | (_) |
// | / \/ ___ __| | ___| | _| |_ ___
// | | / _ \ / _ |/ _ \ | | | __/ _ )
// | \__/\ (_) | (_| | __/ |___| | || __/
// \____/\___/ \__,_|\___\_____/_|\__\___|
//
// F i l e
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifndef __subversion_page__
#define __subversion_page__
/**
@file
Subclass of SubversionPageBase, which is generated by wxFormBuilder.
*/
#include "subversion2_ui.h"
#include "svninfo.h"
#include "svncommand.h"
#include "svntreedata.h"
#include "svn_console.h"
#include "theme_handler_helper.h"
#include "cl_command_event.h"
class Subversion2;
class wxMenu;
class SvnPageSelectionInfo
{
public:
wxArrayString m_paths;
SvnTreeData::SvnNodeType m_selectionType;
public:
SvnPageSelectionInfo()
: m_selectionType(SvnTreeData::SvnNodeTypeInvalid)
{
}
virtual ~SvnPageSelectionInfo() {}
void Clear()
{
m_paths.Clear();
m_selectionType = SvnTreeData::SvnNodeTypeInvalid;
}
};
/** Implementing SubversionPageBase */
class SubversionView : public SubversionPageBase
{
Subversion2* m_plugin;
wxTreeItemId m_modifiedItems;
SvnCommand m_simpleCommand;
SvnCommand m_diffCommand;
SvnPageSelectionInfo m_selectionInfo;
wxString m_curpath;
SvnConsole* m_subversionConsole;
int m_fileExplorerLastBaseImgIdx;
ThemeHandlerHelper* m_themeHelper;
wxFileName m_workspaceFile;
public:
enum { SvnInfo_Tag, SvnInfo_Branch, SvnInfo_Info };
protected:
virtual void OnCharAdded(wxStyledTextEvent& event);
virtual void OnKeyDown(wxKeyEvent& event);
virtual void OnUpdateUI(wxStyledTextEvent& event);
void CreatGUIControls();
void ClearAll();
void DoAddNode(const wxString& title, int imgId, SvnTreeData::SvnNodeType nodeType, const wxArrayString& files);
int DoGetIconIndex(const wxString& filename);
SvnTreeData::SvnNodeType DoGetSelectionType(const wxArrayTreeItemIds& items);
void DoGetPaths(const wxTreeItemId& parent, wxArrayString& paths);
void DoLinkEditor();
void DoChangeRootPathUI(const wxString& path);
void DoRootDirChanged(const wxString& path);
wxString DoGetCurRepoPath() const;
void DoCreateFileExplorerImages();
protected:
// Menu management
void CreateFileMenu(wxMenu* menu);
void CreateRootMenu(wxMenu* menu);
void CreateSecondRootMenu(wxMenu* menu);
wxTreeItemId DoGetParentNode(const wxString& filename, const wxTreeItemId& parent);
wxTreeItemId DoFindChild(const wxTreeItemId& parent, const wxString& name, const wxString& curpath);
wxTreeItemId DoFindFile(const wxTreeItemId& parent, const wxString& basepath, const wxString& fullpath);
protected:
// Handlers for SubversionPageBase events.
void OnChangeRootDir(wxCommandEvent& event);
void OnTreeMenu(wxTreeEvent& event);
void OnItemActivated(wxTreeEvent& event);
// IDE Events
void OnWorkspaceLoaded(wxCommandEvent& event);
void OnWorkspaceClosed(wxCommandEvent& event);
void OnClearOuptut(wxCommandEvent& event);
void OnRefreshView(wxCommandEvent& event);
void OnFileSaved(clCommandEvent& event);
void OnFileRenamed(wxCommandEvent& event);
void OnFileAdded(clCommandEvent& event);
void OnSettings(wxCommandEvent& event);
void OnActiveEditorChanged(wxCommandEvent& event);
void OnOpenFile(wxCommandEvent& event);
// Svn events
void OnCommit(wxCommandEvent& event);
void OnUpdate(wxCommandEvent& event);
void OnRevert(wxCommandEvent& event);
void OnAdd(wxCommandEvent& event);
void OnDelete(wxCommandEvent& event);
void OnBranch(wxCommandEvent& event);
void OnTag(wxCommandEvent& event);
void OnResolve(wxCommandEvent& event);
void OnDiff(wxCommandEvent& event);
void OnPatch(wxCommandEvent& event);
void OnPatchDryRun(wxCommandEvent& event);
void OnStop(wxCommandEvent& event);
void OnCleanup(wxCommandEvent& event);
void OnShowSvnInfo(wxCommandEvent& event);
void OnCheckout(wxCommandEvent& event);
void OnIgnoreFile(wxCommandEvent& event);
void OnIgnoreFilePattern(wxCommandEvent& event);
void OnBlame(wxCommandEvent& event);
void OnLinkEditor(wxCommandEvent& event);
void OnSwitch(wxCommandEvent& event);
void OnProperties(wxCommandEvent& event);
void OnLog(wxCommandEvent& event);
void OnLock(wxCommandEvent& event);
void OnUnLock(wxCommandEvent& event);
void OnRename(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
void OnStopUI(wxUpdateUIEvent& event);
void OnClearOuptutUI(wxUpdateUIEvent& event);
public:
/** Constructor */
SubversionView(wxWindow* parent, Subversion2* plugin);
virtual ~SubversionView();
SvnConsole* GetSubversionConsole() { return m_subversionConsole; }
void DisconnectEvents();
void UpdateTree(const wxArrayString& modifiedFiles,
const wxArrayString& conflictedFiles,
const wxArrayString& unversionedFiles,
const wxArrayString& newFiles,
const wxArrayString& deletedFiles,
const wxArrayString& lockedFiles,
const wxArrayString& ignoreFiles,
bool fileExplorerOnly,
const wxString& rootDir);
void BuildTree();
void BuildTree(const wxString& root);
void BuildExplorerTree(const wxString& root);
wxString GetRootDir() const { return DoGetCurRepoPath(); }
};
#endif // __subversion_page__
|