forked from LMMS/lmms
-
Notifications
You must be signed in to change notification settings - Fork 1
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
a #22
Merged
Merged
a #22
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Add Compressor effect
Prevents a segfault when attempting to copy construct an automation pattern with no track. Thanks to SeleDreams, Veratil, Dom.
* Rebase BaraMGB's Knife Co-authored-by: Steffen Baranowsky <BaraMGB@freenet.de> * Draw marker * Refactoring and shift mode * Allow resizing * Add Icon * Fix stuck marker on RMB, remove unnecessary cast * Remove redundant line, more const * Fix * Review fixes * Only perform split logic for SampleTCO * Add unquantizedModHeld function * missed one * Don't use copy/paste * Don't use copy/paste * More git troubles * Fix undo * git dammit * Cleaner solution? * Set cursor, add copy assignment to SampleBuffer * Add TODO comment * Make it build * Fixes from review * Make splitTCO virtual * Make splitTCO more generic Co-authored-by: IanCaio <iancaio_dev@hotmail.com> * Prevent resizing of MIDI clips in knife mode * Fix move/resize and rework box select via ctrl * Apply suggestions from code review. Co-authored-by: IanCaio <iancaio_dev@hotmail.com> * Don't show inaccurate/useless/empty text float in knife mode * Addresses Github review - Fixes a typo where QWidget::mousePressEvent was being called inside mouseReleaseEvent. - Avoids unnecessarily disabling journalling on the Split action, since it doesn't require it. * Revert format changes in Track * Revert format changes in Track.h * Revert formatting changes in Track.cpp Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com> Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
* Add changes extracted from microtonal PR * Apply suggestions from code review Co-authored-by: IanCaio <iancaio_dev@hotmail.com> * Apply suggestions from code review (adding oneliner spaces) Co-authored-by: IanCaio <iancaio_dev@hotmail.com> * Update src/gui/widgets/LcdFloatSpinBox.cpp Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com> * Apply suggestions from code review Co-authored-by: Dominic Clark <mrdomclark@gmail.com> * Implement suggestions from review * Reorder constructor parameters, remove old code for cursor movement and hiding from Lcd*SpinBoxes * Apply suggestions from code review Co-authored-by: IanCaio <iancaio_dev@hotmail.com> * Fix right margin width in seamless mode * Add explanation to border drawing code Co-authored-by: IanCaio <iancaio_dev@hotmail.com> Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com> Co-authored-by: Dominic Clark <mrdomclark@gmail.com>
* Button with menu has split highlight * Add menu with more action to quantize button * Style changes * Fix CSS length-zero-no-unit warning * Add combo button to classic theme
* Use MEMBER, not WRITE for mouseHotspot Q_PROPERTYs * Remove now-useless setMouseHotspot methods
* Init * Suggested changes by @IanCaio, thanks! * Selecting one file to import is enough. * Explicit use of TimePos in favour of int where expected, as suggested. * Make pattern import/export future proof with using DataFile instead of custom code to read/write the pattern file. * Remove unused/duplicate imports * Make import/export dialogs file-ext filter consistent. Co-authored-by: CYBERDEViL <cyberdevil@notabug.org>
Updates QuadratureLfo and moves to include/ Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com> Co-authored-by: Dave French <dave.french3@googlemail.com>
* Play automation pattern when midi controller connected * empty line removed * Improved for clarity * removed midi specific controller logic * formatting changes * comments added Co-authored-by: IanCaio <iancaio_dev@hotmail.com> Co-authored-by: IanCaio <iancaio_dev@hotmail.com>
* Adds a baseDir for the local path Adds a new Base for paths called "local:", which will translate to the dir where the currently opened project file is at. In the future this will allow us to make project bundles and make it easier to export and transfer projects to other people without breaking the paths to samples, presets, plugins and others. * Starts implementing the makeBundle functionality For now, to make a bundle LMMS has to be run through CLI with the makeBundle/--makeBundle command, followed by an input file and an output file ('lmms --makeBundle input.mmp output.mmp'). DataFile::writeBundle() is then called. For now, it only saves the mmp/mmpz file normally and also creates a "resources" folder if it doesn't exists. Later it will also manipulate the DataFile so all paths are local and copy all files to the resources folder. TODO: -Remove warnings. -Implement the logic to manipulate the DataFile and copy files. * Starts implementing logic to go through resources Starts implementing the logic that will go through all the resources of the project file and add them to the bundle. We use a std::map of QString to std::vector<QString>: The first string is the DOM element tagname that is going to be searched for. The vector of strings holds all attributes this element can have that accesses resources. For now we just print those to the screen. * Adds logic to copy files and update the project The raw logic for creating the bundle is finished. It now copies the resource files and update the project to use "local:" paths to the new file now. Now it's a matter of organizing things and adding safety checks for file operation errors basically. * Makes the writeBundle method more organized Improves comments and debugging warnings to make the writeBundle a bit more organized for review. * Adds a project bundle folder Adds a project bundle folder, inside which the bundles will be created. Instead of receiving an output project file name, the makeBundle command now receives a bundle name that will be used as the name of the bundle's folder. Uses a typedef for the std::map with the tags and attributes with resources. TODO: - Fix the local: prefix so it works when we don't have the project file open (for CLI usage, or find another way to deal with it). - Sanitize the bundle name. - Allow overwriting bundles? * Handles local paths when a project isn't open The PathUtil base prefix conversion for "local:" uses the loaded song file name. When we are running the makebundle command from the CLI there isn't a loaded project, so those prefixes aren't converted properly. Now, when there isn't a project open PathUtil will return "local:" again when it tries to convert this base prefix. DataFile can then check if the base prefix is still there, and if it is it knows the conversion wasn't possible, so it does the conversion itself. To do that, a member called m_fileName was added to DataFile, which will hold the file being manipulated if that's where the DataFile originated from, and the local path can be retrieved from it. * Sanitizes the bundle name The bundle name is now sanitized. Since it's going to be used as a folder name, we need to keep the user from giving invalid folder names as a bundle's name. The rules for the name are: 1) It must start with a word character (either a digit or letter) 2) It can be followed by any number of letters, digits, whitespaces or hyphens 3) It must end with a word character (either a digit or letter) A Regexp is used to check for the name validity. * Moves away from projectbundle folder concept This commit regresses some functionality. Project bundles will be saved just as any other project, except they will also have the resources folder. It will be up to the user to organize the bundles on their own folders. It's currently not allowed to save a bundle on a folder where there's one already though (if there's a resources folder already). Later it might be allowed to overwrite bundles in that case. The projectbundles folder was dropped. The user can save project bundles anywhere in the system. The DataFile::writeBundle was removed. It's functionality was merged into the DataFile::writeFile method, by adding a boolean on the parameters defining whether it should be saved with resources. The logic of copying the resource files and changing the paths inside the project DataFile was moved to DataFile::copyResources, making the methods a little bit less dense. * Adds an option to save project as bundle The "Save As" dialog now has an option to save project as a project bundle (with resources), which will save the file as a bundle. Known bug: - Because the "local:" base prefix is translated to the filename from the Engine::getSong(), it breaks when Song::guiSaveProjectAs is called, because that method changes the project name before saving. Urgent fix! * Fix local: prefix saving bug There was a bug where "local:" prefixes weren't resolved properly during saving because Song::guiSaveProjectAs() changed the project name to the destiny file name before saving. This resulted in the local paths using the destination file as a reference. Both Song::guiSaveProject() and Song::guiSaveProjectAs() were rewritten, and now they only rename the project after it's saved. * Adds a warning message box When the user tries to save a project bundle on a folder that already has a project bundle (contains a resources folder) a message box pops up telling the user it's not permitted and that another path should be chosen. * Removes unused header Forgot to remove <QRegExp> header when I removed the code that used it. * Removes Vestige plugins bundling For safety reasons, remove the possibility to bundle VSTs loaded through vestige. Also runs a safety check during the project being loaded (Song::loadProject) to check if either Vestige plugins or effect plugins are using local paths, and abort the project load if so. That is to avoid malicious code being run because of bad DLLs being shipped with a project file. * Extracts code from loadProject to another method Extracts code that checks if a DataFile contains local paths to plugins to another method inside DataFile. * Removes debug warnings Removes warnings previously used for debugging. Improves a warning message on PathUtil. * Fixes small bug with error logging Fixes small bug, where a QMessageBox was being used to prompt an error without checking if the gui is loaded first. Now we check for the GUI and if we are in CLI mode we use a QTextStream instead. * Saves the bundle in a newly created folder Now a folder with the project name is created inside which the bundle will be saved. This makes the process more convenient. Some save errors that previously only triggered qWarnings now trigger message boxes to warn the user of what happened (using a lambda function that either shows message boxes or trigger qWarnings depending whether a gui is present). Makes it so saving a bundle doesn't change the loaded project path, that way the user won't be able to accidentally "Save" over a bundle which should not be done for now. * Enhances the name conflict workaround Now, instead of replacing the resource names with meaningless numbers, the bundle save will just append a counter to the end of filenames that have been repeated. * Starts addressing Johannes review * Adds makebundle action to bash completion file Adds the bash completion code for the made bundle action. * Improves safety check on project files Now, instead of checking certain XML tags for local paths, DataFile::hasLocalPlugin() will return true if ANY tag that isn't on the RESOURCE_ELEMENTS list contains an attribute that starts with "local:". The method is now recursive so it can go through all XML tags during this check. * Addresses Spekular change request Uses basePrefix(Base::LocalDir) instead of "local:" on the return of unresolved local paths. * Makes hasLocalPlugins method const * Replaces literal uses of "local:" Instead of using "local:" we are now retrieving the base prefix from PathUtil, so if we change the prefix on the future we don't need to replace every mention to it as well. * Fix some comments on the header and cpp file * Changes variable on PathUtil to const Changes the retrieved pointer to the song object to a const pointer. * Leave doxygen comment on CPP file only There was 2 doxygen comments for the same method, on the header and CPP file. The latter was kept since it goes into more details about the functionality of the method. * Fix doxygen comment @param Fixes the doxygen comment from hasLocalPlugin(). * Remove assert statements Some assert statements were being done wrong and are probably even unnecessary for that piece of code, so they were removed. * Skips local paths when looking for shortest path PathUtil::toShortestRelative() was including the local paths on the candidate paths, which could lead to a unallowed resource (i.e.: vst plugin) to be assigned a local path even on a regular save. The local paths are now skipped when looking for the shortest relative path, since they should only be used by the bundle save on the allowed resources. * Address Spekular's review Changes some of the PathUtil methods to allow a boolean pointer to be used to return the status of the method, setting it to false if it failed somewhere. Also adds a parameter to toShortestRelative to either allow or forbid local paths in the search for the shortest relative path. * Replaces "ok" with "error"
On the AutomationPattern copy constructor, the automation nodes were copied from the origin pattern but their "owner pattern" pointers weren't updated. Thanks Dom for finding and reporting this bug.
* Added messagebox when user tries to delete track * Code review refactorings * Update Track.h * Changed message box title to "Confirm removal" * Merge changes from master * Add option to disable warning * Default to showing warning if no config found Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com> Co-authored-by: Spekular <Spekular@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.