diff --git a/btn4ws.py b/btn4ws.py
index d07e9ec..f728430 100644
--- a/btn4ws.py
+++ b/btn4ws.py
@@ -31,13 +31,17 @@ port of the older gimp-perl version to python.
 """
 import os, urllib, logging, sys
 import gimp, gimpplugin
+import pygtk
+pygtk.require('2.0')
+import gtk
 from gimpenums import *
+from gimpshelf import shelf
 pdb = gimp.pdb
 
 btn4ws_version = "0.7.0"
 
-logging.basicConfig(level=logging.INFO,
-                    format='$(asctime)s %(levelname)s %(message)s',
+logging.basicConfig(level=logging.DEBUG,
+                    format='%(asctime)s %(levelname)s %(message)s',
                     stream=sys.stderr)
 
 class text_to_name_mapper:
@@ -145,6 +149,31 @@ class text_to_name_mapper:
             return os.path.join(dirname, fname)
         return fname
 
+class Btn4wsDialog:
+    """This class is the input dialog field for btn4ws"""
+    def delete_event(self, widget, event, data = None):
+        return False
+
+    def destroy(self, widget, data = None):
+        gtk.main_quit()
+
+    def __init__(self, filename, outdir, font,
+                 strcolor, transparency, bgcolor,
+                 glow, glowcolor,
+                 usepattern, pattern,
+                 buttoncolor, roundradius,
+                 padding, glowsize, bevelwidth,
+                 nova, novasparkles, novaradius,
+                 novacolor, writexcf, makeinactive,
+                 makeactive, makepressed, makejscript):
+        self.window = gtk.Assistant()
+        self.window.connect("delete_event", self.delete_event)
+        self.window.connect("destroy", self.destroy)
+        self.window.show()
+
+    def main(self):
+        gtk.main()
+
 class btn4wsplugin(gimpplugin.plugin):
     """This is the btn4ws gimp plugin."""
     def parsefont(font):
@@ -283,6 +312,23 @@ class btn4wsplugin(gimpplugin.plugin):
         This function controls the creation of the buttons and is
         registered as gimp plugin.
         """
+        if runmode == RUN_INTERACTIVE:
+            logging.debug("runmode interactive")
+            dialog = Btn4wsDialog(filename, outdir, font, strcolor,
+                                  transparency, bgcolor, glow, glowcolor,
+                                  usepattern, pattern, buttoncolor,
+                                  roundradius, padding, glowsize, bevelwidth,
+                                  nova, novasparkles, novaradius, novacolor,
+                                  writexcf, makeinactive, makeactive,
+                                  makepressed, makejscript)
+            dialog.main()
+        elif runmode == RUN_NONINTERACTIVE:
+            logging.debug("runmode noninteractive")
+        elif runmode == RUN_WITH_LASTVALS:
+            logging.debug("runmode with lastvals")
+            if shelf.has_key("btn4ws"):
+                initialvalues = shelf["btn4ws"]
+        return
         # import used gimp pdb functions
         createtext = pdb['gimp_text_fontname']
         selectionlayeralpha = pdb['gimp_selection_layer_alpha']
diff --git a/gtktest.py b/gtktest.py
new file mode 100644
index 0000000..2cb31a1
--- /dev/null
+++ b/gtktest.py
@@ -0,0 +1,100 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+
+class AssistantTest:
+    def delete_event(self, widget, event, data = None):
+        return False
+
+    def destroy(self, widget, data = None):
+        gtk.main_quit()
+
+    def __init__(self):
+        self.data = {
+            "filename" : None,
+            "outputdir" : None}
+        self.ass = gtk.Assistant()
+
+        self.ass.connect("delete_event", self.delete_event)
+        self.ass.connect("close", self.destroy)
+        self.ass.connect("cancel", self.destroy)
+
+        # Construct page 0
+        label = gtk.Label("""Buttons for website allows you to produce a series of buttons for use on a website. On the next pages you may choose several options to change the content and the look of the buttons.""")
+        label.set_line_wrap(True)
+        label.show()
+        self.ass.append_page(label)
+        self.ass.set_page_title(label, "Introduction to buttons for website")
+        self.ass.set_page_type(label, gtk.ASSISTANT_PAGE_INTRO)
+        self.ass.set_page_complete(label, True)
+
+        # Construct page 1
+        self.page1 = gtk.VBox(False, 5)
+        self.page1.set_border_width(5)
+        self.page1.show()
+        self.ass.append_page(self.page1)
+        self.ass.set_page_title(self.page1,
+                           "Select the input file and output directory")
+        self.ass.set_page_type(self.page1, gtk.ASSISTANT_PAGE_CONTENT)
+        
+        label = gtk.Label("Please choose the file containing your button labels and the directory where the generated files should be put.")
+        label.set_line_wrap(True)
+        label.show()
+        self.page1.pack_start(label, True, True, 0)
+
+        table = gtk.Table(rows=2, columns=2, homogeneous=False)
+        table.show()
+        label = gtk.Label("Button label file")
+        label.show()
+        table.attach(label, 0, 1, 0, 1)
+        button = gtk.FileChooserButton("Choose file")
+        button.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+        button.connect("selection-changed", self.cb_file_selected, button)
+        button.show()
+        table.attach(button, 1, 2, 0, 1)
+
+        label = gtk.Label("Output directory")
+        label.show()    
+        table.attach(label, 0, 1, 1, 2)
+        button = gtk.FileChooserButton("Choose directory")
+        button.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
+        button.connect("selection-changed", self.cb_dir_selected, button)
+        button.show()
+        table.attach(button, 1, 2, 1, 2)
+        
+        self.page1.pack_end(table)
+
+        # Construct page 2
+        label = gtk.Label('Thanks for using btn4ws')
+        label.set_line_wrap(True)
+        label.show()
+        self.ass.append_page(label)
+        self.ass.set_page_title(label, 'Page 1: The end')
+        self.ass.set_page_type(label, gtk.ASSISTANT_PAGE_SUMMARY)
+
+        self.ass.show()
+
+    def checkpage1completion(self):
+        print str(self.data)
+        if self.data["filename"] and self.data["outputdir"]:
+            self.ass.set_page_complete(self.page1, True)
+        else:
+            self.ass.set_page_complete(self.page1, False)
+
+    def cb_file_selected(self, w, filesel):
+        self.data["filename"] = filesel.get_filename()
+        self.checkpage1completion()
+
+    def cb_dir_selected(self, w, dirsel):
+        self.data["outputdir"] = dirsel.get_filename()
+        self.checkpage1completion()
+
+    def main(self):
+        gtk.main()
+
+if __name__ == "__main__":
+    assi = AssistantTest()
+    assi.main()