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 182 183 184 185 186 187 188 189 190 191 192 193
|
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// 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__
#include "bitmap_loader.h"
#include "clFileSystemEvent.h"
#include "clWorkspaceEvent.hpp"
#include "cl_command_event.h"
#include "subversion2_ui.h"
#include "svn_console.h"
#include "svncommand.h"
#include "svninfo.h"
#include "svntreedata.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;
wxString m_curpath;
SvnConsole* m_subversionConsole;
int m_fileExplorerLastBaseImgIdx;
wxFileName m_workspaceFile;
public:
enum { SvnInfo_Tag, SvnInfo_Branch, SvnInfo_Info };
/**
* @brief note that this function accepts arguments by value
* on purpose (since the caller object might get deleted before
* it finish processing)
*/
void FinishDiff(wxString output, wxFileName fileBeingDiffed);
protected:
virtual void OnUnversionedItemActivated(wxDataViewEvent& event);
virtual void OnUnversionedItemsContextMenu(wxDataViewEvent& event);
virtual void OnViewUpdateUI(wxUpdateUIEvent& event);
virtual void OnContextMenu(wxDataViewEvent& event);
virtual void OnSciStcChange(wxStyledTextEvent& event);
virtual void OnCharAdded(wxStyledTextEvent& event);
virtual void OnKeyDown(wxKeyEvent& event);
virtual void OnUpdateUI(wxStyledTextEvent& event);
void CreatGUIControls();
void ClearAll();
void DoAddChangedFiles(const wxString& status, const wxArrayString& files);
void DoAddUnVersionedFiles(const wxArrayString& files);
int DoGetIconIndex(const wxString& filename);
void DoGetSelectedFiles(wxArrayString& paths, bool absPath = false);
void DoGetAllFiles(wxArrayString& paths);
void DoLinkEditor();
void DoChangeRootPathUI(const wxString& path);
void DoRootDirChanged(const wxString& path);
wxString DoGetCurRepoPath() const;
wxArrayString GetSelectedUnversionedFiles() const;
int GetImageIndex(const wxFileName& filepath) const;
void UpdateStatusBar(const wxString& path);
protected:
// Menu management
void CreateFileMenu(wxMenu* menu);
void CreateRootMenu(wxMenu* menu);
void DoCloseView();
protected:
// Handlers for SubversionPageBase events.
void OnChangeRootDir(wxCommandEvent& event);
void OnCloseView(wxCommandEvent& event);
void OnTreeMenu(wxTreeEvent& event);
void OnItemActivated(wxDataViewEvent& event);
// IDE Events
void OnWorkspaceLoaded(clWorkspaceEvent& event);
void OnWorkspaceClosed(clWorkspaceEvent& event);
void OnClearOuptut(wxCommandEvent& event);
void OnRefreshView(wxCommandEvent& event);
void OnFileSaved(clCommandEvent& event);
void OnFileRenamed(clFileSystemEvent& event);
void OnFileAdded(clCommandEvent& event);
void OnSettings(wxCommandEvent& event);
void OnActiveEditorChanged(wxCommandEvent& event);
void OnOpenFile(wxCommandEvent& event);
void OnAppActivated(wxCommandEvent& event);
// Svn events
void OnCommit(wxCommandEvent& event);
void OnCommitGotoAnything(wxCommandEvent& event);
void OnUpdateGotoAnything(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);
void OnAdd(wxCommandEvent& event);
void OnOpenUnverionsedFiles(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(); }
bool IsValid() const
{
wxString curpath = DoGetCurRepoPath();
return !curpath.IsEmpty() && curpath != _("<No repository path is selected>");
}
};
#endif // __subversion_page__
|