public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 04/26] kconfig: Add print_title helper in lxdialog
Date: Tue, 3 Jan 2006 14:25:25 +0100	[thread overview]
Message-ID: <11362947251067@foobar.com> (raw)
In-Reply-To: <20060103132035.GA17485@mars.ravnborg.org>

From: Sam Ravnborg <sam@mars.ravnborg.org>
Date: 1132439886 +0100

Simplify check for long title and use a helper function in util.c

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

---

 scripts/lxdialog/checklist.c |   15 +--------------
 scripts/lxdialog/dialog.h    |    1 +
 scripts/lxdialog/inputbox.c  |   15 +--------------
 scripts/lxdialog/menubox.c   |   15 +--------------
 scripts/lxdialog/msgbox.c    |   14 +-------------
 scripts/lxdialog/textbox.c   |   14 +-------------
 scripts/lxdialog/util.c      |   14 ++++++++++++++
 scripts/lxdialog/yesno.c     |   15 +--------------
 8 files changed, 21 insertions(+), 82 deletions(-)

fa7009d5b59b8acd8071f7b3057d36eeeaf08146
diff --git a/scripts/lxdialog/checklist.c b/scripts/lxdialog/checklist.c
index ae40a2b..3fb681f 100644
--- a/scripts/lxdialog/checklist.c
+++ b/scripts/lxdialog/checklist.c
@@ -158,20 +158,7 @@ int dialog_checklist(const char *title, 
 	wattrset(dialog, dialog_attr);
 	waddch(dialog, ACS_RTEE);
 
-	if (title != NULL && strlen(title) >= width - 2) {
-		/* truncate long title -- mec */
-		char *title2 = malloc(width - 2 + 1);
-		memcpy(title2, title, width - 2);
-		title2[width - 2] = '\0';
-		title = title2;
-	}
-
-	if (title != NULL) {
-		wattrset(dialog, title_attr);
-		mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
-		waddstr(dialog, (char *)title);
-		waddch(dialog, ' ');
-	}
+	print_title(dialog, title, width);
 
 	wattrset(dialog, dialog_attr);
 	print_autowrap(dialog, prompt, width - 2, 1, 3);
diff --git a/scripts/lxdialog/dialog.h b/scripts/lxdialog/dialog.h
index 3cf3d35..f882204 100644
--- a/scripts/lxdialog/dialog.h
+++ b/scripts/lxdialog/dialog.h
@@ -145,6 +145,7 @@ void dialog_clear(void);
 void color_setup(void);
 void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
 void print_button(WINDOW * win, const char *label, int y, int x, int selected);
+void print_title(WINDOW *dialog, const char *title, int width);
 void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
 	      chtype border);
 void draw_shadow(WINDOW * win, int y, int x, int height, int width);
