Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        actions.c dialog.c dialog.h session.c settings.c 


Log Message:
Simplify dialogs (remove rarely used simple dialog variant).

===================================================================
RCS file: /cvs/e/e16/e/src/actions.c,v
retrieving revision 1.206
retrieving revision 1.207
diff -u -3 -r1.206 -r1.207
--- actions.c   20 Aug 2006 17:39:32 -0000      1.206
+++ actions.c   22 Aug 2006 19:23:36 -0000      1.207
@@ -311,7 +311,6 @@
               "Kim Woelders - [EMAIL PROTECTED]"), e_wm_version, e_wm_date);
    DialogItemSetText(di, buf);
 
-   DialogAddButton(d, _("OK"), NULL, 1, DLG_BUTTON_OK);
    DialogBindKey(d, "Return", DialogCallbackClose, 0, NULL);
    DialogBindKey(d, "Escape", DialogCallbackClose, 0, NULL);
 }
@@ -324,7 +323,7 @@
    NULL,
    NULL,
    _DlgFillAbout,
-   0, NULL,
+   DLG_OK | DLG_NO_SEPARATOR, DialogCallbackClose,
 };
 
 void
===================================================================
RCS file: /cvs/e/e16/e/src/dialog.c,v
retrieving revision 1.170
retrieving revision 1.171
diff -u -3 -r1.170 -r1.171
--- dialog.c    20 Aug 2006 19:30:55 -0000      1.170
+++ dialog.c    22 Aug 2006 19:23:36 -0000      1.171
@@ -131,14 +131,13 @@
    EImageBorder        padding;
    char                fill_h;
    char                fill_v;
+   char                do_close;
    int                 align_h;
    int                 align_v;
    int                 row_span;
    int                 col_span;
 
    int                 x, y, w, h;
-   char                hilited;
-   char                clicked;
    Win                 win;
    char               *text;
    union
@@ -153,24 +152,12 @@
    }
    item;
 
-   char                update;
    char                realized;
-};
+   char                update;
 
-typedef struct
-{
-   Dialog             *parent;
-   char               *text;
-   DialogCallbackFunc *func;
-   Win                 win;
-   int                 x, y, w, h;
    char                hilited;
    char                clicked;
-   char                close;
-   TextClass          *tclass;
-   ImageClass         *iclass;
-   int                 image;
-} DButton;
+};
 
 typedef struct
 {
@@ -185,12 +172,9 @@
    EWin               *ewin;
    char               *name;
    char               *title;
-   char               *text;
-   int                 num_buttons;
    Win                 win;
    Pixmap              pmap;
    PmapMask            pmm_bg;
-   DButton           **button;
    TextClass          *tclass;
    ImageClass         *iclass;
    int                 w, h;
@@ -213,7 +197,6 @@
 
 static void         DialogHandleEvents(Win win, XEvent * ev, void *prm);
 static void         DItemHandleEvents(Win win, XEvent * ev, void *prm);
-static void         DButtonHandleEvents(Win win, XEvent * ev, void *prm);
 
 static void         MoveTableBy(Dialog * d, DItem * di, int dx, int dy);
 static void         DialogItemsRealize(Dialog * d);
@@ -288,33 +271,6 @@
 }
 
 static void
-DialogButtonDestroy(DButton * db, int clean)
-{
-   if (db->text)
-      Efree(db->text);
-   if (db->iclass)
-      ImageclassDecRefcount(db->iclass);
-   if (db->tclass)
-      TextclassDecRefcount(db->tclass);
-   if (clean && db->win)
-      EDestroyWindow(db->win);
-   Efree(db);
-}
-
-void
-DialogButtonsDestroy(Dialog * d, int clean)
-{
-   int                 i;
-
-   for (i = 0; i < d->num_buttons; i++)
-      DialogButtonDestroy(d->button[i], clean);
-   if (d->button)
-      Efree(d->button);
-   d->button = NULL;
-   d->num_buttons = 0;
-}
-
-static void
 DialogDestroy(Dialog * d)
 {
    ecore_list_remove_node(dialog_list, d);
@@ -323,9 +279,6 @@
       Efree(d->name);
    if (d->title)
       Efree(d->title);
-   if (d->text)
-      Efree(d->text);
-   DialogButtonsDestroy(d, 0);
    DialogKeybindingsDestroy(d);
    if (d->item)
       DialogItemDestroy(d->item, 0);
@@ -354,25 +307,6 @@
 }
 
 void
