OSDN Git Service

Implement issue #1413: "Move" needs options "Left to Right" or "Right… (#1732)
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Thu, 23 Feb 2023 01:07:12 +0000 (10:07 +0900)
committerGitHub <noreply@github.com>
Thu, 23 Feb 2023 01:07:12 +0000 (10:07 +0900)
15 files changed:
Src/DirActions.cpp
Src/DirActions.h
Src/DirView.cpp
Src/DirView.h
Src/FileActionScript.h
Src/MainFrm.cpp
Src/Merge.rc
Src/Merge2.rc
Src/res/move_left_to_middle.bmp [new file with mode: 0644]
Src/res/move_left_to_right.bmp [new file with mode: 0644]
Src/res/move_middle_to_left.bmp [new file with mode: 0644]
Src/res/move_middle_to_right.bmp [new file with mode: 0644]
Src/res/move_right_to_left.bmp [new file with mode: 0644]
Src/res/move_right_to_middle.bmp [new file with mode: 0644]
Src/resource.h

index 4a74a85..f62c19c 100644 (file)
@@ -203,7 +203,8 @@ void ConfirmActionList(const CDiffContext& ctxt, const FileActionScript & action
                break;
 
        case FileAction::ACT_MOVE:
-               bDestIsSide = false;
+               if (item.UIResult == FileActionItem::UI_DEL)
+                       bDestIsSide = false;
                if (actionList.GetActionItemCount() == 1)
                {
                        ThrowConfirmMove(ctxt, item.UIOrigin, item.UIDestination,
@@ -262,6 +263,14 @@ UPDATEITEM_TYPE UpdateDiffAfterOperation(const FileActionItem & act, CDiffContex
                SetDiffCounts(di, 0, 0);
                break;
 
+       case FileActionItem::UI_MOVE:
+               bUpdateSrc = true;
+               bUpdateDest = true;
+               CopyDiffSideAndProperties(di, act.UIOrigin, act.UIDestination);
+               UnsetDiffSide(di, act.UIOrigin);
+               SetDiffCompare(di, DIFFCODE::NOCMP);
+               break;
+
        case FileActionItem::UI_DEL:
                if (di.diffcode.isSideOnly(act.UIOrigin))
                {
@@ -360,6 +369,17 @@ bool IsItemCopyable(const DIFFITEM &di, int index)
        return true;
 }
 
+/// is it possible to move item to left ?
+bool IsItemMovable(const DIFFITEM &di, int index)
+{
+       // don't let them mess with error items
+       if (di.diffcode.isResultError()) return false;
+       // impossible if not existing
+       if (!di.diffcode.exists(index)) return false;
+       // everything else can be copied to other side
+       return true;
+}
+
 /// is it possible to delete item ?
 bool IsItemDeletable(const DIFFITEM &di, int index)
 {
index 5da09f7..02f78e6 100644 (file)
@@ -140,6 +140,7 @@ UPDATEITEM_TYPE UpdateDiffAfterOperation(const FileActionItem & act, CDiffContex
 DIFFITEM *FindItemFromPaths(const CDiffContext& ctxt, const PathContext& paths);
 
 bool IsItemCopyable(const DIFFITEM &di, int index);
+bool IsItemMovable(const DIFFITEM &di, int index);
 bool IsItemDeletable(const DIFFITEM &di, int index);
 bool IsItemDeletableOnBoth(const CDiffContext& ctxt, const DIFFITEM &di);
 bool AreItemsOpenable(const CDiffContext& ctxt, SELECTIONTYPE selectionType, const DIFFITEM &di1, const DIFFITEM &di2, bool openableForDir = true);
@@ -267,6 +268,13 @@ struct DirActions
                return true;
        }
 
+       template <SIDE_TYPE src, SIDE_TYPE dst>
+       bool IsItemMovableOnTo(const DIFFITEM& di) const
+       {
+               const int idx = SideToIndex(m_ctxt, src);
+               return (di.diffcode.diffcode != 0 && !m_RO[idx] && !m_RO[SideToIndex(m_ctxt, dst)] && ::IsItemMovable(di, idx));
+       }
+
        template <SIDE_TYPE src>
        bool IsItemMovableToOn(const DIFFITEM& di) const
        {
@@ -383,6 +391,38 @@ struct DirActions
                return CopyItem(pscript, it, src, to);
        }
 
+       FileActionScript *MoveItem(FileActionScript *pscript, const std::pair<int, const DIFFITEM *>& it, SIDE_TYPE src, SIDE_TYPE dst) const
+       {
+               const DIFFITEM& di = *it.second;
+               const int srcidx = SideToIndex(m_ctxt, src);
+               const int dstidx = SideToIndex(m_ctxt, dst);
+               if (di.diffcode.diffcode != 0 && !m_RO[dstidx] && IsItemMovable(di, srcidx))
+               {
+                       FileActionItem act;
+                       act.src  = GetItemFileName(m_ctxt, di, srcidx);
+                       act.dest = GetItemFileName(m_ctxt, di, dstidx);
+                       
+                       // We must check that paths still exists
+                       if (paths::DoesPathExist(act.src) == paths::DOES_NOT_EXIST)
+                               throw ContentsChangedException(act.src);
+
+                       act.context = it.first;
+                       act.dirflag = di.diffcode.isDirectory();
+                       act.atype = FileAction::ACT_MOVE;
+                       act.UIResult = FileActionItem::UI_MOVE;
+                       act.UIOrigin = srcidx;
+                       act.UIDestination = dstidx;
+                       pscript->AddActionItem(act);
+               }
+               return pscript;
+       }
+
+       template<SIDE_TYPE src, SIDE_TYPE to>
+       FileActionScript *Move(FileActionScript *pscript, const std::pair<int, const DIFFITEM *>& it) const
+       {
+               return MoveItem(pscript, it, src, to);
+       }
+
        FileActionScript *DeleteItem(FileActionScript *pscript, const std::pair<int, const DIFFITEM *>& it, SIDE_TYPE src) const
        {
                const DIFFITEM& di = *it.second;
index 419bf97..8eabb1b 100644 (file)
@@ -257,6 +257,18 @@ BEGIN_MESSAGE_MAP(CDirView, CListView)
        ON_UPDATE_COMMAND_UI(ID_DIR_COPY_MIDDLE_TO_BROWSE, OnUpdateCtxtDirCopyTo<SIDE_MIDDLE>)
        ON_UPDATE_COMMAND_UI(ID_DIR_COPY_RIGHT_TO_BROWSE, OnUpdateCtxtDirCopyTo<SIDE_RIGHT>)
        // Context menu -> Move
+       ON_COMMAND(ID_DIR_MOVE_LEFT_TO_RIGHT, (OnCtxtDirMove<SIDE_LEFT, SIDE_RIGHT>))
+       ON_COMMAND(ID_DIR_MOVE_LEFT_TO_MIDDLE, (OnCtxtDirMove<SIDE_LEFT, SIDE_MIDDLE>))
+       ON_COMMAND(ID_DIR_MOVE_RIGHT_TO_LEFT, (OnCtxtDirMove<SIDE_RIGHT, SIDE_LEFT>))
+       ON_COMMAND(ID_DIR_MOVE_RIGHT_TO_MIDDLE, (OnCtxtDirMove<SIDE_RIGHT, SIDE_MIDDLE>))
+       ON_COMMAND(ID_DIR_MOVE_MIDDLE_TO_LEFT, (OnCtxtDirMove<SIDE_MIDDLE, SIDE_LEFT>))
+       ON_COMMAND(ID_DIR_MOVE_MIDDLE_TO_RIGHT, (OnCtxtDirMove<SIDE_MIDDLE, SIDE_RIGHT>))
+       ON_UPDATE_COMMAND_UI(ID_DIR_MOVE_LEFT_TO_RIGHT, (OnUpdateCtxtDirMove<SIDE_LEFT, SIDE_RIGHT>))
+       ON_UPDATE_COMMAND_UI(ID_DIR_MOVE_LEFT_TO_MIDDLE, (OnUpdateCtxtDirMove<SIDE_LEFT, SIDE_MIDDLE>))
+       ON_UPDATE_COMMAND_UI(ID_DIR_MOVE_RIGHT_TO_LEFT, (OnUpdateCtxtDirMove<SIDE_RIGHT, SIDE_LEFT>))
+       ON_UPDATE_COMMAND_UI(ID_DIR_MOVE_RIGHT_TO_MIDDLE, (OnUpdateCtxtDirMove<SIDE_RIGHT, SIDE_MIDDLE>))
+       ON_UPDATE_COMMAND_UI(ID_DIR_MOVE_MIDDLE_TO_LEFT, (OnUpdateCtxtDirMove<SIDE_MIDDLE, SIDE_LEFT>))
+       ON_UPDATE_COMMAND_UI(ID_DIR_MOVE_MIDDLE_TO_RIGHT, (OnUpdateCtxtDirMove<SIDE_MIDDLE, SIDE_RIGHT>))
        ON_COMMAND(ID_DIR_MOVE_LEFT_TO_BROWSE, OnCtxtDirMoveTo<SIDE_LEFT>)
        ON_COMMAND(ID_DIR_MOVE_MIDDLE_TO_BROWSE, OnCtxtDirMoveTo<SIDE_MIDDLE>)
        ON_COMMAND(ID_DIR_MOVE_RIGHT_TO_BROWSE, OnCtxtDirMoveTo<SIDE_RIGHT>)
@@ -717,7 +729,11 @@ void CDirView::ListContextMenu(CPoint point, int /*i*/)
                pPopup->RemoveMenu(ID_DIR_COPY_MIDDLE_TO_RIGHT, MF_BYCOMMAND);
                pPopup->RemoveMenu(ID_DIR_COPY_MIDDLE_TO_BROWSE, MF_BYCOMMAND);
                pPopup->RemoveMenu(ID_DIR_COPY_RIGHT_TO_MIDDLE, MF_BYCOMMAND);
+               pPopup->RemoveMenu(ID_DIR_MOVE_LEFT_TO_MIDDLE, MF_BYCOMMAND);
+               pPopup->RemoveMenu(ID_DIR_MOVE_MIDDLE_TO_LEFT, MF_BYCOMMAND);
+               pPopup->RemoveMenu(ID_DIR_MOVE_MIDDLE_TO_RIGHT, MF_BYCOMMAND);
                pPopup->RemoveMenu(ID_DIR_MOVE_MIDDLE_TO_BROWSE, MF_BYCOMMAND);
+               pPopup->RemoveMenu(ID_DIR_MOVE_RIGHT_TO_MIDDLE, MF_BYCOMMAND);
                pPopup->RemoveMenu(ID_DIR_DEL_MIDDLE, MF_BYCOMMAND);
                pPopup->RemoveMenu(ID_DIR_DEL_ALL, MF_BYCOMMAND);
                pPopup->RemoveMenu(ID_DIR_OPEN_MIDDLE, MF_BYCOMMAND);
@@ -1082,6 +1098,16 @@ void CDirView::DoUpdateDirCopy(CCmdUI* pCmdUI, eMenuType menuType)
                pCmdUI->SetText(FormatMenuItemString(srctype, dsttype, counts.count, counts.total).c_str());
 }
 
+/// Should Move to Left be enabled or disabled ? (both main menu & context menu use this)
+template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
+void CDirView::DoUpdateDirMove(CCmdUI* pCmdUI, eMenuType menuType)
+{
+       Counts counts = Count(&DirActions::IsItemMovableOnTo<srctype, dsttype>);
+       pCmdUI->Enable(counts.count > 0);
+       if (menuType == eContext)
+               pCmdUI->SetText(FormatMenuItemString(srctype, dsttype, counts.count, counts.total).c_str());
+}
+
 /**
  * @brief Update any resources necessary after a GUI language change
  */
@@ -3354,6 +3380,13 @@ void CDirView::OnUpdateHideFilenames(CCmdUI* pCmdUI)
        pCmdUI->Enable(m_pList->GetSelectedCount() != 0);
 }
 
+/// User chose (context men) Move from right to left
+template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
+void CDirView::OnCtxtDirMove()
+{
+       DoDirAction(&DirActions::Move<srctype, dsttype>, _("Moveing files..."));
+}
+
 /// User chose (context menu) Move left to...
 template<SIDE_TYPE stype>
 void CDirView::OnCtxtDirMoveTo()
@@ -3361,6 +3394,13 @@ void CDirView::OnCtxtDirMoveTo()
        DoDirActionTo(stype, &DirActions::MoveTo<stype>, _("Moving files..."));
 }
 
+/// Update context menu Move Right to Left item
+template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
+void CDirView::OnUpdateCtxtDirMove(CCmdUI* pCmdUI)
+{
+       DoUpdateDirMove<srctype, dsttype>(pCmdUI, eContext);
+}
+
 /**
  * @brief Update "Move | Left to..." item
  */
index f52de53..c6d8dc1 100644 (file)
@@ -233,6 +233,10 @@ protected:
        afx_msg void OnUpdateDirCopy(CCmdUI* pCmdUI);
        template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
        afx_msg void OnUpdateCtxtDirCopy(CCmdUI* pCmdUI);
+       template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
+       afx_msg void OnCtxtDirMove();
+       template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
+       afx_msg void OnUpdateCtxtDirMove(CCmdUI* pCmdUI);
        template<SIDE_TYPE stype>
        afx_msg void OnCtxtDirDel();
        template<SIDE_TYPE stype>
@@ -411,6 +415,8 @@ private:
        void OpenParentDirectory(CDirDoc *pDocOpen);
        template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
        void DoUpdateDirCopy(CCmdUI* pCmdUI, eMenuType menuType);
+       template<SIDE_TYPE srctype, SIDE_TYPE dsttype>
+       void DoUpdateDirMove(CCmdUI* pCmdUI, eMenuType menuType);
        const DIFFITEM &GetDiffItem(int sel) const;
        DIFFITEM &GetDiffItem(int sel);
        int GetSingleSelectedItem() const;
index 3912f58..e357cc2 100644 (file)
@@ -64,7 +64,7 @@ struct FileActionItem : public FileAction
        enum UI_RESULT
        {
                UI_SYNC = 1,   /**< Make items identical (synchronized). */
-               UI_DESYNC,     /**< Make items different. */
+               UI_MOVE,       /**< Move items. */
                UI_DEL,        /**< Remove left item. */
                UI_DONT_CARE,  /**< Ignore the GUI change. */
                UI_RENAME      /**< Rename item. */
index 5649857..8ccb199 100644 (file)
@@ -172,6 +172,12 @@ const CMainFrame::MENUITEM_ICON CMainFrame::m_MenuIcons[] = {
        { ID_DIR_COPY_LEFT_TO_BROWSE,   IDB_LEFT_TO_BROWSE,                             CMainFrame::MENU_FOLDERCMP },
        { ID_DIR_COPY_MIDDLE_TO_BROWSE, IDB_MIDDLE_TO_BROWSE,                   CMainFrame::MENU_FOLDERCMP },
        { ID_DIR_COPY_RIGHT_TO_BROWSE,  IDB_RIGHT_TO_BROWSE,                    CMainFrame::MENU_FOLDERCMP },
+       { ID_DIR_MOVE_LEFT_TO_RIGHT,    IDB_MOVE_LEFT_TO_RIGHT,                 CMainFrame::MENU_FOLDERCMP },
+       { ID_DIR_MOVE_LEFT_TO_MIDDLE,   IDB_MOVE_LEFT_TO_MIDDLE,                CMainFrame::MENU_FOLDERCMP },
+       { ID_DIR_MOVE_RIGHT_TO_LEFT,    IDB_MOVE_RIGHT_TO_LEFT,                 CMainFrame::MENU_FOLDERCMP },
+       { ID_DIR_MOVE_RIGHT_TO_MIDDLE,  IDB_MOVE_RIGHT_TO_MIDDLE,               CMainFrame::MENU_FOLDERCMP },
+       { ID_DIR_MOVE_MIDDLE_TO_LEFT,   IDB_MOVE_MIDDLE_TO_LEFT,                CMainFrame::MENU_FOLDERCMP },
+       { ID_DIR_MOVE_MIDDLE_TO_RIGHT,  IDB_MOVE_MIDDLE_TO_RIGHT,               CMainFrame::MENU_FOLDERCMP },
        { ID_DIR_MOVE_LEFT_TO_BROWSE,   IDB_MOVE_LEFT_TO_BROWSE,                CMainFrame::MENU_FOLDERCMP },
        { ID_DIR_MOVE_MIDDLE_TO_BROWSE, IDB_MOVE_MIDDLE_TO_BROWSE,              CMainFrame::MENU_FOLDERCMP },
        { ID_DIR_MOVE_RIGHT_TO_BROWSE,  IDB_MOVE_RIGHT_TO_BROWSE,               CMainFrame::MENU_FOLDERCMP },
@@ -561,9 +567,7 @@ HMENU CMainFrame::NewMenu(int view, int ID)
        for (auto& menu_icon: m_MenuIcons)
        {
                if (menu_view == (menu_icon.menusToApply & menu_view))
-               {
                        m_pMenus[view]->ModifyODMenu(nullptr, menu_icon.menuitemID, menu_icon.iconResID);
-               }
        }
 
        m_pMenus[view]->LoadToolbar(IDR_MAINFRAME, &m_wndToolBar);
index 9e9e95a..0103ad3 100644 (file)
@@ -863,8 +863,14 @@ BEGIN
         END\r
         POPUP "&Move"\r
         BEGIN\r
+            MENUITEM "Left to Middle (%1 of %2)",   ID_DIR_MOVE_LEFT_TO_MIDDLE\r
+            MENUITEM "Left to Right (%1 of %2)",    ID_DIR_MOVE_LEFT_TO_RIGHT\r
             MENUITEM "Left to... (%1 of %2)",       ID_DIR_MOVE_LEFT_TO_BROWSE\r
+            MENUITEM "Middle to Left (%1 of %2)",   ID_DIR_MOVE_MIDDLE_TO_LEFT\r
+            MENUITEM "Middle to Right (%1 of %2)",  ID_DIR_MOVE_MIDDLE_TO_RIGHT\r
             MENUITEM "Middle to... (%1 of %2)",     ID_DIR_MOVE_MIDDLE_TO_BROWSE\r
+            MENUITEM "Right to Middle (%1 of %2)",  ID_DIR_MOVE_RIGHT_TO_MIDDLE\r
+            MENUITEM "Right to Left (%1 of %2)",    ID_DIR_MOVE_RIGHT_TO_LEFT\r
             MENUITEM "Right to... (%1 of %2)",      ID_DIR_MOVE_RIGHT_TO_BROWSE\r
         END\r
         POPUP "&Delete"\r
index 554875b..4f57cde 100644 (file)
@@ -159,6 +159,12 @@ IDB_RIGHT_TO_LEFT       BITMAP                  "res\\right_to_left.bmp"
 IDB_RIGHT_TO_MIDDLE     BITMAP                  "res\\right_to_middle.bmp"
 IDB_MIDDLE_TO_LEFT      BITMAP                  "res\\middle_to_left.bmp"
 IDB_MIDDLE_TO_RIGHT     BITMAP                  "res\\middle_to_right.bmp"
+IDB_MOVE_LEFT_TO_RIGHT  BITMAP                  "res\\move_left_to_right.bmp"
+IDB_MOVE_LEFT_TO_MIDDLE BITMAP                  "res\\move_left_to_middle.bmp"
+IDB_MOVE_RIGHT_TO_LEFT  BITMAP                  "res\\move_right_to_left.bmp"
+IDB_MOVE_RIGHT_TO_MIDDLE BITMAP                 "res\\move_right_to_middle.bmp"
+IDB_MOVE_MIDDLE_TO_LEFT BITMAP                  "res\\move_middle_to_left.bmp"
+IDB_MOVE_MIDDLE_TO_RIGHT BITMAP                 "res\\move_middle_to_right.bmp"
 IDB_COPY_FROM_LEFT      BITMAP                  "res\\from_left.bmp"
 IDB_COPY_FROM_RIGHT     BITMAP                  "res\\from_right.bmp"
 IDB_COPY_SELECTED_LINES_FROM_LEFT BITMAP        "res\\selected_lines_from_left.bmp"
diff --git a/Src/res/move_left_to_middle.bmp b/Src/res/move_left_to_middle.bmp
new file mode 100644 (file)
index 0000000..3190a3e
Binary files /dev/null and b/Src/res/move_left_to_middle.bmp differ
diff --git a/Src/res/move_left_to_right.bmp b/Src/res/move_left_to_right.bmp
new file mode 100644 (file)
index 0000000..b52053e
Binary files /dev/null and b/Src/res/move_left_to_right.bmp differ
diff --git a/Src/res/move_middle_to_left.bmp b/Src/res/move_middle_to_left.bmp
new file mode 100644 (file)
index 0000000..1f5af05
Binary files /dev/null and b/Src/res/move_middle_to_left.bmp differ
diff --git a/Src/res/move_middle_to_right.bmp b/Src/res/move_middle_to_right.bmp
new file mode 100644 (file)
index 0000000..e1a4fc4
Binary files /dev/null and b/Src/res/move_middle_to_right.bmp differ
diff --git a/Src/res/move_right_to_left.bmp b/Src/res/move_right_to_left.bmp
new file mode 100644 (file)
index 0000000..8895d81
Binary files /dev/null and b/Src/res/move_right_to_left.bmp differ
diff --git a/Src/res/move_right_to_middle.bmp b/Src/res/move_right_to_middle.bmp
new file mode 100644 (file)
index 0000000..95efc9d
Binary files /dev/null and b/Src/res/move_right_to_middle.bmp differ
index e113870..1b9f8f2 100644 (file)
 #define IDB_LEFT_TO_BROWSE              358\r
 #define IDB_MIDDLE_TO_BROWSE            359\r
 #define IDB_RIGHT_TO_BROWSE             360\r
-#define IDB_MOVE_LEFT_TO_BROWSE         361\r
-#define IDB_MOVE_MIDDLE_TO_BROWSE       362\r
-#define IDB_MOVE_RIGHT_TO_BROWSE        363\r
-#define IDB_TOOLBAR_ENABLED32           365\r
-#define IDB_VIEW_ZOOMIN                 366\r
-#define IDB_VIEW_ZOOMOUT                367\r
-#define IDB_FILE_NEW3                   368\r
-#define IDB_FILE_OPENCONFLICT           369\r
-#define IDB_PLUGINS_LIST                370\r
-#define IDB_MERGE_COMPARE               371\r
-#define IDB_MERGE_COMPARE_LEFT1_LEFT2   372\r
-#define IDB_MERGE_COMPARE_RIGHT1_RIGHT2 373\r
-#define IDB_MERGE_COMPARE_LEFT1_RIGHT2  374\r
-#define IDB_MERGE_COMPARE_LEFT2_RIGHT1  375\r
-#define IDB_COPY_FROM_LEFT              376\r
-#define IDB_COPY_FROM_RIGHT             377\r
-#define IDB_TOOLBAR_ENABLED             378\r
-#define IDB_FILE_NEW_TABLE              379\r
-#define IDB_FILE_NEW_HEX                380\r
-#define IDB_FILE_NEW_IMAGE              381\r
-#define IDB_FILE_NEW_WEBPAGE            382\r
-#define IDB_FILE_NEW3_TABLE             383\r
-#define IDB_FILE_NEW3_HEX               384\r
-#define IDB_FILE_NEW3_IMAGE             385\r
-#define IDB_FILE_NEW3_WEBPAGE           386\r
-#define IDB_COPY_SELECTED_LINES_FROM_LEFT 387\r
-#define IDB_COPY_SELECTED_LINES_FROM_RIGHT 388\r
-#define IDB_COPY_SELECTED_LINES_LEFT_TO_RIGHT 389\r
-#define IDB_COPY_SELECTED_LINES_LEFT_TO_MIDDLE 390\r
-#define IDB_COPY_SELECTED_LINES_MIDDLE_TO_LEFT 391\r
-#define IDB_COPY_SELECTED_LINES_MIDDLE_TO_RIGHT 392\r
-#define IDB_COPY_SELECTED_LINES_RIGHT_TO_MIDDLE 393\r
-#define IDB_COPY_SELECTED_LINES_RIGHT_TO_LEFT 394\r
+#define IDB_MOVE_LEFT_TO_RIGHT          361\r
+#define IDB_MOVE_LEFT_TO_MIDDLE         362\r
+#define IDB_MOVE_RIGHT_TO_LEFT          363\r
+#define IDB_MOVE_RIGHT_TO_MIDDLE        364\r
+#define IDB_MOVE_MIDDLE_TO_LEFT         365\r
+#define IDB_MOVE_MIDDLE_TO_RIGHT        366\r
+#define IDB_MOVE_LEFT_TO_BROWSE         367\r
+#define IDB_MOVE_MIDDLE_TO_BROWSE       368\r
+#define IDB_MOVE_RIGHT_TO_BROWSE        369\r
+#define IDB_TOOLBAR_ENABLED32           370\r
+#define IDB_VIEW_ZOOMIN                 371\r
+#define IDB_VIEW_ZOOMOUT                372\r
+#define IDB_FILE_NEW3                   373\r
+#define IDB_FILE_OPENCONFLICT           374\r
+#define IDB_PLUGINS_LIST                375\r
+#define IDB_MERGE_COMPARE               376\r
+#define IDB_MERGE_COMPARE_LEFT1_LEFT2   377\r
+#define IDB_MERGE_COMPARE_RIGHT1_RIGHT2 378\r
+#define IDB_MERGE_COMPARE_LEFT1_RIGHT2  379\r
+#define IDB_MERGE_COMPARE_LEFT2_RIGHT1  380\r
+#define IDB_COPY_FROM_LEFT              381\r
+#define IDB_COPY_FROM_RIGHT             382\r
+#define IDB_TOOLBAR_ENABLED             383\r
+#define IDB_FILE_NEW_TABLE              384\r
+#define IDB_FILE_NEW_HEX                385\r
+#define IDB_FILE_NEW_IMAGE              386\r
+#define IDB_FILE_NEW_WEBPAGE            387\r
+#define IDB_FILE_NEW3_TABLE             388\r
+#define IDB_FILE_NEW3_HEX               389\r
+#define IDB_FILE_NEW3_IMAGE             390\r
+#define IDB_FILE_NEW3_WEBPAGE           391\r
+#define IDB_COPY_SELECTED_LINES_FROM_LEFT 392\r
+#define IDB_COPY_SELECTED_LINES_FROM_RIGHT 393\r
+#define IDB_COPY_SELECTED_LINES_LEFT_TO_RIGHT 394\r
+#define IDB_COPY_SELECTED_LINES_LEFT_TO_MIDDLE 395\r
+#define IDB_COPY_SELECTED_LINES_MIDDLE_TO_LEFT 396\r
+#define IDB_COPY_SELECTED_LINES_MIDDLE_TO_RIGHT 397\r
+#define IDB_COPY_SELECTED_LINES_RIGHT_TO_MIDDLE 398\r
+#define IDB_COPY_SELECTED_LINES_RIGHT_TO_LEFT 399\r
 #define IDI_FOLDER                      500\r
 #define IDI_LFOLDER                     501\r
 #define IDI_MFOLDER                     502\r
 #define ID_DIR_ZIP_BOTH                 32994\r
 #define ID_DIR_ZIP_ALL                  32995\r
 #define ID_DIR_ZIP_BOTH_DIFFS_ONLY      32996\r
-#define ID_DIR_MOVE_LEFT_TO_BROWSE      32997\r
-#define ID_DIR_MOVE_MIDDLE_TO_BROWSE    32998\r
-#define ID_DIR_MOVE_RIGHT_TO_BROWSE     32999\r
-#define ID_DIR_HIDE_FILENAMES           33000\r
-#define ID_DIR_ITEM_RENAME              33001\r
-#define ID_DIR_SHELL_CONTEXT_MENU_LEFT  33002\r
-#define ID_DIR_SHELL_CONTEXT_MENU_MIDDLE 33003\r
-#define ID_DIR_SHELL_CONTEXT_MENU_RIGHT 33004\r
+#define ID_DIR_MOVE_LEFT_TO_RIGHT       32997\r
+#define ID_DIR_MOVE_LEFT_TO_MIDDLE      32998\r
+#define ID_DIR_MOVE_LEFT_TO_BROWSE      32999\r
+#define ID_DIR_MOVE_MIDDLE_TO_LEFT      33000\r
+#define ID_DIR_MOVE_MIDDLE_TO_RIGHT     33001\r
+#define ID_DIR_MOVE_MIDDLE_TO_BROWSE    33002\r
+#define ID_DIR_MOVE_RIGHT_TO_LEFT       33003\r
+#define ID_DIR_MOVE_RIGHT_TO_MIDDLE     33004\r
+#define ID_DIR_MOVE_RIGHT_TO_BROWSE     33005\r
+#define ID_DIR_HIDE_FILENAMES           33006\r
+#define ID_DIR_ITEM_RENAME              33007\r
+#define ID_DIR_SHELL_CONTEXT_MENU_LEFT  33008\r
+#define ID_DIR_SHELL_CONTEXT_MENU_MIDDLE 33009\r
+#define ID_DIR_SHELL_CONTEXT_MENU_RIGHT 33010\r
 #define ID_DISPLAY_MOVED_NONE           33111\r
 #define ID_DISPLAY_MOVED_ALL            33112\r
 #define ID_LOCBAR_GOTODIFF              33114\r