On Mon, 19 Jun 2006 22:41:40 +0530 "R.Ramkumar" <[EMAIL PROTECTED]>
babbled:
> Hi!
>
> This patch had been sitting with me for quite some time. If you guys
> are ok with it, I could commit it. Basically adds an action for
> toggling/fullscreen'ing of a window. Actually I once wrote an action
> to send data over a socket, making it easy for writing shortcuts for
> music player ipc's around. I know that this could be achieved by an
> "exec nc ...", but I was a bit unsatisfied with the delay :) I'm not
> convinced myself as to whether this should go in, but I just included
> it in case any one felt it was worthy enough.. Feel free to reject it
> :)
well it's not a unified diff - so it'll have to be rejected (ie a diff with the
+'s and -'s at the start of lines). also please attach diffs to mails - not
inline them :)
> Index: e_actions.c
> ===================================================================
> RCS file: /cvs/e/e17/apps/e/src/bin/e_actions.c,v
> retrieving revision 1.70
> diff -r1.70 e_actions.c
> 355a356,416
> > ACT_FN_GO(window_fullscreen_toggle)
> > {
> > if (!obj) obj = E_OBJECT(e_border_focused_get());
> > if (!obj) return;
> > if (obj->type != E_BORDER_TYPE)
> > {
> > obj = E_OBJECT(e_border_focused_get());
> > if (!obj) return;
> > }
> > if (!((E_Border *)obj)->lock_user_fullscreen)
> > {
> > E_Border *bd;
> > bd = (E_Border *)obj;
> > if (bd->fullscreen)
> > e_border_unfullscreen(bd);
> > else if (params == 0 || *params == '\0')
> > e_border_fullscreen(bd, e_config->fullscreen_policy);
> > else if (! strcmp(params, "resize"))
> > e_border_fullscreen(bd, E_FULLSCREEN_RESIZE);
> > else if (! strcmp(params, "zoom"))
> > e_border_fullscreen(bd, E_FULLSCREEN_ZOOM);
> > }
> > }
> >
> > /***************************************************************************/
> > ACT_FN_GO(window_fullscreen)
> > {
> > if (!obj) obj = E_OBJECT(e_border_focused_get());
> > if (!obj) return;
> > if (obj->type != E_BORDER_TYPE)
> > {
> > obj = E_OBJECT(e_border_focused_get());
> > if (!obj) return;
> > }
> > if (!((E_Border *)obj)->lock_user_fullscreen)
> > {
> > E_Border *bd;
> > bd = (E_Border *)obj;
> > if (params)
> > {
> > int v;
> > char buf[32];
> > if (sscanf(params, "%i %20s", &v, buf) == 2)
> > {
> > if (v == 1)
> > {
> > if (buf == 0 || *buf == '\0')
> > e_border_fullscreen(bd,
> > e_config->fullscreen_policy); else if (! strcmp(buf, "resize"))
> > e_border_fullscreen(bd, E_FULLSCREEN_RESIZE);
> > else if (! strcmp(buf, "zoom"))
> > e_border_fullscreen(bd, E_FULLSCREEN_ZOOM);
> > }
> > else if (v == 0)
> > e_border_unfullscreen(bd);
> > }
> > }
> > }
> > }
> >
> > /***************************************************************************/
> 1203a1265,1355
> > #include <sys/socket.h>
> > #include <sys/un.h>
> >
> > #define UNIX_PATH_MAX 108
> >
> > #include <netinet/in.h>
> > #include <netdb.h>
> >
> > ACT_FN_GO(sock)
> > {
> > if (params)
> > {
> > struct sockaddr* addr = NULL;
> > char *buf, *token, *type;
> > int fd, addrlen, flag = 0;
> > buf = strdup (params);
> > if (! (token = strtok (buf, " "))) goto final;
> > type = token;
> > if (! (token = strtok (NULL, " "))) goto final;
> > if ((! strncmp (type, "unix", 4) && (flag = 1)) ||
> > (! strncmp (type, "unix-abs", 4) && (flag = 2)))
> > {
> > struct sockaddr_un *caddr;
> > if ((fd = socket (AF_UNIX, SOCK_DGRAM, 0)) < 0) goto final;
> > caddr = (struct sockaddr_un*) malloc (sizeof (struct
> > sockaddr_un)); caddr->sun_family = AF_UNIX;
> > if (flag == 1)
> > strncpy (caddr->sun_path, token, UNIX_PATH_MAX);
> > else
> > {
> > *(caddr->sun_path) = '\0';
> > strncpy (caddr->sun_path + 1, token, UNIX_PATH_MAX - 1);
> > }
> > addr = (struct sockaddr*) caddr;
> > addrlen = sizeof (struct sockaddr_un);
> > }
> > else if ((! strcmp (type, "udp") && (flag = 3)) ||
> > (! strcmp (type, "tcp") && (flag = 4)))
> > {
> > struct addrinfo hints;
> > struct addrinfo* caddr, *ptr;
> > char *colon;
> > if (! (colon = strchr (token, ':'))) goto final;
> > *colon = '\0';
> > memset (&hints, 0, sizeof (struct addrinfo));
> > hints.ai_family = AF_INET;
> > hints.ai_socktype = ((flag == 3) ? SOCK_DGRAM : SOCK_STREAM);
> > if (getaddrinfo (token, colon + 1, &hints, &caddr)) goto final;
> > for (ptr = caddr; ptr; ptr = ptr->ai_next)
> > {
> > if (ptr->ai_family == hints.ai_family &&
> > ptr->ai_socktype == hints.ai_socktype)
> > {
> > if ((fd = socket (ptr->ai_family, ptr->ai_socktype,
> > ptr->ai_protocol)) < 0)
> > ptr = NULL;
> > else
> > {
> > addrlen = ptr->ai_addrlen;
> > addr = (struct sockaddr*) malloc (addrlen);
> > memcpy (addr, ptr->ai_addr, addrlen);
> > }
> > break;
> > }
> > }
> > freeaddrinfo (caddr);
> > if (! ptr) goto final;
> > }
> > else goto final;
> > if (connect (fd, addr, addrlen) < 0) goto finish;
> > token = strtok (NULL, "");
> > {
> > size_t towrite = strlen (token);
> > ssize_t res;
> > while (towrite)
> > {
> > int res = write (fd, token, towrite);
> > if (res < 0 && errno == EINTR) continue;
> > if (res <= 0) break;
> > towrite -= res;
> > token += res;
> > }
> > }
> > finish:
> > close (fd);
> > free (addr);
> > final:
> > free (buf);
> > }
> > }
> >
> 1596a1749,1756
> > /* window_fullscreen_toggle */
> > ACT_GO(window_fullscreen_toggle);
> > e_register_action_predef_name(_("Window : State"), _("Fullscreen Mode
> > Toggle"), "window_fullscreen_toggle", NULL,
> > EDIT_RESTRICT_ACTION |
> > EDIT_RESTRICT_PARAMS, 0);
> >
> > ACT_GO(window_fullscreen);
> >
> 1795a1956,1960
> > EDIT_RESTRICT_ACTION, 0);
> >
> > /* sock */
> > ACT_GO(sock);
> > e_register_action_predef_name(_("Launch"), _("Output to socket"),
> > "sock", NULL,
>
>
> --
> April 1: This is the day upon which we are reminded of
> what we are on the other three hundred and sixty-four.
> -- Mark Twain, "Pudd'nhead Wilson's Calendar"
>
>
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler) [EMAIL PROTECTED]
裸好多
Tokyo, Japan (東京 日本)
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel