From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 2C20F1381F3 for ; Wed, 11 Sep 2013 06:04:34 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D266CE0C8A; Wed, 11 Sep 2013 06:04:18 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 16052E0C8A for ; Wed, 11 Sep 2013 06:04:12 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id E2A9B33EB22 for ; Wed, 11 Sep 2013 06:04:11 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 7B00EE546E for ; Wed, 11 Sep 2013 06:04:08 +0000 (UTC) From: "Sven Eden" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sven Eden" Message-ID: <1378845815.3e73393774bc02d67915fbb77854ac9489084ee1.yamakuzure@gentoo> Subject: [gentoo-commits] proj/ufed:master commit in: / X-VCS-Repository: proj/ufed X-VCS-Files: ufed-curses-checklist.c ufed-curses.c X-VCS-Directories: / X-VCS-Committer: yamakuzure X-VCS-Committer-Name: Sven Eden X-VCS-Revision: 3e73393774bc02d67915fbb77854ac9489084ee1 X-VCS-Branch: master Date: Wed, 11 Sep 2013 06:04:08 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 58593e82-7ef3-4dad-b7c9-a925fe3365d3 X-Archives-Hash: cd25921e7077ae784b02a27c6cfe8017 commit: 3e73393774bc02d67915fbb77854ac9489084ee1 Author: Sven Eden gmx net> AuthorDate: Tue Sep 10 20:43:35 2013 +0000 Commit: Sven Eden gmx de> CommitDate: Tue Sep 10 20:43:35 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/ufed.git;a=commit;h=3e733937 Changed key help display to show the next state instead of a fixed text. --- ufed-curses-checklist.c | 63 +++++++++++++++++++++++--------------------- ufed-curses.c | 69 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 83 insertions(+), 49 deletions(-) diff --git a/ufed-curses-checklist.c b/ufed-curses-checklist.c index 8a39fac..39f4a8d 100644 --- a/ufed-curses-checklist.c +++ b/ufed-curses-checklist.c @@ -480,9 +480,10 @@ static int callback(sFlag** curr, int key) break; case KEY_F(5): - if (eScope_local == e_scope) e_scope = eScope_all; - else if (eScope_global == e_scope) e_scope = eScope_local; - else e_scope = eScope_global; + if (eScope_local == e_scope) + e_scope = eScope_all; + else + ++e_scope; if ( !isFlagLegal(*curr) && !setNextItem(0, true) @@ -493,9 +494,11 @@ static int callback(sFlag** curr, int key) break; case KEY_F(6): - if (eState_installed == e_state) e_state = eState_notinstalled; - else if (eState_notinstalled == e_state) e_state = eState_all; - else e_state = eState_installed; + if (eState_notinstalled == e_state) + e_state = eState_all; + else + ++e_state; + if ( !isFlagLegal(*curr) && !setNextItem(0, true) @@ -506,9 +509,10 @@ static int callback(sFlag** curr, int key) break; case KEY_F(7): - if (eMask_masked == e_mask) e_mask = eMask_unmasked; - else if (eMask_unmasked == e_mask) e_mask = eMask_both; - else e_mask = eMask_masked; + if (eMask_both == e_mask) + e_mask = eMask_unmasked; + else + ++e_mask; if ( !isFlagLegal(*curr) && !setNextItem(0, true) @@ -520,8 +524,10 @@ static int callback(sFlag** curr, int key) break; case KEY_F(9): - if (eOrder_left == e_order) e_order = eOrder_right; - else e_order = eOrder_left; + if (eOrder_left == e_order) + e_order = eOrder_right; + else + e_order = eOrder_left; drawFlags(); drawBottom(true); @@ -529,8 +535,10 @@ static int callback(sFlag** curr, int key) break; case KEY_F(10): - if (eDesc_ori == e_desc) e_desc = eDesc_alt; - else e_desc = eDesc_ori; + if (eDesc_ori == e_desc) + e_desc = eDesc_alt; + else + e_desc = eDesc_ori; drawFlags(); drawBottom(true); @@ -639,25 +647,20 @@ int main(void) initcurses(); /* The keys to use differ whether ro_mode is true or false */ -#define mkKey(x) x, sizeof(x)-1 sKey keys[] = { - { '?', mkKey("?: Help"), 0 }, - { '\n', mkKey(ro_mode ? - "Enter: Exit" - : "Enter: Save"), 0 }, - { '\033', mkKey(ro_mode ? - "Esc: Exit" - : "Esc: Cancel"), 0 }, - { -1, mkKey("Toggle"), 1 }, - { KEY_F( 5), mkKey("F5: Local/Global"), 1 }, - { KEY_F( 6), mkKey("F6: Installed"), 1 }, - { KEY_F( 7), mkKey("F7: Masked/Forced"), 1 }, - { -1, mkKey(" "), 2 }, - { KEY_F( 9), mkKey("F9: Swap Pkg/Desc"), 2 }, - { KEY_F(10), mkKey("F10: Strip Desc"), 2 }, - { '\0', mkKey(""), 0 } + /* Row 0 - General keys */ + MAKE_KEY('?', "?:", "Help", "", "", NULL, 0), + MAKE_KEY('\n', "Enter:", "Save", "Exit", "", (int*)&ro_mode, 0), + MAKE_KEY('\033', "Esc:", "Cancel", "Exit", "", (int*)&ro_mode, 0), + + /* Row 1 - F-KEy toggles */ + MAKE_KEY(KEY_F( 5), "F5:", "global", "local", "all", (int*)&e_scope, 1), + MAKE_KEY(KEY_F( 6), "F6:", "installed", "not installed", "all", (int*)&e_state, 1), + MAKE_KEY(KEY_F( 7), "F7:", "masked", "all", "unmasked", (int*)&e_mask, 1), + MAKE_KEY(KEY_F( 9), "F9:", "desc left", "desc right", "", (int*)&e_order, 1), + MAKE_KEY(KEY_F(10), "F10:", "stripped", "full", "", (int*)&e_desc, 1), + MAKE_KEY('\0', "", "", "", "", NULL, 0) }; -#undef mkKey result = maineventloop(ro_mode ? subtitle_ro : subtitle_rw, &callback, &drawflag, flags, keys, true); diff --git a/ufed-curses.c b/ufed-curses.c index 1c1970b..8441c56 100644 --- a/ufed-curses.c +++ b/ufed-curses.c @@ -142,9 +142,12 @@ void drawBottom(bool withSep) if (keys) { const sKey* key = keys; - int pos = 2; - int row = 0; - int len = 0; + char buf[COLS + 1]; + int pos = 2; + int row = 0; + int len_full = 0; + int len_name = 0; + int len_desc = 0; while (key->key != '\0') { if (row != key->row) { @@ -152,19 +155,35 @@ void drawBottom(bool withSep) pos = 2; } - len = strlen(key->descr); + len_name = key->name_len; + len_desc = key->desc_len; + len_full = len_name + len_desc; if (pos < (bWidth - 2)) { - if (len > (bWidth - 2 - pos)) - len = bWidth - 2 - pos; - if (key->key > 0) + if (len_full > (bWidth - 2 - pos)) + len_full = bWidth - 2 - pos; + + /* Write name of the key */ + if (len_name > len_full) + len_name = len_full; + len_full -= len_name; + wattrset(w, COLOR_PAIR(3)); + mvwaddnstr(w, row + 1, pos, key->name, len_name); + pos += len_name; + + /* Add description (button) if possible */ + if (len_full) { + if (len_desc > len_full) + len_desc = len_full; + len_full -= len_desc; + + sprintf(buf, "%-*.*s", len_desc - 1, len_desc - 1, key->desc[*key->idx]); wattrset(w, COLOR_PAIR(6)); - else - wattrset(w, COLOR_PAIR(3)); + mvwaddstr(w, row + 1, pos, buf); - mvwaddnstr(w, row + 1, pos, key->descr, len); + pos += len_desc; + } } - pos += len + 1; ++key; } } @@ -645,8 +664,11 @@ int maineventloop( if( (event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED)) && (event.y >= 1) && (event.y <= 2)) { const sKey* key = keys; - int x = event.x; - int y = event.y; + char buf[COLS + 1]; + int x = event.x; + int y = event.y; + int len_name = 0; + int len_desc = 0; if((x < 2) || (y < 1) || (y > 2)) continue; x -= 2; @@ -657,20 +679,29 @@ int maineventloop( // Check key for ( ; (key->row == y) && (x >= 0) && (key->key != '\0'); key++) { - if ((key->key > 0) && ((size_t)x < key->length) ) { - event.x -= x; - wattrset(win(Bottom), COLOR_PAIR(6) | A_BOLD | A_REVERSE); - mvwaddstr(win(Bottom), event.y, event.x, key->descr); + len_name = key->name_len; + len_desc = key->desc_len; + if ( (key->key > 0) + && (x > len_name) + && (x < (len_name + len_desc) ) ) { + event.x -= x - len_name; + + sprintf(buf, "%-*.*s", len_desc - 1, len_desc - 1, key->desc[*key->idx]); + wattrset(win(Bottom), COLOR_PAIR(7) | A_BOLD); + mvwaddstr(win(Bottom), event.y, event.x, buf); + wmove(win(Bottom), event.y, event.x); wrefresh(win(Bottom)); usleep(100000); + wattrset(win(Bottom), COLOR_PAIR(6)); - waddstr(win(Bottom), key->descr); + waddstr(win(Bottom), buf); + wnoutrefresh(win(Bottom)); c = key->key; goto check_key; } - x -= key->length + 1; + x -= len_name + len_desc; } } }