Enlightenment CVS committal

Author  : atmosphere
Project : misc
Module  : elogin

Dir     : misc/elogin/src/client


Modified Files:
        callbacks.c callbacks.h e_login_config.c e_login_config.h 
        e_login_session.c e_login_session.h elogin.h events.c intro.c 


Log Message:
even more patches from JeopardE 

slight interface fixups, and better Xsession support

===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/callbacks.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- callbacks.c 10 Jan 2003 21:36:42 -0000      1.9
+++ callbacks.c 13 Jan 2003 23:09:42 -0000      1.10
@@ -21,26 +21,52 @@
 }
 
 void
-elogin_select_session(E_Login_Session e, int session_index)
+elogin_session_list_clicked(void *session, Evas * evas, Evas_Object * li,
+                            void *event_info)
+{
+   E_Login_Session e = (E_Login_Session) session;
+   int i = 0;
+   Evas_List *t;
+   Evas_Event_Mouse_Up *ev = (Evas_Event_Mouse_Up *) event_info;
+
+   if (ev->button != 1)
+      return;
+
+   /* Find the index of the object that was clicked */
+   for (t = e->listitems; t && evas_list_data(t) != li; t = t->next)
+   {
+      ++i;
+   }
+
+   if (t)
+      elogin_select_session(e, i);
+}
+
+
+void
+elogin_select_session(E_Login_Session e, int s_index)
 {
    int ix, iy;
-   E_Login_Session_Type *st = NULL;
 
    /* Force within list bounds/wraparound */
-   if (session_index >= evas_list_count(e->listitems))
-      session_index = 0;
-   else if (session_index < 0)
-      session_index = evas_list_count(e->listitems) - 1;
+   if (s_index >= evas_list_count(e->listitems))
+      s_index = 0;
+   else if (s_index < 0)
+      s_index = evas_list_count(e->listitems) - 1;
 
    /* Update bullet position */
-   ix = 300;
-   iy = 120 + (session_index * 30);
+   ix = (e->geom.w - 250) / 2 + 20;
+   iy = 120 + (s_index * 30);
    evas_object_move(e->bullet, ix, iy);
 
    /* Update current session */
-   e->session_index = session_index;
-   st = evas_list_nth(e->config->sessions, session_index);
-   e->session = st->path;
+   e->session_index = s_index;
+   e->session = evas_list_nth(e->config->sessions, s_index);
+
+#if ELOGIN_DEBUG
+   printf("Session Selected: Name = %s, Path= %s\n", e->session->name,
+          e->session->path);
+#endif
 }
 
 int
@@ -96,13 +122,31 @@
 
    e_login_auth_setup_environment(e->auth);
 
+/*   snprintf(buf, PATH_MAX, "%s/.xinitrc", e->auth->pam.pw->pw_dir); */
+   if (e->session)
+   {
+      /* If a path was specified for the session, use that path instead of
+         passing the session name to Xsession */
+      if (e->session->path && strlen(e->session->path))
+      {
+         /* Handle the failsafe session */
+         if (!strcmp(e->session->path, "failsafe"))
+            snprintf(buf, PATH_MAX, "/etc/X11/Xsession failsafe");
+         else
+            snprintf(buf, PATH_MAX, "%s", e->session->path);
+      }
+
+      else
+         snprintf(buf, PATH_MAX, "/etc/X11/Xsession %s", e->session->name);
+   }
+   else
+      snprintf(buf, PATH_MAX, "/etc/X11/Xsession");    /* Default 
+          Session 
+        */
+
 #if X_TESTING
+   printf("Would have executed: %s\n", buf);
    snprintf(buf, PATH_MAX, "/usr/X11R6/bin/xterm");
-#else
-   if ((!e->session))
-      snprintf(buf, PATH_MAX, "/etc/X11/Xsession");
-   else
-      snprintf(buf, PATH_MAX, "/etc/X11/Xsession %s", e->session);
 #endif
 
    ecore_sync();
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/callbacks.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- callbacks.h 10 Jan 2003 14:32:53 -0000      1.2
+++ callbacks.h 13 Jan 2003 23:09:50 -0000      1.3
@@ -7,6 +7,9 @@
                           int _x, int _y);
 int elogin_return_key_cb(E_Login_Session e, char *buffer);
 
