/******************************************************************************* * This is part of SketchChair, an open-source tool for designing your own furniture. * www.sketchchair.cc * * Copyright (C) 2012, Diatom Studio ltd. Contact: hello@diatom.cc * * 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 3 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. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package cc.sketchchair.core; import java.awt.FileDialog; import java.io.File; import java.util.ArrayList; import java.util.List; import ModalGUI.GUIButton; /** * A class used for the developer to perform automated actions on a folder of chair designs. * For example to export thumbnails for each design in a folder. Useful to test compatibility of new features with old design files. * @author gregsaul * */ public class SkchAutamata { String folder; public boolean readyToStart = false; List<String> filesToProcess = new ArrayList<String>(); int currentPos = 0; String selectFolder() { System.setProperty("apple.awt.fileDialogForDirectories", "true"); FileDialog fd = new FileDialog(GLOBAL.applet.frame, "open", FileDialog.LOAD); String currentDir = new File(".").getAbsolutePath(); fd.setLocation(50, 50); fd.pack(); fd.show(); System.setProperty("apple.awt.fileDialogForDirectories", "false"); if (fd.getDirectory() != null) { return fd.getDirectory() + fd.getFile(); } else { return ""; } } void start() { this.folder = selectFolder(); this.readyToStart = true; if (this.folder != "") { this.loadChairs(); } } void loadChairs() { filesToProcess.clear(); currentPos = 0; File fp = new File(folder); if (!fp.isDirectory()) return; GUIButton button = null; String dirContence[] = fp.list(); for (int i = 0; i < dirContence.length; i++) { String path = folder + "/" + dirContence[i]; int dot = path.lastIndexOf("."); String ext = path.substring(dot + 1); if (ext.equals("skchr")) { filesToProcess.add(path); } } } boolean hasChairToProcess(){ return currentPos < filesToProcess.size(); } void processNext(){ if(currentPos < filesToProcess.size()){ loadChair(filesToProcess.get(currentPos)); currentPos++; } } void loadChair(String path) { GLOBAL.sketchChairs.killAll(); GLOBAL.uiTools.load(path); if (GLOBAL.sketchChairs.getCurChair() != null) { runAction(GLOBAL.sketchChairs.getCurChair(), path); } } void runAction(SketchChair skchChair, String location) { LOGGER.info("SkchAutomata Processing: " +location); int slash = location.lastIndexOf("/"); skchChair.setPlaneWidth(1.5f); skchChair.build(); //GLOBAL.uiTools.saveChairToFileAuto(null); SketchChairCloudhook.getInstance().ShareChairOnline(null); /* String baseFolder = location.substring(0, slash+1); String fileName = location.substring(slash+1, location.length()); // GLOBAL.uiTools.camJumpIso(null); int previewWidth = GLOBAL.applet.width; int previewHeight = GLOBAL.applet.width; //GLOBAL.cropExportToScreen = true; String saveLocation = baseFolder+"previews/"+ fileName+ ".render.profile.png"; //LOGGER.info("baseFolder "+baseFolder + " fileName " + fileName); //LOGGER.info("loc"+saveLocation); //skchChair.renderDiagram(previewWidth,previewHeight,true).save(saveLocation); GLOBAL.pngPreviewSaveLocation = saveLocation; GLOBAL.exportPreviewPNG = true; */ } }