Index: webfm_images.module
===================================================================
--- webfm_images.module	(Revision 409)
+++ webfm_images.module	(Arbeitskopie)
@@ -74,9 +74,11 @@
   $sizes = _webfm_images_get_sizes();
 
   $form['#type'] = 'item';
-  $form['#description'] = t('Select various pixel dimensions, "thumbnail" is required.
-                             For each Label and dimension you enter a new "right-click" menu option will become available in WebFM for image files.
-                             Clicking the menu item with resize the image based on these settings.');
+  $form['#description'] = t('Select various pixel dimensions, "thumbnail" is required.<br />
+  If you enter width and height the images will be scaled to fit into the entered dimensions preserving aspect ratio.<br />
+  If you enter height only, or width only the images will be scaled to fixed height or fixed width as entered also preserving aspect ratio.<br />
+  For each Label and dimension you enter a new "right-click" menu option will become available in WebFM for image files.<br />
+  Clicking the menu item will resize the image based on these settings.');
   $form['#tree'] = TRUE;
   $form['#theme'] = 'webfm_images_settings_sizes_form';
   for ($i = 0; $i < 5; $i++) {
@@ -102,7 +104,7 @@
     $rows[] = $row;
 
   }
-  $output = theme('table', $header, $rows);
+  $output = theme('table', $header, $rows, $attributes = array('summary' => 'webfm_images_sizes'));
   $output .= drupal_render($form);
 
   return $output;
@@ -160,6 +162,16 @@
           }
         }
 
+        $original_size = getimagesize ($dir .'/'. $filename);
+        // scale to a fixed width
+        if (!$height) {
+          $height = ($width / $original_size[0]) * $original_size[1];
+        }
+        // scale to a fixed height
+        if (!$width) {
+          $width = ($height / $original_size[1]) * $original_size[0];
+        }
+
         if (image_scale($file->fpath, $path, $width, $height)){  //create our new file
           $err = array();
           webfm_insert_file($path, $err); //add it to the database
