aboutsummaryrefslogtreecommitdiff
path: root/ext2ed/win.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2002-05-11 13:00:22 -0400
committerTheodore Ts'o <tytso@mit.edu>2002-05-11 13:00:22 -0400
commit583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9 (patch)
tree24d0abe0bbd63441e8b50564e459761bf9c737cd /ext2ed/win.c
parent7de6577cd93041742fad3da0046978793ebb978f (diff)
downloade2fsprogs-583a1ce5d1b225a6b01fc2b30a3bcb21fd0d48c9.tar.gz
Check in ext2ed version 0.1
Diffstat (limited to 'ext2ed/win.c')
-rw-r--r--ext2ed/win.c169
1 files changed, 169 insertions, 0 deletions
diff --git a/ext2ed/win.c b/ext2ed/win.c
new file mode 100644
index 00000000..09ee22dd
--- /dev/null
+++ b/ext2ed/win.c
@@ -0,0 +1,169 @@
+/*
+
+/usr/src/ext2ed/win.c
+
+A part of the extended file system 2 disk editor.
+
+--------------------------------------------------------
+Window management - Interfacing with the ncurses library
+--------------------------------------------------------
+
+First written on: April 17 1995
+
+Copyright (C) 1995 Gadi Oxman
+
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ext2ed.h"
+
+struct struct_pad_info show_pad_info;
+WINDOW *title_win,*show_win,*command_win,*show_pad;
+
+void init_windows (void)
+
+{
+ char title_string [80];
+
+ initscr ();
+
+ if (LINES<TITLE_WIN_LINES+SHOW_WIN_LINES+COMMAND_WIN_LINES+3) {
+ printf ("Sorry, your terminal screen is too small\n");
+ printf ("Error - Can not initialize windows\n");
+ exit (1);
+ }
+
+ title_win=newwin (TITLE_WIN_LINES,COLS,0,0);
+ show_win=newwin (SHOW_WIN_LINES,COLS,TITLE_WIN_LINES,0);
+ show_pad=newpad (SHOW_PAD_LINES,SHOW_PAD_COLS);
+ command_win=newwin (COMMAND_WIN_LINES,COLS,LINES-COMMAND_WIN_LINES,0);
+
+ if (title_win==NULL || show_win==NULL || show_pad==NULL || command_win==NULL) {
+ printf ("Error - Not enough memory - Can not initialize windows\n");exit (1);
+ }
+
+ box (title_win,0,0);
+ sprintf (title_string,"EXT2ED - Extended-2 File System editor ver %d.%d (%s)",version_major,version_minor,revision_date);
+ wmove (title_win,TITLE_WIN_LINES/2,(COLS-strlen (title_string))/2);
+ wprintw (title_win,title_string);
+
+#ifdef OLD_NCURSES
+ wattrset (show_win,A_NORMAL);werase (show_win);
+#else
+ wbkgdset (show_win,A_REVERSE);werase (show_win);
+#endif
+ show_pad_info.line=0;show_pad_info.col=0;
+ show_pad_info.display_lines=LINES-TITLE_WIN_LINES-SHOW_WIN_LINES-COMMAND_WIN_LINES-2;
+ show_pad_info.display_cols=COLS;
+ show_pad_info.max_line=show_pad_info.display_lines-1;show_pad_info.max_col=show_pad_info.display_cols-1;
+ show_pad_info.disable_output=0;
+
+ scrollok (command_win,TRUE);
+
+ refresh_title_win ();refresh_show_win ();refresh_show_pad ();refresh_command_win ();
+}
+
+void refresh_title_win (void)
+
+{
+ wrefresh (title_win);
+}
+
+void refresh_show_win (void)
+
+{
+ int current_page,total_pages;
+
+ current_page=show_pad_info.line/show_pad_info.display_lines+1;
+ if (show_pad_info.line%show_pad_info.display_lines)
+ current_page++;
+ total_pages=show_pad_info.max_line/show_pad_info.display_lines+1;
+
+ wmove (show_win,2,COLS-18);
+ wprintw (show_win,"Page %d of %d\n",current_page,total_pages);
+
+ wmove (show_win,2,COLS-18);
+ wrefresh (show_win);
+}
+
+
+void refresh_show_pad (void)
+
+{
+ int left,top,right,bottom,i;
+
+ if (show_pad_info.disable_output)
+ return;
+
+ if (show_pad_info.max_line < show_pad_info.display_lines-1) {
+ for (i=show_pad_info.max_line+1;i<show_pad_info.display_lines;i++) {
+ wmove (show_pad,i,0);wprintw (show_pad,"\n");
+ }
+ }
+ left=0;right=show_pad_info.display_cols-1;
+ top=TITLE_WIN_LINES+SHOW_WIN_LINES+1;bottom=top+show_pad_info.display_lines-1;
+
+ if (show_pad_info.line > show_pad_info.max_line-show_pad_info.display_lines+1)
+ show_pad_info.line=show_pad_info.max_line-show_pad_info.display_lines+1;
+
+ if (show_pad_info.line < 0)
+ show_pad_info.line=0;
+
+#ifdef OLD_NCURSES
+ prefresh (show_pad,show_pad_info.line,show_pad_info.col,top,left,show_pad_info.display_lines-1,show_pad_info.display_cols-1);
+#else
+ prefresh (show_pad,show_pad_info.line,show_pad_info.col,top,left,top+show_pad_info.display_lines-1,left+show_pad_info.display_cols-1);
+#endif
+}
+
+void refresh_command_win (void)
+
+{
+ wrefresh (command_win);
+}
+
+void close_windows (void)
+
+{
+ echo ();
+
+ delwin (title_win);
+ delwin (command_win);
+ delwin (show_win);
+ delwin (show_pad);
+
+ endwin ();
+}
+
+void show_info (void)
+
+{
+ int block_num,block_offset;
+
+ block_num=device_offset/file_system_info.block_size;
+ block_offset=device_offset%file_system_info.block_size;
+
+ wmove (show_win,0,0);
+ wprintw (show_win,"Offset %-3ld in block %ld. ",block_offset,block_num);
+ if (current_type != NULL)
+ wprintw (show_win,"Type: %s\n",current_type->name);
+ else
+ wprintw (show_win,"Type: %s\n","none");
+
+ refresh_show_win ();
+}
+
+
+void redraw_all (void)
+
+{
+ close_windows ();
+ init_windows ();
+
+ wmove (command_win,0,0);
+ mvcur (-1,-1,LINES-COMMAND_WIN_LINES,0);
+
+} \ No newline at end of file