| 27 |
27 |
| 28 // ============================================================================= |
28 // ============================================================================= |
| 29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| 30 // ============================================================================= |
30 // ============================================================================= |
| 31 HistoryDialog::HistoryDialog (QWidget* parent, Qt::WindowFlags f) : QDialog (parent, f) { |
31 HistoryDialog::HistoryDialog (QWidget* parent, Qt::WindowFlags f) : QDialog (parent, f) { |
| 32 qHistoryList = new QListWidget; |
32 historyList = new QListWidget; |
| 33 qUndoButton = new QPushButton ("Undo"); |
33 undoButton = new QPushButton ("Undo"); |
| 34 qRedoButton = new QPushButton ("Redo"); |
34 redoButton = new QPushButton ("Redo"); |
| 35 qClearButton = new QPushButton ("Clear"); |
35 clearButton = new QPushButton ("Clear"); |
| 36 qButtons = new QDialogButtonBox (QDialogButtonBox::Close); |
36 buttons = new QDialogButtonBox (QDialogButtonBox::Close); |
| 37 |
37 |
| 38 qHistoryList->setAlternatingRowColors (true); |
38 historyList->setAlternatingRowColors (true); |
| 39 |
39 |
| 40 qUndoButton->setIcon (getIcon ("undo")); |
40 undoButton->setIcon (getIcon ("undo")); |
| 41 qRedoButton->setIcon (getIcon ("redo")); |
41 redoButton->setIcon (getIcon ("redo")); |
| 42 |
42 |
| 43 connect (qUndoButton, SIGNAL (clicked ()), this, SLOT (slot_undo ())); |
43 connect (undoButton, SIGNAL (clicked ()), this, SLOT (slot_undo ())); |
| 44 connect (qRedoButton, SIGNAL (clicked ()), this, SLOT (slot_redo ())); |
44 connect (redoButton, SIGNAL (clicked ()), this, SLOT (slot_redo ())); |
| 45 connect (qClearButton, SIGNAL (clicked ()), this, SLOT (slot_clear ())); |
45 connect (clearButton, SIGNAL (clicked ()), this, SLOT (slot_clear ())); |
| 46 connect (qButtons, SIGNAL (rejected ()), this, SLOT (reject ())); |
46 connect (buttons, SIGNAL (rejected ()), this, SLOT (reject ())); |
| 47 connect (qHistoryList, SIGNAL (itemSelectionChanged ()), this, SLOT (slot_selChanged ())); |
47 connect (historyList, SIGNAL (itemSelectionChanged ()), this, SLOT (slot_selChanged ())); |
| 48 |
48 |
| 49 QVBoxLayout* qButtonLayout = new QVBoxLayout; |
49 QVBoxLayout* qButtonLayout = new QVBoxLayout; |
| 50 qButtonLayout->setDirection (QBoxLayout::TopToBottom); |
50 qButtonLayout->setDirection (QBoxLayout::TopToBottom); |
| 51 qButtonLayout->addWidget (qUndoButton); |
51 qButtonLayout->addWidget (undoButton); |
| 52 qButtonLayout->addWidget (qRedoButton); |
52 qButtonLayout->addWidget (redoButton); |
| 53 qButtonLayout->addWidget (qClearButton); |
53 qButtonLayout->addWidget (clearButton); |
| 54 qButtonLayout->addStretch (); |
54 qButtonLayout->addStretch (); |
| 55 |
55 |
| 56 QGridLayout* qLayout = new QGridLayout; |
56 QGridLayout* qLayout = new QGridLayout; |
| 57 qLayout->setColumnStretch (0, 1); |
57 qLayout->setColumnStretch (0, 1); |
| 58 qLayout->addWidget (qHistoryList, 0, 0, 2, 1); |
58 qLayout->addWidget (historyList, 0, 0, 2, 1); |
| 59 qLayout->addLayout (qButtonLayout, 0, 1); |
59 qLayout->addLayout (qButtonLayout, 0, 1); |
| 60 qLayout->addWidget (qButtons, 1, 1); |
60 qLayout->addWidget (buttons, 1, 1); |
| 61 |
61 |
| 62 setLayout (qLayout); |
62 setLayout (qLayout); |
| 63 setWindowIcon (getIcon ("history")); |
63 setWindowIcon (getIcon ("history")); |
| 64 setWindowTitle (APPNAME_DISPLAY " - Edit history"); |
64 setWindowTitle (APPNAME_DISPLAY " - Edit history"); |
| 65 |
65 |
| 70 |
70 |
| 71 // ============================================================================= |
71 // ============================================================================= |
| 72 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
72 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| 73 // ============================================================================= |
73 // ============================================================================= |
| 74 void HistoryDialog::populateList () { |
74 void HistoryDialog::populateList () { |
| 75 qHistoryList->clear (); |
75 historyList->clear (); |
| 76 |
76 |
| 77 QListWidgetItem* qItem = new QListWidgetItem; |
77 QListWidgetItem* qItem = new QListWidgetItem; |
| 78 qItem->setText ("[[ initial state ]]"); |
78 qItem->setText ("[[ initial state ]]"); |
| 79 qItem->setIcon (getIcon ("empty")); |
79 qItem->setIcon (getIcon ("empty")); |
| 80 qHistoryList->addItem (qItem); |
80 historyList->addItem (qItem); |
| 81 |
81 |
| 82 for (HistoryEntry* entry : History::entries) { |
82 for (HistoryEntry* entry : History::entries) { |
| 83 str zText; |
83 str zText; |
| 84 QIcon qEntryIcon; |
84 QIcon qEntryIcon; |
| 85 |
85 |
| 245 updateButtons (); |
245 updateButtons (); |
| 246 } |
246 } |
| 247 |
247 |
| 248 // ============================================================================= |
248 // ============================================================================= |
| 249 void HistoryDialog::updateButtons () { |
249 void HistoryDialog::updateButtons () { |
| 250 qUndoButton->setEnabled (ACTION_NAME (undo)->isEnabled ()); |
250 undoButton->setEnabled (ACTION (undo)->isEnabled ()); |
| 251 qRedoButton->setEnabled (ACTION_NAME (redo)->isEnabled ()); |
251 redoButton->setEnabled (ACTION (redo)->isEnabled ()); |
| 252 } |
252 } |
| 253 |
253 |
| 254 // ============================================================================= |
254 // ============================================================================= |
| 255 void HistoryDialog::slot_selChanged () { |
255 void HistoryDialog::slot_selChanged () { |
| 256 if (qHistoryList->selectedItems ().size () != 1) |
256 if (historyList->selectedItems ().size () != 1) |
| 257 return; |
257 return; |
| 258 |
258 |
| 259 QListWidgetItem* qItem = qHistoryList->selectedItems ()[0]; |
259 QListWidgetItem* qItem = historyList->selectedItems ()[0]; |
| 260 |
260 |
| 261 // Find the index of the edit |
261 // Find the index of the edit |
| 262 long lIdx; |
262 long lIdx; |
| 263 for (lIdx = 0; lIdx < qHistoryList->count (); ++lIdx) |
263 for (lIdx = 0; lIdx < historyList->count (); ++lIdx) |
| 264 if (qHistoryList->item (lIdx) == qItem) |
264 if (historyList->item (lIdx) == qItem) |
| 265 break; |
265 break; |
| 266 |
266 |
| 267 // qHistoryList is 0-based, History is -1-based, thus decrement |
267 // qHistoryList is 0-based, History is -1-based, thus decrement |
| 268 // the index now |
268 // the index now |
| 269 lIdx--; |
269 lIdx--; |