From 3024f7af947da8e7b6fc54583e5efb3a6e85fdcd Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 24 Feb 2014 19:06:00 +0000 Subject: [PATCH] ide: New FillDiff features git-svn-id: svn://ultimatepp.org/upp/trunk@6948 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlLib/CtrlUtil.cpp | 24 ++++++ uppsrc/CtrlLib/CtrlUtil.h | 25 ++++++ uppsrc/TextDiffCtrl/Diff.iml | 16 ++-- uppsrc/TextDiffCtrl/DiffCtrl.cpp | 102 +---------------------- uppsrc/TextDiffCtrl/DirDiff.cpp | 118 +++++++++++++++++++++++++++ uppsrc/TextDiffCtrl/PatchDiff.cpp | 102 +++++++++++++++++++++++ uppsrc/TextDiffCtrl/TextCtrl.cpp | 24 ++++-- uppsrc/TextDiffCtrl/TextDiffCtrl.h | 43 +++++++++- uppsrc/TextDiffCtrl/TextDiffCtrl.upp | 2 + uppsrc/ide/Util.cpp | 25 ------ uppsrc/ide/Xml.cpp | 1 + uppsrc/ide/ide.h | 25 +----- uppsrc/ide/ide.key | 3 +- uppsrc/ide/ide.upp | 1 - uppsrc/ide/idebar.cpp | 1 + uppsrc/ide/idetool.cpp | 37 +++++++++ 16 files changed, 389 insertions(+), 160 deletions(-) create mode 100644 uppsrc/TextDiffCtrl/DirDiff.cpp create mode 100644 uppsrc/TextDiffCtrl/PatchDiff.cpp delete mode 100644 uppsrc/ide/Util.cpp diff --git a/uppsrc/CtrlLib/CtrlUtil.cpp b/uppsrc/CtrlLib/CtrlUtil.cpp index 1bd06197b..5ea25ee33 100644 --- a/uppsrc/CtrlLib/CtrlUtil.cpp +++ b/uppsrc/CtrlLib/CtrlUtil.cpp @@ -289,4 +289,28 @@ void MemoryProfileInfo() { PromptOK("[C " + DeQtfLf(text)); }; +FileSelButton::FileSelButton(MODE mode, const char *title) +: title(title), mode(mode) +{ + button.NoWantFocus(); + button.SetImage(CtrlImg::right_arrow()); + button <<= THISBACK(OnAction); +} + +void FileSelButton::OnAction() +{ + Ctrl *owner = button.GetParent(); + ASSERT(owner); + String old = ~*owner; + if(mode == MODE_DIR) + ActiveDir(old); + else + Set(old); + if(mode == MODE_OPEN ? ExecuteOpen(title) : mode == MODE_SAVE ? ExecuteSaveAs(title) : ExecuteSelectDir(title)) + { + *owner <<= Get(); + owner->Action(); + } +} + END_UPP_NAMESPACE diff --git a/uppsrc/CtrlLib/CtrlUtil.h b/uppsrc/CtrlLib/CtrlUtil.h index 0c4632404..8cfe54b9a 100644 --- a/uppsrc/CtrlLib/CtrlUtil.h +++ b/uppsrc/CtrlLib/CtrlUtil.h @@ -453,6 +453,31 @@ public: void Set(const ValueMap& m); }; + +class FileSelButton : public FileSel +{ +public: + typedef FileSelButton CLASSNAME; + enum MODE { MODE_OPEN, MODE_SAVE, MODE_DIR }; + FileSelButton(MODE mode = MODE_OPEN, const char *title = NULL); + + void Attach(Ctrl& parent) { parent.AddFrame(button); } + void Title(String t) { title = t; } + String GetTitle() const { return title; } + +private: + void OnAction(); + +private: + FrameRight