merge V120d to main branch - Release v1.2

V120d to main branch - Release V1.2
main
Kamal Curi 4 years ago committed by GitHub
commit f85e5d43c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -46,3 +46,5 @@
- 1.1
· Added license to source code to better comply with GPLv2;
· Added confirmation dialog for modification of passwords
- 1.2
· Added search function

Binary file not shown.

@ -51,6 +51,7 @@
\begin{itemize}
\item Navigate through your passwords
\item View a password (ENTER or E)
\item Search for a passwrd (S or F6)
\item Create a new password (N or F4)
\item Modify an existing password (M or F5)
\item Copy the password to your clipboard (C or F3)
@ -67,6 +68,13 @@
\subsection{View a password}
To view a password, press ENTER. The view password window will open. You can modify, copy or delete the password in the view password window.
\subsection{Search for a password}
To search for the password for a specific service, press S. The search window will open, you can type your service's name on the window
and press ENTER to search. If no passwords are found, you'll see a warning and the query will not complete, showing all items on the
screen again. To reset your search filter, just open the search window again.\\
\textbf{Important: The search filter is case-sensitive.}
\subsection{Create a new password}
To create a new password, press N, the new password window will open, first type the service name (\texttt{SRVC}), then the username (\texttt{USER}),
then the password (\texttt{PSWD}). \textbf{To cancel the addition of a new password, lave either the \texttt{SRVC} or the \texttt{USER} fields

@ -24,7 +24,7 @@ User Manual</h2>
<div class="author" ><span
class="cmr-12">Kamal &#8217;brejela&#8217; Curi</span></div><br />
<div class="date" ><span
class="cmr-12">January 1, 2022</span></div>
class="cmr-12">January 10, 2022</span></div>
</div>
<h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
@ -46,29 +46,31 @@ href="#x1-80003.1" id="QQ2-1-8">Navigate through passwords</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.2 <a
href="#x1-90003.2" id="QQ2-1-9">View a password</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.3 <a
href="#x1-100003.3" id="QQ2-1-10">Create a new password</a></span>
href="#x1-100003.3" id="QQ2-1-10">Search for a password</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.4 <a
href="#x1-130003.4" id="QQ2-1-13">Modify a password</a></span>
href="#x1-110003.4" id="QQ2-1-11">Create a new password</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.5 <a
href="#x1-140003.5" id="QQ2-1-14">Copy the password to your clipboard</a></span>
href="#x1-140003.5" id="QQ2-1-14">Modify a password</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.6 <a
href="#x1-150003.6" id="QQ2-1-15">Delete a password</a></span>
href="#x1-150003.6" id="QQ2-1-15">Copy the password to your clipboard</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.7 <a
href="#x1-160003.7" id="QQ2-1-16">Generate a random string</a></span>
href="#x1-160003.7" id="QQ2-1-16">Delete a password</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.8 <a
href="#x1-170003.8" id="QQ2-1-17">Open the help window</a></span>
href="#x1-170003.8" id="QQ2-1-17">Generate a random string</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.9 <a
href="#x1-180003.9" id="QQ2-1-18">Quit steelbox</a></span>
href="#x1-180003.9" id="QQ2-1-18">Open the help window</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.10 <a
href="#x1-190003.10" id="QQ2-1-19">Quit steelbox</a></span>
<br /> &#x00A0;<span class="sectionToc" >4 <a
href="#x1-190004" id="QQ2-1-19">F.A.Q.</a></span>
href="#x1-200004" id="QQ2-1-20">F.A.Q.</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.1 <a
href="#x1-200004.1" id="QQ2-1-20">Contact</a></span>
href="#x1-210004.1" id="QQ2-1-21">Contact</a></span>
<br /> &#x00A0;<span class="sectionToc" >5 <a
href="#x1-210005" id="QQ2-1-21">Licenses</a></span>
href="#x1-220005" id="QQ2-1-22">Licenses</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >5.1 <a
href="#x1-220005.1" id="QQ2-1-22">pyperclip</a></span>
href="#x1-230005.1" id="QQ2-1-23">pyperclip</a></span>
<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >5.2 <a
href="#x1-230005.2" id="QQ2-1-23">Steelbox</a></span>
href="#x1-240005.2" id="QQ2-1-24">Steelbox</a></span>
</div>
@ -153,43 +155,56 @@ password saved. You can:
<!--l. 53--><p class="noindent" >View a password (ENTER or E)
</li>
<li class="itemize">
<!--l. 54--><p class="noindent" >Create a new password (N or F4)
<!--l. 54--><p class="noindent" >Search for a passwrd (S or F6)
</li>
<li class="itemize">
<!--l. 55--><p class="noindent" >Modify an existing password (M or F5)
<!--l. 55--><p class="noindent" >Create a new password (N or F4)
</li>
<li class="itemize">
<!--l. 56--><p class="noindent" >Copy the password to your clipboard (C or F3)
<!--l. 56--><p class="noindent" >Modify an existing password (M or F5)
</li>
<li class="itemize">
<!--l. 57--><p class="noindent" >Delete a password (D or Delete)
<!--l. 57--><p class="noindent" >Copy the password to your clipboard (C or F3)
</li>
<li class="itemize">
<!--l. 58--><p class="noindent" >Generate a random string (R)
<!--l. 58--><p class="noindent" >Delete a password (D or Delete)
</li>
<li class="itemize">
<!--l. 59--><p class="noindent" >Open the help window (H)
<!--l. 59--><p class="noindent" >Generate a random string (R)
</li>
<li class="itemize">
<!--l. 60--><p class="noindent" >Quit Steelbox (Q)</li></ul>
<!--l. 60--><p class="noindent" >Open the help window (H)
<!--l. 63--><p class="noindent" >
</li>
<li class="itemize">
<!--l. 61--><p class="noindent" >Quit Steelbox (Q)</li></ul>
<!--l. 64--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.1 </span> <a
id="x1-80003.1"></a>Navigate through passwords</h4>
<!--l. 64--><p class="noindent" >You can move around the main window with the directional keys. If you have more
<!--l. 65--><p class="noindent" >You can move around the main window with the directional keys. If you have more
passwords than can fit on the screen, your list will have multiple pages. You can
change your current page with PageUp/F2 and PageDown/F1.
<!--l. 67--><p class="noindent" >
<!--l. 68--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.2 </span> <a
id="x1-90003.2"></a>View a password</h4>
<!--l. 68--><p class="noindent" >To view a password, press ENTER. The view password window will open. You can
<!--l. 69--><p class="noindent" >To view a password, press ENTER. The view password window will open. You can
modify, copy or delete the password in the view password window.
<!--l. 70--><p class="noindent" >
<!--l. 72--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.3 </span> <a
id="x1-100003.3"></a>Create a new password</h4>
<!--l. 71--><p class="noindent" >To create a new password, press N, the new password window will open, first type
id="x1-100003.3"></a>Search for a password</h4>
<!--l. 73--><p class="noindent" >To search for the password for a specific service, press S. The search window will
open, you can type your service&#8217;s name on the window and press ENTER to search.
If no passwords are found, you&#8217;ll see a warning and the query will not complete,
showing all items on the screen again. To reset your search filter, just open the search
window again.<br
class="newline" /><span
class="cmbx-10">Important: The search filter is case-sensitive.</span>
<!--l. 78--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.4 </span> <a
id="x1-110003.4"></a>Create a new password</h4>
<!--l. 79--><p class="noindent" >To create a new password, press N, the new password window will open, first type
the service name (<span
class="cmtt-10">SRVC</span>), then the username (<span
class="cmtt-10">USER</span>), then the password (<span
@ -202,26 +217,29 @@ class="cmbx-10">or the </span><span
class="cmtt-10">USER</span>
<span
class="cmbx-10">fields empty </span>. Press ENTER to move to the next field
<!--l. 75--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">3.3.1 </span> <a
id="x1-110003.3.1"></a>Using random strings as passwords</h5>
<!--l. 76--><p class="noindent" >To create a random password for your service, leave the <span
<!--l. 83--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">3.4.1 </span> <a
id="x1-120003.4.1"></a>Using random strings as passwords</h5>
<!--l. 84--><p class="noindent" >To create a random password for your service, leave the <span
class="cmtt-10">PSWD </span>field empty. A random
string will be given to it as a password.
<!--l. 78--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">3.3.2 </span> <a
id="x1-120003.3.2"></a>Setting up the length of a random string in a password</h5>
<!--l. 79--><p class="noindent" >You can specify the length of a random password when creating (or modifying) one.
<!--l. 86--><p class="noindent" >
<h5 class="subsubsectionHead"><span class="titlemark">3.4.2 </span> <a
id="x1-130003.4.2"></a>Setting up the length of a random string in a password</h5>
<!--l. 87--><p class="noindent" >You can specify the length of a random password when creating (or modifying) one.
Steelbox will recognize any integer between 0 and 45 after a colon(<span
class="cmtt-10">:</span>). For example, if
you need a random password of <span
class="cmbx-10">16 </span>characters in length:<br
class="newline" /><span
class="cmtt-10">PSWD::16</span>
<!--l. 83--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.4 </span> <a
id="x1-130003.4"></a>Modify a password</h4>
<!--l. 84--><p class="noindent" >To modify a password, press M, the modify password window will open, first edit the
<!--l. 91--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.5 </span> <a
id="x1-140003.5"></a>Modify a password</h4>
<!--l. 92--><p class="noindent" >To modify a password, press M, the modify password window will open, first edit the
service name, then the username, then the password. <span
class="cmbx-10">Leaving the </span><span
class="cmtt-10">PSWD </span><span
@ -231,57 +249,54 @@ class="cmbx-10">empty in the modify window will give it a random string. </span>
through the currently selected field with:
<ul class="itemize1">
<li class="itemize">
<!--l. 88--><p class="noindent" >CTRL+A to go to the far left of the field
<!--l. 96--><p class="noindent" >CTRL+A to go to the far left of the field
</li>
<li class="itemize">
<!--l. 89--><p class="noindent" >CTRL+E to go to the far right of the field
<!--l. 97--><p class="noindent" >CTRL+E to go to the far right of the field
</li>
<li class="itemize">
<!--l. 90--><p class="noindent" >CTRL+B to move the cursor once to the left
<!--l. 98--><p class="noindent" >CTRL+B to move the cursor once to the left
</li>
<li class="itemize">
<!--l. 91--><p class="noindent" >CTRL+F to move the cursor once to the right
<!--l. 99--><p class="noindent" >CTRL+F to move the cursor once to the right
</li>
<li class="itemize">
<!--l. 92--><p class="noindent" >CTRL+H to remove one character (Backspace)
<!--l. 100--><p class="noindent" >CTRL+H to remove one character (Backspace)
</li>
<li class="itemize">
<!--l. 93--><p class="noindent" >CTRL+D to remove highlghted character (Delete)
<!--l. 101--><p class="noindent" >CTRL+D to remove highlghted character (Delete)
</li>
<li class="itemize">
<!--l. 94--><p class="noindent" >CTRL+O to clear the field</li></ul>
<!--l. 96--><p class="noindent" >You can see these commands with in the help window.
<!--l. 98--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.5 </span> <a
id="x1-140003.5"></a>Copy the password to your clipboard</h4>
<!--l. 99--><p class="noindent" >To copy a highlighted service&#8217;s password, press C. You can do this in the main
window or in the View Password window.
<!--l. 101--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.6 </span> <a
id="x1-150003.6"></a>Delete a password</h4>
<!--l. 102--><p class="noindent" >To delete a password, press D. You can do this in the main window or in the View
Password window. Steelbox will prompt you for confirmation, pressing anything but
Y will not remove your password.
<!--l. 105--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.7 </span> <a
id="x1-160003.7"></a>Generate a random string</h4>
<!--l. 106--><p class="noindent" >If you just wish to generate a random string, you can press R. It will open a window
with a random string in it.
<!--l. 102--><p class="noindent" >CTRL+O to clear the field</li></ul>
<!--l. 104--><p class="noindent" >You can see these commands with in the help window.
<!--l. 108--><p class="noindent" >
<!--l. 106--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.6 </span> <a
id="x1-150003.6"></a>Copy the password to your clipboard</h4>
<!--l. 107--><p class="noindent" >To copy a highlighted service&#8217;s password, press C. You can do this in the main
window or in the View Password window.
<!--l. 109--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.7 </span> <a
id="x1-160003.7"></a>Delete a password</h4>
<!--l. 110--><p class="noindent" >To delete a password, press D. You can do this in the main window or in the View
Password window. Steelbox will prompt you for confirmation, pressing anything but
Y will not remove your password.
<!--l. 113--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.8 </span> <a
id="x1-170003.8"></a>Open the help window</h4>
<!--l. 109--><p class="noindent" >To open the help window, press H. The help window has information on
steelbox.
<!--l. 111--><p class="noindent" >
id="x1-170003.8"></a>Generate a random string</h4>
<!--l. 114--><p class="noindent" >If you just wish to generate a random string, you can press R. It will open a window
with a random string in it.
<!--l. 116--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.9 </span> <a
id="x1-180003.9"></a>Quit steelbox</h4>
<!--l. 112--><p class="noindent" >To quit steelbox, press Q from the main window. Steelbox will close its windows and
id="x1-180003.9"></a>Open the help window</h4>
<!--l. 117--><p class="noindent" >To open the help window, press H. The help window has information on
steelbox.
<!--l. 119--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">3.10 </span> <a
id="x1-190003.10"></a>Quit steelbox</h4>
<!--l. 120--><p class="noindent" >To quit steelbox, press Q from the main window. Steelbox will close its windows and
you&#8217;ll be asked to lock your password file with a password again. <span
class="cmbx-10">If you quit the</span>
<span
@ -293,10 +308,10 @@ class="cmtt-10">HOME/pasfile.csv. </span>Opening steelbox again will throw a war
saying that no encrypted password file could be found, it will then try to open
the unencrypted file. Quitting steelbox and entering a password solves this
problem.
<!--l. 117--><p class="noindent" >
<!--l. 125--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">4 </span> <a
id="x1-190004"></a>F.A.Q.</h3>
<!--l. 118--><p class="noindent" ><span
id="x1-200004"></a>F.A.Q.</h3>
<!--l. 126--><p class="noindent" ><span
class="cmbx-10">Q: Why do I need to put my password when I enter *and* when I quit</span>
<span
class="cmbx-10">steelbox</span><br
@ -309,81 +324,85 @@ class="newline" />A: Yes. You first create a password with a dummy entry in whic
to leave empty, and then modify it, leaving it empty.<br
class="newline" /><span
class="cmbx-10">Q: Can I have a service with an empty password? </span>A: Yes. With <span
class="cmtt-10">PSWD::0</span>
class="cmtt-10">PSWD::0 </span><span
class="cmbx-10">Q:</span>
<span
class="cmbx-10">Can I migrate my password file from one system to another?</span><br
class="newline" />A: The password file in <span
class="tctt-1000">$</span><span
class="cmtt-10">HOME/.pasfile.csv.gpg </span>contains all saved passwords, that
file can be moved from one home directory to another.
<h4 class="subsectionHead"><span class="titlemark">4.1 </span> <a
id="x1-200004.1"></a>Contact</h4>
<!--l. 126--><p class="noindent" >The author of this software can be contacted in kamalcuri@outlook.com.
<!--l. 128--><p class="noindent" >
id="x1-210004.1"></a>Contact</h4>
<!--l. 136--><p class="noindent" >The author of this software can be contacted in kamalcuri@outlook.com.
<!--l. 138--><p class="noindent" >
<h3 class="sectionHead"><span class="titlemark">5 </span> <a
id="x1-210005"></a>Licenses</h3>
<!--l. 129--><p class="noindent" >
id="x1-220005"></a>Licenses</h3>
<!--l. 139--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">5.1 </span> <a
id="x1-220005.1"></a>pyperclip</h4>
<!--l. 130--><p class="noindent" >pyperclip&#8217;s license can be found in <a
id="x1-230005.1"></a>pyperclip</h4>
<!--l. 140--><p class="noindent" >pyperclip&#8217;s license can be found in <a
href="https://github.com/asweigart/pyperclip/blob/master/LICENSE.txt" class="url" ><span
class="cmtt-10">https://github.com/asweigart/pyperclip/blob/master/LICENSE.txt</span></a>
<h4 class="subsectionHead"><span class="titlemark">5.2 </span> <a
id="x1-230005.2"></a>Steelbox</h4>
id="x1-240005.2"></a>Steelbox</h4>
<div class="center"
>
<!--l. 132--><p class="noindent" >
<!--l. 135--><p class="noindent" >Copyright <span
<!--l. 142--><p class="noindent" >
<!--l. 145--><p class="noindent" >Copyright <span
class="tcrm-1000">©</span>&#x00A0;1989, 1991 Free Software Foundation, Inc.
<!--l. 139--><p class="noindent" >51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
<!--l. 143--><p class="noindent" >Everyone is permitted to copy and distribute verbatim copies of this license
<!--l. 149--><p class="noindent" >51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
<!--l. 153--><p class="noindent" >Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed. </div>
<div class="center"
>
<!--l. 148--><p class="noindent" >
<!--l. 149--><p class="noindent" ><span
<!--l. 158--><p class="noindent" >
<!--l. 159--><p class="noindent" ><span
class="cmbx-12">Preamble</span></div>
<!--l. 153--><p class="noindent" >The licenses for most software are designed to take away your freedom to share and
<!--l. 163--><p class="noindent" >The licenses for most software are designed to take away your freedom to share and
change it. By contrast, the GNU General Public License is intended to guarantee
your freedom to share and change free software&#8212;to make sure the software is free for
all its users. This General Public License applies to most of the Free Software
Foundation&#8217;s software and to any other program whose authors commit to using
it. (Some other Free Software Foundation software is covered by the GNU
Library General Public License instead.) You can apply it to your programs,
too.
<!--l. 162--><p class="indent" > When we speak of free software, we are referring to freedom, not price. Our
<!--l. 172--><p class="indent" > When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom to
distribute copies of free software (and charge for this service if you wish), that you
receive source code or can get it if you want it, that you can change the software or
use pieces of it in new free programs; and that you know you can do these
things.
<!--l. 169--><p class="indent" > To protect your rights, we need to make restrictions that forbid anyone to deny
<!--l. 179--><p class="indent" > To protect your rights, we need to make restrictions that forbid anyone to deny
you these rights or to ask you to surrender the rights. These restrictions translate to
certain responsibilities for you if you distribute copies of the software, or if you
modify it.
<!--l. 174--><p class="indent" > For example, if you distribute copies of such a program, whether gratis or for a
<!--l. 184--><p class="indent" > For example, if you distribute copies of such a program, whether gratis or for a
fee, you must give the recipients all the rights that you have. You must make sure
that they, too, receive or can get the source code. And you must show them these
terms so they know their rights.
<!--l. 179--><p class="indent" > We protect your rights with two steps: (1) copyright the software, and (2) offer
<!--l. 189--><p class="indent" > We protect your rights with two steps: (1) copyright the software, and (2) offer
you this license which gives you legal permission to copy, distribute and/or modify
the software.
<!--l. 183--><p class="indent" > Also, for each author&#8217;s protection and ours, we want to make certain that
<!--l. 193--><p class="indent" > Also, for each author&#8217;s protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If the software
is modified by someone else and passed on, we want its recipients to know that what
they have is not the original, so that any problems introduced by others will not
reflect on the original authors&#8217; reputations.
<!--l. 190--><p class="indent" > Finally, any free program is threatened constantly by software patents. We wish
<!--l. 200--><p class="indent" > Finally, any free program is threatened constantly by software patents. We wish
to avoid the danger that redistributors of a free program will individually obtain
patent licenses, in effect making the program proprietary. To prevent this, we have
made it clear that any patent must be licensed for everyone&#8217;s free use or not licensed
at all.
<!--l. 196--><p class="indent" > The precise terms and conditions for copying, distribution and modification
<!--l. 206--><p class="indent" > The precise terms and conditions for copying, distribution and modification
follow.
<div class="center"
>
<!--l. 199--><p class="noindent" >
<!--l. 200--><p class="noindent" ><span
<!--l. 209--><p class="noindent" >
<!--l. 210--><p class="noindent" ><span
class="cmcsc-10x-x-144">T<span
class="small-caps">e</span><span
class="small-caps">r</span><span
@ -436,12 +455,15 @@ class="small-caps">t</span><span
class="small-caps">i</span><span
class="small-caps">o</span><span
class="small-caps">n</span></span></div>
<!--l. 206--><p class="indent" >
<!--l. 216--><p class="indent" >
<ol class="enumerate1" >
<li
class="enumerate" id="x1-23002x0">
<!--l. 211--><p class="noindent" >
<!--l. 212--><p class="noindent" >This License applies to any program or other work which contains a notice
class="enumerate" id="x1-24002x0">
<!--l. 221--><p class="noindent" >
<!--l. 222--><p class="noindent" >This License applies to any program or other work which contains a notice
placed by the copyright holder saying it may be distributed under the
terms of this General Public License. The &#8220;Program&#8221;, below, refers to
any such program or work, and a &#8220;work based on the Program&#8221; means
@ -450,7 +472,7 @@ class="small-caps">n</span></span></div>
with modifications and/or translated into another language. (Hereinafter,
translation is included without limitation in the term &#8220;modification&#8221;.)
Each licensee is addressed as &#8220;you&#8221;.
<!--l. 222--><p class="noindent" >Activities other than copying, distribution and modification are not
<!--l. 232--><p class="noindent" >Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running the
Program is not restricted, and the output from the Program is covered only
if its contents constitute a work based on the Program (independent of
@ -458,45 +480,45 @@ class="small-caps">n</span></span></div>
on what the Program does.
</li>
<li
class="enumerate" id="x1-23004x1">
<!--l. 229--><p class="noindent" >You may copy and distribute verbatim copies of the Program&#8217;s source code
class="enumerate" id="x1-24004x1">
<!--l. 239--><p class="noindent" >You may copy and distribute verbatim copies of the Program&#8217;s source code
as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this License
and to the absence of any warranty; and give any other recipients of the
Program a copy of this License along with the Program.
<!--l. 236--><p class="noindent" >You may charge a fee for the physical act of transferring a copy, and you
<!--l. 246--><p class="noindent" >You may charge a fee for the physical act of transferring a copy, and you
may at your option offer warranty protection in exchange for a fee.
</li>
<li
class="enumerate" id="x1-23006x2">
<!--l. 240--><p class="noindent" >
<!--l. 241--><p class="noindent" >You may modify your copy or copies of the Program or any portion of it,
class="enumerate" id="x1-24006x2">
<!--l. 250--><p class="noindent" >
<!--l. 251--><p class="noindent" >You may modify your copy or copies of the Program or any portion of it,
thus forming a work based on the Program, and copy and distribute such
modifications or work under the terms of Section 1 above, provided that
you also meet all of these conditions:
<!--l. 246--><p class="noindent" >
<!--l. 256--><p class="noindent" >
<ol class="enumerate2" >
<li
class="enumerate" id="x1-23008x1">
<!--l. 249--><p class="noindent" >
<!--l. 250--><p class="noindent" >You must cause the modified files to carry prominent notices stating
class="enumerate" id="x1-24008x1">
<!--l. 259--><p class="noindent" >
<!--l. 260--><p class="noindent" >You must cause the modified files to carry prominent notices stating
that you changed the files and the date of any change.
</li>
<li
class="enumerate" id="x1-23010x2">
<!--l. 254--><p class="noindent" >
<!--l. 255--><p class="noindent" >You must cause any work that you distribute or publish, that in
class="enumerate" id="x1-24010x2">
<!--l. 264--><p class="noindent" >
<!--l. 265--><p class="noindent" >You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any part
thereof, to be licensed as a whole at no charge to all third parties
under the terms of this License.
</li>
<li
class="enumerate" id="x1-23012x3">
<!--l. 261--><p class="noindent" >If the modified program normally reads commands interactively when
class="enumerate" id="x1-24012x3">
<!--l. 271--><p class="noindent" >If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive
use in the most ordinary way, to print or display an announcement
including an appropriate copyright notice and a notice that there
@ -504,13 +526,10 @@ class="small-caps">n</span></span></div>
that users may redistribute the program under these conditions, and
telling the user how to view a copy of this License. (Exception: if
the Program itself is interactive but does not normally print such an
announcement, your work based on the Program is not required to
print an announcement.)
</li></ol>
<!--l. 275--><p class="noindent" >These requirements apply to the modified work as a whole. If identifiable
<!--l. 285--><p class="noindent" >These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Program, and can be reasonably
considered independent and separate works in themselves, then this License,
and its terms, do not apply to those sections when you distribute them as
@ -519,53 +538,53 @@ class="small-caps">n</span></span></div>
the terms of this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
<!--l. 285--><p class="noindent" >Thus, it is not the intent of this section to claim rights or contest your rights to
<!--l. 295--><p class="noindent" >Thus, it is not the intent of this section to claim rights or contest your rights to
work written entirely by you; rather, the intent is to exercise the right to
control the distribution of derivative or collective works based on the
Program.
<!--l. 290--><p class="noindent" >In addition, mere aggregation of another work not based on the Program with
<!--l. 300--><p class="noindent" >In addition, mere aggregation of another work not based on the Program with
the Program (or with a work based on the Program) on a volume of a storage
or distribution medium does not bring the other work under the scope of this
License.
</li>
<li
class="enumerate" id="x1-23014x3">
<!--l. 296--><p class="noindent" >You may copy and distribute the Program (or a work based on it, under
class="enumerate" id="x1-24014x3">
<!--l. 306--><p class="noindent" >You may copy and distribute the Program (or a work based on it, under
Section 2) in object code or executable form under the terms of Sections 1 and
2 above provided that you also do one of the following:
<!--l. 300--><p class="noindent" >
<!--l. 310--><p class="noindent" >
<ol class="enumerate2" >
<li
class="enumerate" id="x1-23016x1">
<!--l. 303--><p class="noindent" >
<!--l. 304--><p class="noindent" >Accompany it with the complete corresponding machine-readable
class="enumerate" id="x1-24016x1">
<!--l. 313--><p class="noindent" >
<!--l. 314--><p class="noindent" >Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections 1
and 2 above on a medium customarily used for software interchange;
or,
</li>
<li
class="enumerate" id="x1-23018x2">
<!--l. 309--><p class="noindent" >
<!--l. 310--><p class="noindent" >Accompany it with a written offer, valid for at least three years, to
class="enumerate" id="x1-24018x2">
<!--l. 319--><p class="noindent" >
<!--l. 320--><p class="noindent" >Accompany it with a written offer, valid for at least three years, to
give any third party, for a charge no more than your cost of physically
performing source distribution, a complete machine-readable copy of
the corresponding source code, to be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for software
interchange; or,
</li>
<li
class="enumerate" id="x1-23020x3">
<!--l. 318--><p class="noindent" >
<!--l. 319--><p class="noindent" >Accompany it with the information you received as to the offer to
class="enumerate" id="x1-24020x3">
<!--l. 328--><p class="noindent" >
<!--l. 329--><p class="noindent" >Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed
only for noncommercial distribution and only if you received the
program in object code or executable form with such an offer, in
accord with Subsection b above.)
</li></ol>
<!--l. 328--><p class="noindent" >The source code for a work means the preferred form of the work for
<!--l. 338--><p class="noindent" >The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
@ -575,15 +594,18 @@ class="small-caps">n</span></span></div>
components (compiler, kernel, and so on) of the operating system on which
the executable runs, unless that component itself accompanies the
executable.
<!--l. 339--><p class="noindent" >If distribution of executable or object code is made by offering access to copy
<!--l. 349--><p class="noindent" >If distribution of executable or object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the source code
from the same place counts as distribution of the source code, even though
third parties are not compelled to copy the source along with the object
code.
</li>
<li
class="enumerate" id="x1-23022x4">
<!--l. 346--><p class="noindent" >You may not copy, modify, sublicense, or distribute the Program except
class="enumerate" id="x1-24022x4">
<!--l. 356--><p class="noindent" >You may not copy, modify, sublicense, or distribute the Program except
as expressly provided under this License. Any attempt otherwise to
copy, modify, sublicense or distribute the Program is void, and will
automatically terminate your rights under this License. However, parties who
@ -592,11 +614,8 @@ class="small-caps">n</span></span></div>
compliance.
</li>
<li
class="enumerate" id="x1-23024x5">
<!--l. 355--><p class="noindent" >You are not required to accept this License, since you have not signed it.
class="enumerate" id="x1-24024x5">
<!--l. 365--><p class="noindent" >You are not required to accept this License, since you have not signed it.
However, nothing else grants you permission to modify or distribute the
Program or its derivative works. These actions are prohibited by law if you
do not accept this License. Therefore, by modifying or distributing
@ -606,8 +625,8 @@ class="small-caps">n</span></span></div>
it.
</li>
<li
class="enumerate" id="x1-23026x6">
<!--l. 365--><p class="noindent" >Each time you redistribute the Program (or any work based on the Program),
class="enumerate" id="x1-24026x6">
<!--l. 375--><p class="noindent" >Each time you redistribute the Program (or any work based on the Program),
the recipient automatically receives a license from the original licensor to copy,
distribute or modify the Program subject to these terms and conditions. You
may not impose any further restrictions on the recipients&#8217; exercise of the rights
@ -615,11 +634,14 @@ class="small-caps">n</span></span></div>
parties to this License.
</li>
<li
class="enumerate" id="x1-23028x7">
<!--l. 374--><p class="noindent" >If, as a consequence of a court judgment or allegation of patent infringement
class="enumerate" id="x1-24028x7">
<!--l. 384--><p class="noindent" >If, as a consequence of a court judgment or allegation of patent infringement
or for any other reason (not limited to patent issues), conditions are
imposed on you (whether by court order, agreement or otherwise) that
contradict the conditions of this License, they do not excuse you from the
conditions of this License. If you cannot distribute so as to satisfy
simultaneously your obligations under this License and any other pertinent
obligations, then as a consequence you may not distribute the Program
@ -628,10 +650,10 @@ class="small-caps">n</span></span></div>
indirectly through you, then the only way you could satisfy both it
and this License would be to refrain entirely from distribution of the
Program.
<!--l. 387--><p class="noindent" >If any portion of this section is held invalid or unenforceable under any
<!--l. 397--><p class="noindent" >If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply and the
section as a whole is intended to apply in other circumstances.
<!--l. 392--><p class="noindent" >It is not the purpose of this section to induce you to infringe any patents or
<!--l. 402--><p class="noindent" >It is not the purpose of this section to induce you to infringe any patents or
other property right claims or to contest validity of any such claims; this
section has the sole purpose of protecting the integrity of the free software
distribution system, which is implemented by public license practices. Many
@ -639,16 +661,13 @@ class="small-caps">n</span></span></div>
distributed through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing to
distribute software through any other system and a licensee cannot impose that
choice.
<!--l. 403--><p class="noindent" >This section is intended to make thoroughly clear what is believed to be a
<!--l. 413--><p class="noindent" >This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License.
</li>
<li
class="enumerate" id="x1-23030x8">
<!--l. 407--><p class="noindent" >If the distribution and/or use of the Program is restricted in certain countries
class="enumerate" id="x1-24030x8">
<!--l. 417--><p class="noindent" >If the distribution and/or use of the Program is restricted in certain countries
either by patents or by copyrighted interfaces, the original copyright holder who
places the Program under this License may add an explicit geographical
distribution limitation excluding those countries, so that distribution is
@ -657,22 +676,25 @@ class="small-caps">n</span></span></div>
License.
</li>
<li
class="enumerate" id="x1-23032x9">
<!--l. 416--><p class="noindent" >The Free Software Foundation may publish revised and/or new versions of the
class="enumerate" id="x1-24032x9">
<!--l. 426--><p class="noindent" >The Free Software Foundation may publish revised and/or new versions of the
General Public License from time to time. Such new versions will be similar in
spirit to the present version, but may differ in detail to address new problems
or concerns.
<!--l. 421--><p class="noindent" >Each version is given a distinguishing version number. If the Program specifies
<!--l. 431--><p class="noindent" >Each version is given a distinguishing version number. If the Program specifies
a version number of this License which applies to it and &#8220;any later version&#8221;,
you have the option of following the terms and conditions either of
that version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of this
License, you may choose any version ever published by the Free Software
Foundation.
</li>
<li
class="enumerate" id="x1-23034x10">
<!--l. 430--><p class="noindent" >If you wish to incorporate parts of the Program into other free programs whose
class="enumerate" id="x1-24034x10">
<!--l. 440--><p class="noindent" >If you wish to incorporate parts of the Program into other free programs whose
distribution conditions are different, write to the author to ask for permission.
For software which is copyrighted by the Free Software Foundation, write to the
Free Software Foundation; we sometimes make exceptions for this. Our decision
@ -681,11 +703,8 @@ class="small-caps">n</span></span></div>
generally.
<div class="center"
>
<!--l. 438--><p class="noindent" >
<!--l. 440--><p class="noindent" ><span
<!--l. 448--><p class="noindent" >
<!--l. 450--><p class="noindent" ><span
class="cmcsc-10x-x-144">N<span
class="small-caps">o</span> W<span
class="small-caps">a</span><span
@ -697,8 +716,8 @@ class="small-caps">t</span><span
class="small-caps">y</span> </span></div>
</li>
<li
class="enumerate" id="x1-23036x11">
<!--l. 445--><p class="noindent" ><span
class="enumerate" id="x1-24036x11">
<!--l. 455--><p class="noindent" ><span
class="cmcsc-10">B<span
class="small-caps">e</span><span
class="small-caps">c</span><span
@ -1202,8 +1221,8 @@ class="small-caps">o</span><span
class="small-caps">n</span>.</span>
</li>
<li
class="enumerate" id="x1-23038x12">
<!--l. 456--><p class="noindent" ><span
class="enumerate" id="x1-24038x12">
<!--l. 466--><p class="noindent" ><span
class="cmcsc-10">I<span
class="small-caps">n</span> <span
class="small-caps">n</span><span
@ -1518,6 +1537,9 @@ class="small-caps">s</span><span
class="small-caps">s</span> <span
class="small-caps">o</span><span
class="small-caps">f</span></span>
<span
class="cmcsc-10"><span
class="small-caps">d</span><span
@ -1722,8 +1744,8 @@ class="small-caps">s</span>.</span>
</li></ol>
<div class="center"
>
<!--l. 469--><p class="noindent" >
<!--l. 470--><p class="noindent" ><span
<!--l. 479--><p class="noindent" >
<!--l. 480--><p class="noindent" ><span
class="cmcsc-10x-x-144">E<span
class="small-caps">n</span><span
class="small-caps">d</span> <span
@ -1745,49 +1767,49 @@ class="small-caps">i</span><span
class="small-caps">o</span><span
class="small-caps">n</span><span
class="small-caps">s</span></span></div>
<!--l. 476--><p class="noindent" >
<!--l. 486--><p class="noindent" >
<h3 class="likesectionHead"><a
id="x1-240005.2"></a>Appendix: How to Apply These Terms to Your New Programs</h3>
<!--l. 478--><p class="noindent" >If you develop a new program, and you want it to be of the greatest possible use to
id="x1-250005.2"></a>Appendix: How to Apply These Terms to Your New Programs</h3>
<!--l. 488--><p class="noindent" >If you develop a new program, and you want it to be of the greatest possible use to
the public, the best way to achieve this is to make it free software which everyone can
redistribute and change under these terms.
<!--l. 483--><p class="indent" > To do so, attach the following notices to the program. It is safest to attach them
<!--l. 493--><p class="indent" > To do so, attach the following notices to the program. It is safest to attach them
to the start of each source file to most effectively convey the exclusion of warranty;
and each file should have at least the &#8220;copyright&#8221; line and a pointer to where the full
notice is found.
<!--l. 488--><p class="indent" >
<!--l. 498--><p class="indent" >
<blockquote class="quote">
<!--l. 489--><p class="noindent" >one line to give the program&#8217;s name and a brief idea of what it does.
<!--l. 499--><p class="noindent" >one line to give the program&#8217;s name and a brief idea of what it does.
<br
class="newline" />Copyright (C) yyyy name of author <br
class="newline" />
<!--l. 492--><p class="noindent" >This program is free software; you can redistribute it and/or modify
<!--l. 502--><p class="noindent" >This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
<!--l. 497--><p class="noindent" >This program is distributed in the hope that it will be useful, but
<!--l. 507--><p class="noindent" >This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more details.
<!--l. 502--><p class="noindent" >You should have received a copy of the GNU General Public
<!--l. 512--><p class="noindent" >You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.</blockquote>
<!--l. 507--><p class="indent" > Also add information on how to contact you by electronic and paper
<!--l. 517--><p class="indent" > Also add information on how to contact you by electronic and paper
mail.
<!--l. 509--><p class="indent" > If the program is interactive, make it output a short notice like this when it starts
<!--l. 519--><p class="indent" > If the program is interactive, make it output a short notice like this when it starts
in an interactive mode:
<!--l. 512--><p class="indent" >
<!--l. 522--><p class="indent" >
<blockquote class="quote">
<!--l. 513--><p class="noindent" >Gnomovision version 69, Copyright (C) yyyy name of author <br
<!--l. 523--><p class="noindent" >Gnomovision version 69, Copyright (C) yyyy name of author <br
class="newline" />Gnomovision comes with ABSOLUTELY NO WARRANTY; for
details type &#8216;show w&#8217;. <br
class="newline" />This is free software, and you are welcome to redistribute it under
certain conditions; type &#8216;show c&#8217; for details.</blockquote>
<!--l. 520--><p class="indent" > The hypothetical commands <span
<!--l. 530--><p class="indent" > The hypothetical commands <span
class="cmtt-10">show w </span>and <span
class="cmtt-10">show c </span>should show the appropriate
parts of the General Public License. Of course, the commands you use may be called
@ -1795,22 +1817,19 @@ something other than <span
class="cmtt-10">show w </span>and <span
class="cmtt-10">show c</span>; they could even be mouse-clicks or menu
items&#8212;whatever suits your program.
<!--l. 526--><p class="indent" > You should also get your employer (if you work as a programmer) or your school,
<!--l. 536--><p class="indent" > You should also get your employer (if you work as a programmer) or your school,
if any, to sign a &#8220;copyright disclaimer&#8221; for the program, if necessary. Here is a
sample; alter the names:
<!--l. 530--><p class="indent" >
<!--l. 540--><p class="indent" >
<blockquote class="quote">
<!--l. 531--><p class="noindent" >Yoyodyne, Inc., hereby disclaims all copyright interest in the
<!--l. 541--><p class="noindent" >Yoyodyne, Inc., hereby disclaims all copyright interest in the
program <br
class="newline" />&#8216;Gnomovision&#8217; (which makes passes at compilers) written by James
Hacker. <br
class="newline" />
<!--l. 534--><p class="noindent" >signature of Ty Coon, 1 April 1989 <br
<!--l. 544--><p class="noindent" >signature of Ty Coon, 1 April 1989 <br
class="newline" />Ty Coon, President of Vice</blockquote>
<!--l. 539--><p class="indent" > This General Public License does not permit incorporating your program into
<!--l. 549--><p class="indent" > This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may consider it
more useful to permit linking proprietary applications with the library. If this is what
you want to do, use the GNU Library General Public License instead of this

@ -40,12 +40,19 @@ HOMEDIR = os.environ['HOME']
PASFILE=HOMEDIR+"/.pasfile.csv"
def reloadFiles():
global SQUERY
files.clear()
with open(PASFILE, mode='r') as pasfile:
# Creates reader object
csvreader=csv.DictReader(pasfile)
for ids in csvreader:
files.append(ids)
if SQUERY == '':
for ids in csvreader:
files.append(ids)
else:
for ids in csvreader:
if ids['service'].find(SQUERY) != -1:
files.append(ids)
# Initializes the curses screen
@ -87,7 +94,7 @@ def steelbox():
while True:
termGlobals()
reloadFiles()
if len(files) < 1:
if len(files) < 1 and SQUERY == '':
populate()
displayItems()
stdscr.move(0, 0)
@ -98,6 +105,7 @@ def displayItems():
cleanWins()
global NROWS
global ITEM_CURSOR
global SQUERY
# Creates a name list
global displayList
displayList = []
@ -130,7 +138,7 @@ def displayItems():
LINE = 0
COLUMN+=16
NROWS+=1
STATUS_MESSAGE = "(n)ew,(d|el),(c)opy,(m)odify,(h)elp,(q)uit"
STATUS_MESSAGE = "(n)ew,(d|el),(s)earch,(c)opy,(m)odify,(h)elp,(q)uit"
displayStatus(STATUS_MESSAGE)
mainwin.refresh()
@ -192,6 +200,8 @@ def globals():
PUSER = ""
global PPSWD
PPSWD = ""
global SQUERY
SQUERY = ""
# This makes sure that if anyone resizes the terminal window, it won't be smaller than the maximum size
def termGlobals():
@ -206,6 +216,11 @@ def termGlobals():
# Gets user command
def command():
# This solution, for the case where the search function finds nothing, is cursed beyond belief,
global displayList
if len(displayList) < 1:
noMatch()
return()
# The GLOBAL_CURSOR points to the main files object, so that it gets the right file.
global c
global CUROW
@ -253,6 +268,8 @@ def command():
examine()
elif c == ord('c') or c == curses.KEY_F3:
copy()
elif c == ord('s') or c == curses.KEY_F6:
searchWin()
elif c == ord('n') or c == curses.KEY_F4:
newFile()
elif c == ord('m') or c == curses.KEY_F5:
@ -368,10 +385,9 @@ def examine():
copy()
def modFile():
global files
# Extracts the file to be modified
modFile = files[GLOBAL_CURSOR]
# Removes it from the main file
files.pop(GLOBAL_CURSOR)
# Creates the 'modify password' window
modWin = curses.newwin(5, 60,int(TERM_LINES/2)-2, int(TERM_COLS/2)-18)
# Gets the coordinates for the top left corner of said window
@ -435,7 +451,6 @@ def modFile():
pSize = 45
passPswd = randString(pSize)
modFile = {'service' : passService, 'user' : passUser, 'pswd' : passPswd}
# This is just a copy of delfile's confirmation routine
dlWin = curses.newwin(3, 22, int(TERM_LINES/2), int(TERM_COLS/2))
dlWin.border()
@ -445,9 +460,20 @@ def modFile():
dlWin.addstr(1, 1, "Are you sure? (y/N)")
c = dlWin.getch()
if c == ord('y'):
files.insert(GLOBAL_CURSOR, modFile)
iCount = 0
with open(PASFILE, mode='r') as pasfile:
oldFiles = []
csvreader = csv.DictReader(pasfile)
for ids in csvreader:
oldFiles.append(ids)
for ids in oldFiles:
if ids['service'] == files[GLOBAL_CURSOR]['service'] and ids['user'] == files[GLOBAL_CURSOR]['user'] and ids['pswd'] == files[GLOBAL_CURSOR]['pswd']:
oldFiles.pop(iCount)
iPos = iCount
iCount += 1
oldFiles.insert(iPos, modFile)
files = oldFiles
with open(PASFILE, mode='w') as pasfile:
# Creates writer object and writes to the csv file
csvwriter = csv.DictWriter(pasfile, fields)
csvwriter.writeheader()
csvwriter.writerows(files)
@ -457,6 +483,7 @@ def modFile():
def delFile():
global GLOBAL_CURSOR
global ITEM_CURSOR
global files
dlWin = curses.newwin(3, 22, int(TERM_LINES/2), int(TERM_COLS/2))
dlWin.border()
dlWin.refresh()
@ -465,7 +492,17 @@ def delFile():
dlWin.addstr(1, 1, "Are you sure? (y/N)")
c = dlWin.getch()
if c == ord('y'):
files.pop(GLOBAL_CURSOR)
iCount = 0
with open(PASFILE, mode='r') as pasfile:
oldFiles = []
csvreader = csv.DictReader(pasfile)
for ids in csvreader:
oldFiles.append(ids)
for ids in oldFiles:
if ids['service'] == files[GLOBAL_CURSOR]['service'] and ids['user'] == files[GLOBAL_CURSOR]['user'] and ids['pswd'] == files[GLOBAL_CURSOR]['pswd']:
oldFiles.pop(iCount)
iCount += 1
files = oldFiles
with open(PASFILE, mode='w') as pasfile:
csvwriter = csv.DictWriter(pasfile, fields)
csvwriter.writeheader()
@ -495,6 +532,38 @@ def copy():
displayStatus(STATUS_MESSAGE)
mainwin.getch()
def searchWin():
global STATUS_MESSAGE
global TERM_LINES
global TERM_COLS
global SQUERY
global ITEM_CURSOR
global GLOBAL_CURSOR
searchWin = curses.newwin(3, 49, int(TERM_LINES/2), int(TERM_COLS/2))
searchWin.border()
searchWin.addstr(0, 1, "Search service")
winPosY = searchWin.getbegyx()[0]
winPosX = searchWin.getbegyx()[1]
swin = curses.newwin(1, 45, winPosY + 1, winPosX + 1)
sbox = Textbox(swin)
STATUS_MESSAGE = "Type in service name"
displayStatus(STATUS_MESSAGE)
searchWin.refresh()
sbox.edit()
SQUERY = sbox.gather()
l = len(SQUERY)
SQUERY = SQUERY[:l-1]
ITEM_CURSOR = 0
GLOBAL_CURSOR = 0
def noMatch():
global SQUERY
nomwin = curses.newwin(3, 40, int(TERM_LINES/2), int(TERM_COLS/2))
nomwin.border()
nomwin.addstr(1, 1, "No passwords match the search criteria")
SQUERY = ''
nomwin.getch()
# Cleans the windows

@ -3,10 +3,10 @@
#!/usr/bin/env bash
version="1.04"
version="1.2"
echo "Steelbox V$version, Copyright (C) 2022 Kamal Curi"
echo "Read the manual in doc/ for the GPL2 License's details."
echo "Steelbox comes with ABSOLUTELY NO WARRANTY; For license details, read the manual in doc/"
if [ -f $HOME/.pasfile.csv.gpg ]

Loading…
Cancel
Save