summaryrefslogtreecommitdiffstats
path: root/src/gui.h
blob: 923c85e4c6671b2f47baadef60903400ab51082c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
 *  gui.h: An ncurses GUI for nwipe.
 *
 *  Copyright Darik Horn <dajhorn-dban@vanadac.com>.
 *
 *  Modifications to original dwipe Copyright Andy Beverley <andy@andybev.com>
 *
 *  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, version 2.
 *
 *  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.
 *
 *  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.
 *
 */

#ifndef GUI_H_
#define GUI_H_

void nwipe_gui_free( void );  // Stop the GUI.
void nwipe_gui_init( void );  // Start the GUI.
void nwipe_gui_create_main_window( void );  // Create the main window
void nwipe_gui_create_header_window( void );  // Create the header window
void nwipe_gui_create_footer_window( const char* );  // Create the footer window and write text
void nwipe_gui_create_options_window( void );  // Create the options window
void nwipe_gui_create_stats_window( void );  // Create the stats window
void nwipe_gui_create_all_windows_on_terminal_resize(
    int force_creation,
    const char* footer_text );  // If terminal is resized recreate all windows

/**
 * The primary user interface.  Allows the user to
 * change options and specify the devices to be wiped.
 *
 * @parameter  count       The number of contexts in the array.
 * @parameter  c           An array of device contexts.
 *
 * @modifies   c[].select  Sets the select flag according to user input.
 * @modifies   options     Sets program options according to to user input.
 *
 */
void nwipe_gui_select( int count, nwipe_context_t** c );  // Select devices to wipe.
void* nwipe_gui_status( void* ptr );  // Update operation progress.
void nwipe_gui_method( void );  // Change the method option.
void nwipe_gui_options( void );  // Update the options window.
void nwipe_gui_prng( void );  // Change the prng option.
void nwipe_gui_rounds( void );  // Change the rounds option.
void nwipe_gui_verify( void );  // Change the verify option.
void nwipe_gui_noblank( void );  // Change the noblank option.
void nwipe_gui_config( void );  // Change the nwipe settings
void nwipe_gui_edit_organisation( void );  // Edit organisation performing the erasure
void nwipe_gui_organisation_business_name( const char* );  // Edit business name performing erase
void nwipe_gui_organisation_business_address( const char* );  // Edit business address performing erase
void nwipe_gui_organisation_contact_name( const char* );  // Edit business contact name
void nwipe_gui_organisation_contact_phone( const char* );  // Edit business contact phone
void nwipe_gui_organisation_op_tech_name( const char* );  // Edit the name of the operator/technician
void nwipe_gui_list( int, char* window_title, char**, int* );
void nwipe_gui_add_customer( void );  // Add new customer
void nwipe_gui_add_customer_name( char* );  // Add new customer name
void nwipe_gui_add_customer_address( char* );  // Add new customer address
void nwipe_gui_add_customer_contact_name( char* );  // Add new customer contact name
void nwipe_gui_add_customer_contact_phone( char* );  // Add new customer contact phone
int nwipe_gui_yes_no_footer( void );  // Change footer to yes no

/** nwipe_gui_preview_org_customer( int )
 * Display a editable preview of organisation, customer and date/time
 *
 * @param int mode 0 = use prior to drive selection
 *                 1 = use in config menus
 * The different modes simply change the text in the footer menu and in the case
 * of mode 0 enable the A key which means accept & display drive selection.
 */
void nwipe_gui_preview_org_customer( int );  // Preview window  for wipe organisation and customer

void nwipe_gui_set_system_year( void );  // Set the systems current year
void nwipe_gui_set_system_month( void );  // Set the systems month
void nwipe_gui_set_system_day( void );  // Set the system day of the month
void nwipe_gui_set_system_hour( void );  // Set the system hour
void nwipe_gui_set_system_minute( void );  // Set the system minute

/**
 * Truncate a string based on start position and terminal width
 *
 * @parameter wcols         Width of window, obtained from getmaxyx(..)
 * @parameter start_column  Start column where the string starts
 * @parameter input_string  The string to be truncated if necessary
 * @parameter ouput_string  The possibly truncated string
 * @parameter ouput_string_length   Max length of output string
 * @Return returns a pointer to the output string
 */
char* str_truncate( int, int, const char*, char*, int );  // Truncate string based on start column and terminal width

/**
 * Set system date and time
 *
 *  @parameter void
 *  @Return void
 */
void nwipe_gui_set_date_time( void );

int spinner( nwipe_context_t** ptr, int );  // Return the next spinner character
void temp1_flash( nwipe_context_t* );  // toggles term1_flash_status, which flashes the temperature

/**
 * If the current drive temperature is available, print it to the GUI.
 * This function determines if the drive temperature limits are specified &
 * if so, whether the temperature should be printed as white text on blue if the
 * drive is operating within it's temperature specification or red text on
 * blue if the drive has exceeded the critical high temperature or black on
 * blue if the drive has dropped below the drives minimum temperature specification.
 * @param pointer to the drive context
 */
void wprintw_temperature( nwipe_context_t* );

int compute_stats( void* ptr );
void nwipe_update_speedring( nwipe_speedring_t* speedring, u64 speedring_done, time_t speedring_now );

#define NOMENCLATURE_RESULT_STR_SIZE 8

/* Note Do not change unless you understand how this value affects keyboard response and screen refresh when
 * the drive selection screen is displayed. (prior to wipe starting). */
#define GETCH_BLOCK_MS 250 /* millisecond block time for getch() */

/* Note The value of 1 (100ms) is the ideal speed for screen refresh during a wipe, a value of 2 is noticeably slower,
 * don't change unless you understand how this value affects keyboard responsiveness and speed of screen stats/spinner
 * updating */
#define GETCH_GUI_STATS_UPDATE_MS 1 /* 1 * 100 = 1/10/sec = millisecond block time for gui stats screen updates */

#define FIELD_LENGTH 256

#define MAX_TITLE_LENGTH 76

#define YES 1
#define NO 0

#define SHOWING_PRIOR_TO_DRIVE_SELECTION 0
#define SHOWING_IN_CONFIG_MENUS 1

#endif /* GUI_H_ */