mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-03-23 03:37:15 +01:00
cut-and-pasting firewall between libraries". GUI crashed if user performed the following sequence: cut an object, switch to a different object library, try to paste using keyboard shortcut Ctrl-V while library object was selected in the tree.
379 lines
12 KiB
C++
379 lines
12 KiB
C++
/*
|
|
|
|
Firewall Builder
|
|
|
|
Copyright (C) 2009 NetCitadel, LLC
|
|
|
|
Author: Vadim Kurland vadim@fwbuilder.org
|
|
|
|
$Id$
|
|
|
|
This program is free software which we release under the GNU General Public
|
|
License. You may redistribute and/or modify this program under the terms
|
|
of that license as published by the Free Software Foundation; either
|
|
version 2 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.
|
|
|
|
To get a copy of the GNU General Public License, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*/
|
|
|
|
#ifndef FWBUILDER_EVENTS_HH
|
|
#define FWBUILDER_EVENTS_HH
|
|
|
|
#include "global.h"
|
|
#include "ObjectEditor.h"
|
|
#include "ColDesc.h"
|
|
|
|
#include <QEvent>
|
|
#include <QString>
|
|
|
|
/* Custom event types. QEvent::registerEventType is only available
|
|
starting QT 4.4 but we have to support QT 4.3 for Ubuntu Hardy so
|
|
need to allocate types manually for now. Event types are defined as
|
|
increments above QEvent::User
|
|
*/
|
|
|
|
enum EVENT_CODES {
|
|
DATA_MODIFIED_EVENT ,
|
|
UPDATE_OBJECT_IN_TREE_EVENT ,
|
|
UPDATE_OBJECT_AND_SUBTREE_IN_TREE_EVENT ,
|
|
UPDATE_OBJECT_AND_SUBTREE_IMMEDIATELY_EVENT ,
|
|
UPDATE_OBJECT_EVERYWHERE_EVENT ,
|
|
UPDATE_LAST_COMPILED_TIMESTAMP_EVENT ,
|
|
UPDATE_LAST_INSTALLED_TIMESTAMP_EVENT ,
|
|
SHOW_OBJECT_IN_TREE_EVENT ,
|
|
SHOW_OBJECT_IN_RULESET_EVENT ,
|
|
SELECT_RULE_ELEMENT_EVENT,
|
|
INSERT_OBJECT_IN_TREE_EVENT,
|
|
REMOVE_OBJECT_FROM_TREE_EVENT,
|
|
ADD_TREE_PAGE_EVENT,
|
|
REMOVE_TREE_PAGE_EVENT,
|
|
RELOAD_OBJECT_TREE_EVENT ,
|
|
RELOAD_OBJECT_TREE_IMMEDIATELY_EVENT ,
|
|
OPEN_RULESET_EVENT ,
|
|
OPEN_RULESET_IMMEDIATELY_EVENT ,
|
|
RELOAD_RULESET_EVENT ,
|
|
RELOAD_RULESET_IMMEDIATELY_EVENT ,
|
|
OPEN_OBJECT_IN_EDITOR_EVENT ,
|
|
OPEN_OPT_OBJECT_IN_EDITOR_EVENT ,
|
|
CLOSE_OBJECT_EVENT ,
|
|
OBJECT_NAME_CHANGED_EVENT,
|
|
OPEN_LIBRARY_FOR_OBJECT_EVENT,
|
|
UPDATE_SUBWINDOW_TITLES_EVENT,
|
|
UPDATE_GUI_STATE_EVENT
|
|
};
|
|
|
|
|
|
class fwbUpdateEvent : public QEvent {
|
|
QString data_file_name;
|
|
int object_id;
|
|
QString event_name;
|
|
public:
|
|
fwbUpdateEvent(const QString &file_name, int obj_id, QEvent::Type event_type,
|
|
const QString &ev_name) : QEvent(event_type), event_name(ev_name)
|
|
{
|
|
data_file_name = file_name;
|
|
object_id = obj_id;
|
|
}
|
|
QString getEventName() { return event_name; }
|
|
QString getFileName() { return data_file_name; }
|
|
int getObjectId() { return object_id; }
|
|
};
|
|
|
|
|
|
class dataModifiedEvent : public fwbUpdateEvent {
|
|
public:
|
|
dataModifiedEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + DATA_MODIFIED_EVENT),
|
|
"dataModifiedEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class updateObjectInTreeEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateObjectInTreeEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + UPDATE_OBJECT_IN_TREE_EVENT),
|
|
"updateObjectInTreeEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class updateObjectAndSubtreeInTreeEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateObjectAndSubtreeInTreeEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + UPDATE_OBJECT_AND_SUBTREE_IN_TREE_EVENT),
|
|
"updateObjectAndSubtreeInTreeEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class updateObjectAndSubtreeImmediatelyEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateObjectAndSubtreeImmediatelyEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + UPDATE_OBJECT_AND_SUBTREE_IMMEDIATELY_EVENT),
|
|
"updateObjectAndSubtreeImmediatelyEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class updateObjectEverywhereEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateObjectEverywhereEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + UPDATE_OBJECT_EVERYWHERE_EVENT),
|
|
"updateObjectEverywhereEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class updateLastCompiledTimestampEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateLastCompiledTimestampEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + UPDATE_LAST_COMPILED_TIMESTAMP_EVENT),
|
|
"updateLastCompiledTimestampEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class updateLastInstalledTimestampEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateLastInstalledTimestampEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + UPDATE_LAST_INSTALLED_TIMESTAMP_EVENT),
|
|
"updateLastInstalledTimestampEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class showObjectInTreeEvent : public fwbUpdateEvent {
|
|
public:
|
|
showObjectInTreeEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + SHOW_OBJECT_IN_TREE_EVENT),
|
|
"showObjectInTreeEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class showObjectInRulesetEvent : public fwbUpdateEvent {
|
|
public:
|
|
showObjectInRulesetEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + SHOW_OBJECT_IN_RULESET_EVENT),
|
|
"showObjectInRulesetEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class selectRuleElementEvent : public fwbUpdateEvent {
|
|
public:
|
|
ColDesc::ColumnType column_type;
|
|
selectRuleElementEvent(const QString &file_name, int obj_id, ColDesc::ColumnType ct) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + SELECT_RULE_ELEMENT_EVENT),
|
|
"selectRuleElementEvent")
|
|
{ column_type = ct; }
|
|
};
|
|
|
|
|
|
class insertObjectInTreeEvent : public fwbUpdateEvent {
|
|
public:
|
|
int parent_id;
|
|
insertObjectInTreeEvent(const QString &file_name, int p_id, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + INSERT_OBJECT_IN_TREE_EVENT),
|
|
"insertObjectInTreeEvent")
|
|
{ parent_id = p_id; }
|
|
};
|
|
|
|
|
|
class removeObjectFromTreeEvent : public fwbUpdateEvent {
|
|
public:
|
|
removeObjectFromTreeEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + REMOVE_OBJECT_FROM_TREE_EVENT),
|
|
"removeObjectFromTreeEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class addTreePageEvent : public fwbUpdateEvent {
|
|
public:
|
|
addTreePageEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + ADD_TREE_PAGE_EVENT),
|
|
"addTreePageEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class removeTreePageEvent : public fwbUpdateEvent {
|
|
public:
|
|
removeTreePageEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + REMOVE_TREE_PAGE_EVENT),
|
|
"removeTreePageEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class reloadObjectTreeEvent : public fwbUpdateEvent {
|
|
public:
|
|
reloadObjectTreeEvent(const QString &file_name) :
|
|
fwbUpdateEvent(file_name, -1,
|
|
QEvent::Type(QEvent::User + RELOAD_OBJECT_TREE_EVENT),
|
|
"reloadObjectTreeEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class reloadObjectTreeImmediatelyEvent : public fwbUpdateEvent {
|
|
public:
|
|
reloadObjectTreeImmediatelyEvent(const QString &file_name) :
|
|
fwbUpdateEvent(file_name, -1,
|
|
QEvent::Type(QEvent::User + RELOAD_OBJECT_TREE_IMMEDIATELY_EVENT),
|
|
"reloadObjectTreeImmediatelyEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class reloadRulesetEvent : public fwbUpdateEvent {
|
|
public:
|
|
reloadRulesetEvent(const QString &file_name) :
|
|
fwbUpdateEvent(file_name, -1,
|
|
QEvent::Type(QEvent::User + RELOAD_RULESET_EVENT),
|
|
"reloadRulesetEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class reloadRulesetImmediatelyEvent : public fwbUpdateEvent {
|
|
public:
|
|
reloadRulesetImmediatelyEvent(const QString &file_name) :
|
|
fwbUpdateEvent(file_name, -1,
|
|
QEvent::Type(QEvent::User + RELOAD_RULESET_IMMEDIATELY_EVENT),
|
|
"reloadRulesetImmediatelyEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class openRulesetEvent : public fwbUpdateEvent {
|
|
public:
|
|
openRulesetEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + OPEN_RULESET_EVENT),
|
|
"openRulesetEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class openRulesetImmediatelyEvent : public fwbUpdateEvent {
|
|
public:
|
|
openRulesetImmediatelyEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + OPEN_RULESET_IMMEDIATELY_EVENT),
|
|
"openRulesetImmediatelyEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class openObjectInEditorEvent : public fwbUpdateEvent {
|
|
public:
|
|
openObjectInEditorEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + OPEN_OBJECT_IN_EDITOR_EVENT),
|
|
"openObjectInEditorEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class openOptObjectInEditorEvent : public fwbUpdateEvent {
|
|
public:
|
|
ObjectEditor::OptType opt_code;
|
|
openOptObjectInEditorEvent(const QString &file_name, int obj_id, ObjectEditor::OptType opt) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + OPEN_OPT_OBJECT_IN_EDITOR_EVENT),
|
|
"openOptObjectInEditorEvent")
|
|
{ opt_code = opt; }
|
|
};
|
|
|
|
|
|
class closeObjectEvent : public fwbUpdateEvent {
|
|
public:
|
|
closeObjectEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + CLOSE_OBJECT_EVENT),
|
|
"closeObjectEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
class objectNameChangedEvent : public fwbUpdateEvent {
|
|
public:
|
|
QString old_name;
|
|
QString new_name;
|
|
bool rename_children;
|
|
objectNameChangedEvent(const QString &file_name, int obj_id,
|
|
const QString &_old_name, const QString &_new_name,
|
|
bool _rename_children) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + OBJECT_NAME_CHANGED_EVENT),
|
|
"objectNameChangedEvent")
|
|
{ old_name = _old_name; new_name = _new_name; rename_children = _rename_children; }
|
|
};
|
|
|
|
|
|
class openLibraryForObjectEvent : public fwbUpdateEvent {
|
|
public:
|
|
QString old_name;
|
|
QString new_name;
|
|
openLibraryForObjectEvent(const QString &file_name, int obj_id) :
|
|
fwbUpdateEvent(file_name, obj_id,
|
|
QEvent::Type(QEvent::User + OPEN_LIBRARY_FOR_OBJECT_EVENT),
|
|
"openLibraryForObjectEvent")
|
|
{}
|
|
};
|
|
|
|
/*
|
|
* This event is processed by FWWindow class and updates titles of all
|
|
* ProjectPanel windows.
|
|
*/
|
|
class updateSubWindowTitlesEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateSubWindowTitlesEvent() :
|
|
fwbUpdateEvent("", -1,
|
|
QEvent::Type(QEvent::User + UPDATE_SUBWINDOW_TITLES_EVENT),
|
|
"updateSubWindowTitlesEvent")
|
|
{}
|
|
};
|
|
|
|
/*
|
|
* This event is processed by FWWindow class and updates all menus and
|
|
* toolbar buttins
|
|
*/
|
|
class updateGUIStateEvent : public fwbUpdateEvent {
|
|
public:
|
|
updateGUIStateEvent() :
|
|
fwbUpdateEvent("", -1,
|
|
QEvent::Type(QEvent::User + UPDATE_GUI_STATE_EVENT),
|
|
"updateGUIStateEvent")
|
|
{}
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|