Index: lightbox2.admin.inc
===================================================================
--- lightbox2.admin.inc	(revision 6812)
+++ lightbox2.admin.inc	(working copy)
@@ -491,6 +491,40 @@
     '#default_value' => variable_get('lightbox2_slidedown_speed', 0.6),
   );
 
+  // Define theme registry settings fieldset.
+  /* ----------------------------------- */
+  $form['advanced_options']['theme_registry_settings'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Theme registry settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+
+  $form['advanced_options']['theme_registry_settings']['lightbox2_theme_lightshow'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Create Lightshow formatters'),
+    '#default_value' => variable_get('lightbox2_theme_lightshow', TRUE),
+  );
+
+  $form['advanced_options']['theme_registry_settings']['lightbox2_theme_lightframe'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Create Lightframe formatters'),
+    '#default_value' => variable_get('lightbox2_theme_lightframe', TRUE),
+  );
+
+  if (module_exists('imagecache')) {
+    $presets = array();
+    foreach(imagecache_presets() as $key => $preset) {
+      $presets[$key] = $preset['presetname'];
+    }
+    $form['advanced_options']['theme_registry_settings']['lightbox2_theme_fullsize_formats'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('Fullsize presets'),
+      '#default_value' => variable_get('lightbox2_theme_fullsize_formats', array_keys($presets)),
+      '#options' => $presets
+    );
+  }
+
   return system_settings_form($form);
 }
 
Index: lightbox2.module
===================================================================
--- lightbox2.module	(revision 6812)
+++ lightbox2.module	(working copy)
@@ -750,6 +750,9 @@
  * formatters if emfield, emimage and/or emvideo modules exist.
  */
 function lightbox2_field_formatter_info() {
+
+  $settings = lightbox2_theme_registry_settings();
+
   $formatters = array();
   $lightbox = $slideshow = $iframe = array();
   // Handle imagefield and filefield images.
@@ -777,28 +780,38 @@
         'label' => 'Lightbox2: '. $view_rule .'->original',
         'field types' => array('image', 'filefield'),
       );
