src/gui_actions.cpp

changeset 553
2418d5955421
parent 551
0efe5dbcef07
child 554
2478a6b3106d
equal deleted inserted replaced
552:454f8b730946 553:2418d5955421
23 #include <QDialogButtonBox> 23 #include <QDialogButtonBox>
24 #include <QPushButton> 24 #include <QPushButton>
25 #include <QInputDialog> 25 #include <QInputDialog>
26 26
27 #include "gui.h" 27 #include "gui.h"
28 #include "file.h" 28 #include "document.h"
29 #include "history.h" 29 #include "history.h"
30 #include "configDialog.h" 30 #include "configDialog.h"
31 #include "addObjectDialog.h" 31 #include "addObjectDialog.h"
32 #include "misc.h" 32 #include "misc.h"
33 #include "gldraw.h" 33 #include "gldraw.h"
86 86
87 const str license = 87 const str license =
88 ui.rb_license_ca->isChecked() ? CALicense : 88 ui.rb_license_ca->isChecked() ? CALicense :
89 ui.rb_license_nonca->isChecked() ? NonCALicense : ""; 89 ui.rb_license_nonca->isChecked() ? NonCALicense : "";
90 90
91 LDFile::current()->addObjects ( 91 getCurrentDocument()->addObjects (
92 { new LDComment (ui.le_title->text()), 92 { new LDComment (ui.le_title->text()),
93 new LDComment ("Name: <untitled>.dat"), 93 new LDComment ("Name: <untitled>.dat"),
94 new LDComment (fmt ("Author: %1", ui.le_author->text())), 94 new LDComment (fmt ("Author: %1", ui.le_author->text())),
95 new LDComment (fmt ("!LDRAW_ORG Unofficial_Part")), 95 new LDComment (fmt ("!LDRAW_ORG Unofficial_Part")),
96 (license != "" ? 96 (license != "" ?
122 } 122 }
123 123
124 // ============================================================================= 124 // =============================================================================
125 // ----------------------------------------------------------------------------- 125 // -----------------------------------------------------------------------------
126 DEFINE_ACTION (Save, CTRL (S)) 126 DEFINE_ACTION (Save, CTRL (S))
127 { g_win->save (LDFile::current(), false); 127 { g_win->save (getCurrentDocument(), false);
128 } 128 }
129 129
130 // ============================================================================= 130 // =============================================================================
131 // ----------------------------------------------------------------------------- 131 // -----------------------------------------------------------------------------
132 DEFINE_ACTION (SaveAs, CTRL_SHIFT (S)) 132 DEFINE_ACTION (SaveAs, CTRL_SHIFT (S))
133 { g_win->save (LDFile::current(), true); 133 { g_win->save (getCurrentDocument(), true);
134 } 134 }
135 135
136 // ============================================================================= 136 // =============================================================================
137 // ----------------------------------------------------------------------------- 137 // -----------------------------------------------------------------------------
138 DEFINE_ACTION (SaveAll, CTRL (L)) 138 DEFINE_ACTION (SaveAll, CTRL (L))
139 { for (LDFile* file : g_loadedFiles) 139 { for (LDDocument* file : g_loadedFiles)
140 { if (file->isImplicit()) 140 { if (file->isImplicit())
141 continue; 141 continue;
142 142
143 g_win->save (file, false); 143 g_win->save (file, false);
144 } 144 }
145 } 145 }
146 146
147 // ============================================================================= 147 // =============================================================================
148 // ----------------------------------------------------------------------------- 148 // -----------------------------------------------------------------------------
149 DEFINE_ACTION (Close, CTRL (W)) 149 DEFINE_ACTION (Close, CTRL (W))
150 { if (!LDFile::current()->isSafeToClose()) 150 { if (!getCurrentDocument()->isSafeToClose())
151 return; 151 return;
152 152
153 delete LDFile::current(); 153 delete getCurrentDocument();
154 } 154 }
155 155
156 // ============================================================================= 156 // =============================================================================
157 // ----------------------------------------------------------------------------- 157 // -----------------------------------------------------------------------------
158 DEFINE_ACTION (CloseAll, 0) 158 DEFINE_ACTION (CloseAll, 0)
257 } 257 }
258 258
259 // ============================================================================= 259 // =============================================================================
260 // ----------------------------------------------------------------------------- 260 // -----------------------------------------------------------------------------
261 DEFINE_ACTION (SelectAll, CTRL (A)) 261 DEFINE_ACTION (SelectAll, CTRL (A))
262 { for (LDObject* obj : LDFile::current()->getObjects()) 262 { for (LDObject* obj : getCurrentDocument()->getObjects())
263 obj->select(); 263 obj->select();
264 264
265 g_win->updateSelection(); 265 g_win->updateSelection();
266 } 266 }
267 267
271 { int colnum = g_win->getSelectedColor(); 271 { int colnum = g_win->getSelectedColor();
272 272
273 if (colnum == -1) 273 if (colnum == -1)
274 return; // no consensus on color 274 return; // no consensus on color
275 275
276 LDFile::current()->clearSelection(); 276 getCurrentDocument()->clearSelection();
277 277
278 for (LDObject* obj : LDFile::current()->getObjects()) 278 for (LDObject* obj : getCurrentDocument()->getObjects())
279 if (obj->getColor() == colnum) 279 if (obj->getColor() == colnum)
280 obj->select(); 280 obj->select();
281 281
282 g_win->updateSelection(); 282 g_win->updateSelection();
283 } 283 }
303 for (LDObject* obj : selection()) 303 for (LDObject* obj : selection())
304 if (static_cast<LDSubfile*> (obj)->getFileInfo()->getName() != refName) 304 if (static_cast<LDSubfile*> (obj)->getFileInfo()->getName() != refName)
305 return; 305 return;
306 } 306 }
307 307
308 LDFile::current()->clearSelection(); 308 getCurrentDocument()->clearSelection();
309 309
310 for (LDObject* obj : LDFile::current()->getObjects()) 310 for (LDObject* obj : getCurrentDocument()->getObjects())
311 { if (obj->getType() != type) 311 { if (obj->getType() != type)
312 continue; 312 continue;
313 313
314 if (type == LDObject::Subfile && static_cast<LDSubfile*> (obj)->getFileInfo()->getName() != refName) 314 if (type == LDObject::Subfile && static_cast<LDSubfile*> (obj)->getFileInfo()->getName() != refName)
315 continue; 315 continue;
360 return; 360 return;
361 } 361 }
362 362
363 QList<LDObject*> objs = loadFileContents (&f, null); 363 QList<LDObject*> objs = loadFileContents (&f, null);
364 364
365 LDFile::current()->clearSelection(); 365 getCurrentDocument()->clearSelection();
366 366
367 for (LDObject* obj : objs) 367 for (LDObject* obj : objs)
368 { LDFile::current()->insertObj (idx, obj); 368 { getCurrentDocument()->insertObj (idx, obj);
369 obj->select(); 369 obj->select();
370 g_win->R()->compileObject (obj); 370 g_win->R()->compileObject (obj);
371 371
372 idx++; 372 idx++;
373 } 373 }
420 dlg->connect (bbx_buttons, SIGNAL (rejected()), dlg, SLOT (reject())); 420 dlg->connect (bbx_buttons, SIGNAL (rejected()), dlg, SLOT (reject()));
421 421
422 if (dlg->exec() == false) 422 if (dlg->exec() == false)
423 return; 423 return;
424 424
425 LDFile::current()->clearSelection(); 425 getCurrentDocument()->clearSelection();
426 426
427 for (str line : str (te_edit->toPlainText()).split ("\n")) 427 for (str line : str (te_edit->toPlainText()).split ("\n"))
428 { LDObject* obj = parseLine (line); 428 { LDObject* obj = parseLine (line);
429 429
430 LDFile::current()->insertObj (idx, obj); 430 getCurrentDocument()->insertObj (idx, obj);
431 obj->select(); 431 obj->select();
432 g_win->R()->compileObject (obj); 432 g_win->R()->compileObject (obj);
433 idx++; 433 idx++;
434 } 434 }
435 435
444 444
445 int w, h; 445 int w, h;
446 uchar* imgdata = g_win->R()->getScreencap (w, h); 446 uchar* imgdata = g_win->R()->getScreencap (w, h);
447 QImage img = imageFromScreencap (imgdata, w, h); 447 QImage img = imageFromScreencap (imgdata, w, h);
448 448
449 str root = basename (LDFile::current()->getName()); 449 str root = basename (getCurrentDocument()->getName());
450 450
451 if (root.right (4) == ".dat") 451 if (root.right (4) == ".dat")
452 root.chop (4); 452 root.chop (4);
453 453
454 str defaultname = (root.length() > 0) ? fmt ("%1.png", root) : ""; 454 str defaultname = (root.length() > 0) ? fmt ("%1.png", root) : "";
558 #if 0 558 #if 0
559 // This is a test to draw a dummy axle. Meant to be used as a primitive gallery, 559 // This is a test to draw a dummy axle. Meant to be used as a primitive gallery,
560 // but I can't figure how to generate these pictures properly. Multi-threading 560 // but I can't figure how to generate these pictures properly. Multi-threading
561 // these is an immense pain. 561 // these is an immense pain.
562 DEFINE_ACTION (testpic, "Test picture", "", "", (0)) 562 DEFINE_ACTION (testpic, "Test picture", "", "", (0))
563 { LDFile* file = getFile ("axle.dat"); 563 { LDDocument* file = getFile ("axle.dat");
564 setlocale (LC_ALL, "C"); 564 setlocale (LC_ALL, "C");
565 565
566 if (!file) 566 if (!file)
567 { critical ("couldn't load axle.dat"); 567 { critical ("couldn't load axle.dat");
568 return; 568 return;
623 623
624 if (selection().size() == 1) 624 if (selection().size() == 1)
625 defval = selection()[0]->getIndex(); 625 defval = selection()[0]->getIndex();
626 626
627 int idx = QInputDialog::getInt (null, "Go to line", "Go to line:", defval, 627 int idx = QInputDialog::getInt (null, "Go to line", "Go to line:", defval,
628 1, LDFile::current()->getObjectCount(), 1, &ok); 628 1, getCurrentDocument()->getObjectCount(), 1, &ok);
629 629
630 if (!ok || (obj = LDFile::current()->getObject (idx - 1)) == null) 630 if (!ok || (obj = getCurrentDocument()->getObject (idx - 1)) == null)
631 return; 631 return;
632 632
633 LDFile::current()->clearSelection(); 633 getCurrentDocument()->clearSelection();
634 obj->select(); 634 obj->select();
635 g_win->updateSelection(); 635 g_win->updateSelection();
636 } 636 }

mercurial