66 QComboBox ,
77 QLineEdit ,
88 QPushButton ,
9+ QCheckBox ,
910 QTreeWidget ,
1011 QTreeWidgetItem ,
1112)
@@ -51,6 +52,7 @@ def __init__(self, config: SysmonConfig) -> None:
5152
5253 self .add_button = QPushButton ("Add Rule" )
5354 self .remove_button = QPushButton ("Remove Selected Rule" )
55+ self .new_rules_only_toggle = QCheckBox ("Show New Rules Only" )
5456
5557 self .rule_tree = QTreeWidget ()
5658 self .rule_tree .setHeaderHidden (True )
@@ -74,12 +76,14 @@ def __init__(self, config: SysmonConfig) -> None:
7476 self .layout .addLayout (self .rule_row_2 )
7577 self .layout .addWidget (self .add_button )
7678 self .layout .addWidget (self .remove_button )
79+ self .layout .addWidget (self .new_rules_only_toggle )
7780 self .layout .addWidget (self .rule_tree )
7881
7982 self .add_button .clicked .connect (self .add_rule )
8083 self .remove_button .clicked .connect (self .remove_selected_rule )
8184 self .field_box .currentTextChanged .connect (self .load_value_presets_for_field )
8285 self .group_box .currentIndexChanged .connect (self .on_group_selected )
86+ self .new_rules_only_toggle .stateChanged .connect (self .refresh_rules )
8387
8488 def set_event (self , event_id : int , event_name : str ) -> None :
8589 self .current_event_id = event_id
@@ -166,20 +170,28 @@ def load_value_presets_for_field(self, field_name: str) -> None:
166170
167171 def refresh_rules (self ) -> None :
168172 self .rule_tree .clear ()
173+ show_new_only = self .new_rules_only_toggle .isChecked ()
169174
170175 for event_id , event_config in sorted (self .config .events .items ()):
171176 if not event_config .rules :
172177 continue
173178
174- event_item = QTreeWidgetItem (
175- [f"{ event_id } - { event_config .event_name } " ]
176- )
179+ visible_rule_indexes = [
180+ idx
181+ for idx , rule in enumerate (event_config .rules )
182+ if (not show_new_only ) or (not rule .imported )
183+ ]
184+ if not visible_rule_indexes :
185+ continue
186+
187+ event_item = QTreeWidgetItem ([f"{ event_id } - { event_config .event_name } " ])
177188 self .rule_tree .addTopLevelItem (event_item )
178189
179190 grouped_parents : dict [str , QTreeWidgetItem ] = {}
180191 ungrouped_parent : QTreeWidgetItem | None = None
181192
182- for rule_index , rule in enumerate (event_config .rules ):
193+ for rule_index in visible_rule_indexes :
194+ rule = event_config .rules [rule_index ]
183195 if rule .group_id :
184196 if rule .group_id not in grouped_parents :
185197 group_name = rule .group_name or "Imported Rule"
0 commit comments