-DialogSetText(Dialog * d, const char *text)
-{
-   int                 w, h;
-   EImageBorder       *pad;
-
-   if (d->text)
-      Efree(d->text);
-   d->text = Estrdup(text);
-
-   if ((!d->tclass) || (!d->iclass))
-      return;
-
-   TextSize(d->tclass, 0, 0, STATE_NORMAL, text, &w, &h, 17);
-   pad = ImageclassGetPadding(d->iclass);
-   d->w = w + pad->left + pad->right;
-   d->h = h + pad->top + pad->bottom;
-}
-
-void
 DialogSetTitle(Dialog * d, const char *title)
 {
    if (d->title)
@@ -399,6 +333,7 @@
    return d->data;
 }
 
+#if 0                          /* FIXME - Merge/remove */
 void
 DialogAddButton(Dialog * d, const char *text, DialogCallbackFunc * func,
                char doclose, int image)
@@ -515,12 +450,26 @@
                ST_WIDGET, db->tclass, NULL, db->text);
      }
 }
+#endif
+
+DItem              *
+DialogItemAddButton(DItem * parent, const char *text, DialogCallbackFunc * 
func,
+                   int val, char doclose, int image __UNUSED__)
+{
+   DItem              *di;
+
+   di = DialogAddItem(parent, DITEM_BUTTON);
+   DialogItemSetText(di, text);
+   DialogItemSetCallback(di, func, 0, NULL);
+   di->val = val;
+   di->do_close = doclose;
+
+   return di;
+}
 
 void
 DialogRedraw(Dialog * d)
 {
-   int                 i;
-
    if ((!d->tclass) || (!d->iclass))
       return;
 
@@ -545,24 +494,7 @@
 
    d->redraw = 1;
 
-   for (i = 0; i < d->num_buttons; i++)
-      DialogDrawButton(d, d->button[i]);
-
-   if (d->text)
-     {
-       EImageBorder       *pad;
-
-       pad = ImageclassGetPadding(d->iclass);
-       TextDraw(d->tclass, d->win, d->pmap, 0, 0, STATE_NORMAL, d->text,
-                pad->left, pad->top, d->w - (pad->left + pad->right),
-                d->h - (pad->top + pad->bottom),
-                d->h - (pad->top + pad->bottom),
-                TextclassGetJustification(d->tclass));
-     }
-   else if (d->item)
-     {
-       DialogDrawItems(d, d->item, 0, 0, 99999, 99999);
-     }
+   DialogDrawItems(d, d->item, 0, 0, 99999, 99999);
 }
 
 static void