+void elogin_session_list_clicked(void *session, Evas * evas, Evas_Object * li,
+                                 void *event_info);
+
 void elogin_select_next_session(E_Login_Session e);
 void elogin_select_prev_session(E_Login_Session e);
 void elogin_select_session(E_Login_Session e, int index);
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/e_login_config.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_login_config.c    10 Jan 2003 15:36:03 -0000      1.3
+++ e_login_config.c    13 Jan 2003 23:09:55 -0000      1.4
@@ -1,5 +1,6 @@
 #include "elogin.h"
 #include "e_login_config.h"
+#include "e_login_session.h"
 
 #define REMEMBER_USERS 3
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/e_login_config.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_login_config.h    10 Jan 2003 15:36:04 -0000      1.3
+++ e_login_config.h    13 Jan 2003 23:09:57 -0000      1.4
@@ -42,13 +42,6 @@
 };
 typedef struct _E_Login_Config *E_Login_Config;
 
-struct _E_Login_Session_Type
-{
-   char *name;
-   char *path;
-};
-typedef struct _E_Login_Session_Type E_Login_Session_Type;
-
 E_Login_Config e_login_config_parse(char *file);
 void e_login_config_print(E_Login_Config e);
 void e_login_config_free(E_Login_Config e);
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/e_login_session.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_login_session.c   10 Jan 2003 15:36:04 -0000      1.7
+++ e_login_session.c   13 Jan 2003 23:09:59 -0000      1.8
@@ -58,7 +58,6 @@
    Evas *evas;
    Evas_List *l;
    Evas_Object *li;
-   E_Login_Session_Type *st = NULL;
    int iw, ih, ix, iy;
 
    if (!e)
@@ -142,6 +141,7 @@
    evas_object_resize(e->pointer, iw, ih);
    evas_object_image_fill_set(e->pointer, 0.0, 0.0, (double) iw, (double) ih);
    evas_object_layer_set(e->pointer, 2000);
+   evas_object_pass_events_set(e->pointer, 1);
    evas_object_show(e->pointer);
 
    /* Session list background image */
@@ -153,7 +153,7 @@
    evas_object_resize(e->listbg, iw, ih);
    evas_object_image_fill_set(e->listbg, 0.0, 0.0, (double) iw, (double) ih);
    evas_object_layer_set(e->listbg, 1);
-   evas_object_move(e->listbg, 280.0, 40.0);
+   evas_object_move(e->listbg, (double) (e->geom.w - 250) / 2.0, 40.0);
    evas_object_show(e->listbg);
 
    /* Session list heading */
@@ -162,23 +162,29 @@
    evas_object_text_text_set(e->listhead, "Select Session");
    evas_object_layer_set(e->listhead, 2);
    evas_object_color_set(e->listhead, 90, 60, 25, 255);
-   evas_object_move(e->listhead, 300.0, 80.0);
+   ix = (e->geom.w - 250) / 2 + 20;
+   iy = 80;
+   evas_object_move(e->listhead, (double) ix, (double) iy);
    evas_object_show(e->listhead);
 
    /* Build session list */
