home *** CD-ROM | disk | FTP | other *** search
- // FileDisplay.c
- // 27 Jan 1996 20:38:14
-
- #ifndef BACKUP_INCLUDE
- #include "IncludeAll.c"
- #endif
- #include "Backup.h"
- #include "Backup_Proto.h"
- #include "BackupStrings.h"
-
-
- // aus FileSelect.c
- extern struct TextFont *myFont;
-
- // aus Backup.c
- extern struct Window *aktWindow;
-
-
- struct IBox FileDisplayPos;
- static short FileDisplayLines; // Anzahl Zeilen im FileDisplay
- static short FileDisplayColumns; // Anzahl Spalten im FileDisplay
-
- static unsigned short ShortPathLen; // Länge des gekürzten aktuellen Pfadnamens
-
- static char **FileDisplayLineArray;
-
- static BOOL FileDisplayOpen = FALSE;
-
-
- void SetupFileDisplay(void)
- {
- FileDisplayLines = (FileDisplayPos.Height - 4) / myFont->tf_YSize;
- FileDisplayColumns = (FileDisplayPos.Width - 4) / myFont->tf_XSize;
-
- if (NULL == FileDisplayLineArray)
- {
- FileDisplayLineArray = malloc(FileDisplayLines * sizeof(char *));
- if (FileDisplayLineArray)
- {
- short n;
-
- for (n=0; n<FileDisplayLines; n++)
- {
- FileDisplayLineArray[n] = calloc(FileDisplayColumns + 1, 1);
- if (NULL == FileDisplayLineArray[n])
- {
- alarm(GetString(MSG_OUTOFMEMORY), __FUNC__, "FileDisplayLineArray[n]", FileDisplayColumns + 1);
- myabort(10);
- }
- }
- }
- else
- {
- alarm(GetString(MSG_OUTOFMEMORY), __FUNC__, "FileDisplayLineArray", FileDisplayLines * sizeof(char *));
- myabort(10);
- }
- }
-
- }
-
-
- void OpenFileDisplay(void)
- {
- if (aktWindow)
- {
- char hilf[90];
-
- CDOpen(aktWindow);
-
- FileDisplayOpen = TRUE;
-
- CDPutStr(CSI "0 p"); // Cursor aus
- CDPutStr(CSI "?7l"); // Autowrap aus
-
- sprintf(hilf, CSI "%dy", FileDisplayPos.Top + 2);
- CDPutStr(hilf); // Top Offset
-
- sprintf(hilf, CSI "%dx", FileDisplayPos.Left + 2);
- CDPutStr(hilf); // Left Offset
-
- sprintf(hilf, CSI "%du", FileDisplayColumns );
- CDPutStr(hilf); // Line Length
-
- sprintf(hilf, CSI "%dt", FileDisplayLines);
- CDPutStr(hilf); // Page Length
-
- CDPutStr(CSI "31;42;>2m"); // Text schwarz (1) auf weiß (2)
- }
- }
-
-
- void CloseFileDisplay(void)
- {
- FileDisplayOpen = FALSE;
- }
-
-
- void CleanupFileDisplay(void)
- {
- if (FileDisplayLineArray)
- {
- short n;
-
- for (n=0; n<FileDisplayLines; n++)
- {
- if (FileDisplayLineArray[n])
- {
- free(FileDisplayLineArray[n]);
- FileDisplayLineArray[n] = NULL;
- }
- }
-
- free(FileDisplayLineArray);
- FileDisplayLineArray = NULL;
- }
- }
-
-
- void DisplayNewFile(const char *FileName)
- {
- ClearFileName();
- MaxPutStr(FileName, FileDisplayColumns - ShortPathLen);
- }
-
-
- // Zeichenausgabe mit CDPutStr, max. maxlen Zeichen
- void MaxPutStr(const char *text, size_t maxlen)
- {
- size_t len;
-
- ASSERT_VALID(text);
-
- len = strlen(text);
- if (len <= maxlen)
- {
- if (FileDisplayOpen)
- CDPutStr(text);
-
- strncat(FileDisplayLineArray[FileDisplayLines-1], text,
- FileDisplayColumns - strlen(FileDisplayLineArray[FileDisplayLines-1]));
- }
- else
- {
- if (FileDisplayOpen)
- {
- CDPutStrLength(text, maxlen);
- CDPutStr("»");
- }
-
- strncat(FileDisplayLineArray[FileDisplayLines-1], text,
- FileDisplayColumns - strlen(FileDisplayLineArray[FileDisplayLines-1]) - 1);
- strcat(FileDisplayLineArray[FileDisplayLines-1], "»");
- }
- }
-
-
- // Cursorpositionierung auf (ULINE, ShortPathLen) mit anschließendem ClrEOL
- void ClearFileName(void)
- {
- if (FileDisplayOpen)
- {
- char xtext[18];
-
- sprintf(xtext, "\x9b" "13;%df", ShortPathLen+1);
- CDPutStr(xtext);
- ConsoleClrEol();
- }
-
- FileDisplayLineArray[FileDisplayLines-1][ShortPathLen] = '\0';
- }
-
-
- void FDDisplayNewDir(const char *NewPath)
- {
- const char *NewDirName;
- short n;
- char *lp;
-
- // Letzten Filenamen löschen
- ClearFileName();
-
- if (FileDisplayOpen)
- {
- // Namens-Anzeige scrollen
- ConsoleScrollUp();
- CDPutStr("\r");
- }
-
- // FileDisplayLineArray scrollen, dabei nur die String-Pointer verschieben
- lp = FileDisplayLineArray[0];
- for (n=0; n<FileDisplayLines-1; n++)
- {
- FileDisplayLineArray[n] = FileDisplayLineArray[n+1];
- }
- FileDisplayLineArray[FileDisplayLines-1] = lp;
-
- strcpy(FileDisplayLineArray[FileDisplayLines-1], "");
-
- NewDirName = ShortFileName(NewPath, FileDisplayColumns-15);
- ShortPathLen = strlen(NewDirName);
-
- MaxPutStr(NewDirName, FileDisplayColumns);
- }
-
-
- void RebuildFileDisplay(void)
- {
- if (FileDisplayOpen)
- {
- short n;
-
- for (n=0; n<FileDisplayLines; n++)
- {
- CDPutStr(FileDisplayLineArray[n]);
- if (n < FileDisplayLines - 1)
- CDPutStr("\r\n");
- }
- }
- }
-