]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/filters.cpp
SnapPlane reenabled by namespace because of multiple reports of
[xonotic/netradiant.git] / radiant / filters.cpp
index e0f157da5722e836e13121c9c6d4e8395da0719d..74e7774a704d85ea4d9bda46fad3942d60e66052 100644 (file)
@@ -150,6 +150,12 @@ public:
     m_item.update();
     PerformFiltering();
   }
+  void reset()
+  {
+    g_filters_globals.exclude = 0;
+    m_item.update();
+    PerformFiltering();
+  }
   typedef MemberCaller<ToggleFilterFlag, &ToggleFilterFlag::toggle> ToggleCaller;
 };
 
@@ -163,6 +169,26 @@ void add_filter_command(unsigned int flag, const char* command, const Accelerato
   GlobalToggles_insert(command, ToggleFilterFlag::ToggleCaller(g_filter_items.back()), ToggleItem::AddCallbackCaller(g_filter_items.back().m_item), accelerator);
 }
 
+void InvertFilters()
+{
+  std::list<ToggleFilterFlag>::iterator iter;
+
+  for(iter = g_filter_items.begin(); iter != g_filter_items.end(); ++iter)
+  {
+      iter->toggle();
+  }
+}
+
+void ResetFilters()
+{
+  std::list<ToggleFilterFlag>::iterator iter;
+
+  for(iter = g_filter_items.begin(); iter != g_filter_items.end(); ++iter)
+  {
+      iter->reset();
+  }
+}
+
 void Filters_constructMenu(GtkMenu* menu_in_menu)
 {
   create_check_menu_item_with_mnemonic(menu_in_menu, "World", "FilterWorldBrushes");
@@ -202,6 +228,10 @@ void Filters_constructMenu(GtkMenu* menu_in_menu)
   {
     create_check_menu_item_with_mnemonic(menu_in_menu, "Botclips", "FilterBotClips");
   }
+  // filter manipulation
+  menu_separator(menu_in_menu);
+  create_menu_item_with_mnemonic(menu_in_menu, "Invert filters", "InvertFilters");
+  create_menu_item_with_mnemonic(menu_in_menu, "Reset filters", "ResetFilters");
 }
 
 
@@ -212,6 +242,9 @@ void ConstructFilters()
 {
   GlobalPreferenceSystem().registerPreference("SI_Exclude", SizeImportStringCaller(g_filters_globals.exclude), SizeExportStringCaller(g_filters_globals.exclude));
 
+  GlobalCommands_insert("InvertFilters", FreeCaller<InvertFilters>());
+  GlobalCommands_insert("ResetFilters", FreeCaller<ResetFilters>());  
+
   add_filter_command(EXCLUDE_WORLD, "FilterWorldBrushes", Accelerator('1', (GdkModifierType)GDK_MOD1_MASK));
   add_filter_command(EXCLUDE_ENT, "FilterEntities", Accelerator('2', (GdkModifierType)GDK_MOD1_MASK));
   if(g_pGameDescription->mGameType == "doom3")