-   ix = 334;
+   ix = (e->geom.w - 250) / 2 + 50;
    iy = 120;
 
    e->listitems = NULL;
    for (l = e->config->sessions; l && iy <= 330; l = l->next)
    {
-      st = (E_Login_Session_Type *) evas_list_data(l);
+      char *session_name = ((E_Login_Session_Type *) evas_list_data(l))->name;
+
       li = evas_object_text_add(evas);
       evas_object_text_font_set(li, "notepad.ttf", 16.0);
-      evas_object_text_text_set(li, st->name);
-      evas_object_layer_set(li, 5);
+      evas_object_text_text_set(li, session_name);
+      evas_object_layer_set(li, 25);
       evas_object_color_set(li, 0, 0, 0, 255);
+      evas_object_resize(li, 180, 30);
       evas_object_move(li, (double) ix, (double) iy);
+      evas_object_event_callback_add(li, EVAS_CALLBACK_MOUSE_UP,
+                                     elogin_session_list_clicked, e);
       evas_object_show(li);
       e->listitems = evas_list_append(e->listitems, li);
       iy += 30;
@@ -193,16 +199,13 @@
    evas_object_resize(e->bullet, iw, ih);
    evas_object_image_fill_set(e->bullet, 0.0, 0.0, (double) iw, (double) ih);
    evas_object_layer_set(e->bullet, 5);
-   evas_object_move(e->bullet, 300, 120);
+   evas_object_move(e->bullet, -99999, -99999);
    evas_object_show(e->bullet);
 
    /* Set default session to first in list (for now) */ ;
    l = e->config->sessions;
    if (l)
-   {
-      st = evas_list_data(l);
-      e->session = st->path;
-   }
+      e->session = evas_list_data(l);
    else
       e->session = NULL;
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/e_login_session.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_login_session.h   10 Jan 2003 14:32:54 -0000      1.7
+++ e_login_session.h   13 Jan 2003 23:10:04 -0000      1.8
@@ -12,6 +12,14 @@
 #include "e_login_auth.h"
 #include "e_login_config.h"
 
+struct _E_Login_Session_Type
+{
+   char *name;
+   char *path;
+};
+
+typedef struct _E_Login_Session_Type E_Login_Session_Type;
+
 struct _E_Login_Session
 {
    Evas *evas;                  /* the evas being used in the X session */
@@ -30,7 +38,12 @@
       int w, h;
    }
    geom;                        /* the height/width of the evas */
-   char *session;               /* The session to load */
+
+   E_Login_Session_Type *session;      /* The 
+          session 
+          to 
+          load 
+        */
    int session_index;
 
    Evas_List *users;            /* recent users */
@@ -45,5 +58,7 @@
 
 int e_login_session_auth_user(E_Login_Session e);
 void e_login_session_reset_user(E_Login_Session e);
+void e_login_session_select_session(E_Login_Session e,
+                                    E_Login_Session_Type * t);
 
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/elogin.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- elogin.h    16 Oct 2002 02:05:13 -0000      1.3
+++ elogin.h    13 Jan 2003 23:10:07 -0000      1.4
@@ -13,5 +13,6 @@
 #define ELOGIN_CONFIG_DATABASE PACKAGE_DATA_DIR"/data/config/elogin_config.db"
 
 #define ELOGIN_DEBUG 0
+#define X_TESTING 0
 
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/events.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- events.c    10 Jan 2003 21:36:42 -0000      1.7
+++ events.c    13 Jan 2003 23:10:12 -0000      1.8
@@ -144,15 +144,6 @@
             memset(&typebuffer.buf, 0, USER_PASS_MAX);
             typebuffer.buf_index = 0;
          }
-         else if (!(strcmp(e->key, "Up")))
-         {
-            elogin_select_prev_session(e_session);
-         }
-         else if (!(strcmp(e->key, "Down")))
-         {
-            elogin_select_next_session(e_session);
-         }
-
          if (typebuffer.buf_index >= USER_PASS_MAX)
             return;
          else if (!(strcmp(e->key, "space")))
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/client/intro.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- intro.c     16 Oct 2002 02:05:13 -0000      1.7
+++ intro.c     13 Jan 2003 23:10:15 -0000      1.8
@@ -1,5 +1,6 @@
 #include "elogin.h"
 #include "e_login_config.h"
+#include "callbacks.h"
 
 #define PERCENT_DESC_HORIZONTAL_PLACEMENT 0.5
 #define PERCENT_DESC_VERTICAL_PLACEMENT 0.8
@@ -123,6 +124,9 @@
    if (!config)
       config = e->config;
 
+
+   /* select a default session */
+   elogin_select_session(e, 0);
 
    o = evas_object_text_add(evas);
    evas_object_text_font_set(o, config->welcome.font.name,




-------------------------------------------------------
This SF.NET email is sponsored by: FREE  SSL Guide from Thawte
are you planning your Web Server Security? Click here to get a FREE
Thawte SSL guide and find the answers to all your  SSL security issues.
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to