Skip to content

Commit 3e3593d

Browse files
committed
Rename sketch folder only if proper name is slightly different
Takes into account Github-like transformations (projectName becomes projectName-branchName) Also changes user prompt to specify that it will move a whole folder.
1 parent b551bf5 commit 3e3593d

File tree

1 file changed

+43
-12
lines changed

1 file changed

+43
-12
lines changed

app/src/processing/app/Editor.java

+43-12
Original file line numberDiff line numberDiff line change
@@ -1793,6 +1793,7 @@ protected boolean handleOpenInternal(File sketchFile) {
17931793

17941794
} else {
17951795
String properParent = fileName.substring(0, fileName.length() - 4);
1796+
File properFolder;
17961797

17971798
Object[] options = {tr("OK"), tr("Cancel")};
17981799
String prompt = I18n.format(tr("The file \"{0}\" needs to be inside\n" +
@@ -1801,36 +1802,61 @@ protected boolean handleOpenInternal(File sketchFile) {
18011802
fileName,
18021803
properParent);
18031804

1804-
int result = JOptionPane.showOptionDialog(this, prompt, tr("Moving"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
1805+
properFolder = new File(sketchFile.getParent(), properParent);
1806+
1807+
int result;
1808+
if (parentFolderContainsSketchName(sketchFile, properParent)) {
1809+
1810+
// properFolder needs to be created one level above
1811+
properFolder = new File(new File(sketchFile.getParent()).getParent(), properParent);
1812+
1813+
// ask for different confirmation
1814+
prompt = I18n.format(tr("The file \"{0}\" needs to be inside\n" +
1815+
"a sketch folder named \"{1}\".\n" +
1816+
"Renaming folder \"{2}\" into \"{3}\"\n" +
1817+
"Continue?"),
1818+
fileName,
1819+
properParent,
1820+
sketchFile.getParent(),
1821+
properFolder);
1822+
1823+
result = JOptionPane.showOptionDialog(this, prompt, tr("Renaming"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
1824+
} else {
1825+
result = JOptionPane.showOptionDialog(this, prompt, tr("Moving"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
1826+
}
18051827

18061828
if (result != JOptionPane.YES_OPTION) {
18071829
return false;
18081830
}
18091831

1810-
// create properly named folder
1811-
File properFolder = new File(sketchFile.getParent(), properParent);
18121832
if (properFolder.exists()) {
18131833
Base.showWarning(tr("Error"), I18n.format(tr("A folder named \"{0}\" already exists. " +
18141834
"Can't open sketch."), properParent), null);
18151835
return false;
18161836
}
1817-
if (!properFolder.mkdirs()) {
1818-
//throw new IOException("Couldn't create sketch folder");
1819-
Base.showWarning(tr("Error"), tr("Could not create the sketch folder."), null);
1820-
return false;
1821-
}
1837+
18221838
// copy the sketch inside
18231839
File properPdeFile = new File(properFolder, sketchFile.getName());
18241840
try {
1825-
Base.copyFile(sketchFile, properPdeFile);
1841+
if (parentFolderContainsSketchName(sketchFile, properParent)) {
1842+
File dir = new File(sketchFile.getParent());
1843+
dir.renameTo(properFolder);
1844+
} else {
1845+
// Create folder
1846+
if (!properFolder.mkdirs()) {
1847+
//throw new IOException("Couldn't create sketch folder");
1848+
Base.showWarning(tr("Error"), tr("Could not create the sketch folder."), null);
1849+
return false;
1850+
}
1851+
Base.copyFile(sketchFile, properPdeFile);
1852+
// remove the original file, so user doesn't get confused
1853+
sketchFile.delete();
1854+
}
18261855
} catch (IOException e) {
18271856
Base.showWarning(tr("Error"), tr("Could not copy to a proper location."), e);
18281857
return false;
18291858
}
18301859

1831-
// remove the original file, so user doesn't get confused
1832-
sketchFile.delete();
1833-
18341860
// update with the new path
18351861
file = properPdeFile;
18361862

@@ -1853,6 +1879,11 @@ protected boolean handleOpenInternal(File sketchFile) {
18531879
return true;
18541880
}
18551881

1882+
private boolean parentFolderContainsSketchName(File sketchFile, String sketchName) {
1883+
String dir = sketchFile.getParent().toLowerCase();
1884+
return dir.contains(sketchName.toLowerCase());
1885+
}
1886+
18561887
public void updateTitle() {
18571888
if (sketchController == null) {
18581889
return;

0 commit comments

Comments
 (0)