-      $slideshow['imagefield__lightshow2__original__'. $view_rule] = array(
-        'label' => 'Lightbox2 slideshow: original->'. $view_rule,
-        'field types' => array('image', 'filefield'),
-      );
-      $slideshow['imagefield__lightshow2__'. $view_rule .'__original'] = array(
-        'label' => 'Lightbox2 slideshow: '. $view_rule .'->original',
-        'field types' => array('image', 'filefield'),
-      );
-      $iframe['imagefield__lightframe2__'. $view_rule .'__node'] = array(
-        'label' => 'Lightbox2 iframe: '. $view_rule .'->node page',
-        'field types' => array('image', 'filefield'),
-      );
-      foreach ($rules as $rid => $lightbox_rule) {
-        $lightbox['imagefield__lightbox2__'. $view_rule .'__'. $lightbox_rule] = array(
-          'label' => 'Lightbox2: '. $view_rule .'->'. $lightbox_rule,
+      if ($settings['allow_lightshow']) {
+        $slideshow['imagefield__lightshow2__original__'. $view_rule] = array(
+          'label' => 'Lightbox2 slideshow: original->'. $view_rule,
           'field types' => array('image', 'filefield'),
         );
-        $slideshow['imagefield__lightshow2__'. $view_rule .'__'. $lightbox_rule] = array(
-          'label' => 'Lightbox2 slideshow: '. $view_rule .'->'. $lightbox_rule,
+        $slideshow['imagefield__lightshow2__'. $view_rule .'__original'] = array(
+          'label' => 'Lightbox2 slideshow: '. $view_rule .'->original',
           'field types' => array('image', 'filefield'),
         );
       }
+      if ($settings['allow_lightframe']) {
+        $iframe['imagefield__lightframe2__'. $view_rule .'__node'] = array(
+          'label' => 'Lightbox2 iframe: '. $view_rule .'->node page',
+          'field types' => array('image', 'filefield'),
+        );
+      }
+      if (module_exists('imagecache')) {
+        foreach ($settings['fullsize_formats'] as $rid) {
+          $rid = imagecache_preset($rid);
+          $lightbox_rule = $rid['presetname'];
+          $lightbox['imagefield__lightbox2__'. $view_rule .'__'. $lightbox_rule] = array(
+            'label' => 'Lightbox2: '. $view_rule .'->'. $lightbox_rule,
+            'field types' => array('image', 'filefield'),
+          );
+          if ($settings['allow_lightshow']) {
+            $slideshow['imagefield__lightshow2__'. $view_rule .'__'. $lightbox_rule] = array(
+              'label' => 'Lightbox2 slideshow: '. $view_rule .'->'. $lightbox_rule,
+              'field types' => array('image', 'filefield'),
+            );
+          }
+        }
+      }
     }
     // Adding them now so they are in some sort of sensible order.
     $formatters = array_merge($lightbox, $slideshow, $iframe);
@@ -838,6 +851,9 @@
  * Implementation of hook_theme().
  */
 function lightbox2_theme() {
+
+  $settings = lightbox2_theme_registry_settings();
+
   $theme = array(
     'lightbox2_image' => array(
       'arguments' => array('path' => NULL, 'alt' => '', 'title' => '', 'attributes' => array()),
@@ -910,45 +926,65 @@
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
-      $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__original'] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
+      if ($settings['allow_lightshow']) {
+        $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__original'] = array(
+          'arguments' => array('element' => NULL),
+          'function' => 'theme_lightbox2_formatter_imagefield',
+          'file' => 'lightbox2.formatter.inc',
+        );
+      }
       $theme['lightbox2_formatter_imagefield__lightbox2__original__'. $src['presetname']] = array(
         'arguments' => array('element' => NULL),
         'function' => 'theme_lightbox2_formatter_imagefield',
         'file' => 'lightbox2.formatter.inc',
       );
-      $theme['lightbox2_formatter_imagefield__lightshow2__original__'. $src['presetname']] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
-      $theme['lightbox2_formatter_imagefield__lightframe2__'. $src['presetname'] .'__node'] = array(
-        'arguments' => array('element' => NULL),
-        'function' => 'theme_lightbox2_formatter_imagefield',
-        'file' => 'lightbox2.formatter.inc',
-      );
-
-      foreach (imagecache_presets() as $dest) {
-        $theme['lightbox2_formatter_imagefield__lightbox2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
+      if ($settings['allow_lightshow']) {
+        $theme['lightbox2_formatter_imagefield__lightshow2__original__'. $src['presetname']] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
           'file' => 'lightbox2.formatter.inc',
         );
-        $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
+      }
+      if ($settings['allow_lightframe']) {
+        $theme['lightbox2_formatter_imagefield__lightframe2__'. $src['presetname'] .'__node'] = array(
           'arguments' => array('element' => NULL),
           'function' => 'theme_lightbox2_formatter_imagefield',
           'file' => 'lightbox2.formatter.inc',
         );
       }
+      if (module_exists('imagecache')) {
+        foreach ($settings['fullsize_formats'] as $dest) {
+          $dest = imagecache_preset($dest);
+          $theme['lightbox2_formatter_imagefield__lightbox2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
+            'arguments' => array('element' => NULL),
+            'function' => 'theme_lightbox2_formatter_imagefield',
+            'file' => 'lightbox2.formatter.inc',
+          );
+          if ($settings['allow_lightshow']) {
+            $theme['lightbox2_formatter_imagefield__lightshow2__'. $src['presetname'] .'__'. $dest['presetname']] = array(
+              'arguments' => array('element' => NULL),
+              'function' => 'theme_lightbox2_formatter_imagefield',
+              'file' => 'lightbox2.formatter.inc',
+            );
+          }
+        }
+      }
     }
   }
 
   return $theme;
 }
 
+function lightbox2_theme_registry_settings() {
+  $settings = array();
+  $settings['allow_lightshow'] = variable_get('lightbox2_theme_lightshow', FALSE);
+  $settings['allow_lightframe'] = variable_get('lightbox2_theme_lightframe', FALSE);
+  if (module_exists('imagecache')) {
+    $settings['fullsize_formats'] = variable_get('lightbox2_theme_fullsize_formats', array_keys(imagecache_presets()));
+  }
+  return $settings;
+}
+
 /**
  * Configures settings and outputs the video.
  *