diff --git a/scripts/lxdialog/inputbox.c b/scripts/lxdialog/inputbox.c
index bc135c7..7795037 100644
--- a/scripts/lxdialog/inputbox.c
+++ b/scripts/lxdialog/inputbox.c
@@ -66,20 +66,7 @@ int dialog_inputbox(const char *title, c
 	wattrset(dialog, dialog_attr);
 	waddch(dialog, ACS_RTEE);
 
-	if (title != NULL && strlen(title) >= width - 2) {
-		/* truncate long title -- mec */
-		char *title2 = malloc(width - 2 + 1);
-		memcpy(title2, title, width - 2);
-		title2[width - 2] = '\0';
-		title = title2;
-	}
-
-	if (title != NULL) {
-		wattrset(dialog, title_attr);
-		mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
-		waddstr(dialog, (char *)title);
-		waddch(dialog, ' ');
-	}
+	print_title(dialog, title, width);
 
 	wattrset(dialog, dialog_attr);
 	print_autowrap(dialog, prompt, width - 2, 1, 3);
diff --git a/scripts/lxdialog/menubox.c b/scripts/lxdialog/menubox.c
index ff3a617..ebfe6a3 100644
--- a/scripts/lxdialog/menubox.c
+++ b/scripts/lxdialog/menubox.c
@@ -189,20 +189,7 @@ int dialog_menu(const char *title, const
 	wbkgdset(dialog, dialog_attr & A_COLOR);
 	waddch(dialog, ACS_RTEE);
 
-	if (title != NULL && strlen(title) >= width - 2) {
-		/* truncate long title -- mec */
-		char *title2 = malloc(width - 2 + 1);
-		memcpy(title2, title, width - 2);
-		title2[width - 2] = '\0';
-		title = title2;
-	}
-
-	if (title != NULL) {
-		wattrset(dialog, title_attr);
-		mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
-		waddstr(dialog, (char *)title);
-		waddch(dialog, ' ');
-	}
+	print_title(dialog, title, width);
 
 	wattrset(dialog, dialog_attr);
 	print_autowrap(dialog, prompt, width - 2, 1, 3);
diff --git a/scripts/lxdialog/msgbox.c b/scripts/lxdialog/msgbox.c
index b394057..7323f54 100644
--- a/scripts/lxdialog/msgbox.c
+++ b/scripts/lxdialog/msgbox.c
@@ -42,20 +42,8 @@ int dialog_msgbox(const char *title, con
 
 	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 
-	if (title != NULL && strlen(title) >= width - 2) {
-		/* truncate long title -- mec */
-		char *title2 = malloc(width - 2 + 1);
-		memcpy(title2, title, width - 2);
-		title2[width - 2] = '\0';
-		title = title2;
-	}
+	print_title(dialog, title, width);
 
-	if (title != NULL) {
-		wattrset(dialog, title_attr);
-		mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
-		waddstr(dialog, (char *)title);
-		waddch(dialog, ' ');
-	}
 	wattrset(dialog, dialog_attr);
 	print_autowrap(dialog, prompt, width - 2, 1, 2);
 
diff --git a/scripts/lxdialog/textbox.c b/scripts/lxdialog/textbox.c
index fa8d92e..77848bb 100644
--- a/scripts/lxdialog/textbox.c
+++ b/scripts/lxdialog/textbox.c
@@ -103,20 +103,8 @@ int dialog_textbox(const char *title, co
 	wbkgdset(dialog, dialog_attr & A_COLOR);
 	waddch(dialog, ACS_RTEE);
 
-	if (title != NULL && strlen(title) >= width - 2) {
-		/* truncate long title -- mec */
-		char *title2 = malloc(width - 2 + 1);
-		memcpy(title2, title, width - 2);
-		title2[width - 2] = '\0';
-		title = title2;
-	}
+	print_title(dialog, title, width);
 
-	if (title != NULL) {
-		wattrset(dialog, title_attr);
-		mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
-		waddstr(dialog, (char *)title);
-		waddch(dialog, ' ');
-	}
 	print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
 	wnoutrefresh(dialog);
 	getyx(dialog, cur_y, cur_x);	/* Save cursor position */
diff --git a/scripts/lxdialog/util.c b/scripts/lxdialog/util.c
index ce41147..f82cebb 100644
--- a/scripts/lxdialog/util.c
+++ b/scripts/lxdialog/util.c
@@ -177,6 +177,20 @@ void end_dialog(void)
 	endwin();
 }
 
+/* Print the title of the dialog. Center the title and truncate
+ * tile if wider than dialog (- 2 chars).
+ **/
+void print_title(WINDOW *dialog, const char *title, int width)
+{
+	if (title) {
+		int tlen = MIN(width - 2, strlen(title));
+		wattrset(dialog, title_attr);
+		mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
+		mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
+		waddch(dialog, ' ');
+	}
+}
+
 /*
  * Print a string of text in a window, automatically wrap around to the
  * next line if the string is too long to fit on one line. Newline
diff --git a/scripts/lxdialog/yesno.c b/scripts/lxdialog/yesno.c
index 84f3e8e..cb2568a 100644
--- a/scripts/lxdialog/yesno.c
+++ b/scripts/lxdialog/yesno.c
@@ -61,20 +61,7 @@ int dialog_yesno(const char *title, cons
 	wattrset(dialog, dialog_attr);
 	waddch(dialog, ACS_RTEE);
 
-	if (title != NULL && strlen(title) >= width - 2) {
-		/* truncate long title -- mec */
-		char *title2 = malloc(width - 2 + 1);
-		memcpy(title2, title, width - 2);
-		title2[width - 2] = '\0';
-		title = title2;
-	}
-
-	if (title != NULL) {
-		wattrset(dialog, title_attr);
-		mvwaddch(dialog, 0, (width - strlen(title)) / 2 - 1, ' ');
-		waddstr(dialog, (char *)title);
-		waddch(dialog, ' ');
-	}
+	print_title(dialog, title, width);
 
 	wattrset(dialog, dialog_attr);
 	print_autowrap(dialog, prompt, width - 2, 1, 3);
-- 
1.0.6


  parent reply	other threads:[~2006-01-03 13:33 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-03 13:20 [PATCH] kbuild + kconfig updates for 2.6.16-rc Sam Ravnborg
2006-01-03 13:25 ` [PATCH 13/26] kbuild: Fix crc-error warning on modules Sam Ravnborg
2006-01-03 13:25 ` [PATCH 08/26] kconfig: truncate too long menu lines in menuconfig Sam Ravnborg
2006-01-03 13:25 ` [PATCH 09/26] kconfig: move lxdialog to scripts/kconfig/lxdialog Sam Ravnborg
2006-01-03 13:25 ` [PATCH 06/26] kconfig: Fix indention when using menuconfig in text-onle consoles Sam Ravnborg
2006-01-03 13:25 ` [PATCH 02/26] kconfig: fixup after Lindent Sam Ravnborg
2006-01-03 13:25 ` [PATCH 11/26] kbuild: patch to Documentation/kbuild/modules.txt Sam Ravnborg
2006-01-03 13:25 ` Sam Ravnborg [this message]
2006-01-03 13:25 ` [PATCH 12/26] kbuild: document INSTALL_MOD_PATH in 'make help' Sam Ravnborg
2006-01-03 13:25 ` [PATCH 14/26] kbuild: Add ctags support for function prototypes and external variable declarations Sam Ravnborg
2006-01-03 13:25 ` [PATCH 03/26] kconfig: lxdialog is now sparse clean Sam Ravnborg
2006-01-03 13:25 ` [PATCH 07/26] kconfig: make lxdialog/menubox.c more readable Sam Ravnborg
2006-01-03 13:25 ` [PATCH 10/26] kbuild: remove the deprecated check_gcc Sam Ravnborg
2006-01-03 13:25 ` [PATCH 05/26] kconfig: Left aling menu items in menuconfig Sam Ravnborg
2006-01-03 13:25 ` [PATCH 20/26] kbuild: tags file generation fixup Sam Ravnborg
2006-01-03 13:25 ` [PATCH 26/26] gitignore: ignore more generated files Sam Ravnborg
2006-01-03 13:25 ` [PATCH 17/26] kbuild: Fix genksyms handling of DEFINE_PER_CPU(struct foo_s *, bar); Sam Ravnborg
2006-01-03 14:46   ` Jan Engelhardt
2006-01-03 14:49     ` Sam Ravnborg
2006-01-03 14:51       ` Jan Engelhardt
2006-01-04 19:01   ` Robin Holt
2006-01-04 19:19     ` Sam Ravnborg
2006-01-03 13:25 ` [PATCH 15/26] kbuild: escape '#' in .target.cmd files Sam Ravnborg
2006-01-03 13:25 ` [PATCH 23/26] gitignore: x86_64 files Sam Ravnborg
2006-01-03 16:39   ` Andi Kleen
2006-01-03 17:15     ` Sam Ravnborg
2006-01-03 17:26       ` Andi Kleen
2006-01-03 17:42         ` Olaf Hering
2006-01-03 19:24         ` Sam Ravnborg
2006-01-03 19:14     ` Brian Gerst
2006-01-03 13:25 ` [PATCH 24/26] gitignore: misc files Sam Ravnborg
2006-01-03 13:25 ` [PATCH 25/26] kconfig: Remove support for lxdialog --checklist Sam Ravnborg
2006-01-03 13:25 ` [PATCH 21/26] kbuild: always run 'make silentoldconfig' when tree is cleaned Sam Ravnborg
2006-01-03 13:25 ` [PATCH 19/26] kbuild: remove EXPERIMENTAL tag from Module versioning Sam Ravnborg
2006-01-03 13:25 ` [PATCH 22/26] gitignore: asm-offsets.h Sam Ravnborg
2006-01-03 13:25 ` [PATCH 16/26] kbuild: set correct KBUILD_MODNAME when using well known kernel symbols as module names Sam Ravnborg
2006-01-03 15:02 ` [PATCH] kbuild + kconfig updates for 2.6.16-rc Sam Ravnborg
2006-01-03 15:05   ` [PATCH 1/1] kbuild: tar-pkg with out-out-tree building Sam Ravnborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11362947251067@foobar.com \
    --to=sam@ravnborg.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox