diff -crNP ../siag-3.3.3/ChangeLog ./ChangeLog *** ../siag-3.3.3/ChangeLog Wed Apr 12 19:42:11 2000 --- ./ChangeLog Fri Apr 28 14:44:16 2000 *************** *** 1,4 **** --- 1,16 ---- + 000428 Siag: Zoom. + XawM: Define NeedFunctionPrototypes in Xaw/Makefile.am to make sure + that prototypes are used. + German translation updated by Theodor Willax. + Spanish translation updated by criptos@criptos.com.mx. + Richtext and Table widgets make clever use of a short timeout + (50 ms) to avoid sluggishness when events are coming in rapidly. + + 000427 PW: Moved label1 to the status bar. + + 000425 PW: Zoom. + 000412 Check in kdeinst that installation directories are writable. Fixed a bug that caused a crash when inserting or removing columns in empty documents. Found by Rob Lahaye diff -crNP ../siag-3.3.3/TODO ./TODO *** ../siag-3.3.3/TODO Wed Apr 12 08:31:40 2000 --- ./TODO Fri Apr 28 13:42:01 2000 *************** *** 1,4 **** --- 1,11 ---- + Since the TextField widget can't zoom, in-place editing in Siag will have + to be done using another widget. The Richtext widget is an obious + candidate, but needs some work before it can be used as a general-purpose + text widget. + + Zoom plugins, or at least images. + Replace applications.scm with applications.sh, which looks like: viewer=gvu diff -crNP ../siag-3.3.3/XawM/Makefile.am ./XawM/Makefile.am *** ../siag-3.3.3/XawM/Makefile.am Mon Mar 20 23:31:19 2000 --- ./XawM/Makefile.am Fri Apr 28 10:20:46 2000 *************** *** 128,134 **** libXawM_la_LDFLAGS = -version-info 0:0:0 ! INCLUDES = $(DEBUG) @X_CFLAGS@ -DNARROWPROTO -DARROW_SCROLLBAR -DUSEGRAY EXTRA_DIST = Imakefile README.Linux README.XAW3D README.XawM \ Template.c Template.h TemplateP.h \ --- 128,135 ---- libXawM_la_LDFLAGS = -version-info 0:0:0 ! INCLUDES = $(DEBUG) @X_CFLAGS@ -DNARROWPROTO -DARROW_SCROLLBAR -DUSEGRAY \ ! -DNeedFunctionPrototypes EXTRA_DIST = Imakefile README.Linux README.XAW3D README.XawM \ Template.c Template.h TemplateP.h \ diff -crNP ../siag-3.3.3/XawM/Makefile.in ./XawM/Makefile.in *** ../siag-3.3.3/XawM/Makefile.in Wed Apr 12 19:43:52 2000 --- ./XawM/Makefile.in Fri Apr 28 14:48:53 2000 *************** *** 77,83 **** libXawM_la_LDFLAGS = -version-info 0:0:0 ! INCLUDES = $(DEBUG) @X_CFLAGS@ -DNARROWPROTO -DARROW_SCROLLBAR -DUSEGRAY EXTRA_DIST = Imakefile README.Linux README.XAW3D README.XawM Template.c Template.h TemplateP.h laygram.y laylex.l --- 77,84 ---- libXawM_la_LDFLAGS = -version-info 0:0:0 ! INCLUDES = $(DEBUG) @X_CFLAGS@ -DNARROWPROTO -DARROW_SCROLLBAR -DUSEGRAY -DNeedFunctionPrototypes ! EXTRA_DIST = Imakefile README.Linux README.XAW3D README.XawM Template.c Template.h TemplateP.h laygram.y laylex.l diff -crNP ../siag-3.3.3/common/dictionary.de ./common/dictionary.de *** ../siag-3.3.3/common/dictionary.de Mon Apr 10 07:00:45 2000 --- ./common/dictionary.de Fri Apr 28 13:31:08 2000 *************** *** 15,21 **** Custom Anpassen Start another instance of Siag Noch ein Siag starten Open a Siag document Ein Siag-Dokument öffnen ! Save the contents of the current buffer Inhalt des aktuellen Dokumentes speichern Preview the contents of the current buffer Seitenansicht des aktuellen Dokumentess Print the contents of the current buffer Aktuelles Dokument drucken Spelling checker Rechtschreibprüfung --- 15,21 ---- Custom Anpassen Start another instance of Siag Noch ein Siag starten Open a Siag document Ein Siag-Dokument öffnen ! Save the contents of the current buffer Inhalt des aktuellen Dokumentes speichern unter Preview the contents of the current buffer Seitenansicht des aktuellen Dokumentess Print the contents of the current buffer Aktuelles Dokument drucken Spelling checker Rechtschreibprüfung *************** *** 83,88 **** --- 83,89 ---- Landscape Querformat Cell Protection Zellenschutz Respect Beachten + Respect protection Zellenschutz beachten Ignore Ignorieren Load External Externes Dokument öffnen Save External Externes Dokument speichern *************** *** 203,208 **** --- 204,211 ---- Advanced Fortgeschritten Contents Inhalt Search Suche + Type: Typ: + Orientation: Ausrichtung: Copying Verbreitung About Siag Über Siag About Siag Office... Über Siag Office *************** *** 446,452 **** About Gvu... Über Gvu... Start another editor Neuen Editor starten Open a text file Textdatei öffnen ! Save the file Datei speichern Print the file Datei drucken Toggle overwrite/insert Einfüge-/Überschreibmodus umschalten Display the online documentation Onlinehilfe anzeigen --- 449,455 ---- About Gvu... Über Gvu... Start another editor Neuen Editor starten Open a text file Textdatei öffnen ! Save the file Datei speichern unter Print the file Datei drucken Toggle overwrite/insert Einfüge-/Überschreibmodus umschalten Display the online documentation Onlinehilfe anzeigen *************** *** 473,484 **** Command: Kommando: New Xedplus Neuen Xedplus starten Pipes Pipes About XedPlus... Über XedPlus... Close window Fenster schliessen Go to home directory Persönliches Verzeichnis Go up one directory Ein Verzeichnis nach oben Create Folder Neuer Ordner ! Open command window Termianl öffnen Change view mode Ansicht ändern Change sort mode Sortierung ändern Update icons Erneut laden --- 476,514 ---- Command: Kommando: New Xedplus Neuen Xedplus starten Pipes Pipes + Goto line Gehe zu Zeile + Line number? Zeilennummer? + Search Suche + Start at: Beginnen bei: + Cursor position Cursorposition + Textbeginning Textanfang + Textending Textende + Direction: Richtung: + Forward Vorwärts + Backward Rückwärts + Search for: Suche nach: + Replace with: Ersetzen durch: + Replace veto Ersetzen mit Bestätigung + Replace all Ersetzen alle + Wrap mode: Zeilenumbruch: + Never Niemals + Word Wort + Tab size: Tabulator-Breite: + Autoindent: Autom. einrücken: + Autofill: Autom. füllen: + Perform a stream editor command (sed) Ein Stream Editor Kommando ausführen (sed) + Do it Ausführen + Do it Selection Ausführen auf Auswahl + Undo it Rückgängig + Perform a User command Kommando ausführen + Perform a User pipe Pipe ausführen About XedPlus... Über XedPlus... Close window Fenster schliessen Go to home directory Persönliches Verzeichnis Go up one directory Ein Verzeichnis nach oben Create Folder Neuer Ordner ! Create folder Neuer Ordner ! Open command window Terminal öffnen Change view mode Ansicht ändern Change sort mode Sortierung ändern Update icons Erneut laden *************** *** 492,503 **** --- 522,539 ---- Link... Verknüpfen... Link to: Verknüpfen mit: Select... Auswählen... + Open With... Öffnen mit... + Open with: Öffnen mit: + Command Window Terminalfenster + Permissions... Zugriffsrechte... Filename pattern: Dateinamenmuster Add Hinzufügen Remove Entfernen Select all Alles auswählen Deselect all Alles abwählen Folder Ordner + Create folder: Neuer Ordner: + Create file: Neue Datei: Go to... Gehe nach... Go to folder: Gehe nach Verzeichnis: Empty Ordner leeren *************** *** 510,513 **** --- 546,551 ---- Mix folders/files Ordner/Dateien mischen Show hidden files Versteckte Dateien anzeigen Clear Leeren + Restore Wiederherstellen + Redo Wiederholen About Xfiler... Über Xfiler... diff -crNP ../siag-3.3.3/common/dictionary.es ./common/dictionary.es *** ../siag-3.3.3/common/dictionary.es Wed Feb 16 08:01:43 2000 --- ./common/dictionary.es Fri Apr 28 13:33:28 2000 *************** *** 2,46 **** File Archivo Edit Editar Block Bloque ! Format Formato Data Datos ! Plugin Plugin Window Ventana Plot Imprimir Tools Herramientas Help Ayuda ! Start another instance of Siag Crear un documento en blanco en una ventana nueva Open a Siag document Abrir - Reemplazar el contenido de la ventana actual por el otro documento ! Save the contents of the current buffer Guardar el documento activo ! Preview the contents of the current buffer Vista previa del documento activo ! Print the contents of the current buffer Imprimir un documento Spelling checker Ortografía Cut Cortar Copy Copiar Paste Pegar Undo Deshacer ! Sort ascending Orden ascendentemente ! Sort descending Orden descendentemente ! Plot the contents of the block using lines Imprimir el contenido del bloque actual Add the contents of the block Añadir el contenido al bloque ! Display the Siag online documentation Ayuda en línea ! Display the Gnu general public license Licencia pública general GNU Change the font family Fuente ! Change the font size Tamaño de la fuente ! Change the display style Estilo Change the color Color de fuente Bold text Negrita Italic text Cursiva ! Left adjusted text Alinear a la izquierda ! Centered text Centrar ! Right adjusted text Alinear a la derecha ! Draw grid lines in the block Celdas Draw borders around the block Borde exterior ! Underline the block Borde inferior ! Remove grid lines from the block Remover celdas Select everything Seleccionar todo OK Aceptar ! Cancel Cancelar File Name: Nombre de archivo: Directory: Directorio: Select File Seleccionar archivo --- 2,46 ---- File Archivo Edit Editar Block Bloque ! Format Formato Data Datos ! Plugin Plugin Window Ventana Plot Imprimir Tools Herramientas Help Ayuda ! Start another instance of Siag Crear un documento en blanco en una ventana nueva Open a Siag document Abrir - Reemplazar el contenido de la ventana actual por el otro documento ! Save the contents of the current buffer Guardar el documento activo ! Preview the contents of the current buffer Vista previa del documento activo ! Print the contents of the current buffer Imprimir un documento Spelling checker Ortografía Cut Cortar Copy Copiar Paste Pegar Undo Deshacer ! Sort ascending Orden ascendente ! Sort descending Orden descendente ! Plot the contents of the block using lines Imprimir el contenido del bloque actual Add the contents of the block Añadir el contenido al bloque ! Display the Siag online documentation Ayuda en línea ! Display the Gnu general public license Licencia pública general GNU Change the font family Fuente ! Change the font size Tamaño de la fuente ! Change the display style Estilo Change the color Color de fuente Bold text Negrita Italic text Cursiva ! Left adjusted text Alinear a la izquierda ! Centered text Centrar ! Right adjusted text Alinear a la derecha ! Draw grid lines in the block Celdas Draw borders around the block Borde exterior ! Underline the block Borde inferior ! Remove grid lines from the block Remover celdas Select everything Seleccionar todo OK Aceptar ! Cancel Cancelar File Name: Nombre de archivo: Directory: Directorio: Select File Seleccionar archivo *************** *** 54,81 **** Borders Bordes Adjustment Arreglo Misc Selección de lista ! List Selection Selección de lista New Nuevo... Open Abrir... Save Guardar Save As Guardar como... Preview Vista preliminar Print Imprimir... ! Print Format Configurar página Orientation Orientación ! Portrait Verical Landscape Horizontal Cell Protection Proteger celda Respect Respetar ! Ignore Ignorar ! Load External Cargar externamente ! Save External Guardar externamente Exit Salir Undo Deshacer ! Delete Eliminar Insert Line Insertar línea Remove Line Remover línea ! Insert Column Insertar columna Remove Column Remover columna Select All Seleccionar todo Select everything Seleccionar todo --- 54,81 ---- Borders Bordes Adjustment Arreglo Misc Selección de lista ! List Selection Selección de lista New Nuevo... Open Abrir... Save Guardar Save As Guardar como... Preview Vista preliminar Print Imprimir... ! Print Format Configurar página Orientation Orientación ! Portrait Vertical Landscape Horizontal Cell Protection Proteger celda Respect Respetar ! Ignore Ignorar ! Load External Cargar externamente ! Save External Guardar externamente Exit Salir Undo Deshacer ! Delete Eliminar Insert Line Insertar línea Remove Line Remover línea ! Insert Column Insertar columna Remove Column Remover columna Select All Seleccionar todo Select everything Seleccionar todo *************** *** 83,96 **** Find Backward Buscar hacia atrás Label Etiqueta SIOD Expression Expresión SIOD ! C Expression Expresión C Guile Expression Expresión Guile Tcl Expression Expresión Tcl ! Change default interpreter Cambiar actual interpretador ! Change Default Interpreter Cambiar actual interpretador Other Otro ! Add Property Agregar propiedades ! Embed Object Incrustar objeto Remove Object Remover objeto Open Object Abrir objeto Save Object Guardar objeto --- 83,96 ---- Find Backward Buscar hacia atrás Label Etiqueta SIOD Expression Expresión SIOD ! C Expression Expresión C Guile Expression Expresión Guile Tcl Expression Expresión Tcl ! Change default interpreter Cambiar actual interpretador ! Change Default Interpreter Cambiar actual interpretador Other Otro ! Add Property Agregar propiedades ! Embed Object Incrustar objeto Remove Object Remover objeto Open Object Abrir objeto Save Object Guardar objeto *************** *** 98,114 **** Set Block Asignar bloque Unset Block Quitar bloque Copy Block Copiar bloque ! Delete Block Eliminar bloque Fill Block Llenar bloque Smart Fill Block Autollenar bloque Sort Ordenar Rows Ascending as Text Filas ascendentes como texto ! Rows Ascending as Numbers Filas ascendentes como números Rows Descending as Text Filas descendentes como texto Rows Descending as Numbers Filas descendentes como números ! Columns Ascending as Text Columnas ascendentes como texto Columns Ascending as Numbers Columnas ascendentes como números ! Columns Descending as Text Columnas descendentes como texto Columns Descending as Numbers Columnas descendentes como números Block Sum Autosuma Block Minimum Mínimo bloque --- 98,114 ---- Set Block Asignar bloque Unset Block Quitar bloque Copy Block Copiar bloque ! Delete Block Eliminar bloque Fill Block Llenar bloque Smart Fill Block Autollenar bloque Sort Ordenar Rows Ascending as Text Filas ascendentes como texto ! Rows Ascending as Numbers Filas ascendentes como números Rows Descending as Text Filas descendentes como texto Rows Descending as Numbers Filas descendentes como números ! Columns Ascending as Text Columnas ascendentes como texto Columns Ascending as Numbers Columnas ascendentes como números ! Columns Descending as Text Columnas descendentes como texto Columns Descending as Numbers Columnas descendentes como números Block Sum Autosuma Block Minimum Mínimo bloque *************** *** 125,158 **** Fit Block Width Ancho de bloque Row Height Altura de la fila Fit Block Height Altura del bloque ! Set Default Format Asignar formato por defecto Cell Format Formato de la celda ! Block Format Formato del bloque Cell Style Estilo de la celda Block Style Estilo del bloque ! Define Style Definir estilo Cell Color Color de la celda Block Color Color del bloque Edit Record Editar registro Data Entry Entrar dato Siag-net Red-Siag ! Identify Cell Identificar celda Recalculate Recalcular Change Buffer Cambiar tope ! Delete Buffer Eliminar tope ! Split Window Dividir ventana Remove Window Eliminar ventana One Window Una ventana Change Window Cambiar ventana Add Sheet Agregar hoja Remove Sheet Remover hoja ! Rename Sheet Renombrar hoja ! Protect Cells Proteger celda Remove Protection Remover protección Go To Ir a ! Beginning of buffer Cambiando el tope ! End of buffer Fin del tope ! Top of buffer Cima del tope Bottom of buffer Fondo del tope Grid Lines Línea de rejilla Show Mostrar --- 125,158 ---- Fit Block Width Ancho de bloque Row Height Altura de la fila Fit Block Height Altura del bloque ! Set Default Format Asignar formato por defecto Cell Format Formato de la celda ! Block Format Formato del bloque Cell Style Estilo de la celda Block Style Estilo del bloque ! Define Style Definir estilo Cell Color Color de la celda Block Color Color del bloque Edit Record Editar registro Data Entry Entrar dato Siag-net Red-Siag ! Identify Cell Identificar celda Recalculate Recalcular Change Buffer Cambiar tope ! Delete Buffer Eliminar tope ! Split Window Dividir ventana Remove Window Eliminar ventana One Window Una ventana Change Window Cambiar ventana Add Sheet Agregar hoja Remove Sheet Remover hoja ! Rename Sheet Renombrar hoja ! Protect Cells Proteger celda Remove Protection Remover protección Go To Ir a ! Beginning of buffer Cambiando el tope ! End of buffer Fin del tope ! Top of buffer Cima del tope Bottom of buffer Fondo del tope Grid Lines Línea de rejilla Show Mostrar *************** *** 164,170 **** Both Ambos Save Preferences Guardar preferencias Lines Líneas ! Points Puntos Linespoints Línea de puntos Impulses Impulsos Dots Punticos --- 164,170 ---- Both Ambos Save Preferences Guardar preferencias Lines Líneas ! Points Puntos Linespoints Línea de puntos Impulses Impulsos Dots Punticos *************** *** 173,242 **** Surface Superficie Advanced Avanzado Contents Contenido... ! Search Buscar ayuda sobre... Copying Licencia... About Siag Acerca de Siag... ! Help for Help Como usar la ayuda... SIOD Command Orden SIOD C Command Orden C Guile Command Orden Guile Tcl Command Orden Tcl Web Server Servidor Web Mail Correo ! File Manager Explorador de archivos Form Test Prueba de forma Another Form Test Otra prueba Yet Another Form Test Otra prueba más Another Form Test Still Aún otra prueba ! Import Importar ! Export Exportar Link Vínculo Move Desplazar Expression Expresión Command Orden ! Sum Auosuma ! Import Plugin Importar plugin Move Plugin Desplazar plugin Quit Salir External Program: Programa externo: Local File Fichero local Compressed File Fichero comprimido Archive Archivo ! Compressed Archive Archivo comprimido Generic Genérico ! Search: Encontar: ! Label: Etiqueta: SIOD expression: Expresión SIOD: ! C expression: Expresión C: Guile expression: Expresión Guile: Tcl expression: Expresión Tcl: ! New expression interpreter: Nueva expresión del interpretador: Key Llave Value Valor ! Object file: Fichero objeto: ! Width: Ancho: Height: Alto: Bold Negrita ! Italic Cursiva Top Inicio Bottom Fondo Left Izquierda Right Derecha ! Center Centro Expression style: Estilo de la expresión: ! Color: Color: color color Black Negro Red Rojo Green Verde Blue Azul ! Yellow Amarillo Magenta Magenta ! Cyan Ciano White Blanco ! Select Plugin: Seleccionar plugin: Change Buffer: Cambiar tope: ! Kill Buffer: Destruir tope: SIOD command: Orden SIOD: C command: Orden C: Guile command: Orden Guile: --- 173,242 ---- Surface Superficie Advanced Avanzado Contents Contenido... ! Search Buscar ayuda sobre... Copying Licencia... About Siag Acerca de Siag... ! Help for Help Como usar la ayuda... SIOD Command Orden SIOD C Command Orden C Guile Command Orden Guile Tcl Command Orden Tcl Web Server Servidor Web Mail Correo ! File Manager Explorador de archivos Form Test Prueba de forma Another Form Test Otra prueba Yet Another Form Test Otra prueba más Another Form Test Still Aún otra prueba ! Import Importar ! Export Exportar Link Vínculo Move Desplazar Expression Expresión Command Orden ! Sum Suma ! Import Plugin Importar plugin Move Plugin Desplazar plugin Quit Salir External Program: Programa externo: Local File Fichero local Compressed File Fichero comprimido Archive Archivo ! Compressed Archive Archivo comprimido Generic Genérico ! Search: Encontrar: ! Label: Etiqueta: SIOD expression: Expresión SIOD: ! C expression: Expresión C: Guile expression: Expresión Guile: Tcl expression: Expresión Tcl: ! New expression interpreter: Nueva expresión del interpretador: Key Llave Value Valor ! Object file: Fichero objeto: ! Width: Ancho: Height: Alto: Bold Negrita ! Italic Cursiva Top Inicio Bottom Fondo Left Izquierda Right Derecha ! Center Centro Expression style: Estilo de la expresión: ! Color: Color: color color Black Negro Red Rojo Green Verde Blue Azul ! Yellow Amarillo Magenta Magenta ! Cyan Cian White Blanco ! Select Plugin: Seleccionar plugin: Change Buffer: Cambiar tope: ! Kill Buffer: Destruir tope: SIOD command: Orden SIOD: C command: Orden C: Guile command: Orden Guile: *************** *** 246,254 **** First name Nombre Last name Apellido Address Dirección ! Find pattern: Econtar diseño: ! Go to: Ir a: ! Pick one: Escojer uno: Yes Si No No Replace Reemplazar --- 246,254 ---- First name Nombre Last name Apellido Address Dirección ! Find pattern: Encontrar diseño: ! Go to: Ir a: ! Pick one: Escoger uno: Yes Si No No Replace Reemplazar *************** *** 266,287 **** About Pathetic Writer Acerca de Pathetic Writer... Spell Test Probar ortografía Dump Words Descargar palabras ! Default Estandard Invisible Invisible ! Integer Entero Scientific Científica Fixed Ajustado Date Fecha Time Tiempo ! Comma Coma Percent Porcentaje ! Hex Heximal Currency Moneda ! User 1 Usuario 1 ! User 2 Usuario 2 ! User 3 Usuario 3 ! User 4 Usuario 4 ! User 5 Usuario 5 Header 1 Título 1 Header 2 Título 2 Header 3 Título 3 --- 266,287 ---- About Pathetic Writer Acerca de Pathetic Writer... Spell Test Probar ortografía Dump Words Descargar palabras ! Default Estándar Invisible Invisible ! Integer Entero Scientific Científica Fixed Ajustado Date Fecha Time Tiempo ! Comma Coma Percent Porcentaje ! Hex Hexadecimal Currency Moneda ! User 1 Usuario 1 ! User 2 Usuario 2 ! User 3 Usuario 3 ! User 4 Usuario 4 ! User 5 Usuario 5 Header 1 Título 1 Header 2 Título 2 Header 3 Título 3 *************** *** 290,304 **** Header 6 Título 6 Title Título Abstract Abstracto ! Preformatted Preformateado Embed Incrustrar ! Start another instance of Pathetic Writer Iniciar otra sesión de Pathetic Writer ! Open a Pathetic Writer document Abrir un documento Pathetic Writer Display the PW online documentation Documentación en línea Underlined text Texto subrayado ! Superscript Superscript ! Subscript Subscript ! Show Editor Mostar editor Hide Editor Ocultar editor Show editor Mostrar editor Hide editor Ocultar editor --- 290,304 ---- Header 6 Título 6 Title Título Abstract Abstracto ! Preformatted Preformateado Embed Incrustrar ! Start another instance of Pathetic Writer Iniciar otra sesión de Pathetic Writer ! Open a Pathetic Writer document Abrir un documento Pathetic Writer Display the PW online documentation Documentación en línea Underlined text Texto subrayado ! Superscript Superíndice ! Subscript Subíndice ! Show Editor Mostrar editor Hide Editor Ocultar editor Show editor Mostrar editor Hide editor Ocultar editor *************** *** 306,345 **** Add Object Agregar objeto Line Línea Image Imagen ! Delete Object Eliminar objeto ! Change Object Type Cmabiar tipo de objeto Add tick Agregar marca Delete Tick Eliminar marca Edit Properties Editar propiedades Set Background Asignar fondo ! Timing Tiempo ! Set Geometry Asignar geometría Play Animation Ejecutar animación Box Animation Demo Demo animación de caja Circle Animation Demo Demo animación de círculo Line Animation Demo Demo animación de línea Combo Animation Demo Demo animación combinada ! Box Caja ! Circle Círulo Combo Combinación About Egon Animator Acerca de Egon Animator... ! Start another instance of Egon Animator Iniciar otra sesión de Egon Animator ! Open an Egon Animator document Abrir un documento Egon Animator... ! Pop down animation Detener animación ! Pause the animation Pausar animación ! Previous animation frame Cuadro anterior ! Play the animation Ejecutar animación Next animation frame Siguiente cuadro ! Display the Egon online documentation Documentación en línea Rectangle Rectangulo Arc Arco ! Ellipse Elipse Pixmap Pixmap ! String Texto Point Punto Filled Rectangle Rectangulo relleno Filled Arc Arco relleno ! Filled Ellipse Elipse rellena Open file Abrir archivo Save file Guardar archivo... Quit animation Salir de animación --- 306,345 ---- Add Object Agregar objeto Line Línea Image Imagen ! Delete Object Eliminar objeto ! Change Object Type Cambiar tipo de objeto Add tick Agregar marca Delete Tick Eliminar marca Edit Properties Editar propiedades Set Background Asignar fondo ! Timing Tiempo ! Set Geometry Asignar geometría Play Animation Ejecutar animación Box Animation Demo Demo animación de caja Circle Animation Demo Demo animación de círculo Line Animation Demo Demo animación de línea Combo Animation Demo Demo animación combinada ! Box Caja ! Circle Círculo Combo Combinación About Egon Animator Acerca de Egon Animator... ! Start another instance of Egon Animator Iniciar otra sesión de Egon Animator ! Open an Egon Animator document Abrir un documento Egon Animator... ! Pop down animation Detener animación ! Pause the animation Pausar animación ! Previous animation frame Cuadro anterior ! Play the animation Ejecutar animación Next animation frame Siguiente cuadro ! Display the Egon online documentation Documentación en línea Rectangle Rectangulo Arc Arco ! Ellipse Elipse Pixmap Pixmap ! String Texto Point Punto Filled Rectangle Rectangulo relleno Filled Arc Arco relleno ! Filled Ellipse Elipse rellena Open file Abrir archivo Save file Guardar archivo... Quit animation Salir de animación *************** *** 350,372 **** Quit Egon Salir Egon No files found No encontró archivos File saved Archivo guardado ! This window is too small to split Esta ventana es demasiado pequeña para dividir ! Couldn't save Imposible guardar Save %s? Guardar %s? Loading Cargando New file Nuevo archivo Load auto startup code? Cargar código al inicio? ! Can't open loader file No puede cargar archivo ! Parameters: Parametros: External program failed Programa externo falló ! Attempt to delete sole ordinary window Intente eliminar una sola ventana No such buffer No hay semejante tope Overwrite existing %s? Sobreescribir %s? ! Can't open saver file No puede guardar archivo ! Couldn't kill last buffer Imposible cerrar último toope %s command: Orden %s: %s expression: Expresión %s: ! Already defining kbd macro! Macro kbd definido! Defining kbd macro... Definiendo macro kbd... Not defining kbd macro No se pudo definir macro kbd Keyboard macro defined Macro de tecleado definido --- 350,372 ---- Quit Egon Salir Egon No files found No encontró archivos File saved Archivo guardado ! This window is too small to split Esta ventana es demasiado pequeña para dividir ! Couldn't save Imposible guardar Save %s? Guardar %s? Loading Cargando New file Nuevo archivo Load auto startup code? Cargar código al inicio? ! Can't open loader file No pude cargar archivo ! Parameters: Parámetros: External program failed Programa externo falló ! Attempt to delete sole ordinary window Intente eliminar una sola ventana No such buffer No hay semejante tope Overwrite existing %s? Sobreescribir %s? ! Can't open saver file No pude guardar archivo ! Couldn't kill last buffer Imposible cerrar último tope %s command: Orden %s: %s expression: Expresión %s: ! Already defining kbd macro! Macro kbd definido! Defining kbd macro... Definiendo macro kbd... Not defining kbd macro No se pudo definir macro kbd Keyboard macro defined Macro de tecleado definido *************** *** 374,386 **** Input buffer overflow; macro execution terminated Sobreflujo en la entrada tope; ejecución de la macro terminada Add Tick Agregar marca Add Line Agregar línea ! Add Rectangle Agregar rectangulo Add Arc Agregar arco Add Ellipse Agregar elipse Add Image Agregar imagen Add String Agregar texto Add Point Agregar punto ! Add Filled Rectangle Agregar rectangulo relleno ! Add Filled Ellipse Agregar elipse rellena Add Filled Arc Agregar arco relleno Sheet %d Hoja %d --- 374,424 ---- Input buffer overflow; macro execution terminated Sobreflujo en la entrada tope; ejecución de la macro terminada Add Tick Agregar marca Add Line Agregar línea ! Add Rectangle Agregar rectángulo Add Arc Agregar arco Add Ellipse Agregar elipse Add Image Agregar imagen Add String Agregar texto Add Point Agregar punto ! Add Filled Rectangle Agregar rectángulo relleno ! Add Filled Ellipse Agregar elipse rellena Add Filled Arc Agregar arco relleno Sheet %d Hoja %d + Margins Márgenes + Backup Copies Copias de respaldo + Paper Size Tamaño del papel + Header and Footer Encabezado y pie de página + Special Char Caracteres especiales + First Page Number Número de la primera página + Tab Distance Distancia del tabulador + Move Sheet Mover hoja + Up Arriba + Down Abajo + Line in buffer Linea en el buffer + Beginning of paragraph Inicio de párrafo + End of paragraph Fin de párrafo + Calculator Calculadora + Environment Medio ambiente + Rezize Cambiar tamaño + About Pathetic Writer Acerca del Patethic Writer + About Siag Office Acerca de la suite de oficina Siag + Top: Arriba: + Bottom: Abajo: + Left: Izquierda: + Right: Derecha: + Header: Encabezado: + Footer: Pie: + Ok Aceptar + Format: Formato: + Directories Directorios + Files Archivos + + Size: Tamaño: + Letter Carta + Lettersmall Carta pequeña + Header on first page Encabezado en la primera página + First page number: Número de la primera página: + Tab distance: Distancia del tabulador: + Hegiht: Altura: + Line: Línea: + diff -crNP ../siag-3.3.3/common/richchar.c ./common/richchar.c *** ../siag-3.3.3/common/richchar.c Thu Apr 6 14:53:09 2000 --- ./common/richchar.c Thu Apr 13 06:36:40 2000 *************** *** 1,5 **** /* ! Copyright (C) 1996-1998 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* ! Copyright (C) 1996-2000 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 54,59 **** --- 54,70 ---- else for (i = 0; from[i].c; i++) to[i] = from[i]; to[i].c = '\0'; + return to; + } + + rich_char *rc_strncpy(rich_char *to, rich_char *from, size_t n) + { + size_t i = 0; + if (!to) return NULL; + if (!from && n) to[0].c = '\0'; + else for (i = 0; i < n && from[i].c; i++) + to[i] = from[i]; + if (i < n) to[i].c = '\0'; return to; } diff -crNP ../siag-3.3.3/common/richchar.h ./common/richchar.h *** ../siag-3.3.3/common/richchar.h Thu Apr 6 14:53:09 2000 --- ./common/richchar.h Thu Apr 13 06:33:44 2000 *************** *** 1,5 **** /* ! Copyright (C) 1996-1998 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* ! Copyright (C) 1996-2000 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 30,35 **** --- 30,36 ---- /* from richchar.c */ extern size_t rc_strlen(rich_char *); extern rich_char *rc_strcpy(rich_char *, rich_char *); + extern rich_char *rc_strncpy(rich_char *, rich_char *, size_t); extern rich_char *rc_strcat(rich_char *, rich_char *); extern rich_char *rc_strdup(rich_char *); extern rich_char *rc_strins(rich_char *, rich_char *, size_t); diff -crNP ../siag-3.3.3/configure ./configure *** ../siag-3.3.3/configure Thu Apr 6 18:11:40 2000 --- ./configure Thu Apr 27 03:54:37 2000 *************** *** 706,712 **** PACKAGE=siag ! VERSION=3.3.3 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } --- 706,712 ---- PACKAGE=siag ! VERSION=3.3.4 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } diff -crNP ../siag-3.3.3/configure.in ./configure.in *** ../siag-3.3.3/configure.in Thu Apr 6 18:06:25 2000 --- ./configure.in Sat Apr 22 22:04:27 2000 *************** *** 1,7 **** dnl Process this file with autoconf to produce a configure script. AC_INIT(README) AM_CONFIG_HEADER(config.h) ! AM_INIT_AUTOMAKE(siag, 3.3.3) dnl Set of available languages dnl ALL_LINGUAS="" --- 1,7 ---- dnl Process this file with autoconf to produce a configure script. AC_INIT(README) AM_CONFIG_HEADER(config.h) ! AM_INIT_AUTOMAKE(siag, 3.3.4) dnl Set of available languages dnl ALL_LINGUAS="" diff -crNP ../siag-3.3.3/pw/Makefile.in ./pw/Makefile.in *** ../siag-3.3.3/pw/Makefile.in Thu Apr 6 18:22:16 2000 --- ./pw/Makefile.in Fri Apr 28 14:48:18 2000 *************** *** 313,318 **** --- 313,360 ---- || exit 1; \ fi; \ done + buffer.o: buffer.c ../common/common.h ../common/cmalloc.h \ + ../common/plugin.h pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h + cmds.o: cmds.c ../common/cmalloc.h ../common/common.h ../common/plugin.h \ + pw.h ../common/richchar.h ../common/fonts.h ../common/traceme.h \ + user_interface.h ../siod/siod.h + fileio.o: fileio.c ../siod/siod.h ../common/common.h ../common/cmalloc.h \ + pw.h ../common/richchar.h ../common/fonts.h ../common/traceme.h \ + user_interface.h + fileio_html.o: fileio_html.c ../common/common.h pw.h \ + ../common/richchar.h ../common/fonts.h ../common/traceme.h \ + user_interface.h + fileio_ps.o: fileio_ps.c pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h ../common/common.h \ + ../common/cmalloc.h ../common/plugin.h + fileio_pw.o: fileio_pw.c ../common/common.h ../common/cmalloc.h \ + ../common/plugin.h pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h + fileio_rtf.o: fileio_rtf.c pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h ../common/common.h \ + ../common/cmalloc.h + fileio_txt.o: fileio_txt.c pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h ../common/common.h \ + ../common/cmalloc.h + guilei.o: guilei.c + main.o: main.c ../common/common.h ../common/cmalloc.h pw.h \ + ../common/richchar.h ../common/fonts.h ../common/traceme.h \ + user_interface.h ../siod/siod.h + matrix.o: matrix.c ../common/common.h ../common/cmalloc.h \ + ../common/plugin.h pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h + position.o: position.c pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h + pythoni.o: pythoni.c + railway.o: railway.c ../siod/siod.h ../common/common.h \ + ../common/cmalloc.h pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h + siodi.o: siodi.c pw.h ../common/richchar.h ../common/fonts.h \ + ../common/traceme.h user_interface.h ../siod/siod.h \ + ../common/common.h + tcli.o: tcli.c + info-am: info: info-recursive dvi-am: diff -crNP ../siag-3.3.3/pw/cmds.c ./pw/cmds.c *** ../siag-3.3.3/pw/cmds.c Wed Mar 22 12:42:38 2000 --- ./pw/cmds.c Tue Apr 25 07:56:40 2000 *************** *** 2189,2194 **** --- 2189,2201 ---- return result; } + static LISP lset_zoom(LISP n) + { + zoom = get_c_double(n); + pr_scr_flag = 1; + return NIL; + } + /* Set up the table of functions and names */ /* Commands that take no arguments */ *************** *** 2280,2285 **** --- 2287,2293 ---- {"tab-distance-get", ltab_distance_get}, {"make-backups", lmake_backups}, {"display-bops", ldisplay_bops}, + {"set-zoom", lset_zoom}, {NULL, NULL} }; diff -crNP ../siag-3.3.3/pw/matrix.c ./pw/matrix.c *** ../siag-3.3.3/pw/matrix.c Tue Mar 14 07:01:27 2000 --- ./pw/matrix.c Thu Apr 27 08:22:39 2000 *************** *** 1,6 **** /* Pathetic Writer ! Copyright (C) 1997-1999 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,6 ---- /* Pathetic Writer ! Copyright (C) 1997-2000 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 497,505 **** { int c = 0; int space = 0; /* current "suitable" space */ ! while (c < line_length(b, s, r) ! && line_width(b, s, r, c) <= b->paper_width-b->left_margin-b->right_margin) { if (isspace(peek_char(b, s, r, c))) space = c; c++; --- 497,505 ---- { int c = 0; int space = 0; /* current "suitable" space */ + int len = line_length(b, s, r); ! while (c < len && line_width(b, s, r, c) <= b->paper_width-b->left_margin-b->right_margin) { if (isspace(peek_char(b, s, r, c))) space = c; c++; *************** *** 525,530 **** --- 525,531 ---- join_lines(buf, s, row); pr_scr_flag = TRUE; } + while (line_width(buf, s, row, line_length(buf, s, row)) > maxwidth) { int col = find_suitable_space(buf, s, row); if (col <= 0) break; /* none found */ diff -crNP ../siag-3.3.3/pw/user_interface.h ./pw/user_interface.h *** ../siag-3.3.3/pw/user_interface.h Tue Feb 15 23:54:01 2000 --- ./pw/user_interface.h Tue Apr 25 06:34:38 2000 *************** *** 33,38 **** --- 33,39 ---- extern void about_siag(void); extern int select_from_list(char *, char **, int); extern void error_box(char *); + extern float zoom; /* Postscript */ extern char *ps_fontname(int); diff -crNP ../siag-3.3.3/siag/cmds.c ./siag/cmds.c *** ../siag-3.3.3/siag/cmds.c Thu Apr 6 14:53:19 2000 --- ./siag/cmds.c Fri Apr 28 10:37:17 2000 *************** *** 2273,2278 **** --- 2273,2285 ---- return NIL; } + static LISP lset_zoom(LISP n) + { + zoom = get_c_double(n); + pr_scr_flag = 1; + return NIL; + } + /* Commands that take no arguments */ static s_fn_table0 fn_table[] = { *************** *** 2361,2366 **** --- 2368,2374 ---- {"make-backups", lmake_backups}, {"scale-set", lscale_set}, {"TRACEME", lTRACEME}, + {"set-zoom", lset_zoom}, {NULL, NULL} }; diff -crNP ../siag-3.3.3/siag/fileio_html.c ./siag/fileio_html.c *** ../siag-3.3.3/siag/fileio_html.c Thu Apr 6 19:49:30 2000 --- ./siag/fileio_html.c Fri Apr 28 13:44:10 2000 *************** *** 79,88 **** if (ret_type(buf, s, i, j) != ERROR) { - #if 0 - fprintf(fp, "%s", - ret_pvalue(NULL, buf, s, i, j, -1)); - #else char *p, b[100]; int n; p = ret_pvalue(NULL, buf, s, i, j, -1); --- 79,84 ---- *************** *** 90,96 **** to_cchar(b, p[n]); fprintf(fp, "%s", b); } - #endif } fprintf(fp, "\n"); --- 86,91 ---- diff -crNP ../siag-3.3.3/siag/fileio_txt.c ./siag/fileio_txt.c *** ../siag-3.3.3/siag/fileio_txt.c Thu Apr 6 14:53:20 2000 --- ./siag/fileio_txt.c Fri Apr 28 13:44:32 2000 *************** *** 61,71 **** strcpy(ifs, ","); if (!ask_for_str("Field separator(s):", ifs)) - #if 0 - return 1; - #else strcpy(ifs, ","); - #endif if ((fp = fopen(fn, "w")) == (FILE *) 0) return 1; --- 61,67 ---- diff -crNP ../siag-3.3.3/siag/user_interface.h ./siag/user_interface.h *** ../siag-3.3.3/siag/user_interface.h Thu Apr 6 14:53:23 2000 --- ./siag/user_interface.h Fri Apr 28 10:30:09 2000 *************** *** 35,40 **** --- 35,41 ---- extern void about_siag(void); extern int select_from_list(char *, char **, int); extern void error_box(char *); + extern float zoom; /* Postscript */ extern char *ps_fontname(int); diff -crNP ../siag-3.3.3/tsiag/window.c ./tsiag/window.c *** ../siag-3.3.3/tsiag/window.c Thu Apr 6 14:53:27 2000 --- ./tsiag/window.c Fri Apr 28 13:49:30 2000 *************** *** 100,105 **** --- 100,107 ---- int left_margin; /*int right_margin = 5;*/ + float zoom = 1.0; /* unused */ + position old; int rowcol_fmt_index; diff -crNP ../siag-3.3.3/xcommon/Animator.c ./xcommon/Animator.c *** ../siag-3.3.3/xcommon/Animator.c Thu Apr 6 14:53:28 2000 --- ./xcommon/Animator.c Thu Apr 27 04:12:26 2000 *************** *** 1,5 **** /* ! Copyright (C) 1996, 1997 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public --- 1,5 ---- /* ! Copyright (C) 1996-2000 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public *************** *** 455,461 **** /* set font */ if (!actor->string) break; /* sanity */ p = rc_makerich(actor->string, actor->fmt); ! rc_strdraw(scribble, ani_gc, x, y, p, -1); cfree(p); break; case ANI_POINT: --- 455,461 ---- /* set font */ if (!actor->string) break; /* sanity */ p = rc_makerich(actor->string, actor->fmt); ! rc_strdraw(scribble, ani_gc, x, y, p, -1, 1.0); cfree(p); break; case ANI_POINT: diff -crNP ../siag-3.3.3/xcommon/Makefile.in ./xcommon/Makefile.in *** ../siag-3.3.3/xcommon/Makefile.in Thu Apr 6 18:19:36 2000 --- ./xcommon/Makefile.in Fri Apr 28 14:47:56 2000 *************** *** 314,319 **** --- 314,387 ---- || exit 1; \ fi; \ done + Animator.o: Animator.c ../common/cmalloc.h ../common/common.h \ + ../common/fonts.h xfonts.h ../config.h ../common/richchar.h \ + AnimatorP.h Animator.h ../egon/types.h + Canvas.o: Canvas.c xfonts.h ../config.h ../common/richchar.h CanvasP.h \ + Canvas.h + Check.o: Check.c ../common/common.h ../common/cmalloc.h CheckP.h Check.h \ + check_motif_off.xpm check_motif_on.xpm radio_motif_off.xpm \ + radio_motif_on.xpm tickbox_off.xpm tickbox_on.xpm \ + radio_16_off.xpm radio_16_on.xpm + Combo.o: Combo.c TextField.h ComboP.h Combo.h combo.xpm + DragAndDrop.o: DragAndDrop.c DragAndDrop.h DragAndDropTypes.h \ + cursor/file.xbm cursor/file_mask.xbm cursor/files.xbm \ + cursor/files_mask.xbm cursor/dir.xbm cursor/dir_mask.xbm \ + cursor/text.xbm cursor/text_mask.xbm cursor/grey.xbm \ + cursor/grey_mask.xbm cursor/link.xbm cursor/link_mask.xbm \ + cursor/app.xbm cursor/app_mask.xbm cursor/url.xbm \ + cursor/url_mask.xbm cursor/mime.xbm cursor/mime_mask.xbm + Frame.o: Frame.c FrameP.h Frame.h Gcs.h + Gcs.o: Gcs.c Gcs.h + Ghostview.o: Ghostview.c GhostviewP.h Ghostview.h + Handle.o: Handle.c HandleP.h Handle.h ../XawM/Label.h ../XawM/Simple.h \ + ../XawM/XawVersion.h ../XawM/LabelP.h ../XawM/ThreeDP.h \ + ../XawM/ThreeD.h ../XawM/SimpleP.h xcommon.h + Image.o: Image.c xfonts.h ../config.h ../common/richchar.h ImageP.h \ + Image.h + Notebook.o: Notebook.c ../common/common.h ../common/cmalloc.h \ + NotebookP.h Notebook.h + Richtext.o: Richtext.c ../common/cmalloc.h ../common/fonts.h xfonts.h \ + ../config.h ../common/richchar.h embed.h ../common/traceme.h \ + RichtextP.h Richtext.h ../pw/pw.h ../pw/../common/richchar.h \ + ../pw/../common/fonts.h ../pw/../common/traceme.h \ + ../pw/user_interface.h + Rudegrid.o: Rudegrid.c RudegridP.h Rudegrid.h + Ruler.o: Ruler.c xfonts.h ../config.h ../common/richchar.h RulerP.h \ + Ruler.h + Tabbing.o: Tabbing.c ../common/common.h ../common/cmalloc.h TabbingP.h \ + Tabbing.h + Table.o: Table.c ../common/cmalloc.h ../common/fonts.h xfonts.h \ + ../config.h ../common/richchar.h embed.h TableP.h Table.h + Tabs.o: Tabs.c TabsP.h Tabs.h Gcs.h + TextField.o: TextField.c TextFieldP.h ../config.h TextField.h + Tooltip.o: Tooltip.c TooltipP.h Tooltip.h ../XawM/Cardinals.h \ + ../XawM/Label.h ../XawM/Simple.h ../XawM/XawVersion.h \ + ../common/cmalloc.h + dialogs.o: dialogs.c ../common/common.h ../common/bitmaps/unknown.xpm \ + dialogs.h xcommon.h TextField.h Rudegrid.h Frame.h Image.h + embed.o: embed.c ../common/cmalloc.h embed.h + filesel.o: filesel.c ../config.h ../Nws/Menu.h ../Nws/cvt.h \ + ../Nws/MenuBar.h ../Nws/Row.h ../Nws/BaseConst.h \ + ../Nws/MenuButton.h ../Nws/Button.h ../Nws/SButton.h \ + ../Nws/Base.h ../Nws/LabelME.h ../Nws/BaseME.h ../Nws/LineME.h \ + ../common/cmalloc.h ../common/common.h TextField.h xcommon.h \ + dialogs.h filesel.h Rudegrid.h Frame.h + fonts.o: fonts.c ../config.h ../common/common.h ../common/cmalloc.h \ + ../common/oldfonts.h ../common/fonts.h ../common/richchar.h \ + ../common/traceme.h xfonts.h + forminput.o: forminput.c ../Nws/Menu.h ../Nws/cvt.h ../Nws/MenuBar.h \ + ../Nws/Row.h ../Nws/BaseConst.h ../Nws/MenuButton.h \ + ../Nws/Button.h ../Nws/SButton.h ../Nws/Base.h ../Nws/LabelME.h \ + ../Nws/BaseME.h ../Nws/LineME.h ../Nws/SubME.h ../siod/siod.h \ + ../common/cmalloc.h ../common/common.h TextField.h Check.h \ + xcommon.h dialogs.h + icon.o: icon.c + plugin.o: plugin.c ../common/common.h ../common/cmalloc.h plugin.h \ + ../common/plugin.h ../common/traceme.h + tooltip.o: tooltip.c ../common/common.h xcommon.h + xcommon.o: xcommon.c ../common/common.h + info-am: info: info-recursive dvi-am: diff -crNP ../siag-3.3.3/xcommon/Richtext.c ./xcommon/Richtext.c *** ../siag-3.3.3/xcommon/Richtext.c Thu Apr 6 14:53:30 2000 --- ./xcommon/Richtext.c Fri Apr 28 14:34:34 2000 *************** *** 1,5 **** /* ! Copyright (C) 1998-1999 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public --- 1,5 ---- /* ! Copyright (C) 1998-2000 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public *************** *** 39,44 **** --- 39,46 ---- static void plugin_coords(Widget, XtPointer, int *, int *); static Boolean default_bop(XtPointer, int); + static float floatOne = 1.0; + #define offset(field) XtOffsetOf(RichtextRec, richtext.field) static XtResource resources[] = { { *************** *** 209,214 **** --- 211,225 ---- offset(plugin_coords), XtRImmediate, (XtPointer)plugin_coords + }, { + XtNzoom, + XtCZoom, + XtRFloat, + sizeof(float), + offset(zoom), + XtRFloat, + (XtPointer)&floatOne + } }; #undef offset *************** *** 237,246 **** --- 248,263 ---- /* actions */ static void RichtextAction(Widget, XEvent *, String *, Cardinal *); + #if 1 + static void SelfInsertChar(Widget, XEvent *, String *, Cardinal *); + #endif static XtActionsRec actions[] = { {"richtext-action", RichtextAction}, + #if 1 + {"self-insert-char", SelfInsertChar}, + #endif }; /* translations */ *************** *** 296,301 **** --- 313,343 ---- WidgetClass richtextWidgetClass = (WidgetClass)&richtextClassRec; + static int ret_style(RichtextWidget rtw, int row) + { + if (rtw->richtext.style) + return (*rtw->richtext.style)(rtw->richtext.data, row); + return STY_DEFAULT; + } + + static rich_char *ret_text(RichtextWidget rtw, int row) + { + if (rtw->richtext.text) + return (*rtw->richtext.text)(rtw->richtext.data, row); + return NULL; + } + + static int line_length(RichtextWidget rtw, int row) + { + rich_char *p; + int len; + p = ret_text(rtw, row); + if (p == NULL) return 0; + if (ret_style(rtw, row) == STY_EMBED) return 1; + len = rc_strlen(p); + return len; + } + /* supporting code copied directly from window.c */ static void RichtextAction(Widget w, XEvent *event, String *params, Cardinal *n) *************** *** 303,308 **** --- 345,415 ---- ; } + /* + This action is extremely messy, being copied from the application code + of Pathetic Writer. We need to do it like this instead: + 1. Copy the whole paragraph from pw using copy_line and delete_line. + The result should be a single richtext string with tabs and newlines + embedded as needed. + 2. Convert the point position to an offset within the string. + 3. Insert the character. + 4. Move point forward one step. + 5. Calculate the point position from the offset. + 6. Repaint the whole paragraph. As we go along, the single string is + broken up into lines again. + 7. Insert the paragraph using insert_line. + + Any of these events will cause the entire window to be repainted: + - Point ends up outside the window. + - The total height of the paragraph changes. + */ + #if 1 + #define ret_hadj ZzZzZ + #define ret_style XxXxX + #define line_width CcCcC + #define line_length VvVvV + #include "../pw/pw.h" + #undef ret_hadj + #undef ret_style + #undef line_width + #undef line_length + static void SelfInsertChar(Widget w, XEvent *event, String *params, Cardinal *n) + { + int count, bufsiz = 10; + unsigned char buf[12]; + KeySym keysym; + RichtextWidget rw = (RichtextWidget)w; + + hide_cur(w_list); + count = RichtextLookupString(w, event, buf, bufsiz, &keysym); + if (keysym >= ' ' && count == 1) { + int s = w_list->sht; + sheet *st = w_list->buf->sht; + buf[count] = '\0'; + ins_text(w_list->buf, s, + st[s].point_pos, buf, w_list->current_fmt); + rebreak_line(w_list->buf, s, st[s].point_pos.row); + st[s].point_pos.col += count; + /* point position may now be hosed */ + if (st[s].point_pos.col > + line_length(rw, st[s].point_pos.row)) { + st[s].point_pos.col -= + line_length(rw, st[s].point_pos.row); + st[s].point_pos.col -= 1; /* we deleted a space too */ + st[s].point_pos.row++; + } + /* and if that didn't help... */ + if (st[s].point_pos.col > + line_length(rw, st[s].point_pos.row)) { + st[s].point_pos.col = + line_length(rw, st[s].point_pos.row); + } + pr_line_flag = TRUE; + } + show_cur(w_list); + } + #endif + static GC get_gc(Widget w, unsigned long fg, unsigned long bg, Font font) { unsigned long valuemask = 0; *************** *** 361,366 **** --- 468,474 ---- XNClientWindow, XtWindow(w), (char *)0); #endif + rtw->richtext.timeout = None; } static void Destroy(Widget w) *************** *** 374,379 **** --- 482,489 ---- XDestroyIC(rtw->richtext.xic); XCloseIM(rtw->richtext.xim); #endif + if (rtw->richtext.timeout) + XtRemoveTimeOut(rtw->richtext.timeout); } static Dimension row_height(RichtextWidget rtw, int row) *************** *** 419,438 **** return HADJ_LEFT; } - static int ret_style(RichtextWidget rtw, int row) - { - if (rtw->richtext.style) - return (*rtw->richtext.style)(rtw->richtext.data, row); - return STY_DEFAULT; - } - - static rich_char *ret_text(RichtextWidget rtw, int row) - { - if (rtw->richtext.text) - return (*rtw->richtext.text)(rtw->richtext.data, row); - return NULL; - } - static int line_width(RichtextWidget rtw, int row, int col) { rich_char *line; --- 529,534 ---- *************** *** 466,482 **** return width; } - static int line_length(RichtextWidget rtw, int row) - { - rich_char *p; - int len; - p = ret_text(rtw, row); - if (p == NULL) return 0; - if (ret_style(rtw, row) == STY_EMBED) return 1; - len = rc_strlen(p); - return len; - } - static int line_start(RichtextWidget rtw, int row) { int x = 0; --- 562,567 ---- *************** *** 538,550 **** Boolean pr_scr_flag = False; int cur_x, cur_y; unsigned int width, height; if (rtw->richtext.point_row < rtw->richtext.top_row) { rtw->richtext.top_row = rtw->richtext.point_row; pr_scr_flag = True; } /* Figure out how big the window is */ ! width = rtw->core.width; ! height = rtw->core.height; richtext_char2coords(rtw, rtw->richtext.point_row, rtw->richtext.point_col, &cur_x, &cur_y); --- 623,637 ---- Boolean pr_scr_flag = False; int cur_x, cur_y; unsigned int width, height; + float zoom = rtw->richtext.zoom; + if (rtw->richtext.point_row < rtw->richtext.top_row) { rtw->richtext.top_row = rtw->richtext.point_row; pr_scr_flag = True; } /* Figure out how big the window is */ ! width = rtw->core.width/zoom; /* unzoomed size */ ! height = rtw->core.height/zoom; richtext_char2coords(rtw, rtw->richtext.point_row, rtw->richtext.point_col, &cur_x, &cur_y); *************** *** 565,577 **** static void toggle_cursor(RichtextWidget rtw) { int cur_x, cur_y; richtext_char2coords(rtw, rtw->richtext.point_row, rtw->richtext.point_col, &cur_x, &cur_y); XDrawLine(XtDisplay((Widget)rtw), XtWindow((Widget)rtw), ! rtw->richtext.cursor_gc, cur_x, cur_y, ! cur_x, row_height(rtw, rtw->richtext.point_row)+cur_y); } static void draw_line(RichtextWidget rtw, Drawable cell_win, --- 652,666 ---- static void toggle_cursor(RichtextWidget rtw) { int cur_x, cur_y; + float zoom = rtw->richtext.zoom; richtext_char2coords(rtw, rtw->richtext.point_row, rtw->richtext.point_col, &cur_x, &cur_y); XDrawLine(XtDisplay((Widget)rtw), XtWindow((Widget)rtw), ! rtw->richtext.cursor_gc, zoom*cur_x, zoom*cur_y, ! zoom*cur_x, ! zoom*(row_height(rtw, rtw->richtext.point_row)+cur_y)); } static void draw_line(RichtextWidget rtw, Drawable cell_win, *************** *** 585,595 **** Display *display = XtDisplay(rtw); rich_char *line = ret_text(rtw, row); int bop; if (clr) { /* the 4 is from trial and error; should be from font metrics */ ! XClearArea(display, cell_win, 0, y_base+4, ! rtw->core.width, height, FALSE); } if (!line) return; --- 674,686 ---- Display *display = XtDisplay(rtw); rich_char *line = ret_text(rtw, row); int bop; + float zoom = rtw->richtext.zoom; + GC gc = rtw->richtext.cell_gc; if (clr) { /* the 4 is from trial and error; should be from font metrics */ ! XClearArea(display, cell_win, 0, zoom*(y_base+4), ! rtw->core.width, zoom*height, FALSE); } if (!line) return; *************** *** 609,631 **** case 0: /* do nothing */ break; default: /* beginning of paragraph */ ! #if 1 ! points[0].x = x_base-10; points[0].y = y_base+4; ! points[1].x = 7; points[1].y = height/2-4; ! points[2].x = -points[1].x; points[2].y = points[1].y; ! XSetForeground(display, rtw->richtext.cell_gc, BlackPixelOfScreen(XtScreen(rtw))); ! XDrawLines(display, cell_win, rtw->richtext.cell_gc, points, 3, CoordModePrevious); - #else - XDrawString(display, cell_win, rtw->richtext.cell_gc, - x_base-10, y_base+height, "§", 1); - rich_char bm; - bm.fmt = 0; - bm.c = '§'; - rc_draw(cell_win, rtw->richtext.cell_gc, - x_base-10, y_base+height, bm, 0); - #endif break; } --- 700,715 ---- case 0: /* do nothing */ break; default: /* beginning of paragraph */ ! points[0].x = zoom*(x_base-10); ! points[0].y = zoom*(y_base+4); ! points[1].x = zoom*7; ! points[1].y = zoom*(height/2-4); ! points[2].x = zoom*-points[1].x; ! points[2].y = zoom*points[1].y; ! XSetForeground(display, gc, BlackPixelOfScreen(XtScreen(rtw))); ! XDrawLines(display, cell_win, gc, points, 3, CoordModePrevious); break; } *************** *** 638,650 **** color_index = format_table[line[i].fmt].fg; color = get_color(color_index); old_x_base = x_base; ! XSetForeground(display, rtw->richtext.cell_gc, color); if (inblock(rtw, row, i)) { ! rc_draw(cell_win, rtw->richtext.cell_gc, ! x_base, y_base+height, line[i], 1); } else { ! rc_draw(cell_win, rtw->richtext.cell_gc, ! x_base, y_base+height, line[i], 0); } if (b[0] == '\t') { int new_x = x_base - rtw->richtext.left_margin; --- 722,736 ---- color_index = format_table[line[i].fmt].fg; color = get_color(color_index); old_x_base = x_base; ! XSetForeground(display, gc, color); if (inblock(rtw, row, i)) { ! rc_draw(cell_win, gc, ! x_base, y_base+height, line[i], 1, ! zoom); } else { ! rc_draw(cell_win, gc, ! x_base, y_base+height, line[i], 0, ! zoom); } if (b[0] == '\t') { int new_x = x_base - rtw->richtext.left_margin; *************** *** 657,665 **** } if (format_table[line[i].fmt].uline) { XDrawLine(display, cell_win, ! rtw->richtext.cell_gc, ! old_x_base, y_base+height+1, ! x_base, y_base+height+1); } } } --- 743,751 ---- } if (format_table[line[i].fmt].uline) { XDrawLine(display, cell_win, ! gc, ! zoom*old_x_base, zoom*(y_base+height+1), ! zoom*x_base, zoom*(y_base+height+1)); } } } *************** *** 692,698 **** y_base = 0; for (i = rtw->richtext.top_row; /*i <= w->buf->used_lines &&*/ ! y_base < height; i++) { draw_line(rtw, d, y_base, i, FALSE); y_base += row_height(rtw, i); } --- 778,784 ---- y_base = 0; for (i = rtw->richtext.top_row; /*i <= w->buf->used_lines &&*/ ! zoom*y_base < height; i++) { draw_line(rtw, d, y_base, i, FALSE); y_base += row_height(rtw, i); } *************** *** 721,728 **** --- 807,820 ---- return scribble; } + #if 0 static void Redisplay(Widget w, XEvent *xevent, Region r) { + #else + static void do_redisplay(XtPointer client_data, XtIntervalId *id) + { + Widget w = (Widget)client_data; + #endif Pixmap scribble; GC gc; unsigned long valuemask = 0; *************** *** 742,747 **** --- 834,851 ---- } /* update plugin positions */ DoLayout(rtw); + + /* clear the timeout */ + rtw->richtext.timeout = None; + } + + static void Redisplay(Widget w, XEvent *event, Region r) + { + RichtextWidget tw = (RichtextWidget)w; + if (tw->richtext.timeout) return; /* already set */ + tw->richtext.timeout = XtAppAddTimeOut( + XtWidgetToApplicationContext(w), + 50, do_redisplay, (XtPointer)w); } static Boolean SetValues(Widget current, Widget request, Widget new, *************** *** 785,790 **** --- 889,895 ---- { int i; int x, y, top_x, top_y; + float zoom = sw->richtext.zoom; if (sw->composite.num_children) { richtext_global_coords(sw, *************** *** 799,805 **** -sw->richtext.right_margin -sw->composite.children[i]->core.width)/2; XtMoveWidget(sw->composite.children[i], ! x-top_x, y-top_y); } } --- 904,910 ---- -sw->richtext.right_margin -sw->composite.children[i]->core.width)/2; XtMoveWidget(sw->composite.children[i], ! zoom*(x-top_x), zoom*(y-top_y)); } } *************** *** 814,821 **** /* * Geometry Manager - * - * 'reply' is unused; we say only yeay or nay, never almost. */ static XtGeometryResult GeometryManager(Widget w, --- 919,924 ---- *************** *** 841,845 **** --- 944,960 ---- return XLookupString((XKeyEvent *)event, (char *)buf, bufsiz, keysym, NULL); #endif + } + + void RichtextSetZoom(Widget w, float zoom) + { + RichtextWidget rw = (RichtextWidget)w; + + if (zoom < .1) zoom = .1; + if (zoom > 10) zoom = 10; + if (rw->richtext.zoom != zoom) { + rw->richtext.zoom = zoom; + Redisplay(w, NULL, None); + } } diff -crNP ../siag-3.3.3/xcommon/Richtext.h ./xcommon/Richtext.h *** ../siag-3.3.3/xcommon/Richtext.h Thu Apr 6 14:53:30 2000 --- ./xcommon/Richtext.h Tue Apr 25 05:45:12 2000 *************** *** 1,5 **** /* ! Copyright (C) 1998-1999 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public --- 1,5 ---- /* ! Copyright (C) 1998-2000 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public *************** *** 42,47 **** --- 42,48 ---- width Width Dimension 0 x Position Position 0 y Position Position 0 + zoom Float Float 1.0 */ *************** *** 68,73 **** --- 69,75 ---- #define XtNrichtextTabDistance "richtextTabDistance" #define XtNrichtextPluginCoords "richtextPluginCoords" #define XtNrichtextBop "richtextBop" + #define XtNzoom "zoom" #define XtCRichtextTopRow "RichtextTopRow" #define XtCRichtextTopCol "RichtextTopCol" *************** *** 90,95 **** --- 92,98 ---- #define XtCRichtextTabDistance "RichtextTabDistance" #define XtCRichtextPluginCoords "RichtextPluginCoords" #define XtCRichtextBop "RichtextBop" + #define XtCZoom "Zoom" /* declare specific RichtextWidget class and instance datatypes */ *************** *** 103,108 **** --- 106,112 ---- /* a few functions */ extern void rt_pr_line(Widget, int); extern int RichtextLookupString(Widget, XEvent *, char *, int, KeySym *); + extern void RichtextSetZoom(Widget, float); #endif /* s_Richtext_h */ diff -crNP ../siag-3.3.3/xcommon/RichtextP.h ./xcommon/RichtextP.h *** ../siag-3.3.3/xcommon/RichtextP.h Thu Apr 6 14:53:30 2000 --- ./xcommon/RichtextP.h Fri Apr 28 14:29:59 2000 *************** *** 1,5 **** /* ! Copyright (C) 1998-1999 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public --- 1,5 ---- /* ! Copyright (C) 1998-2000 Ulric Eriksson This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public *************** *** 59,68 **** --- 59,70 ---- int tab_distance; void (*plugin_coords)(Widget, XtPointer, int *, int *); Boolean (*bop)(XtPointer, int); + float zoom; /* private state */ GC clear_gc; GC cell_gc; GC cursor_gc; + XtIntervalId timeout; #ifdef HAVE_XCREATEIC XIM xim; XIC xic; diff -crNP ../siag-3.3.3/xcommon/Ruler.c ./xcommon/Ruler.c *** ../siag-3.3.3/xcommon/Ruler.c Mon Mar 27 20:44:04 2000 --- ./xcommon/Ruler.c Fri Apr 28 11:12:32 2000 *************** *** 30,35 **** --- 30,37 ---- #include "RulerP.h" + static float floatOne = 1.0; + #define offset(field) XtOffsetOf(RulerRec, ruler.field) static XtResource resources[] = { { *************** *** 64,69 **** --- 66,79 ---- offset(tab_distance), XtRImmediate, (XtPointer)36 + }, { + XtNzoom, + XtCZoom, + XtRFloat, + sizeof(float), + offset(zoom), + XtRFloat, + (XtPointer)&floatOne } }; #undef offset *************** *** 156,172 **** GC gc = aw->ruler.gc; unsigned long black = BlackPixelOfScreen(s); unsigned long white = WhitePixelOfScreen(s); o = -1; for (i = aw->ruler.left_margin+1; i < aw->ruler.paper_width-aw->ruler.right_margin; i += aw->ruler.tab_distance) { XSetForeground(dpy, gc, white); ! XDrawLine(dpy, wi, gc, i-2+o, 0, i-2+o, h-6); ! XDrawLine(dpy, wi, gc, i-2+o, h-6, i+o, h-4); XSetForeground(dpy, gc, black); ! XDrawLine(dpy, wi, gc, i+2+o, 0, i+2+o, h-6); ! XDrawLine(dpy, wi, gc, i+o, h-4, i+2+o, h-6); XDrawLine(dpy, wi, gc, 0, 0, 0, h-1); XDrawLine(dpy, wi, gc, 0, 0, w1-1, 0); --- 166,183 ---- GC gc = aw->ruler.gc; unsigned long black = BlackPixelOfScreen(s); unsigned long white = WhitePixelOfScreen(s); + float zoom = aw->ruler.zoom; o = -1; for (i = aw->ruler.left_margin+1; i < aw->ruler.paper_width-aw->ruler.right_margin; i += aw->ruler.tab_distance) { XSetForeground(dpy, gc, white); ! XDrawLine(dpy, wi, gc, zoom*i-2+o, 0, zoom*i-2+o, h-6); ! XDrawLine(dpy, wi, gc, zoom*i-2+o, h-6, zoom*i+o, h-4); XSetForeground(dpy, gc, black); ! XDrawLine(dpy, wi, gc, zoom*i+2+o, 0, zoom*i+2+o, h-6); ! XDrawLine(dpy, wi, gc, zoom*i+o, h-4, zoom*i+2+o, h-6); XDrawLine(dpy, wi, gc, 0, 0, 0, h-1); XDrawLine(dpy, wi, gc, 0, 0, w1-1, 0); *************** *** 182,191 **** --- 193,216 ---- RulerWidget rw2 = (RulerWidget)new; Boolean do_redisplay = (rw1->ruler.tab_distance != rw2->ruler.tab_distance) + || (rw1->ruler.zoom != rw2->ruler.zoom) || (rw1->ruler.left_margin != rw2->ruler.left_margin) || (rw1->ruler.right_margin != rw2->ruler.right_margin) || (rw1->ruler.paper_width != rw2->ruler.paper_width); return do_redisplay; + } + + void RulerSetZoom(Widget w, float zoom) + { + RulerWidget rw = (RulerWidget)w; + + if (zoom < .1) zoom = .1; + if (zoom > 10) zoom = 10; + if (zoom != rw->ruler.zoom) { + rw->ruler.zoom = zoom; + XClearWindow(XtDisplay(w), XtWindow(w)); + Redisplay(w, NULL, None); + } } diff -crNP ../siag-3.3.3/xcommon/Ruler.h ./xcommon/Ruler.h *** ../siag-3.3.3/xcommon/Ruler.h Sun Mar 26 22:12:57 2000 --- ./xcommon/Ruler.h Tue Apr 25 05:44:01 2000 *************** *** 63,68 **** --- 63,72 ---- #define XtNtabDistance "tabDistance" #define XtCTabDistance "TabDistance" #endif + #ifndef XtNzoom + #define XtNzoom "zoom" + #define XtCZoom "Zoom" + #endif /* declare specific RulerWidget class and instance datatypes */ *************** *** 73,78 **** --- 77,83 ---- extern WidgetClass rulerWidgetClass; + extern void RulerSetZoom(Widget, float); #endif /* s_Ruler_h */ diff -crNP ../siag-3.3.3/xcommon/RulerP.h ./xcommon/RulerP.h *** ../siag-3.3.3/xcommon/RulerP.h Mon Mar 27 12:58:49 2000 --- ./xcommon/RulerP.h Tue Apr 25 05:42:39 2000 *************** *** 44,49 **** --- 44,50 ---- int left_margin, right_margin; int paper_width; int tab_distance; + float zoom; /* private state */ GC gc; } RulerPart; diff -crNP ../siag-3.3.3/xcommon/Table.c ./xcommon/Table.c *** ../siag-3.3.3/xcommon/Table.c Thu Apr 6 14:53:31 2000 --- ./xcommon/Table.c Fri Apr 28 14:19:44 2000 *************** *** 35,40 **** --- 35,42 ---- static void plugin_coords(Widget, XtPointer, int *, int *); + static float floatOne = 1.0; + #define offset(field) XtOffsetOf(TableRec, table.field) static XtResource resources[] = { { *************** *** 237,242 **** --- 239,252 ---- offset(threeD), XtRImmediate, (XtPointer)False + }, { + XtNzoom, + XtCZoom, + XtRFloat, + sizeof(float), + offset(zoom), + XtRFloat, + (XtPointer)&floatOne } }; #undef offset *************** *** 423,428 **** --- 433,442 ---- int fmt; int siagfmt; rich_char *rcp; + float zoom = tw->table.zoom; + GC grid_gc = tw->table.grid_gc; + GC cell_gc = tw->table.cell_gc; + Display *dpy = XtDisplay(w); if (row > tw->table.max_row || col > tw->table.max_col) return; *************** *** 447,453 **** color_index = return_color(w, row, col); color = get_color(color_index); ! XSetForeground(XtDisplay(w), tw->table.cell_gc, color); p = return_pvalue(w, row, col); if (p == NULL) p = ""; --- 461,467 ---- color_index = return_color(w, row, col); color = get_color(color_index); ! XSetForeground(dpy, cell_gc, color); p = return_pvalue(w, row, col); if (p == NULL) p = ""; *************** *** 481,519 **** -font_descent(font_index); } ! rc_strdraw(scribble, tw->table.cell_gc, x_base+x_pos, y_base+y_pos, ! rcp, -1); cfree(rcp); ! XSetForeground(XtDisplay(w), tw->table.grid_gc, tw->table.black); if (tw->table.grid_lines) { ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base, y_base+ch-1, ! x_base+cw-1, y_base+ch-1); ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base+cw-1, y_base+ch-1, ! x_base+cw-1, y_base); } /* these lines are from the format */ if (siagfmt & BORDER_LEFT) ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base, y_base, x_base, y_base+ch-2); if (siagfmt & BORDER_RIGHT) ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base+cw-2, y_base, x_base+cw-2, y_base+ch-2); if (siagfmt & BORDER_TOP) ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base, y_base, x_base+cw-2, y_base); if (siagfmt & BORDER_BOTTOM) ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base, y_base+ch-2, x_base+cw-2, y_base+ch-2); ! XSetForeground(XtDisplay(w), tw->table.grid_gc, WhitePixelOfScreen(XtScreen(w))); if (tw->table.threeD) { ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base, y_base, x_base, y_base+ch-2); ! XDrawLine(XtDisplay(w), scribble, tw->table.grid_gc, ! x_base, y_base, x_base+cw-2, y_base); } } --- 495,536 ---- -font_descent(font_index); } ! rc_strdraw(scribble, cell_gc, x_base+x_pos, y_base+y_pos, ! rcp, -1, zoom); cfree(rcp); ! XSetForeground(dpy, grid_gc, tw->table.black); if (tw->table.grid_lines) { ! int x1 = zoom*x_base, y1 = zoom*y_base; ! int x2 = zoom*(x_base+cw-1), y2 = zoom*(y_base+ch-1); ! XDrawLine(dpy, scribble, grid_gc, x1, y2, x2, y2); ! XDrawLine(dpy, scribble, grid_gc, x2, y2, x2, y1); } /* these lines are from the format */ if (siagfmt & BORDER_LEFT) ! XDrawLine(dpy, scribble, grid_gc, zoom*x_base, zoom*y_base, ! zoom*x_base, zoom*(y_base+ch-2)); if (siagfmt & BORDER_RIGHT) ! XDrawLine(dpy, scribble, grid_gc, ! zoom*(x_base+cw-2), zoom*(y_base), ! zoom*(x_base+cw-2), zoom*(y_base+ch-2)); if (siagfmt & BORDER_TOP) ! XDrawLine(dpy, scribble, grid_gc, ! zoom*x_base, zoom*y_base, ! zoom*(x_base+cw-2), zoom*y_base); if (siagfmt & BORDER_BOTTOM) ! XDrawLine(dpy, scribble, grid_gc, ! zoom*x_base, zoom*(y_base+ch-2), ! zoom*(x_base+cw-2), zoom*(y_base+ch-2)); ! XSetForeground(dpy, grid_gc, WhitePixelOfScreen(XtScreen(w))); if (tw->table.threeD) { ! XDrawLine(dpy, scribble, grid_gc, ! zoom*x_base, zoom*y_base, ! zoom*x_base, zoom*(y_base+ch-2)); ! XDrawLine(dpy, scribble, grid_gc, ! zoom*x_base, zoom*y_base, ! zoom*(x_base+cw-2), zoom*y_base); } } *************** *** 524,529 **** --- 541,547 ---- int color_index; unsigned long color; int cw, ch; + float zoom = tw->table.zoom; if (row > tw->table.max_row || col > tw->table.max_col) return; *************** *** 532,544 **** if (inblock(tw, row, col)) { XFillRectangle(XtDisplay(w), scribble, tw->table.block_gc, ! x_base, y_base, cw, ch); } else { color_index = return_bgcolor(w, row, col); color = get_color(color_index); XSetForeground(XtDisplay(w), tw->table.cell_gc, color); XFillRectangle(XtDisplay(w), scribble, tw->table.cell_gc, ! x_base, y_base, cw, ch); } } --- 550,562 ---- if (inblock(tw, row, col)) { XFillRectangle(XtDisplay(w), scribble, tw->table.block_gc, ! zoom*x_base, zoom*y_base, zoom*cw, zoom*ch); } else { color_index = return_bgcolor(w, row, col); color = get_color(color_index); XSetForeground(XtDisplay(w), tw->table.cell_gc, color); XFillRectangle(XtDisplay(w), scribble, tw->table.cell_gc, ! zoom*x_base, zoom*y_base, zoom*cw, zoom*ch); } } *************** *** 546,568 **** int width, int y_base, int i) { int j, x_base; ! x_base = 0; ! for (j = 1; (j < tw->table.prot_col) && (x_base < width); j++) { erase_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } ! for (j = tw->table.top_col; x_base < width; j++) { erase_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } x_base = 0; ! for (j = 1; (j < tw->table.prot_col) && (x_base < width); j++) { draw_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } ! for (j = tw->table.top_col; x_base < width; j++) { draw_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } --- 564,587 ---- int width, int y_base, int i) { int j, x_base; ! float zoom = tw->table.zoom; ! x_base = 0; ! for (j = 1; (j < tw->table.prot_col) && (zoom*x_base < width); j++) { erase_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } ! for (j = tw->table.top_col; zoom*x_base < width; j++) { erase_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } x_base = 0; ! for (j = 1; (j < tw->table.prot_col) && (zoom*x_base < width); j++) { draw_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } ! for (j = tw->table.top_col; zoom*x_base < width; j++) { draw_cell(tw, scribble, i, j, x_base, y_base); x_base += cell_width(tw, j); } *************** *** 574,585 **** int width = tw->core.width; int height = tw->core.height; int i; ! for (i = 1; (i < tw->table.prot_row) && (y_base < height); i++) { cell_row(tw, d, width, y_base, i); y_base += cell_height(tw, i); } ! for (i = tw->table.top_row; y_base < height; i++) { cell_row(tw, d, width, y_base, i); y_base += cell_height(tw, i); } --- 593,605 ---- int width = tw->core.width; int height = tw->core.height; int i; + float zoom = tw->table.zoom; ! for (i = 1; (i < tw->table.prot_row) && (zoom*y_base < height); i++) { cell_row(tw, d, width, y_base, i); y_base += cell_height(tw, i); } ! for (i = tw->table.top_row; zoom*y_base < height; i++) { cell_row(tw, d, width, y_base, i); y_base += cell_height(tw, i); } *************** *** 692,698 **** { Pixmap scribble; TableWidget tw = (TableWidget)w; ! int top_x, top_y, bot_x, bot_y, max_r, max_c, width, height; width = tw->core.width; height = tw->core.height; --- 712,718 ---- { Pixmap scribble; TableWidget tw = (TableWidget)w; ! int width, height; width = tw->core.width; height = tw->core.height; *************** *** 701,729 **** scribble = XCreatePixmap(XtDisplay(w), XtWindow(w), width, height, tw->core.depth); - table_cell2coords(tw, - tw->table.sel_top_row, tw->table.sel_left_col, - &top_x, &top_y); - table_coords2cell(tw, &max_r, &max_c, width, height); - if (max_r > tw->table.sel_bottom_row) - max_r = tw->table.sel_bottom_row; - if (max_c > tw->table.sel_right_col) - max_c = tw->table.sel_right_col; - - table_cell2coords(tw, max_r, max_c, &bot_x, &bot_y); - if (bot_x >= top_x && bot_x >= 0 && top_x <= width - && bot_y >= top_y && bot_y >= 0 && top_y <= height) { - int wi = bot_x-top_x+cell_width(tw, tw->table.sel_right_col); - int he = bot_y-top_y+cell_height(tw, tw->table.sel_bottom_row); - if (top_x < 0) { - wi += top_x; - top_x = 0; - } - if (top_y < 0) { - he += top_y; - top_y = 0; - } - } draw_table(tw, scribble); return scribble; --- 721,726 ---- *************** *** 772,777 **** --- 769,775 ---- tw->table.block_gc = get_gc(w, tw->table.black^tw->table.white, 0); XSetFunction(XtDisplay(w), tw->table.block_gc, GXxor); #endif + tw->table.timeout = None; } static void Destroy(Widget w) *************** *** 783,788 **** --- 781,789 ---- XFreeGC(XtDisplay(w), tw->table.grid_gc); XFreeGC(XtDisplay(w), tw->table.cursor_gc); XFreeGC(XtDisplay(w), tw->table.block_gc); + + if (tw->table.timeout) + XtRemoveTimeOut(tw->table.timeout); } *************** *** 791,796 **** --- 792,798 ---- Boolean pr_scr_flag = False; int cur_x, cur_y, prot_x = 0, prot_y = 0, i; unsigned int width, height; + float zoom = tw->table.zoom; for (i = 1; i < tw->table.prot_col; i++) prot_x += cell_width(tw, i); *************** *** 798,805 **** prot_y += cell_height(tw, i); /* Figure out how big the window is */ ! width = tw->core.width; ! height = tw->core.height; table_cell2coords(tw, tw->table.point_row, tw->table.point_col, --- 800,807 ---- prot_y += cell_height(tw, i); /* Figure out how big the window is */ ! width = tw->core.width/zoom; /* unzoomed size */ ! height = tw->core.height/zoom; table_cell2coords(tw, tw->table.point_row, tw->table.point_col, *************** *** 834,839 **** --- 836,842 ---- int cur_x, cur_y; GC gc = tw->table.cursor_gc; unsigned long bg; + float zoom = tw->table.zoom; table_cell2coords(tw, row, col, &cur_x, &cur_y); if (row >= tw->table.sel_top_row && row <= tw->table.sel_bottom_row && *************** *** 844,855 **** } XSetForeground(XtDisplay((Widget)tw), gc, tw->table.black^bg); XDrawRectangle(XtDisplay((Widget)tw), XtWindow((Widget)tw), ! tw->table.cursor_gc, cur_x+2, cur_y+2, ! cell_width(tw, col)-5, cell_height(tw, row)-5); } static void Redisplay(Widget w, XEvent *event, Region r) { Pixmap scribble; GC gc; unsigned long valuemask = 0; --- 847,865 ---- } XSetForeground(XtDisplay((Widget)tw), gc, tw->table.black^bg); XDrawRectangle(XtDisplay((Widget)tw), XtWindow((Widget)tw), ! tw->table.cursor_gc, ! zoom*(cur_x+2), zoom*(cur_y+2), ! zoom*(cell_width(tw, col)-5), zoom*(cell_height(tw, row)-5)); } + #if 0 static void Redisplay(Widget w, XEvent *event, Region r) { + #else + static void do_redisplay(XtPointer client_data, XtIntervalId *id) + { + Widget w = (Widget)client_data; + #endif Pixmap scribble; GC gc; unsigned long valuemask = 0; *************** *** 873,880 **** --- 883,901 ---- } /* update plugin positions */ DoLayout(tw); + + /* clear the timeout */ + tw->table.timeout = None; } + static void Redisplay(Widget w, XEvent *event, Region r) + { + TableWidget tw = (TableWidget)w; + if (tw->table.timeout) return; /* already set */ + tw->table.timeout = XtAppAddTimeOut( + XtWidgetToApplicationContext(w), + 50, do_redisplay, (XtPointer)w); + } /* --- A dilemma: if Xt handles the redisplaying, it also takes care of *************** *** 932,937 **** --- 953,959 ---- { int i; int x, y, top_x, top_y, prot_x, prot_y; + float zoom = sw->table.zoom; if (sw->composite.num_children) { table_global_coords(sw, *************** *** 945,951 **** (*sw->table.plugin_coords)(sw->composite.children[i], sw->table.data, &x, &y); XtMoveWidget(sw->composite.children[i], ! x-top_x+prot_x, y-top_y+prot_y); } } --- 967,973 ---- (*sw->table.plugin_coords)(sw->composite.children[i], sw->table.data, &x, &y); XtMoveWidget(sw->composite.children[i], ! zoom*(x-top_x+prot_x), zoom*(y-top_y+prot_y)); } } *************** *** 973,977 **** --- 995,1011 ---- static void ChangeManaged(Widget w) { DoLayout((TableWidget)w); + } + + void TableSetZoom(Widget w, float zoom) + { + TableWidget tw = (TableWidget)w; + + if (zoom < .1) zoom = .1; + if (zoom > 10) zoom = 10; + if (tw->table.zoom != zoom) { + tw->table.zoom = zoom; + Redisplay(w, NULL, None); + } } diff -crNP ../siag-3.3.3/xcommon/Table.h ./xcommon/Table.h *** ../siag-3.3.3/xcommon/Table.h Thu Apr 6 14:53:31 2000 --- ./xcommon/Table.h Thu Apr 27 17:13:32 2000 *************** *** 101,106 **** --- 101,110 ---- #define XtNtableVisibleCursor "tableVisibleCursor" #define XtNtablePluginCoords "tablePluginCoords" #define XtNtable3D "table3D" + #ifndef XtNzoom + #define XtNzoom "zoom" + #define XtCZoom "Zoom" + #endif #define XtCTableMaxRow "TableMaxRow" #define XtCTableMaxCol "TableMaxCol" *************** *** 138,143 **** --- 142,148 ---- extern WidgetClass tableWidgetClass; extern Pixmap table_pixmap(Widget); + extern void TableSetZoom(Widget, float); #define TABLE_TEXT 1 #define TABLE_PIXMAP 2 diff -crNP ../siag-3.3.3/xcommon/TableP.h ./xcommon/TableP.h *** ../siag-3.3.3/xcommon/TableP.h Thu Apr 6 14:53:31 2000 --- ./xcommon/TableP.h Fri Apr 28 14:13:12 2000 *************** *** 60,65 **** --- 60,66 ---- Boolean visible_cursor; void (*plugin_coords)(Widget, XtPointer, int *, int *); Boolean threeD; + float zoom; /* private state */ unsigned long white, grey, black; GC clear_gc; *************** *** 67,72 **** --- 68,74 ---- GC grid_gc; GC cursor_gc; GC block_gc; + XtIntervalId timeout; } TablePart; typedef struct s_TableRec { diff -crNP ../siag-3.3.3/xcommon/fonts.c ./xcommon/fonts.c *** ../siag-3.3.3/xcommon/fonts.c Tue Apr 11 22:22:01 2000 --- ./xcommon/fonts.c Fri Apr 28 13:45:25 2000 *************** *** 813,818 **** --- 813,820 ---- Code to handle a combination of X and T1 fonts. Currently pretty suboptimal: makes several passes over strings, doesn't use kerning or ligatures. + + 000425: added zoom. --- */ /* X code borrowed from Richchar.c */ *************** *** 880,892 **** *height = rc_strheight(p, len); } ! /* TODO: handle tabs */ ! int rc_draw(Drawable d, GC gc, int x, int y, rich_char c, int opaque) ! { int index, color_index; int vadj, width; unsigned long color; index = format_table[c.fmt].font; switch (format_table[c.fmt].siagfmt & VADJ_MASK) { case VADJ_TOP: --- 882,919 ---- *height = rc_strheight(p, len); } ! /* ! x and y are the unzoomed coordinates, i.e. if x=10 and zoom=2.0, ! the text will be drawn at x=20. ! */ ! int rc_draw(Drawable d, GC gc, int x, int y, rich_char c, int opaque, ! float zoom) ! { ! static int format_index = -1; ! static sfmt fmt; ! static Font font; ! static float oldzoom = -1; ! XFontStruct *font_struct; ! char xfont[1000]; int index, color_index; int vadj, width; unsigned long color; + if (c.fmt != format_index || zoom != oldzoom) { + format_index = c.fmt; + oldzoom = zoom; + decode_format(format_index, + SFMT_FAMILY | SFMT_SIZE | SFMT_BOLD | SFMT_ITALIC + | SFMT_ULINE | SFMT_FG | SFMT_BG | SFMT_VADJ + | SFMT_HADJ, &fmt); + font_struct = load_cached_font(xfont, fmt.family, + fmt.size, fmt.bold, fmt.italic, zoom); + font = font_struct->fid; + color_index = format_table[c.fmt].fg; + color = get_color(color_index); + XSetForeground(t1_dpy, gc, color); + + } index = format_table[c.fmt].font; switch (format_table[c.fmt].siagfmt & VADJ_MASK) { case VADJ_TOP: *************** *** 899,938 **** vadj = 0; } - color_index = format_table[c.fmt].fg; - color = get_color(color_index); - XSetForeground(t1_dpy, gc, color); - if (has_t1_font(index)) { #ifdef HAVE_LIB_T1X ! T1_SetCharX(d, gc, t1_mode, x, y+vadj, font_table[index].id, c.c, ! font_table[index].size/10.0, NULL); if (opaque) fprintf(stderr, "Warning: can't draw opaque\n"); #endif } else { - Font font = font_table[index].fs->fid; XSetFont(t1_dpy, gc, font); ! if (opaque) XDrawImageString(t1_dpy, d, gc, x, y+vadj, &c.c, 1); ! else XDrawString(t1_dpy, d, gc, x, y+vadj, &c.c, 1); } if (format_table[c.fmt].uline) { - /* this should rather use the built-in T1 underlining */ width = rc_width(c); ! XDrawLine(t1_dpy, d, gc, x, y+1, x+width, y+1); } return 0; } ! int rc_strdraw(Drawable d, GC gc, int x, int y, rich_char *p, int len) { int i; if (len == -1) len = rc_strlen(p); for (i = 0; i < len; i++) { ! rc_draw(d, gc, x, y, p[i], 0); x += rc_width(p[i]); } return 0; --- 926,963 ---- vadj = 0; } if (has_t1_font(index)) { #ifdef HAVE_LIB_T1X ! T1_SetCharX(d, gc, t1_mode, zoom*x, zoom*(y+vadj), font_table[index].id, c.c, ! zoom*font_table[index].size/10.0, NULL); if (opaque) fprintf(stderr, "Warning: can't draw opaque\n"); #endif } else { XSetFont(t1_dpy, gc, font); ! if (opaque) XDrawImageString(t1_dpy, d, gc, ! zoom*x, zoom*(y+vadj), &c.c, 1); ! else XDrawString(t1_dpy, d, gc, ! zoom*x, zoom*(y+vadj), &c.c, 1); } if (format_table[c.fmt].uline) { width = rc_width(c); ! XDrawLine(t1_dpy, d, gc, ! zoom*x, zoom*(y+1), zoom*(x+width), zoom*(y+1)); } return 0; } ! int rc_strdraw(Drawable d, GC gc, int x, int y, rich_char *p, int len, ! float zoom) { int i; if (len == -1) len = rc_strlen(p); for (i = 0; i < len; i++) { ! rc_draw(d, gc, x, y, p[i], 0, zoom); x += rc_width(p[i]); } return 0; diff -crNP ../siag-3.3.3/xcommon/xfonts.h ./xcommon/xfonts.h *** ../siag-3.3.3/xcommon/xfonts.h Sat Apr 8 00:45:24 2000 --- ./xcommon/xfonts.h Thu Apr 27 02:23:41 2000 *************** *** 1,5 **** /* ! Copyright (C) 1996-1999 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* ! Copyright (C) 1996-2000 Ulric Eriksson This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 81,88 **** extern int rc_strwidth(rich_char *, int); extern int rc_strheight(rich_char *, int); extern void rc_strgeom(rich_char *, int, int *, int *); ! extern int rc_draw(Drawable, GC, int, int, rich_char, int); ! extern int rc_strdraw(Drawable, GC, int, int, rich_char *, int); extern int t1_getfontid(char *); extern char *t1_getfontname(int); extern int t1_init(Widget); --- 81,88 ---- extern int rc_strwidth(rich_char *, int); extern int rc_strheight(rich_char *, int); extern void rc_strgeom(rich_char *, int, int *, int *); ! extern int rc_draw(Drawable, GC, int, int, rich_char, int, float); ! extern int rc_strdraw(Drawable, GC, int, int, rich_char *, int, float); extern int t1_getfontid(char *); extern char *t1_getfontname(int); extern int t1_init(Widget); diff -crNP ../siag-3.3.3/xpw/Makefile.in ./xpw/Makefile.in *** ../siag-3.3.3/xpw/Makefile.in Thu Apr 6 18:29:27 2000 --- ./xpw/Makefile.in Fri Apr 28 14:48:25 2000 *************** *** 234,239 **** --- 234,267 ---- || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done + selection.o: selection.c ../common/common.h ../common/cmalloc.h \ + ../pw/pw.h ../pw/../common/richchar.h ../pw/../common/fonts.h \ + ../pw/../common/traceme.h ../pw/user_interface.h xpw.h + window.o: window.c ../Nws/Menu.h ../Nws/cvt.h ../Nws/MenuBar.h \ + ../Nws/Row.h ../Nws/BaseConst.h ../Nws/MBButton.h \ + ../Nws/LabelME.h ../Nws/BaseME.h ../Nws/LineME.h ../Nws/SubME.h \ + ../common/common.h ../common/cmalloc.h ../common/bitmaps/pw.xpm \ + ../xcommon/xcommon.h ../xcommon/xfonts.h ../xcommon/../config.h \ + ../xcommon/../common/richchar.h ../xcommon/embed.h \ + ../xcommon/Ruler.h ../xcommon/Richtext.h ../xcommon/Combo.h \ + ../xcommon/Frame.h ../xcommon/Tabbing.h ../xcommon/Rudegrid.h \ + ../xcommon/DragAndDrop.h ../xcommon/DragAndDropTypes.h \ + ../xcommon/plugin.h ../xcommon/../common/plugin.h \ + ../xcommon/icon.h ../xcommon/Tooltip.h ../xcommon/Handle.h \ + ../xcommon/../XawM/Label.h ../xcommon/dialogs.h ../pw/pw.h \ + ../pw/../common/richchar.h ../pw/../common/fonts.h \ + ../pw/../common/traceme.h ../pw/user_interface.h xpw.h \ + ../siod/siod.h ../xcommon/xcommon-ad.h ../xcommon/dialogs-ad.h \ + ../xcommon/filesel-ad.h ../xcommon/nws-ad.h app-defaults.h + xpw.o: xpw.c ../siod/siod.h ../pw/pw.h ../pw/../common/richchar.h \ + ../pw/../common/fonts.h ../pw/../common/traceme.h \ + ../pw/user_interface.h ../common/cmalloc.h ../common/common.h \ + ../xcommon/xfonts.h ../xcommon/../config.h \ + ../xcommon/../common/richchar.h ../xcommon/dialogs.h \ + ../xcommon/embed.h ../xcommon/plugin.h \ + ../xcommon/../common/plugin.h ../xcommon/filesel.h \ + ../xcommon/xcommon.h xpw.h + info-am: info: info-am dvi-am: diff -crNP ../siag-3.3.3/xpw/Pw.ad ./xpw/Pw.ad *** ../siag-3.3.3/xpw/Pw.ad Mon Mar 27 09:33:35 2000 --- ./xpw/Pw.ad Thu Apr 27 08:47:42 2000 *************** *** 8,14 **** ! Settings for individual widgets Pw*topbox.xLayout: 100% ! Pw*topbox.yLayout: 30 30 30 30 100% 30 Pw*topbox*List*background: white --- 8,14 ---- ! Settings for individual widgets Pw*topbox.xLayout: 100% ! Pw*topbox.yLayout: 30 30 30 100% 30 Pw*topbox*List*background: white *************** *** 50,85 **** Pw*formatbox.orientation: horizontal Pw*formatbox.borderWidth: 0 ! Pw*textbox.borderWidth: 0 ! Pw*textbox.gridy: 3 ! Pw*textbox.xLayout: 4 100% 4 ! Pw*textbox.yLayout: 4 100% 4 ! ! Pw*label1.gridx: 1 ! Pw*label1.gridy: 1 Pw*gridpane.borderWidth: 0 ! Pw*gridpane.gridy: 4 Pw*statusbox.borderWidth: 0 ! Pw*statusbox.gridy: 5 ! Pw*statusbox.xLayout: 4 100% 4 100 4 Pw*statusbox.yLayout: 4 100% 4 Pw*label2.shadowWidth: 1 Pw*label2.gridx: 1 Pw*label2.gridy: 1 Pw*label3.shadowWidth: 1 ! Pw*label3.gridx: 3 Pw*label3.gridy: 1 Pw*viewport.xLayout: 25 25 50% 50% 15 Pw*viewport.yLayout: 20 100% 15 ! Pw*ruler.gridWidth: 4 ! !Pw*ruler.shadowWidth: 1 ! !Pw*ruler.shadowType: Solid ! Pw*ruler.borderWidth: 1 Pw*grid.gridy: 1 Pw*grid.gridWidth: 4 --- 50,83 ---- Pw*formatbox.orientation: horizontal Pw*formatbox.borderWidth: 0 ! !Pw*textbox.borderWidth: 0 ! !Pw*textbox.gridy: 3 ! !Pw*textbox.xLayout: 4 100% 4 ! !Pw*textbox.yLayout: 4 100% 4 Pw*gridpane.borderWidth: 0 ! Pw*gridpane.gridy: 3 Pw*statusbox.borderWidth: 0 ! Pw*statusbox.gridy: 4 ! Pw*statusbox.xLayout: 4 100% 4 150 4 100 4 Pw*statusbox.yLayout: 4 100% 4 + Pw*label1.shadowWidth: 1 + Pw*label1.gridx: 3 + Pw*label1.gridy: 1 Pw*label2.shadowWidth: 1 Pw*label2.gridx: 1 Pw*label2.gridy: 1 Pw*label3.shadowWidth: 1 ! Pw*label3.gridx: 5 Pw*label3.gridy: 1 Pw*viewport.xLayout: 25 25 50% 50% 15 Pw*viewport.yLayout: 20 100% 15 ! Pw*ruler.gridWidth: 4 ! Pw*ruler.borderWidth: 0 Pw*grid.gridy: 1 Pw*grid.gridWidth: 4 *************** *** 124,130 **** : siag-highlight(1 1)\n\ : siag-unhighlight(0 1) ! Pw*grid.translations:\ :: grid-button(point) \n\ :: grid-button(adjust) \n\ :: grid-button(paste) \n\ --- 122,128 ---- : siag-highlight(1 1)\n\ : siag-unhighlight(0 1) ! Pw*grid.translations: #override \n\ :: grid-button(point) \n\ :: grid-button(adjust) \n\ :: grid-button(paste) \n\ *************** *** 185,192 **** c: self-insert-char() \n\ :F4: execute(more complicated test) \n\ :a: self-insert-char() \n\ ! :A: self-insert-char() \n\ ! : self-insert-char() Pw*plugin-parent.translations:\ : plugin-resize() \n\ --- 183,191 ---- c: self-insert-char() \n\ :F4: execute(more complicated test) \n\ :a: self-insert-char() \n\ ! :A: self-insert-char() ! ! ! : self-insert-char() Pw*plugin-parent.translations:\ : plugin-resize() \n\ diff -crNP ../siag-3.3.3/xpw/app-defaults.h ./xpw/app-defaults.h *** ../siag-3.3.3/xpw/app-defaults.h Mon Mar 27 09:33:37 2000 --- ./xpw/app-defaults.h Thu Apr 27 08:47:44 2000 *************** *** 1,7 **** "Pw.geometry: 600x400", "Pw*combo_viewport.allowHoriz: False", "Pw*topbox.xLayout: 100%", ! "Pw*topbox.yLayout: 30 30 30 30 100% 30", "Pw*topbox*List*background: white", "Pw*textframe.topShadowContrast: -40", "Pw*textframe.bottomShadowContrast: -20", --- 1,7 ---- "Pw.geometry: 600x400", "Pw*combo_viewport.allowHoriz: False", "Pw*topbox.xLayout: 100%", ! "Pw*topbox.yLayout: 30 30 30 100% 30", "Pw*topbox*List*background: white", "Pw*textframe.topShadowContrast: -40", "Pw*textframe.bottomShadowContrast: -20", *************** *** 36,63 **** "Pw*formatbox.Command.shadowWidth: 0", "Pw*formatbox.orientation: horizontal", "Pw*formatbox.borderWidth: 0", - "Pw*textbox.borderWidth: 0", - "Pw*textbox.gridy: 3", - "Pw*textbox.xLayout: 4 100% 4", - "Pw*textbox.yLayout: 4 100% 4", - "Pw*label1.gridx: 1", - "Pw*label1.gridy: 1", "Pw*gridpane.borderWidth: 0", ! "Pw*gridpane.gridy: 4", "Pw*statusbox.borderWidth: 0", ! "Pw*statusbox.gridy: 5", ! "Pw*statusbox.xLayout: 4 100% 4 100 4", "Pw*statusbox.yLayout: 4 100% 4", "Pw*label2.shadowWidth: 1", "Pw*label2.gridx: 1", "Pw*label2.gridy: 1", "Pw*label3.shadowWidth: 1", ! "Pw*label3.gridx: 3", "Pw*label3.gridy: 1", "Pw*viewport.xLayout: 25 25 50% 50% 15", "Pw*viewport.yLayout: 20 100% 15", ! "Pw*ruler.gridWidth: 4", ! "Pw*ruler.borderWidth: 1", "Pw*grid.gridy: 1", "Pw*grid.gridWidth: 4", "Pw*grid.background: white", --- 36,60 ---- "Pw*formatbox.Command.shadowWidth: 0", "Pw*formatbox.orientation: horizontal", "Pw*formatbox.borderWidth: 0", "Pw*gridpane.borderWidth: 0", ! "Pw*gridpane.gridy: 3", "Pw*statusbox.borderWidth: 0", ! "Pw*statusbox.gridy: 4", ! "Pw*statusbox.xLayout: 4 100% 4 150 4 100 4", "Pw*statusbox.yLayout: 4 100% 4", + "Pw*label1.shadowWidth: 1", + "Pw*label1.gridx: 3", + "Pw*label1.gridy: 1", "Pw*label2.shadowWidth: 1", "Pw*label2.gridx: 1", "Pw*label2.gridy: 1", "Pw*label3.shadowWidth: 1", ! "Pw*label3.gridx: 5", "Pw*label3.gridy: 1", "Pw*viewport.xLayout: 25 25 50% 50% 15", "Pw*viewport.yLayout: 20 100% 15", ! "Pw*ruler.gridWidth: 4", ! "Pw*ruler.borderWidth: 0", "Pw*grid.gridy: 1", "Pw*grid.gridWidth: 4", "Pw*grid.background: white", *************** *** 90,96 **** "Pw*toolbar_toggle.translations: #override \\n\ : siag-highlight(1 1)\\n\ : siag-unhighlight(0 1)", ! "Pw*grid.translations:\ :: grid-button(point) \\n\ :: grid-button(adjust) \\n\ :: grid-button(paste) \\n\ --- 87,93 ---- "Pw*toolbar_toggle.translations: #override \\n\ : siag-highlight(1 1)\\n\ : siag-unhighlight(0 1)", ! "Pw*grid.translations: #override \\n\ :: grid-button(point) \\n\ :: grid-button(adjust) \\n\ :: grid-button(paste) \\n\ *************** *** 151,158 **** c: self-insert-char() \\n\ :F4: execute(more complicated test) \\n\ :a: self-insert-char() \\n\ ! :A: self-insert-char() \\n\ ! : self-insert-char()", "Pw*plugin-parent.translations:\ : plugin-resize() \\n\ :: plugin-cursor()", --- 148,154 ---- c: self-insert-char() \\n\ :F4: execute(more complicated test) \\n\ :a: self-insert-char() \\n\ ! :A: self-insert-char()", "Pw*plugin-parent.translations:\ : plugin-resize() \\n\ :: plugin-cursor()", diff -crNP ../siag-3.3.3/xpw/window.c ./xpw/window.c *** ../siag-3.3.3/xpw/window.c Thu Mar 30 00:20:52 2000 --- ./xpw/window.c Fri Apr 28 13:46:15 2000 *************** *** 111,116 **** --- 111,118 ---- Widget cmdVTop, cmdVBottom; static Widget shortcuts, tooltip; + float zoom = 1.0; + static int bars = 0; XIM xim; *************** *** 214,222 **** sprintf(b, "[%d,%d - %d,%d]", st[s].blku.row, st[s].blku.col, st[s].blkl.row, st[s].blkl.col); ! sprintf(b3, "PW %d/%d", st[s].point_pos.row, ! st[s].point_pos.col); label_set(label1, b); label_set(label3, b3); } --- 216,225 ---- sprintf(b, "[%d,%d - %d,%d]", st[s].blku.row, st[s].blku.col, st[s].blkl.row, st[s].blkl.col); ! sprintf(b3, "PW %d/%d %.0f%%", st[s].point_pos.row, ! st[s].point_pos.col, ! 100*zoom); label_set(label1, b); label_set(label3, b3); } *************** *** 366,378 **** } /* --- - This will be the Redisplay function in the RichtextWidget */ void draw_buffer(Display *display, window *w) { int s = w->sht; sheet *st = w->buf->sht; XtVaSetValues(w->ui->grid, XtNrichtextData, w, XtNrichtextTopRow, st[s].top.row, --- 369,382 ---- } /* --- */ void draw_buffer(Display *display, window *w) { int s = w->sht; sheet *st = w->buf->sht; + RichtextSetZoom(w->ui->grid, zoom); + RulerSetZoom(w->ui->ruler, zoom); XtVaSetValues(w->ui->grid, XtNrichtextData, w, XtNrichtextTopRow, st[s].top.row, *************** *** 558,565 **** int s; sheet *st; ! x = event->xbutton.x; ! y = event->xbutton.y; hide_cur(w_list); activate_window(find_window_by_widget(w)); s = w_list->sht; --- 562,569 ---- int s; sheet *st; ! x = event->xbutton.x/zoom; ! y = event->xbutton.y/zoom; hide_cur(w_list); activate_window(find_window_by_widget(w)); s = w_list->sht; *************** *** 618,665 **** show_cur(w_list); } - /* --- - */ - void SelfInsertCharAction(Widget w, XEvent *event, String *params, Cardinal *n) - { - int count, bufsiz = 10; - unsigned char buf[12]; - KeySym keysym; - - hide_cur(w_list); - count = RichtextLookupString(w, event, buf, bufsiz, &keysym); - if (keysym >= ' ' && count == 1) { - int s = w_list->sht; - sheet *st = w_list->buf->sht; - buf[count] = '\0'; - ins_text(w_list->buf, s, - st[s].point_pos, buf, w_list->current_fmt); - rebreak_line(w_list->buf, s, - st[s].point_pos.row); - st[s].point_pos.col += count; - /* point position may now be hosed */ - if (st[s].point_pos.col > - line_length(w_list->buf, s, - st[s].point_pos.row)) { - st[s].point_pos.col -= - line_length(w_list->buf, s, - st[s].point_pos.row); - st[s].point_pos.col -= 1; /* we deleted a space too */ - st[s].point_pos.row++; - } - /* and if that didn't help... */ - if (st[s].point_pos.col > - line_length(w_list->buf, s, - st[s].point_pos.row)) { - st[s].point_pos.col = - line_length(w_list->buf, s, - st[s].point_pos.row); - } - pr_line_flag = TRUE; - } - show_cur(w_list); - } - static LISP ltooltip_mode(LISP newmode) { int mode = get_c_long(newmode); --- 622,627 ---- *************** *** 712,718 **** */ window *new_window(buffer *b, window *prev) { - Dimension totalwidth, formheight, w1, h1; window *w; int s; sheet *st; --- 674,679 ---- *************** *** 735,763 **** else w->next = prev->next; prev->next = w; - /* Figure out how big the new form should be. */ - /* The total width must be the width of the gridpane. */ - XtVaGetValues(gridpane, - XtNwidth, &totalwidth, (char *)0); - /* The form height is whatever we get, but if it is too small we cannot create the new window. */ - formheight = 100; w->ui->viewport = XtVaCreateManagedWidget("viewport", rudegridWidgetClass, gridpane, - XtNwidth, totalwidth, (char *)0); - XtVaGetValues(w->ui->viewport, - XtNheight, &formheight, (char *)0); - - w1 = totalwidth-20; - h1 = 20; w->ui->ruler = XtVaCreateManagedWidget("ruler", rulerWidgetClass, w->ui->viewport/*rulerframe*/, (char *)0); - h1 = formheight-height_get(w->ui->ruler)-20; s = w->sht; st = w->buf->sht; w->ui->grid = XtVaCreateManagedWidget("grid", --- 696,711 ---- *************** *** 781,791 **** XtNrichtextPluginCoords, tplugin_coordinates, (char *)0); XDefineCursor(display, XtWindow(w->ui->grid), grid_cursor); - h1 = height_get(w->ui->ruler)+height_get(w->ui->grid); w->ui->vscroll = XtVaCreateManagedWidget("vscroll", scrollbarWidgetClass, w->ui->viewport, (char *)0); - w1 = width_get(w->ui->grid); w->ui->hscroll = XtVaCreateManagedWidget("hscroll", scrollbarWidgetClass, w->ui->viewport, (char *)0); --- 729,737 ---- *************** *** 815,823 **** XtAddCallback(w->ui->hscroll, XtNjumpProc, hscroll_jump, NULL); XtAddCallback(w->ui->hscroll, XtNscrollProc, hscroll_scroll, NULL); - XtVaGetValues(w->ui->viewport, - XtNheight, &formheight, (char *)0); - return w; } --- 761,766 ---- *************** *** 944,950 **** static void remake_ylayout(void) { char b[100]; ! sprintf(b, "%s %s %s 30 100%% 30", (bars&MENUBAR) ? "30" : "0", (bars&TOOLBAR) ? "30" : "0", (bars&FORMATBAR) ? "30" : "0"); --- 887,893 ---- static void remake_ylayout(void) { char b[100]; ! sprintf(b, "%s %s %s 100%% 30", (bars&MENUBAR) ? "30" : "0", (bars&TOOLBAR) ? "30" : "0", (bars&FORMATBAR) ? "30" : "0"); *************** *** 1431,1437 **** static XtActionsRec actions[] = { {"grid-button", GridButtonAction}, - {"self-insert-char", SelfInsertCharAction}, {"siaghelp", siaghelp_action}, {"place-shortcuts", place_shortcuts}, {"popup-shortcuts", popup_shortcuts}, --- 1374,1379 ---- *************** *** 1477,1489 **** setup_buttons(); init_toggle(); - textbox = XtVaCreateManagedWidget("textbox", - rudegridWidgetClass, topbox, - (char *)0); - label1 = XtVaCreateManagedWidget("label1", - labelWidgetClass, textbox, - (char *)0); - gridpane = XtVaCreateManagedWidget("gridpane", panedWidgetClass, topbox, XtNallowResize, True, --- 1419,1424 ---- *************** *** 1492,1497 **** --- 1427,1435 ---- statusbox = XtVaCreateManagedWidget("statusbox", rudegridWidgetClass, topbox, (char *)0); + label1 = XtVaCreateManagedWidget("label1", + labelWidgetClass, statusbox, + (char *)0); label2 = XtVaCreateManagedWidget("label2", labelWidgetClass, statusbox, (char *)0); diff -crNP ../siag-3.3.3/xsiag/window.c ./xsiag/window.c *** ../siag-3.3.3/xsiag/window.c Thu Apr 6 14:53:41 2000 --- ./xsiag/window.c Fri Apr 28 10:57:16 2000 *************** *** 189,194 **** --- 189,196 ---- static Widget cmdBorders, cmdGrid, cmdUline, cmdNone; static Widget shortcuts, tooltip; + float zoom = 1.0; + static int bars = 0; static int status; *************** *** 334,339 **** --- 336,342 ---- static void draw_colnums(window *w) { if (w->ui->colnum != None) { + TableSetZoom(w->ui->colnum, zoom); XtVaSetValues(w->ui->colnum, XtNtableProtCol, get_prot(w).col, XtNtableTopCol, get_top(w).col, *************** *** 346,351 **** --- 349,355 ---- static void draw_rownums(window *w) { if (w->ui->rownum != None) { + TableSetZoom(w->ui->rownum, zoom); XtVaSetValues(w->ui->rownum, XtNtableProtRow, get_prot(w).row, XtNtableTopRow, get_top(w).row, *************** *** 439,444 **** --- 443,449 ---- /* this is more verbose than necessary, but I want to set every resource there is just to see if they work ;-) */ + TableSetZoom(w->ui->grid, zoom); XtVaSetValues(w->ui->grid, XtNtableMaxRow, BUFFER_ROWS, XtNtableMaxCol, BUFFER_COLS, *************** *** 452,459 **** XtNtableSelectRightCol, blkl.col, XtNtablePointRow, point.row, XtNtablePointCol, point.col, - XtNtableRowHeight, tcell_height, - XtNtableColWidth, tcell_width, XtNtableType, cell_type, XtNtableText, cell_text, XtNtableFormat, cell_format, --- 457,462 ---- *************** *** 2254,2259 **** --- 2257,2264 ---- tableWidgetClass, topLevel, XtNtableData, w, XtNtablePluginCoords, plugin_coordinates, + XtNtableRowHeight, tcell_height, + XtNtableColWidth, tcell_width, (char *)NULL); XtAddEventHandler(w->ui->grid, PointerMotionMask, False, grid_cursor, NULL); *************** *** 2325,2330 **** --- 2330,2337 ---- tableWidgetClass, w->ui->viewport, XtNtableData, w, XtNtablePluginCoords, plugin_coordinates, + XtNtableRowHeight, tcell_height, + XtNtableColWidth, tcell_width, (char *)NULL); XtAddEventHandler(w->ui->grid, PointerMotionMask, False, grid_cursor, NULL);