changeset 515:180f0a6e4ac9

Log window's height can be set by the user
author Mikael Berthe <mikael@lilotux.net>
date Mon, 14 Nov 2005 15:29:03 +0100
parents 979eb0fe2969
children e5008032edb8
files mcabber/src/screen.c mcabber/src/screen.h
diffstat 2 files changed, 33 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/screen.c	Sun Nov 13 22:46:46 2005 +0100
+++ b/mcabber/src/screen.c	Mon Nov 14 15:29:03 2005 +0100
@@ -42,6 +42,11 @@
 
 #define window_entry(n) list_entry(n, window_entry_t, list)
 
+#define DEFAULT_LOG_WIN_HEIGHT (5+2)
+#define CHAT_WIN_HEIGHT (maxY-1-Log_Win_Height)
+
+static unsigned short int Log_Win_Height;
+
 static inline void check_offset(int);
 
 LIST_HEAD(window_list);
@@ -199,6 +204,7 @@
 
 void scr_InitCurses(void)
 {
+  int requested_lwh;
   initscr();
   raw();
   noecho();
@@ -211,8 +217,26 @@
   ParseColors();
 
   getmaxyx(stdscr, maxY, maxX);
-  if (maxY < LOG_WIN_HEIGHT+2)
-    maxY = LOG_WIN_HEIGHT+2;
+  Log_Win_Height = DEFAULT_LOG_WIN_HEIGHT;
+
+  requested_lwh = settings_opt_get_int("log_win_height");
+  if (requested_lwh > 0) {
+    if (maxY > requested_lwh + 3)
+      Log_Win_Height = requested_lwh + 2;
+    else
+      Log_Win_Height = ((maxY > 5) ? (maxY - 2) : 3);
+  } else if (requested_lwh < 0) {
+    Log_Win_Height = 3;
+  }
+
+  if (maxY < Log_Win_Height+2) {
+    if (maxY < 5) {
+      Log_Win_Height = 3;
+      maxY = Log_Win_Height+2;
+    } else {
+      Log_Win_Height = maxY - 2;
+    }
+  }
   inputLine[0] = 0;
   ptr_inputline = inputLine;
 
@@ -551,8 +575,8 @@
     /* Create windows */
     rosterWnd = newwin(CHAT_WIN_HEIGHT, ROSTER_WIDTH, 0, 0);
     chatWnd   = newwin(CHAT_WIN_HEIGHT, maxX - ROSTER_WIDTH, 0, ROSTER_WIDTH);
-    logWnd_border = newwin(LOG_WIN_HEIGHT, maxX, CHAT_WIN_HEIGHT, 0);
-    logWnd    = newwin(LOG_WIN_HEIGHT-2, maxX-2, CHAT_WIN_HEIGHT+1, 1);
+    logWnd_border = newwin(Log_Win_Height, maxX, CHAT_WIN_HEIGHT, 0);
+    logWnd    = newwin(Log_Win_Height-2, maxX-2, CHAT_WIN_HEIGHT+1, 1);
     inputWnd  = newwin(1, maxX, maxY-1, 0);
     if (!rosterWnd || !chatWnd || !logWnd || !inputWnd) {
       scr_TerminateCurses();
@@ -568,8 +592,8 @@
     wresize(rosterWnd, CHAT_WIN_HEIGHT, ROSTER_WIDTH);
     wresize(chatWnd, CHAT_WIN_HEIGHT, maxX - ROSTER_WIDTH);
 
-    wresize(logWnd_border, LOG_WIN_HEIGHT, maxX);
-    wresize(logWnd, LOG_WIN_HEIGHT-2, maxX-2);
+    wresize(logWnd_border, Log_Win_Height, maxX);
+    wresize(logWnd, Log_Win_Height-2, maxX-2);
     mvwin(logWnd_border, CHAT_WIN_HEIGHT, 0);
     mvwin(logWnd, CHAT_WIN_HEIGHT+1, 1);
 
@@ -584,7 +608,7 @@
   mvwprintw(chatWnd, 0, 0, "This is the status window");
 
   // - Draw/clear the log window
-  scr_draw_box(logWnd_border, 0, 0, LOG_WIN_HEIGHT, maxX, COLOR_GENERAL, 0, 0);
+  scr_draw_box(logWnd_border, 0, 0, Log_Win_Height, maxX, COLOR_GENERAL, 0, 0);
   // Auto-scrolling in log window
   scrollok(logWnd, TRUE);
 
@@ -629,8 +653,8 @@
 
   // First, update the global variables
   getmaxyx(stdscr, maxY, maxX);
-  if (maxY < LOG_WIN_HEIGHT+2)
-    maxY = LOG_WIN_HEIGHT+2;
+  if (maxY < Log_Win_Height+2)
+    maxY = Log_Win_Height+2;
   // Make sure the cursor stays inside the window
   check_offset(0);
 
--- a/mcabber/src/screen.h	Sun Nov 13 22:46:46 2005 +0100
+++ b/mcabber/src/screen.h	Mon Nov 14 15:29:03 2005 +0100
@@ -11,10 +11,8 @@
 #define COLOR_BD_DESSEL 5
 #define COLOR_BD_DES    6
 
-#define LOG_WIN_HEIGHT  (5+2)
 #define ROSTER_WIDTH    24
 #define PREFIX_WIDTH    17
-#define CHAT_WIN_HEIGHT (maxY-1-LOG_WIN_HEIGHT)
 
 #define INPUTLINE_LENGTH  1024