-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add Undo/Redo History #7821
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add Undo/Redo History #7821
Changes from 4 commits
9ebcbb4
b01a2c3
2a273ad
2c6d9de
04c0c82
378106a
2fba3ac
6e4ec76
92b212c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
/* | ||
* UndoRedoMenu.h | ||
* | ||
* Copyright (c) 2004-2022 Tobias Doerffel <tobydox/at/users.sourceforge.net> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wrong copyright? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think I left it like that since I basically copied the code from another file and just changed some things, so I wasn't sure if I should put me as the author. Maybe I should also add myself? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You could add yourself, to me it seems like you contributed to the file not small amounts. |
||
* | ||
* This file is part of LMMS - https://lmms.io | ||
* | ||
* 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. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public | ||
* License along with this program (see COPYING); if not, write to the | ||
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
* Boston, MA 02110-1301 USA. | ||
* | ||
*/ | ||
|
||
#ifndef LMMS_GUI_UNDO_REDO_MENU_H | ||
#define LMMS_GUI_UNDO_REDO_MENU_H | ||
|
||
#include <QMenu> | ||
#include <QTreeWidget> | ||
#include <QTextEdit> | ||
|
||
#include "SideBarWidget.h" | ||
#include "ProjectJournal.h" | ||
|
||
namespace lmms::gui | ||
{ | ||
|
||
class UndoRedoTreeWidget; | ||
|
||
class UndoRedoMenu : public SideBarWidget | ||
{ | ||
Q_OBJECT | ||
public: | ||
UndoRedoMenu(QWidget *parent = nullptr); | ||
regulus79 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
private slots: | ||
void reloadTree(); | ||
private: | ||
UndoRedoTreeWidget* m_undoRedoTree; | ||
}; | ||
|
||
class UndoRedoTreeWidget : public QTreeWidget | ||
{ | ||
Q_OBJECT | ||
public: | ||
UndoRedoTreeWidget(QWidget * parent); | ||
~UndoRedoTreeWidget() override = default; | ||
protected: | ||
void contextMenuEvent(QContextMenuEvent * e) override; | ||
private: | ||
void applyUndoRedoEntry(QTreeWidgetItem * item, int column); | ||
regulus79 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
}; | ||
|
||
class UndoRedoTreeWidgetItem : public QTreeWidgetItem | ||
{ | ||
public: | ||
UndoRedoTreeWidgetItem(QTreeWidget* parent, ProjectJournal::CheckPoint* cp, int index, bool isUndo); | ||
private: | ||
int m_index; | ||
bool m_isUndo; | ||
ProjectJournal::CheckPoint* m_checkpoint; | ||
friend class UndoRedoTreeWidget; | ||
}; | ||
|
||
class UndoRedoMenuDetailsWindow : public QTextEdit | ||
{ | ||
Q_OBJECT | ||
public: | ||
UndoRedoMenuDetailsWindow(QString text); | ||
}; | ||
|
||
|
||
} // namespace lmms::gui | ||
|
||
#endif // LMMS_GUI_UNDO_REDO_MENU_H |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,11 +55,11 @@ JournallingObject::~JournallingObject() | |
|
||
|
||
|
||
void JournallingObject::addJournalCheckPoint() | ||
void JournallingObject::addJournalCheckPoint(QString reason) | ||
{ | ||
if( isJournalling() ) | ||
{ | ||
Engine::projectJournal()->addJournalCheckPoint( this ); | ||
Engine::projectJournal()->addJournalCheckPoint(this, reason); | ||
regulus79 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
} | ||
|
||
|
@@ -97,7 +97,7 @@ void JournallingObject::restoreState( const QDomElement & _this ) | |
QDomNode node = _this.firstChild(); | ||
while( !node.isNull() ) | ||
{ | ||
if( node.isElement() && node.nodeName() == "journal" ) | ||
if(node.isElement() && node.nodeName() == "journallingObject") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While I do not like the feature necessarily, since you fixed a bug I should give actionable feedback. I would try using There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I can if you want, although to be fair that string is only used twice, both times in There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This disregards the fact that the code can change at any point. Looking at code as a fixed entity at a fixed point in time is not a good idea. It's also just good practice. You'd be surprised at how small changes like this can add up and help. You generally do not want to use magic string literals.. case in point, bugs like this happen. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Alright, I have added a |
||
{ | ||
const jo_id_t new_id = node.toElement().attribute( "id" ).toInt(); | ||
if( new_id ) | ||
|
Uh oh!
There was an error while loading. Please reload this page.