diff --git a/INSTALL.es b/INSTALL.es index 127424d6..00cab9ca 100644 --- a/INSTALL.es +++ b/INSTALL.es @@ -235,8 +235,8 @@ Subject: Re: El paquete WindowMaker funciona bien en Alpha? > por favor probar esto? Debería el parámetro ser pasado al compilar > en Alpha? -Descargo de responsabilidad: alphas bajo mi mando nunca han ejecutado X y are -least likely to suddenly start running it anytime soon. +Descargo de responsabilidad: alphas bajo mi mando nunca han ejecutado X +y es poco probable de que las ejecute repentinamente en algún momento. Alpha suele tener alguna ridícula poca cantidad de memoria compartida configurada. diff --git a/NEWS b/NEWS index 1012d597..b7b975bb 100644 --- a/NEWS +++ b/NEWS @@ -92,10 +92,27 @@ that this happened. New dock option --------------- -Copy/paste launch in dock. For example, put -netscape %s in the Docked icon for Netscape, -select an url somewhere and then middle-click the icon. -The command will be launched with the "pasted" string. +Copy/paste launch in dock. +========================== + +For example, put netscape %s in the Docked icon for Netscape, select an url +somewhere and then middle-click the icon. The command will be launched with +the "pasted" string. + + +Xinerama Support +================ + +Supported Xinerama features: + +- Normal maximization of windows will maximize to only one of the screens, +the one where the cursor pointer is. + +- Full Maximize command in window menu + +- Place dialogs in the middle of the head where the pointer is + +- Try to place windows inside one head in non-manual placement modes Less dependancies diff --git a/README.es b/README.es new file mode 100644 index 00000000..c00c7c98 --- /dev/null +++ b/README.es @@ -0,0 +1,370 @@ + + + + GNU Window Maker + X11 Window Manager + + + + + por + + Alfredo K. Kojima + + Dan Pascu + + ]d + + + Web/FTP Master + + Phillip Smith + + + + Felicitaciones! A adquirido un dispositivo excelentísimo + que le proporcionará miles de años de uso sin problemas + ,si no fuera porque indudablemente lo destruirá a través de alguna + maniobra estúpida típica de consumidor. Por eso le pedimos + por EL AMOR DE DIOS LEA ESTE MANUAL DEL PROPIETARIO CUIDADOSAMENTE + ANTES DE DESEMPAQUETAR EL DISPOSITIVO. ¿YA LO DESEMPAQUETÓ, NO? + DESEMPAQUETELO Y ENCHÚFELO Y ENCIÉNDALO Y DEJE DE TOQUETEAR LAS PERILLAS, + Y AHORA SUS CHICOS, EL MISMO CHICO QUE UNA VEZ METIÓ UNA SALCHICHA EN SU + VIDEOCASETERA Y DEFINIÓ UN "AVANCE RÁPIDO", ¿ESTE CHICO TAMBIÉN ESTÁ + TOQUETEANDO LAS PERILLAS, CIERTO? ¿Y RECIEN AHORA ESTÁ COMENZANDO A LEER + LAS INSTRUCCIONES, CIERTO? PODEMOS TAMBIÉN ROMPER ESTOS DISPOSITIVOS + EN LA FÁBRICA ANTES DE DESPACHÁRLOS, SABIA ESO? + + + -- Dave Barry, "Lea Esto Primero!" + + +Descripción +=========== + +Window Maker es el gestor de ventanas GNU para el Sistema de Ventanas X. Fue +diseñado para emular la apariencia y funcionalidad de parte del GUI de NEXTSTEP(mr). +Procura ser relativamente rápido y pequeño, rico en características, fácil de configurar +y usar, con una simple y elegante apariencia sacada desde NEXTSTEP(mr). + +Window Maker fue diseñado teniendo en mente la integración con GNUstep y por eso +es el gestor de ventanas "oficial". Es también parte del proyecto GNU (www.gnu.org) +. Lea mas sobre GNUstep más adelante en este archivo. + + +Pistas (información dada por las aplicaciones para integrarse bien con el gestor de +ventanas) para Motif(tm), OPEN LOOK(tm), KDE y GNOME también son soportados. +Entonces puede reemplazar cualquiera de los gestores de ventana para estos entornos +con Window Maker manteniendo la mayoría, si no todo, de la funcionalidad del +gestor de ventanas nativo. + +Window Maker antes se llamaba WindowMaker. + +Window Maker no tiene relación con Windowmaker, el software para +hacer ventanas y puertas. + + +Documentación +============= + +Lea antes de preguntar. + +* Los archivos README distribuidos por todas partes del árbol de fuentes +contienen información relacionada al contenido en los directorios. + +* INSTALL tiene instrucciones de instalación y algunos consejos cuando tenga +algún problema. Significa que debería leerlo antes de la instalación. +No fue escrito solo para ocupar espacio en el paquete... + +* FAQ: Preguntas Frecuentes. LEALO!!! FAQ.I18N es para +preguntas relacionadas con la internacionalización. + +* NEWS: lista los cambios visibles por el usuario desde la versión anterior. +Léalo si está actualizando. + +* MIRRORS: algunos lugares alternativos donde puede obtener Window Maker, +incluyendo paquetes de Window Maker específicos para ciertas plataformas. + +* BUGFORM: uselo para enviar reportes de errores. Por favor uselo. + +* ChangeLog: ¿que cambió desde la versión anterior? + +* BUGS: lista de errores conocidos. + +*** Tutorial + +Hay un tutorial mantenido por Georges Tarbouriech en: + +http://www.linuxfocus.org/~georges.t/ + +*** Guía del Usuario + +La Guía del Usuario de Window Maker puede ser bajada desde el ftp oficial +o por sitios web. +Puede también ser vista en formato HTML en: + +http://people.delphi.com/crc3419/WMUserGuide/index.htm + +La Guía del Usuario explica como usar Window Maker, los archivos de configuración +y opciones. + +*** man pages + +Tipee "man wmaker" en el prompt del shell para obtener ayuda general sobre Window Maker. + + +Directorios y Archivos en el Árbol de Fuentes +============================================= + +* Install es un script para configurar y compilar Window Maker de una forma +fácil (no es que la forma normal sea difícil, pero...). + +* AUTORES: los créditos + +* TODO: planes para el futuro. + +* contrib/ tiene algunos parches aportados que no están soportados por Window Maker + porque entran en conflicto con la filosofía de diseño de los desarrolladores o por + alguna otra razón. + +* util/ tiene varios programas utilitarios. + +* WPrefs.app/ es el programa de configuración. + +* src/wconfig.h posee opciones de compilación que puede cambiar para + seleccionar algunas opciones/caracteristicas y otras cosas. + +* WINGs/ biblioteca widget para imitación de NEXTSTEP. + +* wrlib/ biblioteca de procesamiento de imagen. + +* po/ posee catálogos de mensajes que son las versiones traducidas de los mensajes +mostrados por Window Maker. + +* docklib-x.x.tar.gz es una biblioteca para escribir dockapps. + +SOCORRO!!! +========== + +Hay una lista de correo para discutir sobre Window Maker en +wm-user@windowmaker.org. Para suscribirse, envie un mensaje que contenga: + + subscribe +en el tema del mensaje a wm-user-request@windowmaker.org + +Si tiene algun problema, pregunte aquí (después de leer los docs, por supuesto). Es +más probable que las personas de la lista sepan contestar sus preguntas +que nosotros. Para reportes de errores use el BUGFORM. + +Si tiene un problema con una versión precompilada de Window Maker +(rpm, deb etc), primero pregunte a la persona que hizo el paquete. + +NOTA IMPORTANTE: cuando pida ayuda (en la lista de correo o a los desarrolladores, +directamente) *siempre* envie información sobre el sistema que está usando. Puede +usar la sección de información del sistema al final del BUGFORM como una guía. +Otra cosa: por favor no envie correo HTML. + +También hay un canal de IRC #windowmaker en openprojects. Únase aquí, +conecte su cliente de irc a irc.openprojects.net, irc.linux.com o algún otro +servidor de esa red. + +GNUstep +======= + +GNUStep es un completo sistema de desarrollo orientado a objetos, basado en la +especificación OpenStep liberada por NeXT(tm) (ahora Apple(tm) y Sun(tm)). Ello +proveerá todo lo que se necesita para producir aplicaciones multiplataforma, +orientadas a objetos, gráficas (y no gráficas); suministrando dentro de otras cosas, +bibliotecas base del sistema, una estructura de alto nivel para aplicaciones GUI que +usan un modelo de imagenes de tipo Display PostScript(tm) (DGS), objetos para acceso +a bases de datos relacionales, objetos distribuidos y un entorno de desarrollo gráfico, +con herramientas como un modelador de interfaces, un sistema para administración del +proyecto (central de proyecto) y otras herramientas. + +El sistema de desarrollo de GNUStep será usado para crear un entorno de usuario, +con todo lo necesario para una completa interface gráfica de usuario, tal como +un visualizador de archivos, editores de texto y otras aplicaciones. Note que el +entorno de usuario (o "entorno de escritorio") es solo un pequeña parte de todo +el proyecto GNUStep y por lo tanto no "compite" con otros proyectos como KDE o GNOME, +simplemente porque son cosas completamente diferentes. + +Para más información sobre el proyecto GNUStep, visite: http://www.gnustep.org y +http://gnustep.current.nu + + +Ejecutando multiples instancias de Window Maker +=============================================== + +No es una buena idea eejcutar más de una instancia de Window Maker desde +el mismo usuario (ya que wmaker usará los mismos archivos de configuración) +al mismo tiempo. Podría obtener un comportamiento inesperado cuando Window +Maker actualiza sus archivos de configuración. + +Si de verdad desea hacer esto, intente ejecutar Window Maker con la opción +de linea de comando --static ya que así no actualizará o cambiará ninguno de los +archivos de configuración. + +Soporte para Sonido +=================== + +El sonido es soportado por los sistemas Linux y FreeBSD con el uso de +un módulo distribuido separadamente llamado WSoundServer. Hay también +una herramienta de configuracion gráfica para definir sus sonidos llamada +WSoundPref. +Puede bajar esto en: +http://shadowmere.student.utwente.nl/ + +Note que debe compilar Window Maker con el parámetro --enable-sound +y definir la opción DisableSound a NO. + +Soporte para OpenL**k +===================== + +Calculo que muchos usuarios, principalmente del mundo académico, +tienen que usar aplicaciones escritas usando los toolkits OpenL**k, +así que tener soporte para estas aplicaciones debe ser de algún uso. + +Para activarlo, use --enable-openlook al hacer el configure. Note que +no todo está implementado. + +Las cosas implementadas incluyen consejos de adorno y el push-pin. Las cosas +no implementadas incluyen _SUN_WINDOW_STATE (la cosa compuesta que lleva el estado), +cosas que interesan sobre arrastrar y soltar, cabecera (no estoy seguro de que sea así) +y cadenas footer. + +Por favor hágame saber si algo no funciona. Si la característica ya está implimentada, +pero no funciona por un error, intentaré arreglarlo. Si esta es una característica no +implementada y menciona que es importante (obs: no solo superficial), consideraré +implementarlo. + +El estado "out" del pushpin es emular un botón presionado. Solo cliquee +en el botón para hacer que se libere, lo cuál corresponde al estado +pinned-in del pushpin. Si pulsa otra vez en el boton liberado, servirá de +botón normal de cerrado: cerrará la ventana. + + +Ajuste de Rendimiento. +===================== +Si quiere disminuir el uso de memoria por parte de Window Maker y mejorar el +rendimiento, manteniendo una linda apariencia y buena funcionalidad, siga los +items de abajo: + +- use texturas sólidas para todo, principalmente barras de título y menúes. + Si quiere un escritorio de aspecto lindo, use el estilo Tradicional. +- Apague NewStyle y Superfluous +- No una muchos atajos al menú y mantenga solo los items esenciales en el menú. +- Active DisableClip +- edite wconfig.h y desactive el NUMLOCK_HACK y lo mismo con las características + que no use (tenga en mente que algunos de los #defines podrían no funcionar, + ya que ellos no están completamente soportados). Asegúrese de mantener siempre + Numlock y ScrollLock apagados. +- Active DisableAnimations. Puede también #undefine ANIMATIONS en wconfig.h +- quite las entradas por defecto IconPath y PixmapPath para contener solo las + rutas que en verdad tiene en su sistema. +- no use imágenes grandes en el fondo raíz. +- quite el soporte para los formatos de imagen que no use. +- para reducir el uso de la memoria, desactive el caché de ícono, definiendo + la variable de entorno RIMAGE_CACHE a 0. Si quiere aumentar el rendimiento + a expensas del uso de la memoria, defina este valor a un valor igual al + número de íconos distintos que use. + +Control del Mouse por Teclado +============================= + +Muchas personas preguntan sobre agregar control por teclado al mouse, como +en fvwm, pero Window Maker no tendrá tal característica. La extensión XKB +soporta simulación de mouse desde el teclado, de una manera mucho más poderosa +que cualquier otra simulación hecha por un administrador de ventanas. + +Para activarlo, presione la combinación de teclas Control+Shift+NumLock o +Shift+NumLock. Debiera escuchar el beep del parlante. Para desactivarlo, +haga lo mismo. + +Para controlar el mouse el teclado numérico se usa así: +- 4 (flecha izquierda), 7 (Home), 8 (flecha arriba), 9 (PgUP), 6 (flecha derecha), + 3 (PgDn), 2 (flecha abajo) y 1 (Fin) mueve el mouse a la correspondiente + dirección; +- sosteniendo una de las teclas de arriba y luego sosteniendo la tecla 5 moverá +el puntero más rápido; +- / seleccionará el primer botón del mouse (botón izquierdo); +- * seleccionará el segundo botón del mouse (botón del medio); +- - seleccionará el tercer botón del mouse (botón derecho); +- 5 hará un click con el botón actualmente seleccionado del mouse; +- + hará un doble click con el botón actualmente seleccionado; +- 0 (Ins) cliqueará y mantendrá el botón seleccionado actualmente; +- . (Del) liberará el botón seleccionado actualmente que fue anteriormente + cliqueado con la tecla 0 (Ins). + +Los valores anteriores de las teclas funcionarán en un servidor X XFree86 3.2 +(X11R6.1) pero su alcance puede variar. + +Como hacer un gdb backtrace +=========================== + +Backtraces pueden ayudarnos a arreglar errores que hicieron que Window Maker falle. +Si encuentra un bug que hace fallar a Window Maker, por favor envie un backtrace con su +reporte de error. + +Para hacer un backtrace útil, necesita un archivo core con información de depuración +producida por Window Maker cuando falló. Debería haber sido instalado sin stripping también. + +Para compilar wmaker con información de depuración: + +./configure +make CFLAGS=-g + +Si obtiene el cuadro de diálogo que le dice que wmaker falló y le +pregunta que hacer, respóndale "Abortar y dejar un archivo core" + +script +cd src +gdb .libs/wmaker path_to_the_core_file + +Luego, en el prompt gdb escriba "bt". Salga de gdb escribiendo "quit" +y luego, en el prompt del shell, scriba "exit" + +El archivo llamado typescript contendrá el backtrace. + +Derechos de Autor y Descargo de Responsabilidad +=============================================== + +Window Maker está registrado por Alfredo K. Kojima y está licensiado por la +Licensia Pública General GNU. Lea el archivo COPYING para leer la licensia +completa. + +Los íconos que son distribuidos con este programa y fueron hechos por Marco +van Hylckama Vlieg, están licenciados por la Licencia Pública General GNU. +Lea el archivo COPYING para leer la licencia completa. + +Los íconos listados en COPYING.WTFPL y son distribuidos en este programa +fueron hechos por Banlu Kemiyatorn (]d), están licenciados por la +"do What The Fuck you want to Public License". Lea el archivo COPYING.WTFPL +para leer la licencia completa. + +NeXT, OpenStep y NEXTSTEP son marcas registradas de NeXT Computer, Inc. +Todas las otras marcas registradas son propiedad de sus respectivos dueños. + +Los autores se reservan el derecho de hacer cambios en el software sin previo +aviso. + +Autores +======= + +Alfredo K. Kojima +Dan Pascu +]d + +Por favor no nos haga preguntas antes de leer la documentación (especialmente +la FAQ, este archivo y los archivos INSTALL) y sobre cosas "cool" que ve en +las capturas de pantalla del escritorio de las personas. + +El archivo AUTHORS contiene una lista de las personas que han contribuido +con el proyecto. El nombre de las personas que han ayudado con localization +(traducción) se puede encontrar en po/README y Window Maker/README + +Si tiene algún comentario, arreglos y reportes de errores (complete BUGFORMs) +y enviémelos a developers@windowmaker.org + + + +traducido por Efraín Maximiliano Palermo diff --git a/WPrefs.app/KeyboardShortcuts.c b/WPrefs.app/KeyboardShortcuts.c index 7c236da2..f48a27fe 100644 --- a/WPrefs.app/KeyboardShortcuts.c +++ b/WPrefs.app/KeyboardShortcuts.c @@ -21,6 +21,9 @@ */ +#include "config.h" /* for HAVE_XCONVERTCASE */ + + #include "WPrefs.h" #include @@ -120,6 +123,121 @@ static char *keyOptions[] = { +#ifndef HAVE_XCONVERTCASE +/* from Xlib */ + +static void +XConvertCase(sym, lower, upper) + register KeySym sym; + KeySym *lower; + KeySym *upper; +{ + *lower = sym; + *upper = sym; + switch(sym >> 8) { + case 0: /* Latin 1 */ + if ((sym >= XK_A) && (sym <= XK_Z)) + *lower += (XK_a - XK_A); + else if ((sym >= XK_a) && (sym <= XK_z)) + *upper -= (XK_a - XK_A); + else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis)) + *lower += (XK_agrave - XK_Agrave); + else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis)) + *upper -= (XK_agrave - XK_Agrave); + else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn)) + *lower += (XK_oslash - XK_Ooblique); + else if ((sym >= XK_oslash) && (sym <= XK_thorn)) + *upper -= (XK_oslash - XK_Ooblique); + break; + case 1: /* Latin 2 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym == XK_Aogonek) + *lower = XK_aogonek; + else if (sym >= XK_Lstroke && sym <= XK_Sacute) + *lower += (XK_lstroke - XK_Lstroke); + else if (sym >= XK_Scaron && sym <= XK_Zacute) + *lower += (XK_scaron - XK_Scaron); + else if (sym >= XK_Zcaron && sym <= XK_Zabovedot) + *lower += (XK_zcaron - XK_Zcaron); + else if (sym == XK_aogonek) + *upper = XK_Aogonek; + else if (sym >= XK_lstroke && sym <= XK_sacute) + *upper -= (XK_lstroke - XK_Lstroke); + else if (sym >= XK_scaron && sym <= XK_zacute) + *upper -= (XK_scaron - XK_Scaron); + else if (sym >= XK_zcaron && sym <= XK_zabovedot) + *upper -= (XK_zcaron - XK_Zcaron); + else if (sym >= XK_Racute && sym <= XK_Tcedilla) + *lower += (XK_racute - XK_Racute); + else if (sym >= XK_racute && sym <= XK_tcedilla) + *upper -= (XK_racute - XK_Racute); + break; + case 2: /* Latin 3 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XK_Hstroke && sym <= XK_Hcircumflex) + *lower += (XK_hstroke - XK_Hstroke); + else if (sym >= XK_Gbreve && sym <= XK_Jcircumflex) + *lower += (XK_gbreve - XK_Gbreve); + else if (sym >= XK_hstroke && sym <= XK_hcircumflex) + *upper -= (XK_hstroke - XK_Hstroke); + else if (sym >= XK_gbreve && sym <= XK_jcircumflex) + *upper -= (XK_gbreve - XK_Gbreve); + else if (sym >= XK_Cabovedot && sym <= XK_Scircumflex) + *lower += (XK_cabovedot - XK_Cabovedot); + else if (sym >= XK_cabovedot && sym <= XK_scircumflex) + *upper -= (XK_cabovedot - XK_Cabovedot); + break; + case 3: /* Latin 4 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XK_Rcedilla && sym <= XK_Tslash) + *lower += (XK_rcedilla - XK_Rcedilla); + else if (sym >= XK_rcedilla && sym <= XK_tslash) + *upper -= (XK_rcedilla - XK_Rcedilla); + else if (sym == XK_ENG) + *lower = XK_eng; + else if (sym == XK_eng) + *upper = XK_ENG; + else if (sym >= XK_Amacron && sym <= XK_Umacron) + *lower += (XK_amacron - XK_Amacron); + else if (sym >= XK_amacron && sym <= XK_umacron) + *upper -= (XK_amacron - XK_Amacron); + break; + case 6: /* Cyrillic */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XK_Serbian_DJE && sym <= XK_Serbian_DZE) + *lower -= (XK_Serbian_DJE - XK_Serbian_dje); + else if (sym >= XK_Serbian_dje && sym <= XK_Serbian_dze) + *upper += (XK_Serbian_DJE - XK_Serbian_dje); + else if (sym >= XK_Cyrillic_YU && sym <= XK_Cyrillic_HARDSIGN) + *lower -= (XK_Cyrillic_YU - XK_Cyrillic_yu); + else if (sym >= XK_Cyrillic_yu && sym <= XK_Cyrillic_hardsign) + *upper += (XK_Cyrillic_YU - XK_Cyrillic_yu); + break; + case 7: /* Greek */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (sym >= XK_Greek_ALPHAaccent && sym <= XK_Greek_OMEGAaccent) + *lower += (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent); + else if (sym >= XK_Greek_alphaaccent && sym <= XK_Greek_omegaaccent && + sym != XK_Greek_iotaaccentdieresis && + sym != XK_Greek_upsilonaccentdieresis) + *upper -= (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent); + else if (sym >= XK_Greek_ALPHA && sym <= XK_Greek_OMEGA) + *lower += (XK_Greek_alpha - XK_Greek_ALPHA); + else if (sym >= XK_Greek_alpha && sym <= XK_Greek_omega && + sym != XK_Greek_finalsmallsigma) + *upper -= (XK_Greek_alpha - XK_Greek_ALPHA); + break; + case 0x14: /* Armenian */ + if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) { + *lower = sym | 1; + *upper = sym & ~1; + } + break; + } +} +#endif + + static char* captureShortcut(Display *dpy, _Panel *panel) { @@ -135,7 +253,8 @@ captureShortcut(Display *dpy, _Panel *panel) ksym = XKeycodeToKeysym(dpy, ev.xkey.keycode, 0); if (!IsModifierKey(ksym)) { XConvertCase(ksym, &lksym, &uksym); - key=XKeysymToString(uksym); + key=XKeysymToString(uksym); + panel->capturing = 0; break; } diff --git a/WPrefs.app/Menu.c b/WPrefs.app/Menu.c index a347d80d..fd0e204e 100644 --- a/WPrefs.app/Menu.c +++ b/WPrefs.app/Menu.c @@ -83,6 +83,7 @@ typedef struct _Panel { WMFrame *pipeF; WMTextField *pipeT; + WMButton *pipeCacheB; WMFrame *dpathF; WMTextField *dpathT; @@ -134,6 +135,7 @@ typedef struct { } external; struct { char *command; + unsigned cached:1; } pipe; struct { char *directory; @@ -691,8 +693,8 @@ createPanel(_Panel *p) /* pipe */ panel->pipeF = WMCreateFrame(panel->optionsF); - WMResizeWidget(panel->pipeF, width, 100); - WMMoveWidget(panel->pipeF, 10, 50); + WMResizeWidget(panel->pipeF, width, 150); + WMMoveWidget(panel->pipeF, 10, 30); WMSetFrameTitle(panel->pipeF, _("Command")); panel->pipeT = WMCreateTextField(panel->pipeF); @@ -710,6 +712,14 @@ createPanel(_Panel *p) WMSetLabelText(label, _("Enter a command that outputs a menu\n" "definition to stdout when invoked.")); + + panel->pipeCacheB = WMCreateSwitchButton(panel->pipeF); + WMResizeWidget(panel->pipeCacheB, width - 20, 40); + WMMoveWidget(panel->pipeCacheB, 10, 110); + WMSetButtonText(panel->pipeCacheB, + _("Cache menu contents after opening for\n" + "the first time")); + WMMapSubwidgets(panel->pipeF); @@ -983,11 +993,17 @@ parseCommand(WMPropList *item) /* * dir menu, menu file * dir WITH - * |pipe (TODO: ||pipe) + * |pipe */ p = parameter; while (isspace(*p) && *p) p++; if (*p == '|') { + if (*(p+1) == '|') { + p++; + data->param.pipe.cached = 0; + } else { + data->param.pipe.cached = 1; + } data->type = PipeInfo; data->param.pipe.command = wtrimspace(p+1); } else { @@ -1226,6 +1242,10 @@ updateMenuItem(_Panel *panel, WEditMenuItem *item, WMWidget *changedWidget) REPLACE(data->param.pipe.command, WMGetTextFieldText(panel->pipeT)); } + if (changedWidget == panel->pipeCacheB) { + data->param.pipe.cached = + WMGetButtonSelected(panel->pipeCacheB); + } break; case ExternalInfo: @@ -1290,6 +1310,7 @@ menuItemCloned(WEditMenuDelegate *delegate, WEditMenu *menu, case PipeInfo: newData->param.pipe.command = DUP(data->param.pipe.command); + newData->param.pipe.cached = data->param.pipe.cached; break; case ExternalInfo: @@ -1415,6 +1436,7 @@ menuItemSelected(WEditMenuDelegate *delegate, WEditMenu *menu, case PipeInfo: WMSetTextFieldText(panel->pipeT, data->param.pipe.command); + WMSetButtonSelected(panel->pipeCacheB, data->param.pipe.cached); break; case ExternalInfo: @@ -1682,11 +1704,14 @@ processData(char *title, ItemData *data) if (!data->param.pipe.command) return NULL; WMAddToPLArray(item, pomenu); - s1 = wstrconcat("| ", data->param.pipe.command); + if (data->param.pipe.cached) + s1 = wstrconcat("| ", data->param.pipe.command); + else + s1 = wstrconcat("|| ", data->param.pipe.command); WMAddToPLArray(item, WMCreatePLString(s1)); wfree(s1); break; - + case ExternalInfo: if (!data->param.external.path) return NULL; diff --git a/WPrefs.app/po/README b/WPrefs.app/po/README index d9138b8b..a629bb43 100644 --- a/WPrefs.app/po/README +++ b/WPrefs.app/po/README @@ -18,7 +18,8 @@ es.po Spanish Alvaro Herrera fi.po Finnish Tomi Kajala it.po Italian Michele Campeotto ru.po Russian Igor P. Roboul -de.po German Bernd Eggert +de.po German Torsten Marek + Bernd Eggert Guido Scholz hu.po Hungarian Horvath Szabolcs bg.po Bulgarian Slavei Karadjov diff --git a/doc/wcopy.1 b/doc/wcopy.1 new file mode 100644 index 00000000..f7d36fe0 --- /dev/null +++ b/doc/wcopy.1 @@ -0,0 +1,58 @@ +.TH wcopy,wpaste 1 04/09/01 +.UC 4 +.SH NAME +wcopy \- copy stdin to an X11 cut buffer +wpaste \- paste X11 cut buffer to stdout +.SH SYNOPSIS +.B wcopy [ [0-9]... ] [wxcopy's normal args] +.SH DESCRIPTION +\fBwcopy\fP reads from standard input and copies it to the nominated +X11 cut buffers. +The default is the first cut buffer. +.PP +\fBwpaste\fP pastes the nominated X11 cut buffers(s) +to standard output. +The default is the first cut buffer. +.PP +Note that the cut buffers are numbered starting from 0. +.PP +Simple integer arguments pick a cut-buffer. +.PP +For \fBwcopy\fP, +the argument number picks a cut-buffer to copy the standard input to. +(Subsequent copies are taken from the first nominated buffer \- +it does not try to re-read the input!)) +.SH EXAMPLES +.TP 1.5i +.B echo fred | wcopy 1 2 +This puts the word "fred" into the 2nd and 3rd cut-buffers. +.TP 1.5i +.B wpaste | tr "A-Z" "a-z" | wcopy 1 +This copies the clipboard then translates all upper case letters to lower in +the 1st +cut buffer and copies the result into the 2nd. +.TP 1.5i +.B wpaste 0 | fmt -w 66 | sed 's/^/> /' | wcopy 1 +This reformats the clipboard to paragraphs with lines no longer than 66 +characters, inserts typical email quoting characters, and copies the +output to the 2nd cut-buffer. +.TP 1.5i +.B wpaste | sed 's/^> *//' | wcopy +This removes email quotes from the start of lines in the clipboard +and replaces the clipboard with the un-quoted material. +.TP 1.5i +.B wpaste > ~/.myclipboard +Copies the clipboard into a location where it can be pixked up from other +computers (e.g. even from a Windows machine) \- as per the file permissions +you choose for the ".myclipboard" file. +.SH ENVIRONMENT +If WXCOPY_DEFS or WXPASTE_DEFS are defined in your environment, +they will always be provided as the first argument(s) to the +respective underlying command. +.SH BUGS +Don't use "-cutbuffer N" notation as per wxcopy/wxpaste: +stick to just using the plain unadorned number(s) that wcopy/wpaste expect. +.SH SEE ALSO +wxcopy(1), wxpaste(1), xcb(1) +.SH AUTHOR +Luke Kendall diff --git a/po/README b/po/README index 1fb702d2..970b936f 100644 --- a/po/README +++ b/po/README @@ -7,7 +7,8 @@ ja.po Japanese 1 ABE Shige MANOME Tomonori Takeo Hashimoto pt.po Portuguese Eliphas Levy Theodoro -de.po German Bernd Eggert +de.po German Torsten Marek + Bernd Eggert Matthias Warkus Guido Scholz es.po Spanish Raul Benito Garcia