@@ -604,9 +536,6 @@
 void
 DialogArrange(Dialog * d, int resize)
 {
-   int                 i, w, h, mw, mh;
-   EImageBorder       *pad;
-
    if (d->title)
      {
        HintsSetWindowName(d->win, d->title);
@@ -616,43 +545,6 @@
    if (d->item)
       DialogItemsRealize(d);
 
-   pad = ImageclassGetPadding(d->iclass);
-   w = d->w;
-   h = d->h;
-   mw = 0;
-   mh = 0;
-   for (i = 0; i < d->num_buttons; i++)
-     {
-       if (d->button[i]->w > mw)
-          mw = d->button[i]->w;
-       if (d->button[i]->h > mh)
-          mh = d->button[i]->h;
-     }
-   h += pad->top + pad->bottom + mh;
-
-   if ((pad->left + pad->right +
-       (d->num_buttons * (mw + pad->left + pad->right))) > w)
-      w = pad->left + pad->right +
-        (d->num_buttons * (mw + pad->left + pad->right));
-
-   for (i = 0; i < d->num_buttons; i++)
-     {
-       d->button[i]->x =
-          (((w - (pad->left + pad->right)) -
-            (d->num_buttons * (mw + pad->left +
-                               pad->right))) / 2) + pad->left +
-          (i * (mw + pad->left + pad->right)) + pad->left;
-       d->button[i]->y = d->h - pad->bottom + pad->top;
-
-       d->button[i]->w = mw;
-       d->button[i]->h = mh;
-       EMoveResizeWindow(d->button[i]->win, d->button[i]->x,
-                         d->button[i]->y, d->button[i]->w, d->button[i]->h);
-     }
-   d->w = w;
-   d->h = h;
-   EResizeWindow(d->win, w, h);
-
    ICCCM_SetSizeConstraints(d->ewin, d->w, d->h, d->w, d->h, 0, 0, 1, 1,
                            0.0, 65535.0);
 
@@ -968,30 +860,14 @@
    di = DialogAddItem(parent, DITEM_SEPARATOR);
 }
 
-/*
- * Hacky wrapper to get the dialog closed as needed
- * val = 0: Ok (apply, close)
- *       1: Apply
- *       2: Close
- */
-static void
-DialogCallbackWrapper(Dialog * d, int val, void *data)
-{
-   DialogCallbackFunc *cb = data;
-
-   cb(d, val, NULL);
-
-   if (val == 0)
-      DialogClose(d);
-}
-
 static void
 DialogAddFooter(Dialog * d, DItem * parent, int flags, DialogCallbackFunc * cb)
 {
    DItem              *table, *di;
    int                 n_buttons;
 
-   di = DialogAddItem(parent, DITEM_SEPARATOR);
+   if (!(flags & DLG_NO_SEPARATOR))
+      di = DialogAddItem(parent, DITEM_SEPARATOR);
 
    table = DialogAddItem(parent, DITEM_TABLE);
    DialogItemSetAlign(table, 512, 0);
@@ -999,26 +875,21 @@
 
    /* FIXME - The "real" dialog buttons are slightly different */
    n_buttons = 0;
-   if (flags & 4)
+   if (flags & 1)
      {
-       di = DialogAddItem(table, DITEM_BUTTON);
-       DialogItemSetText(di, _("OK"));
-       DialogItemSetCallback(di, DialogCallbackWrapper, 0, cb);
+       di = DialogItemAddButton(table, _("OK"), cb, 0, 1, DLG_BUTTON_OK);
        n_buttons++;
      }
    if (flags & 2)
      {
-       di = DialogAddItem(table, DITEM_BUTTON);
-       DialogItemSetText(di, _("Apply"));
-       DialogItemSetCallback(di, DialogCallbackWrapper, 1, cb);
-       DialogBindKey(d, "Return", DialogCallbackWrapper, 1, cb);
+       di = DialogItemAddButton(table, _("Apply"), cb, 1, 0, DLG_BUTTON_APPLY);
+       DialogBindKey(d, "Return", cb, 1, NULL);
        n_buttons++;
      }
-   if (flags & 1)
+   if (flags & 4)
      {
-       di = DialogAddItem(table, DITEM_BUTTON);
-       DialogItemSetText(di, _("Close"));
-       DialogItemSetCallback(di, DialogCallbackClose, 0, NULL);
+       di =
+          DialogItemAddButton(table, _("Close"), NULL, 0, 1, DLG_BUTTON_CLOSE);
        DialogBindKey(d, "Escape", DialogCallbackClose, 0, NULL);
        n_buttons++;
      }
@@ -2265,14 +2136,23 @@
 DialogOKstr(const char *title, const char *txt)
 {
    Dialog             *d;
+   DItem              *table, *di;
 
    d = DialogCreate("DIALOG");
+
+   table = DialogInitItem(d);
    DialogSetTitle(d, title);
-   DialogSetText(d, txt);
 
-   DialogAddButton(d, _("OK"), NULL, 1, DLG_BUTTON_OK);
+   di = DialogAddItem(table, DITEM_TEXT);
+   DialogItemSetText(di, txt);
+
+   di = DialogItemAddButton(table, _("OK"), DialogCallbackClose, 0, 1,
+                           DLG_BUTTON_OK);
+   DialogItemSetFill(di, 0, 0);
+
    DialogBindKey(d, "Return", DialogCallbackClose, 0, NULL);
    DialogBindKey(d, "Escape", DialogCallbackClose, 0, NULL);
+
    DialogShow(d);
 }
 
@@ -2504,8 +2384,6 @@
    if (ev->xbutton.window != Mode.events.last_bpress)
       return;
 
-   di->clicked = 0;
-
    switch (di->type)
      {
      case DITEM_AREA:
@@ -2539,10 +2417,18 @@
        break;
      }
 
-   DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
+   if (di->hilited && di->clicked)
+     {
+       if (di->func)
+          di->func(di->dlg, di->val, di->data);
 
-   if (di->func)
-      di->func(di->dlg, di->val, di->data);
+       if (di->do_close)
+          di->dlg->close = 1;
+     }
+
+   di->clicked = 0;
+
+   DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
 }
 
 static void
@@ -2614,57 +2500,6 @@
 
    if (di->dlg->close)
       _DialogClose(di->dlg);
-}
-
-static void
-DButtonHandleEvents(Win win __UNUSED__, XEvent * ev, void *prm)
-{
-   DButton            *db = (DButton *) prm;
-   Dialog             *d;
-   int                 doact = 0;
-
-   d = db->parent;
-
-   switch (ev->type)
-     {
-     case ButtonPress:
-       db->clicked = 1;
-       break;
-     case ButtonRelease:
-       if (db->hilited && db->clicked)
-          doact = 1;
-       db->clicked = 0;
-       break;
-     case EnterNotify:
-       db->hilited = 1;
-       break;
-     case LeaveNotify:
-       db->hilited = 0;
-       break;
-     default:
-       return;
-     }
-
-   DialogDrawButton(d, db);
-
-   if (doact)
-     {
-       if (db->func)
-         {
-            int                 i;
-
-            for (i = 0; i < d->num_buttons; i++)
-               if (d->button[i] == db)
-                  break;
-            db->func(d, i, NULL);
-         }
-
-       if (db->close)
-          DialogClose(d);
-     }
-
-   if (d->close)
-      _DialogClose(d);
 }
 
 /*
===================================================================
RCS file: /cvs/e/e16/e/src/dialog.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- dialog.h    20 Aug 2006 19:30:55 -0000      1.17
+++ dialog.h    22 Aug 2006 19:23:36 -0000      1.18
@@ -44,8 +44,12 @@
 #define DLG_BUTTON_CLOSE   4
 
 /* Dialog footer flags */
-#define DLG_OAC 7
-#define DLG_OC  5
+#define DLG_OK             0x01
+#define DLG_APPLY          0x02
+#define DLG_CLOSE          0x04
+#define DLG_NO_SEPARATOR   0x10
+#define DLG_OC             (DLG_OK | DLG_CLOSE)
+#define DLG_OAC            (DLG_OK | DLG_APPLY | DLG_CLOSE)
 
 typedef struct _dialog Dialog;
 typedef struct _ditem DItem;
@@ -85,7 +89,6 @@
 void                DialogClose(Dialog * d);
 
 void                DialogArrange(Dialog * d, int resize);
-void                DialogButtonsDestroy(Dialog * d, int clean);
 void                DialogKeybindingsDestroy(Dialog * d);
 void                DialogItemTableEmpty(DItem * di);
 
@@ -95,10 +98,6 @@
 void                DialogFill(Dialog * d, DItem * parent, const DialogDef * 
dd,
                               void *data);
 
-void                DialogAddButton(Dialog * d, const char *text,
-                                   DialogCallbackFunc * func, char doclose,
-                                   int image);
-
 DItem              *DialogInitItem(Dialog * d);
 DItem              *DialogAddItem(DItem * dii, int type);
 Dialog             *DialogItemGetDialog(DItem * di);
@@ -150,6 +149,10 @@
                                              DialogItemCallbackFunc * func);
 void                DialogItemAreaSetEventFunc(DItem * di,
                                               DialogItemCallbackFunc * func);
+
+DItem              *DialogItemAddButton(DItem * parent, const char *text,
+                                       DialogCallbackFunc * func, int val,
+                                       char doclose, int image);
 
 void                DialogCallbackClose(Dialog * d, int val, void *data);
 
===================================================================
RCS file: /cvs/e/e16/e/src/session.c,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -3 -r1.135 -r1.136
--- session.c   20 Aug 2006 17:39:32 -0000      1.135
+++ session.c   22 Aug 2006 19:23:36 -0000      1.136
@@ -617,17 +617,16 @@
        /* 0:Halt 1:Reboot 2:LogOut -:No */
        switch (val)
          {
-         case 0:
-            if (Conf.session.enable_reboot_halt)
-               SessionExit(EEXIT_EXEC, Conf.session.cmd_halt);
-            else
-               SessionExit(EEXIT_EXIT, NULL);
+         default:
             break;
          case 1:
-            SessionExit(EEXIT_EXEC, Conf.session.cmd_reboot);
+            SessionExit(EEXIT_EXIT, NULL);
             break;
          case 2:
-            SessionExit(EEXIT_EXIT, NULL);
+            SessionExit(EEXIT_EXEC, Conf.session.cmd_reboot);
+            break;
+         case 3:
+            SessionExit(EEXIT_EXEC, Conf.session.cmd_halt);
             break;
          }
      }
@@ -639,27 +638,34 @@
 SessionLogoutConfirm(void)
 {
    Dialog             *d;
+   DItem              *table, *di;
 
    d = DialogFind("LOGOUT_DIALOG");
    if (!d)
      {
        SoundPlay("SOUND_LOGOUT");
        d = DialogCreate("LOGOUT_DIALOG");
+       table = DialogInitItem(d);
        DialogSetTitle(d, _("Are you sure?"));
-       DialogSetText(d, _("\n\n"
-                          "    Are you sure you wish to log out ?    \n"
-                          "\n\n"));
+       di = DialogAddItem(table, DITEM_TEXT);
+       DialogItemSetText(di, _("\n\n"
+                               "    Are you sure you wish to log out ?    \n"
+                               "\n\n"));
+       table = DialogAddItem(table, DITEM_TABLE);
+       DialogItemTableSetOptions(table, 2, 0, 1, 0);
        if (Conf.session.enable_reboot_halt)
          {
-            DialogAddButton(d, _("  Yes, Shut Down  "), LogoutCB, 1,
-                            DLG_BUTTON_OK);
-            DialogAddButton(d, _("  Yes, Reboot  "), LogoutCB, 1,
-                            DLG_BUTTON_OK);
+            DialogItemTableSetOptions(table, 4, 0, 1, 0);
+            DialogItemAddButton(table, _("  Yes, Shut Down  "), LogoutCB, 3,
+                                1, DLG_BUTTON_OK);
+            DialogItemAddButton(table, _("  Yes, Reboot  "), LogoutCB, 2,
+                                1, DLG_BUTTON_OK);
          }
-       DialogAddButton(d, _("  Yes, Log Out  "), LogoutCB, 1, DLG_BUTTON_OK);
-       DialogAddButton(d, _("  No  "), NULL, 1, DLG_BUTTON_CANCEL);
-       DialogBindKey(d, "Escape", DialogCallbackClose, 1, NULL);
-       DialogBindKey(d, "Return", LogoutCB, 0, NULL);
+       DialogItemAddButton(table, _("  Yes, Log Out  "), LogoutCB, 1,
+                           1, DLG_BUTTON_OK);
+       DialogItemAddButton(table, _("  No  "), NULL, 0, 1, DLG_BUTTON_CANCEL);
+       DialogBindKey(d, "Escape", DialogCallbackClose, 0, NULL);
+       DialogBindKey(d, "Return", LogoutCB, 1, NULL);
      }
 
    DialogShowCentered(d);
===================================================================
RCS file: /cvs/e/e16/e/src/settings.c,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -3 -r1.156 -r1.157
--- settings.c  20 Aug 2006 19:30:55 -0000      1.156
+++ settings.c  22 Aug 2006 19:23:36 -0000      1.157
@@ -657,7 +657,6 @@
       return;
 
    DialogItemTableEmpty(table);
-   DialogButtonsDestroy(d, 1);
    DialogKeybindingsDestroy(d);
 
    DialogSetTitle(d, _(dd->title));



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to