diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c
index a47121bb2fb1d469b63cc8c0f03ac48801788067..fdaa8b1f6bd3bb1146e44e9814c14d0b69863a13 100644
--- a/sflphone-gtk/src/dbus.c
+++ b/sflphone-gtk/src/dbus.c
@@ -231,7 +231,6 @@ dbus_unhold (const call_t * c)
     g_print ("DBus called unhold() on CallManager\n");
   
   }
-
 }
 
 void
diff --git a/sflphone-gtk/src/dialpad.c b/sflphone-gtk/src/dialpad.c
index 402066a39a17ed0f7c4b852cf2ae075d6f52ad04..272368bf2accf6878b8c1b6d57e70a43f1868436 100644
--- a/sflphone-gtk/src/dialpad.c
+++ b/sflphone-gtk/src/dialpad.c
@@ -51,15 +51,12 @@ get_numpad_button (const gchar* number, gboolean twolines, const gchar * letters
 GtkWidget * 
 create_dialpad()
 {
-  GtkWidget * ext;
   GtkWidget * button;
   GtkWidget * table;
   
-  ext = gtk_expander_new ("Dialpad");
-  gtk_expander_set_spacing ( GTK_EXPANDER(ext), 10 );
   table = gtk_table_new ( 4, 3, TRUE /* homogeneous */);
-  gtk_table_set_row_spacings( GTK_TABLE(table), 10);
-  gtk_table_set_col_spacings( GTK_TABLE(table), 10);
+  gtk_table_set_row_spacings( GTK_TABLE(table), 5);
+  gtk_table_set_col_spacings( GTK_TABLE(table), 5);
   
   button = get_numpad_button("1", TRUE, "");
   gtk_table_attach ( GTK_TABLE( table ), button, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
@@ -100,7 +97,6 @@ create_dialpad()
   button = get_numpad_button("*", FALSE, "");
   gtk_table_attach ( GTK_TABLE( table ), button, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
-  gtk_container_add (GTK_CONTAINER (ext), table);
-  return ext;
+  return table;
   
 }
diff --git a/sflphone-gtk/src/mainwindow.c b/sflphone-gtk/src/mainwindow.c
index 4626e2dca2f1704dca25a35bcf1bd5a238439afd..463f72e6711fb6dc4f822e448788eac12a857c39 100644
--- a/sflphone-gtk/src/mainwindow.c
+++ b/sflphone-gtk/src/mainwindow.c
@@ -28,8 +28,11 @@
 #include <gtk/gtk.h>
 
 /** Local variables */
-GtkAccelGroup * accelGroup;
-GtkWidget * window;
+GtkAccelGroup * accelGroup = NULL;
+GtkWidget * window = NULL;
+GtkWidget *subvbox = NULL;
+GtkWidget * dialpad = NULL;
+gboolean showDialpad = FALSE; // true if the dialpad have been showned
 
 /**
  * Terminate the main loop.
@@ -101,7 +104,6 @@ create_main_window ()
   GtkWidget *button;
   GtkWidget *hbox;
   GtkWidget *vbox;
-  GtkWidget *subvbox;
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -138,7 +140,6 @@ create_main_window ()
   button = create_screen();
   gtk_box_pack_start (GTK_BOX (subvbox), button, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
   
-  //gtk_box_pack_start (GTK_BOX (subvbox), create_dialpad(), FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
   gtk_box_pack_start (GTK_BOX (subvbox), create_call_tree(), TRUE /*expand*/, TRUE /*fill*/,  0 /*padding*/);
   
   /* Status bar */
@@ -191,6 +192,23 @@ main_window_info_message(gchar * markup){
   main_window_message(GTK_MESSAGE_INFO, markup);
 }
 
+void
+main_window_dialpad(gboolean show){
+  if(show && !showDialpad)
+  {
+    dialpad = create_dialpad();
+    gtk_box_pack_end (GTK_BOX (subvbox), dialpad, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
+    gtk_box_reorder_child(GTK_BOX (subvbox), dialpad, 1);
+    gtk_widget_show_all (dialpad);
+  }
+  else if (!show && showDialpad)
+  {
+    gtk_container_remove(GTK_BOX (subvbox), dialpad);
+  }
+  showDialpad = show;
+    
+}
+
 
 
 
diff --git a/sflphone-gtk/src/mainwindow.h b/sflphone-gtk/src/mainwindow.h
index 3a1e3fd71641aa0920dba894c7d51b53cc48d788..46094bf627822fcdcf2139eb39a9c27f93330058 100644
--- a/sflphone-gtk/src/mainwindow.h
+++ b/sflphone-gtk/src/mainwindow.h
@@ -28,5 +28,15 @@ GtkWidget * get_main_window();
 void create_main_window ( );
 
 void main_window_ask_quit() ;
+/**
+  * Shows the dialpad on the mainwindow 
+  * @param show TRUE if you want to show the dialpad, FALSE to hide it
+  */
+void main_window_dialpad(gboolean show);
 
+void main_window_error_message(gchar * markup);
+
+void main_window_warning_message(gchar * markup);
+
+void main_window_warning_message(gchar * markup);
 #endif 
diff --git a/sflphone-gtk/src/menus.c b/sflphone-gtk/src/menus.c
index 59883ed2cae59a00c466a2af4a3a6fe4ae637cd8..94a25067a5456af758fabfc5750c5f18d0b45035 100644
--- a/sflphone-gtk/src/menus.c
+++ b/sflphone-gtk/src/menus.c
@@ -166,6 +166,14 @@ create_debug_menu()
   return root_menu;
 }
 /* ----------------------------------------------------------------- */
+
+void 
+view_dial_pad  (GtkCheckMenuItem *checkmenuitem,
+                void* foo)
+{
+  main_window_dialpad(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkmenuitem)));
+}
+
 GtkWidget * 
 create_view_menu()
 {
@@ -175,19 +183,12 @@ create_view_menu()
   
   menu      = gtk_menu_new ();
 
-  menu_items = gtk_menu_item_new_with_label ("Show Dialpad");
+  menu_items = gtk_check_menu_item_new_with_mnemonic ("Show _Dialpad");
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
-  g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
-                  G_CALLBACK (debug_hang_up), 
+  g_signal_connect(G_OBJECT (menu_items), "toggled",
+                  G_CALLBACK (view_dial_pad), 
                   NULL);
   gtk_widget_show (menu_items);
-    
-  /*menu_items = gtk_menu_item_new_with_label ("Transfert current call");
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
-  g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
-                  G_CALLBACK (debug_transfert), 
-                  NULL);
-  gtk_widget_show (menu_items);*/
   
   root_menu = gtk_menu_item_new_with_mnemonic ("_View");
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu);