zz_newPartDialog.cpp

changeset 76
42284126072a
child 79
f8917e9d07f6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zz_newPartDialog.cpp	Mon Apr 08 18:47:31 2013 +0300
@@ -0,0 +1,124 @@
+/*
+ *  LDForge: LDraw parts authoring CAD
+ *  Copyright (C) 2013 Santeri `arezey` Piippo
+ *  
+ *  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/>.
+ */
+
+#include <qgridlayout.h>
+#include "zz_newPartDialog.h"
+#include "file.h"
+
+// -------------------------------------
+enum {
+	LICENSE_CCAL,
+	LICENSE_NonCA,
+	LICENSE_None
+};
+
+// -------------------------------------
+enum {
+	BFCBOX_CCW,
+	BFCBOX_CW,
+	BFCBOX_None,
+};
+
+// =============================================================================
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+// =============================================================================
+NewPartDialog::NewPartDialog (QWidget* parent, Qt::WindowFlags f) : QDialog (parent, f) {
+	qLB_Icon = new QLabel;
+	qLB_Icon->setPixmap (QPixmap ("icons/brick.png"));
+	
+	qLB_NameLabel = new QLabel ("Name:");
+	qLE_Name = new QLineEdit;
+	qLE_Name->setMinimumWidth (320);
+	
+	qLB_AuthorLabel = new QLabel ("Author:");
+	qLE_Author = new QLineEdit;
+	
+	qLB_LicenseLabel = new QLabel ("License:");
+	qCB_LicenseBox = new QComboBox;
+	qCB_LicenseBox->addItems ({
+		"CCAL Redistributable",
+		"Non-redistributable",
+		"[none]",
+	});
+	
+	qLB_BFCLabel = new QLabel ("BFC:");
+	qCB_BFCBox = new QComboBox;
+	qCB_BFCBox->addItems ({
+		"CCW",
+		"CW",
+		"No winding"
+	});
+	
+	IMPLEMENT_DIALOG_BUTTONS
+	
+	QGridLayout* layout = new QGridLayout;
+	layout->addWidget (qLB_Icon, 0, 0);
+	layout->addWidget (qLB_NameLabel, 0, 1);
+	layout->addWidget (qLE_Name, 0, 2);
+	layout->addWidget (qLB_AuthorLabel, 1, 1);
+	layout->addWidget (qLE_Author, 1, 2);
+	layout->addWidget (qLB_LicenseLabel, 2, 1);
+	layout->addWidget (qCB_LicenseBox, 2, 2);
+	layout->addWidget (qLB_BFCLabel, 3, 1);
+	layout->addWidget (qCB_BFCBox, 3, 2);
+	layout->addWidget (qButtons, 4, 2);
+	
+	setLayout (layout);
+	setWindowIcon (QIcon ("icons/brick.png"));
+	setWindowTitle (APPNAME_DISPLAY " - new part");
+}
+
+// =============================================================================
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+// =============================================================================
+void NewPartDialog::StaticDialog () {
+	NewPartDialog dlg (g_qWindow);
+	if (dlg.exec ()) {
+		newFile ();
+		
+		short idx;
+		str zAuthor = dlg.qLE_Author->text ();
+		vector<LDObject*>& objs = g_CurrentFile->objects;
+		
+		idx = dlg.qCB_BFCBox->currentIndex ();
+		const LDBFCType_e eBFCType =
+			(idx == BFCBOX_CCW) ? BFC_CertifyCCW :
+			(idx == BFCBOX_CW) ? BFC_CertifyCW :
+			BFC_NoCertify;
+		
+		idx = dlg.qCB_LicenseBox->currentIndex ();
+		const char* sLicense =
+			(idx == LICENSE_CCAL) ? "Redistributable under CCAL version 2.0 : see CAreadme.txt" :
+			(idx == LICENSE_NonCA) ? "Not redistributable : see NonCAreadme.txt" :
+			nullptr;
+		
+		objs.push_back (new LDComment (dlg.qLE_Name->text ()));
+		objs.push_back (new LDComment ("Name: <untitled>.dat"));
+		objs.push_back (new LDComment (str::mkfmt ("Author: %s", zAuthor.chars())));
+		objs.push_back (new LDComment (str::mkfmt ("!LDRAW_ORG Unofficial_Part")));
+		
+		if (sLicense != nullptr)
+			objs.push_back (new LDComment (str::mkfmt ("!LICENSE %s", sLicense)));
+		
+		objs.push_back (new LDEmpty);
+		objs.push_back (new LDBFC (eBFCType));
+		objs.push_back (new LDEmpty);
+		
+		g_qWindow->refresh ();
+	}
+}
\ No newline at end of file

mercurial