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