diff --git a/doc/ChangeLog b/doc/ChangeLog index a10c7c942..c006d622b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,10 @@ 2011-06-20 Vadim Kurland + * ObjectManipulator_slots.cpp (forward): see #2493 implemented + "forward" function in addition to the "back" function, added + a button to the roolbar, using new icons for Back and Forward + buttons. + * src.pro (SUBDIRS): see #2477 removed transfer agent code. diff --git a/src/libgui/FWBMainWindow_q.ui b/src/libgui/FWBMainWindow_q.ui index 8e5cb010e..49b0e9027 100644 --- a/src/libgui/FWBMainWindow_q.ui +++ b/src/libgui/FWBMainWindow_q.ui @@ -65,16 +65,7 @@ - - 2 - - - 2 - - - 2 - - + 2 @@ -720,6 +711,8 @@ + + @@ -732,7 +725,7 @@ 0 0 1124 - 25 + 20 @@ -1111,7 +1104,7 @@ - :/Icons/back_32.png:/Icons/back_32.png + :/Icons/back_25.png:/Icons/back_25.png Back @@ -1375,6 +1368,18 @@ Discover networks and hosts using SNMP + + + + :/Icons/forward_25.png:/Icons/forward_25.png + + + Forward + + + Move forward to the next object + + @@ -2302,6 +2307,22 @@ + + forwardAction + triggered() + FWBMainWindow_q + forward() + + + -1 + -1 + + + 561 + 422 + + + clearRecentFilesMenu() @@ -2318,5 +2339,6 @@ toolsImportAddressesFromFile() toolsSNMPDiscovery() back() + forward() diff --git a/src/libgui/FWWindow.cpp b/src/libgui/FWWindow.cpp index ba2f5e274..b87ca62a8 100644 --- a/src/libgui/FWWindow.cpp +++ b/src/libgui/FWWindow.cpp @@ -259,12 +259,6 @@ FWWindow::FWWindow() : QMainWindow(), // QMainWindow(NULL, Qt::Desktop), connect(current_version_http_getter, SIGNAL(done(const QString&)), this, SLOT(checkForUpgrade(const QString&))); - // connect( m_mainWindow->newObjectAction, SIGNAL( triggered() ), - // this, SLOT(newObject() ) ); - - // connect( m_mainWindow->backAction, SIGNAL( triggered() ), - // this, SLOT(back() ) ); - connect( m_mainWindow->findAction, SIGNAL( triggered() ), this, SLOT(search()) ); diff --git a/src/libgui/FWWindow.h b/src/libgui/FWWindow.h index b702aa217..e8045627d 100644 --- a/src/libgui/FWWindow.h +++ b/src/libgui/FWWindow.h @@ -151,7 +151,8 @@ public slots: void editorPanelTabChanged(int); void back(); - + void forward(); + void minimize(); void maximize(); diff --git a/src/libgui/FWWindow_wrappers.cpp b/src/libgui/FWWindow_wrappers.cpp index fb6fe9835..98e4744a3 100644 --- a/src/libgui/FWWindow_wrappers.cpp +++ b/src/libgui/FWWindow_wrappers.cpp @@ -385,6 +385,11 @@ void FWWindow::back() if (activeProject()) activeProject()->back(); } +void FWWindow::forward() +{ + if (activeProject()) activeProject()->forward(); +} + void FWWindow::newObject() { if (activeProject()) diff --git a/src/libgui/Icons/back_25.png b/src/libgui/Icons/back_25.png index d1f3273f4..59654246c 100644 Binary files a/src/libgui/Icons/back_25.png and b/src/libgui/Icons/back_25.png differ diff --git a/src/libgui/Icons/forward_25.png b/src/libgui/Icons/forward_25.png new file mode 100644 index 000000000..dc84a4de5 Binary files /dev/null and b/src/libgui/Icons/forward_25.png differ diff --git a/src/libgui/MainRes.qrc b/src/libgui/MainRes.qrc index a05e86a47..cb3594f7a 100644 --- a/src/libgui/MainRes.qrc +++ b/src/libgui/MainRes.qrc @@ -1,268 +1,268 @@ - + + Icons/back_25.png + Icons/forward_25.png Images/fwbuilder3-256x256-fade.png Images/fwbuilder3-256x256.png Images/fwbuilder3-72x72.png Images/network_zone_dialog.png Images/logo1.png Images/library_switch_screenshot.png - Icons/import_64_1.png - Icons/inspect.png - Icons/tutorial_64.png + Icons/import_64_1.png + Icons/inspect.png + Icons/tutorial_64.png Icons/tutorial_64_1.png - Icons/accept_25.png - Icons/accept_64.png - Icons/accept_16.png - Icons/accounting_25.png - Icons/accounting_64.png - Icons/accounting_16.png - Icons/rangeaddress_25.png - Icons/rangeaddress_64.png - Icons/rangeaddress-neg_25.png - Icons/rangeaddress-neg_16.png - Icons/rangeaddress-ref_25.png - Icons/rangeaddress_16.png - Icons/addresstable_25.png - Icons/addresstable_64.png - Icons/addresstable-neg_25.png - Icons/addresstable-neg_16.png - Icons/addresstable-ref_25.png - Icons/addresstable_16.png - Icons/network_25.png - Icons/network_64.png - Icons/network-neg_25.png - Icons/network-neg_16.png - Icons/network-ref_25.png - Icons/network_16.png - Icons/blank.png - Icons/blank.png - Icons/both_25.png - Icons/both_64.png - Icons/both_16.png - Icons/branch_25.png - Icons/branch_64.png - Icons/branch_16.png - Icons/classify_25.png - Icons/classify_64.png - Icons/classify_16.png - Icons/cluster_25.png - Icons/cluster_64.png - Icons/cluster-neg_25.png - Icons/cluster-neg_16.png - Icons/cluster-ref_25.png - Icons/cluster_16.png - Icons/user_25.png - Icons/user_64.png - Icons/user-neg_25.png - Icons/user-ref_25.png - Icons/user_16.png - Icons/compile_25.png - Icons/continue_25.png - Icons/continue_64.png - Icons/continue_16.png - Icons/custom_25.png - Icons/custom_64.png - Icons/custom_16.png - Icons/service-custom_25.png - Icons/service-custom_64.png - Icons/service-custom-neg_25.png - Icons/service-custom-neg_16.png - Icons/service-custom-ref_25.png - Icons/service-custom_16.png - Icons/domainname_25.png - Icons/domainname_64.png - Icons/domainname-neg_25.png - Icons/domainname-neg_16.png - Icons/domainname-ref_25.png - Icons/domainname_16.png - Icons/deny_25.png - Icons/deny_64.png - Icons/deny_16.png - Icons/failover-cluster-group_25.png - Icons/failover-cluster-group_64.png - Icons/failover-cluster-group-neg_25.png - Icons/failover-cluster-group-neg_16.png - Icons/failover-cluster-group-ref_25.png - Icons/failover-cluster-group_16.png - Icons/firewall_25.png - Icons/firewall_64.png - Icons/firewall-neg_25.png - Icons/firewall-neg_16.png - Icons/firewall-ref_25.png - Icons/firewall_16.png - Icons/host_25.png - Icons/host_64.png - Icons/host-neg_25.png - Icons/host-neg_16.png - Icons/host-ref_25.png - Icons/host_16.png - Icons/service-icmp6_25.png - Icons/service-icmp6_64.png - Icons/service-icmp6-neg_25.png - Icons/service-icmp6-neg_16.png - Icons/service-icmp6-ref_25.png - Icons/service-icmp6_16.png - Icons/service-icmp_25.png - Icons/service-icmp_64.png - Icons/service-icmp-neg_25.png - Icons/service-icmp-neg_16.png - Icons/service-icmp-ref_25.png - Icons/service-icmp_16.png - Icons/service-ip_25.png - Icons/service-ip_64.png - Icons/service-ip-neg_25.png - Icons/service-ip-neg_16.png - Icons/service-ip-ref_25.png - Icons/service-ip_16.png - Icons/address_25.png - Icons/address_64.png - Icons/address-neg_25.png - Icons/address-neg_16.png - Icons/address-ref_25.png - Icons/address_16.png - Icons/address6_25.png - Icons/address6_64.png - Icons/address6-neg_25.png - Icons/address6-neg_16.png - Icons/address6-ref_25.png - Icons/address6_16.png - Icons/inbound_25.png - Icons/inbound_64.png - Icons/inbound_16.png - Icons/install_25.png - Icons/interface_25.png - Icons/interface_64.png - Icons/interface-neg_25.png - Icons/interface-neg_16.png - Icons/interface-ref_25.png - Icons/interface_16.png - Icons/clock_25.png - Icons/clock_64.png - Icons/clock-neg_25.png - Icons/clock-neg_16.png - Icons/clock-ref_25.png - Icons/clock_16.png - Icons/clock-group_25.png - Icons/clock-group_64.png - Icons/clock-group-neg_25.png - Icons/clock-group-neg_16.png - Icons/clock-group-ref_25.png - Icons/clock-group_16.png - Icons/library_25.png - Icons/library_64.png - Icons/library-neg_25.png - Icons/library-neg_16.png - Icons/library-ref_25.png - Icons/library_16.png - Icons/log_25.png - Icons/log_64.png - Icons/log_16.png - Icons/nat_25.png - Icons/nat_64.png - Icons/nat_16.png - Icons/branch_25.png - Icons/branch_64.png - Icons/branch_16.png - Icons/network_25.png - Icons/network_64.png - Icons/network-neg_25.png - Icons/network-neg_16.png - Icons/network-ref_25.png - Icons/network_16.png - Icons/network6_25.png - Icons/network6_64.png - Icons/network6-neg_25.png - Icons/network6-neg_16.png - Icons/network6-ref_25.png - Icons/network6_16.png - Icons/object-group_25.png - Icons/object-group_64.png - Icons/object-group-neg_25.png - Icons/object-group-neg_16.png - Icons/object-group-ref_25.png - Icons/object-group_16.png - - Icons/object-group_25.png - Icons/object-group_64.png - Icons/object-group-neg_25.png - Icons/object-group-neg_16.png - Icons/object-group-ref_25.png - Icons/object-group_16.png - - Icons/options_25.png - Icons/options_64.png - Icons/options_16.png - Icons/outbound_25.png - Icons/outbound_64.png - Icons/outbound_16.png - Icons/pipe_25.png - Icons/pipe_64.png - Icons/pipe_16.png - Icons/ruleset_25.png - Icons/ruleset_64.png - Icons/ruleset_16.png - Icons/reject_25.png - Icons/reject_64.png - Icons/reject_16.png - Icons/back_25.png - Icons/route_25.png - Icons/route_64.png - Icons/route_16.png - Icons/routing_25.png - Icons/routing_64.png - Icons/routing_16.png - Icons/service-group_25.png - Icons/service-group_64.png - Icons/service-group-neg_25.png - Icons/service-group-neg_16.png - Icons/service-group-ref_25.png - Icons/service-group_16.png - Icons/state-sync-cluster-group_25.png - Icons/state-sync-cluster-group_64.png - Icons/state-sync-cluster-group-neg_25.png - Icons/state-sync-cluster-group-neg_16.png - Icons/state-sync-cluster-group-ref_25.png - Icons/state-sync-cluster-group_16.png - Icons/folder_25.png - Icons/folder_64.png - Icons/folder_16.png - Icons/service-tcp_25.png - Icons/service-tcp_64.png - Icons/service-tcp-neg_25.png - Icons/service-tcp-neg_16.png - Icons/service-tcp-ref_25.png - Icons/service-tcp_16.png - Icons/tag_25.png - Icons/tag_64.png - Icons/tag_16.png - Icons/service-tag_25.png - Icons/service-tag_64.png - Icons/service-tag-neg_25.png - Icons/service-tag-neg_16.png - Icons/service-tag-ref_25.png - Icons/service-tag_16.png - Icons/translate_25.png - Icons/translate_16.png - Icons/service-udp_25.png - Icons/service-udp_64.png - Icons/service-udp-neg_25.png - Icons/service-udp-neg_16.png - Icons/service-udp-ref_25.png - Icons/service-udp_16.png - Icons/user_25.png - Icons/user_64.png - Icons/user-neg_25.png - Icons/user-neg_16.png - Icons/user-ref_25.png - Icons/user_16.png - Icons/lock.png - Icons/neg.png - Icons/neg2.png - Icons/physaddress_25.png - Icons/physaddress_64.png - Icons/physaddress-neg_25.png - Icons/physaddress-ref_25.png - Icons/physaddress_16.png + Icons/accept_25.png + Icons/accept_64.png + Icons/accept_16.png + Icons/accounting_25.png + Icons/accounting_64.png + Icons/accounting_16.png + Icons/rangeaddress_25.png + Icons/rangeaddress_64.png + Icons/rangeaddress-neg_25.png + Icons/rangeaddress-neg_16.png + Icons/rangeaddress-ref_25.png + Icons/rangeaddress_16.png + Icons/addresstable_25.png + Icons/addresstable_64.png + Icons/addresstable-neg_25.png + Icons/addresstable-neg_16.png + Icons/addresstable-ref_25.png + Icons/addresstable_16.png + Icons/network_25.png + Icons/network_64.png + Icons/network-neg_25.png + Icons/network-neg_16.png + Icons/network-ref_25.png + Icons/network_16.png + Icons/blank.png + Icons/blank.png + Icons/both_25.png + Icons/both_64.png + Icons/both_16.png + Icons/branch_25.png + Icons/branch_64.png + Icons/branch_16.png + Icons/classify_25.png + Icons/classify_64.png + Icons/classify_16.png + Icons/cluster_25.png + Icons/cluster_64.png + Icons/cluster-neg_25.png + Icons/cluster-neg_16.png + Icons/cluster-ref_25.png + Icons/cluster_16.png + Icons/user_25.png + Icons/user_64.png + Icons/user-neg_25.png + Icons/user-ref_25.png + Icons/user_16.png + Icons/compile_25.png + Icons/continue_25.png + Icons/continue_64.png + Icons/continue_16.png + Icons/custom_25.png + Icons/custom_64.png + Icons/custom_16.png + Icons/service-custom_25.png + Icons/service-custom_64.png + Icons/service-custom-neg_25.png + Icons/service-custom-neg_16.png + Icons/service-custom-ref_25.png + Icons/service-custom_16.png + Icons/domainname_25.png + Icons/domainname_64.png + Icons/domainname-neg_25.png + Icons/domainname-neg_16.png + Icons/domainname-ref_25.png + Icons/domainname_16.png + Icons/deny_25.png + Icons/deny_64.png + Icons/deny_16.png + Icons/failover-cluster-group_25.png + Icons/failover-cluster-group_64.png + Icons/failover-cluster-group-neg_25.png + Icons/failover-cluster-group-neg_16.png + Icons/failover-cluster-group-ref_25.png + Icons/failover-cluster-group_16.png + Icons/firewall_25.png + Icons/firewall_64.png + Icons/firewall-neg_25.png + Icons/firewall-neg_16.png + Icons/firewall-ref_25.png + Icons/firewall_16.png + Icons/host_25.png + Icons/host_64.png + Icons/host-neg_25.png + Icons/host-neg_16.png + Icons/host-ref_25.png + Icons/host_16.png + Icons/service-icmp6_25.png + Icons/service-icmp6_64.png + Icons/service-icmp6-neg_25.png + Icons/service-icmp6-neg_16.png + Icons/service-icmp6-ref_25.png + Icons/service-icmp6_16.png + Icons/service-icmp_25.png + Icons/service-icmp_64.png + Icons/service-icmp-neg_25.png + Icons/service-icmp-neg_16.png + Icons/service-icmp-ref_25.png + Icons/service-icmp_16.png + Icons/service-ip_25.png + Icons/service-ip_64.png + Icons/service-ip-neg_25.png + Icons/service-ip-neg_16.png + Icons/service-ip-ref_25.png + Icons/service-ip_16.png + Icons/address_25.png + Icons/address_64.png + Icons/address-neg_25.png + Icons/address-neg_16.png + Icons/address-ref_25.png + Icons/address_16.png + Icons/address6_25.png + Icons/address6_64.png + Icons/address6-neg_25.png + Icons/address6-neg_16.png + Icons/address6-ref_25.png + Icons/address6_16.png + Icons/inbound_25.png + Icons/inbound_64.png + Icons/inbound_16.png + Icons/install_25.png + Icons/interface_25.png + Icons/interface_64.png + Icons/interface-neg_25.png + Icons/interface-neg_16.png + Icons/interface-ref_25.png + Icons/interface_16.png + Icons/clock_25.png + Icons/clock_64.png + Icons/clock-neg_25.png + Icons/clock-neg_16.png + Icons/clock-ref_25.png + Icons/clock_16.png + Icons/clock-group_25.png + Icons/clock-group_64.png + Icons/clock-group-neg_25.png + Icons/clock-group-neg_16.png + Icons/clock-group-ref_25.png + Icons/clock-group_16.png + Icons/library_25.png + Icons/library_64.png + Icons/library-neg_25.png + Icons/library-neg_16.png + Icons/library-ref_25.png + Icons/library_16.png + Icons/log_25.png + Icons/log_64.png + Icons/log_16.png + Icons/nat_25.png + Icons/nat_64.png + Icons/nat_16.png + Icons/branch_25.png + Icons/branch_64.png + Icons/branch_16.png + Icons/network_25.png + Icons/network_64.png + Icons/network-neg_25.png + Icons/network-neg_16.png + Icons/network-ref_25.png + Icons/network_16.png + Icons/network6_25.png + Icons/network6_64.png + Icons/network6-neg_25.png + Icons/network6-neg_16.png + Icons/network6-ref_25.png + Icons/network6_16.png + Icons/object-group_25.png + Icons/object-group_64.png + Icons/object-group-neg_25.png + Icons/object-group-neg_16.png + Icons/object-group-ref_25.png + Icons/object-group_16.png + Icons/object-group_25.png + Icons/object-group_64.png + Icons/object-group-neg_25.png + Icons/object-group-neg_16.png + Icons/object-group-ref_25.png + Icons/object-group_16.png + Icons/options_25.png + Icons/options_64.png + Icons/options_16.png + Icons/outbound_25.png + Icons/outbound_64.png + Icons/outbound_16.png + Icons/pipe_25.png + Icons/pipe_64.png + Icons/pipe_16.png + Icons/ruleset_25.png + Icons/ruleset_64.png + Icons/ruleset_16.png + Icons/reject_25.png + Icons/reject_64.png + Icons/reject_16.png + Icons/back_25.png + Icons/route_25.png + Icons/route_64.png + Icons/route_16.png + Icons/routing_25.png + Icons/routing_64.png + Icons/routing_16.png + Icons/service-group_25.png + Icons/service-group_64.png + Icons/service-group-neg_25.png + Icons/service-group-neg_16.png + Icons/service-group-ref_25.png + Icons/service-group_16.png + Icons/state-sync-cluster-group_25.png + Icons/state-sync-cluster-group_64.png + Icons/state-sync-cluster-group-neg_25.png + Icons/state-sync-cluster-group-neg_16.png + Icons/state-sync-cluster-group-ref_25.png + Icons/state-sync-cluster-group_16.png + Icons/folder_25.png + Icons/folder_64.png + Icons/folder_16.png + Icons/service-tcp_25.png + Icons/service-tcp_64.png + Icons/service-tcp-neg_25.png + Icons/service-tcp-neg_16.png + Icons/service-tcp-ref_25.png + Icons/service-tcp_16.png + Icons/tag_25.png + Icons/tag_64.png + Icons/tag_16.png + Icons/service-tag_25.png + Icons/service-tag_64.png + Icons/service-tag-neg_25.png + Icons/service-tag-neg_16.png + Icons/service-tag-ref_25.png + Icons/service-tag_16.png + Icons/translate_25.png + Icons/translate_16.png + Icons/service-udp_25.png + Icons/service-udp_64.png + Icons/service-udp-neg_25.png + Icons/service-udp-neg_16.png + Icons/service-udp-ref_25.png + Icons/service-udp_16.png + Icons/user_25.png + Icons/user_64.png + Icons/user-neg_25.png + Icons/user-neg_16.png + Icons/user-ref_25.png + Icons/user_16.png + Icons/lock.png + Icons/neg.png + Icons/neg2.png + Icons/physaddress_25.png + Icons/physaddress_64.png + Icons/physaddress-neg_25.png + Icons/physaddress-ref_25.png + Icons/physaddress_16.png Icons/add.png Icons/apply.png Icons/back_32.png diff --git a/src/libgui/ObjectManipulator.cpp b/src/libgui/ObjectManipulator.cpp index c042bb8a7..de7276cee 100644 --- a/src/libgui/ObjectManipulator.cpp +++ b/src/libgui/ObjectManipulator.cpp @@ -1260,10 +1260,10 @@ void ObjectManipulator::selectionChanged(QTreeWidgetItem *cur) FWObject *o = obj; //if (FWReference::cast(o)!=NULL) o=FWReference::cast(o)->getPointer(); - if (history.empty() || otvi!=history.back().item() ) + if (history.empty() || otvi != getCurrentHistoryItem() ) { mw->enableBackAction(); - history.push_back( HistoryItem(otvi, o->getId()) ); + addObjectToHistory(otvi, o); } //currentObj = obj; diff --git a/src/libgui/ObjectManipulator.h b/src/libgui/ObjectManipulator.h index da5b54e84..a701ec8fd 100644 --- a/src/libgui/ObjectManipulator.h +++ b/src/libgui/ObjectManipulator.h @@ -98,6 +98,7 @@ class ObjectManipulator : public QWidget int previous_lib_index; QSet ids ; std::list history; + std::list::iterator current_history_item; int cacheHits; //libfwbuilder::FWObject *currentObj; @@ -120,7 +121,7 @@ class ObjectManipulator : public QWidget int dedup_marker_global_counter; void buildNewObjectMenu(); - + ObjectTreeViewItem* insertObject(ObjectTreeViewItem *itm, libfwbuilder::FWObject *obj); void insertSubtree( ObjectTreeViewItem *itm,libfwbuilder::FWObject *obj ); @@ -266,6 +267,8 @@ public slots: void findObject(); virtual void back(); + virtual void forward(); + virtual void lockObject(); virtual void unlockObject(); virtual void simulateInstall(); @@ -326,7 +329,10 @@ public: void openObjectInTree(ObjectTreeViewItem *otvi, bool register_in_history); void removeObjectFromHistory(libfwbuilder::FWObject *obj); - + void addObjectToHistory(ObjectTreeViewItem* otvi, + libfwbuilder::FWObject *obj); + ObjectTreeViewItem* getCurrentHistoryItem(); + /* * searches history trying to find an object that has given * parent. Used to find which rule set of the firewall user diff --git a/src/libgui/ObjectManipulator_slots.cpp b/src/libgui/ObjectManipulator_slots.cpp index 4bd9262eb..a45a4f0d6 100644 --- a/src/libgui/ObjectManipulator_slots.cpp +++ b/src/libgui/ObjectManipulator_slots.cpp @@ -434,34 +434,51 @@ void ObjectManipulator::back() { if (!history.empty()) { - history.pop_back(); + FWObject *obj = NULL; -/* skip objects that have been deleted. - * - * But see removeObjectFromHistory() which is now called by - * removeObjectFromTreeView() it may not be necessary to do this - * additional check here, especially since according to #1661 it - * probably does not work anyway. - * - */ - while ( ! history.empty()) + current_history_item--; + + if ( current_history_item != history.end()) { - if (m_project->db()->findInIndex( history.back().id() )!=NULL) break; - history.pop_back(); + ObjectTreeViewItem* otvi = current_history_item->item(); + int obj_id = current_history_item->id(); + obj = m_project->db()->findInIndex(obj_id); + if ( obj != NULL) + { + openObjectInTree( otvi, false ); + + if (mw->isEditorVisible()) editSelectedObject(); + } + } else + { + current_history_item = history.begin(); } + } +} - if (history.empty()) +void ObjectManipulator::forward() +{ + if (!history.empty()) + { + FWObject *obj = NULL; + + current_history_item++; + + if ( current_history_item != history.end()) { - mw->enableBackAction(); - return; - } + ObjectTreeViewItem* otvi = current_history_item->item(); + int obj_id = current_history_item->id(); + obj = m_project->db()->findInIndex(obj_id); + if ( obj != NULL) + { + openObjectInTree( otvi, false ); - openObjectInTree( history.back().item(), false ); - - if (mw->isEditorVisible()) + if (mw->isEditorVisible()) editSelectedObject(); + } + } else { - ObjectTreeViewItem *otvi=history.back().item(); - switchObjectInEditor(otvi->getFWObject()); + current_history_item = history.end(); + current_history_item--; } } } diff --git a/src/libgui/ObjectManipulator_tree_ops.cpp b/src/libgui/ObjectManipulator_tree_ops.cpp index ee0d16563..c286e2113 100644 --- a/src/libgui/ObjectManipulator_tree_ops.cpp +++ b/src/libgui/ObjectManipulator_tree_ops.cpp @@ -407,6 +407,19 @@ void ObjectManipulator::removeObjectFromHistory(FWObject *obj) if (history.empty()) mw->enableBackAction(); } +void ObjectManipulator::addObjectToHistory(ObjectTreeViewItem* otvi, + FWObject *obj) +{ + history.push_back( HistoryItem(otvi, obj->getId()) ); + current_history_item = history.end(); + current_history_item--; +} + +ObjectTreeViewItem* ObjectManipulator::getCurrentHistoryItem() +{ + return current_history_item->item(); +} + void ObjectManipulator::updateLibColor(FWObject *lib) { QString clr = lib->getStr("color").c_str(); diff --git a/src/libgui/ProjectPanel.cpp b/src/libgui/ProjectPanel.cpp index b529e2889..e2f78d75a 100644 --- a/src/libgui/ProjectPanel.cpp +++ b/src/libgui/ProjectPanel.cpp @@ -619,6 +619,11 @@ void ProjectPanel::back() m_panel->om->back(); } +void ProjectPanel::forward() +{ + m_panel->om->forward(); +} + void ProjectPanel::lockObject() { m_panel->om->lockObject(); diff --git a/src/libgui/ProjectPanel.h b/src/libgui/ProjectPanel.h index 91a390463..96c9f63bb 100644 --- a/src/libgui/ProjectPanel.h +++ b/src/libgui/ProjectPanel.h @@ -239,6 +239,8 @@ public: void newObject(); virtual void back(); + virtual void forward(); + virtual void lockObject(); virtual void unlockObject();