Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/wizard


Modified Files:
        e_wizard.c e_wizard.h page_100.c 


Log Message:


enable/disable back/next as needed. allow pages to do it too.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/wizard/e_wizard.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_wizard.c  14 Sep 2007 16:57:01 -0000      1.6
+++ e_wizard.c  16 Sep 2007 18:32:32 -0000      1.7
@@ -4,6 +4,8 @@
 #include "e.h"
 #include "e_mod_main.h"
 
+static void _e_wizard_back_eval(void);
+static void _e_wizard_next_eval(void);
 static E_Popup *_e_wizard_main_new(E_Zone *zone);
 static E_Popup *_e_wizard_extra_new(E_Zone *zone);
 static void _e_wizard_cb_key_down(void *data, Evas *e, Evas_Object *obj, void 
*event);
@@ -16,6 +18,12 @@
 static Evas_Object *o_content = NULL;
 static Evas_List *pages = NULL;
 static E_Wizard_Page *curpage = NULL;
+static int next_ok = 1;
+static int back_ok = 1;
+static int next_can = 0;
+static int back_can = 0;
+static int next_prev = 0;
+static int back_prev = 0;
 
 EAPI int
 e_wizard_init(void)
@@ -74,11 +82,17 @@
 {
    if (!curpage)
      {
-       if (pages) curpage = pages->data;
+       if (pages)
+         {
+            curpage = pages->data;
+            if (pages->next) next_can = 1;
+         }
      }
    if (curpage)
      {
        if ((!curpage->data) && (curpage->init)) curpage->init(curpage);
+       _e_wizard_back_eval();
+       _e_wizard_next_eval();
        if ((curpage->show) && (!curpage->show(curpage)))
          {
             e_wizard_next();
@@ -122,6 +136,11 @@
                        if (curpage->init)
                         curpage->init(curpage);
                    }
+                 next_can = 1;
+                 if (l->prev) back_can = 1;
+                 else back_can = 0;
+                 _e_wizard_back_eval();
+                 _e_wizard_next_eval();
                  if ((curpage->show) && (curpage->show(curpage)))
                    {
                       break;
@@ -160,6 +179,11 @@
                        if (curpage->init)
                         curpage->init(curpage);
                    }
+                 next_can = 1;
+                 if (l->prev) back_can = 1;
+                 else back_can = 0;
+                 _e_wizard_back_eval();
+                 _e_wizard_next_eval();
                   if ((curpage->show) && (curpage->show(curpage)))
                    {
                       break;
@@ -228,6 +252,50 @@
    free(pg);
 }
 
+EAPI void
+e_wizard_button_back_enable_set(int enable)
+{
+   back_ok = enable;
+   _e_wizard_back_eval();
+}
+
+EAPI void
+e_wizard_button_next_enable_set(int enable)
+{
+   next_ok = enable;
+   _e_wizard_next_eval();
+}
+
+static void
+_e_wizard_back_eval(void)
+{
+   int ok;
+   
+   ok = back_can;
+   if (!back_ok) ok = 0;
+   if (back_prev != ok)
+     {
+       if (ok) edje_object_signal_emit(o_bg, "e,state,back,enable", "e");
+       else edje_object_signal_emit(o_bg, "e,state,back,disable", "e");
+       back_prev = ok;
+     }
+}
+
+static void
+_e_wizard_next_eval(void)
+{
+   int ok;
+   
+   ok = next_can;
+   if (!next_ok) ok = 0;
+   if (next_prev != ok)
+     {
+       if (ok) edje_object_signal_emit(o_bg, "e,state,next,enable", "e");
+       else edje_object_signal_emit(o_bg, "e,state,next,disable", "e");
+       next_prev = ok;
+     }
+}
+
 static E_Popup *
 _e_wizard_main_new(E_Zone *zone)
 {
@@ -332,10 +400,6 @@
        
        o = e_widget_focused_object_get(o_content);
        if (o) e_widget_activate(o);
-     }
-   else if (!strcmp(ev->keyname, "Escape"))
-     {
-       e_wizard_shutdown();
      }
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/wizard/e_wizard.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_wizard.h  14 Sep 2007 16:57:01 -0000      1.4
+++ e_wizard.h  16 Sep 2007 18:32:32 -0000      1.5
@@ -36,8 +36,9 @@
                    int (*hide)     (E_Wizard_Page *pg),
                    int (*apply)    (E_Wizard_Page *pg)
                    );
-EAPI void
-  e_wizard_page_del(E_Wizard_Page *pg);
+EAPI void e_wizard_page_del(E_Wizard_Page *pg);
+EAPI void e_wizard_button_back_enable_set(int enable);
+EAPI void e_wizard_button_next_enable_set(int enable);
     
 #endif
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/wizard/page_100.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- page_100.c  14 Sep 2007 16:57:01 -0000      1.1
+++ page_100.c  16 Sep 2007 18:32:32 -0000      1.2
@@ -4,6 +4,12 @@
 #include "e.h"
 #include "e_mod_main.h"
 
+static void
+button_cb(void *data, void *data2)
+{
+   e_wizard_button_next_enable_set(1);
+}
+
 EAPI int
 wizard_page_init(E_Wizard_Page *pg)
 {
@@ -23,11 +29,12 @@
    ob = e_widget_list_add(pg->evas, 1, 0);
    o = e_widget_button_add(pg->evas,
                           "Hello World", NULL,
-                          NULL, NULL, NULL);
+                          button_cb, NULL, NULL);
    e_widget_list_object_append(ob, o, 0, 0, 0.5);
    evas_object_show(o);
    e_wizard_page_show(ob);
    pg->data = ob;
+   e_wizard_button_next_enable_set(0);
    return 1; /* 1 == show ui, and wait for user, 0 == just continue */
 }
 EAPI int



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to