11c606a6 (kx 2023-04-11 01:18:34 +0300 1)
11c606a6 (kx 2023-04-11 01:18:34 +0300 2) /**********************************************************************
11c606a6 (kx 2023-04-11 01:18:34 +0300 3)
11c606a6 (kx 2023-04-11 01:18:34 +0300 4) Copyright 2019 Andrey V.Kosteltsev
11c606a6 (kx 2023-04-11 01:18:34 +0300 5)
11c606a6 (kx 2023-04-11 01:18:34 +0300 6) Licensed under the Radix.pro License, Version 1.0 (the "License");
11c606a6 (kx 2023-04-11 01:18:34 +0300 7) you may not use this file except in compliance with the License.
11c606a6 (kx 2023-04-11 01:18:34 +0300 8) You may obtain a copy of the License at
11c606a6 (kx 2023-04-11 01:18:34 +0300 9)
11c606a6 (kx 2023-04-11 01:18:34 +0300 10) https://radix.pro/licenses/LICENSE-1.0-en_US.txt
11c606a6 (kx 2023-04-11 01:18:34 +0300 11)
11c606a6 (kx 2023-04-11 01:18:34 +0300 12) Unless required by applicable law or agreed to in writing, software
11c606a6 (kx 2023-04-11 01:18:34 +0300 13) distributed under the License is distributed on an "AS IS" BASIS,
11c606a6 (kx 2023-04-11 01:18:34 +0300 14) WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
11c606a6 (kx 2023-04-11 01:18:34 +0300 15) implied.
11c606a6 (kx 2023-04-11 01:18:34 +0300 16)
11c606a6 (kx 2023-04-11 01:18:34 +0300 17) **********************************************************************/
11c606a6 (kx 2023-04-11 01:18:34 +0300 18)
11c606a6 (kx 2023-04-11 01:18:34 +0300 19) #include <stdlib.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 20) #include <stdio.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 21) #include <linux/limits.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 22) #include <strings.h> /* index(3) */
11c606a6 (kx 2023-04-11 01:18:34 +0300 23)
11c606a6 (kx 2023-04-11 01:18:34 +0300 24) #include <dialog.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 25) #include <dlg_colors.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 26) #include <dlg_keys.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 27)
11c606a6 (kx 2023-04-11 01:18:34 +0300 28) #include <msglog.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 29) #include <wrapper.h>
11c606a6 (kx 2023-04-11 01:18:34 +0300 30)
11c606a6 (kx 2023-04-11 01:18:34 +0300 31) /*************************************************
11c606a6 (kx 2023-04-11 01:18:34 +0300 32) Ruler: 68 characters + 2 spaces left and right:
11c606a6 (kx 2023-04-11 01:18:34 +0300 33)
11c606a6 (kx 2023-04-11 01:18:34 +0300 34) | ----handy-ruler----------------------------------------------------- | */
11c606a6 (kx 2023-04-11 01:18:34 +0300 35)
11c606a6 (kx 2023-04-11 01:18:34 +0300 36) int info_box( const char *title, const char *message, int height, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 37) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 38) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 39)
11c606a6 (kx 2023-04-11 01:18:34 +0300 40) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 41)
11c606a6 (kx 2023-04-11 01:18:34 +0300 42) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 43)
11c606a6 (kx 2023-04-11 01:18:34 +0300 44) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 45)
11c606a6 (kx 2023-04-11 01:18:34 +0300 46) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 47) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 48) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 49) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 50)
11c606a6 (kx 2023-04-11 01:18:34 +0300 51) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 52)
11c606a6 (kx 2023-04-11 01:18:34 +0300 53) status = dialog_msgbox( title, message, height, 74, 0 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 54)
11c606a6 (kx 2023-04-11 01:18:34 +0300 55) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 56) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 57)
11c606a6 (kx 2023-04-11 01:18:34 +0300 58) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 59) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 60) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 61) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 62) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 63) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 64)
11c606a6 (kx 2023-04-11 01:18:34 +0300 65) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 66) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 67)
11c606a6 (kx 2023-04-11 01:18:34 +0300 68) int info_pkg_box( const char *title, const char *pkgname, const char *pkgver, const char *priority,
11c606a6 (kx 2023-04-11 01:18:34 +0300 69) const char *message, int height, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 70) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 71) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 72)
11c606a6 (kx 2023-04-11 01:18:34 +0300 73) char *tmp = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 74)
11c606a6 (kx 2023-04-11 01:18:34 +0300 75) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 76)
11c606a6 (kx 2023-04-11 01:18:34 +0300 77) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 78)
11c606a6 (kx 2023-04-11 01:18:34 +0300 79) tmp = (char *)malloc( (size_t)PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 80) if( !tmp ) { FATAL_ERROR( "Cannot allocate memory" ); }
11c606a6 (kx 2023-04-11 01:18:34 +0300 81) bzero( (void *)tmp, PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 82)
11c606a6 (kx 2023-04-11 01:18:34 +0300 83) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 84)
11c606a6 (kx 2023-04-11 01:18:34 +0300 85) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 86) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 87) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 88) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 89)
11c606a6 (kx 2023-04-11 01:18:34 +0300 90) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 91)
11c606a6 (kx 2023-04-11 01:18:34 +0300 92) if( pkgver )
11c606a6 (kx 2023-04-11 01:18:34 +0300 93) (void)sprintf( &tmp[0], " %s \\Z1%s-%s\\Zn ", title, pkgname, pkgver );
11c606a6 (kx 2023-04-11 01:18:34 +0300 94) else
11c606a6 (kx 2023-04-11 01:18:34 +0300 95) (void)sprintf( &tmp[0], " %s \\Z1%s\\Zn ",title, pkgname );
11c606a6 (kx 2023-04-11 01:18:34 +0300 96)
11c606a6 (kx 2023-04-11 01:18:34 +0300 97) if( priority )
11c606a6 (kx 2023-04-11 01:18:34 +0300 98) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 99) (void)strcat( &tmp[0], "[" );
11c606a6 (kx 2023-04-11 01:18:34 +0300 100) (void)strcat( &tmp[0], priority );
11c606a6 (kx 2023-04-11 01:18:34 +0300 101) (void)strcat( &tmp[0], "] " );
11c606a6 (kx 2023-04-11 01:18:34 +0300 102) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 103) status = dialog_msgbox( (const char *)&tmp[0], message, height, 74, 0 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 104)
11c606a6 (kx 2023-04-11 01:18:34 +0300 105) free( tmp );
11c606a6 (kx 2023-04-11 01:18:34 +0300 106)
11c606a6 (kx 2023-04-11 01:18:34 +0300 107) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 108) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 109)
11c606a6 (kx 2023-04-11 01:18:34 +0300 110) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 111) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 112) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 113) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 114) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 115) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 116)
11c606a6 (kx 2023-04-11 01:18:34 +0300 117) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 118) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 119)
11c606a6 (kx 2023-04-11 01:18:34 +0300 120) int ask_install_box( const char *title, const char *pkgname, const char *pkgver, const char *priority,
11c606a6 (kx 2023-04-11 01:18:34 +0300 121) const char *message, int height, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 122) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 123) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 124)
11c606a6 (kx 2023-04-11 01:18:34 +0300 125) char *tmp = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 126)
11c606a6 (kx 2023-04-11 01:18:34 +0300 127) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 128)
11c606a6 (kx 2023-04-11 01:18:34 +0300 129) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 130)
11c606a6 (kx 2023-04-11 01:18:34 +0300 131) tmp = (char *)malloc( (size_t)PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 132) if( !tmp ) { FATAL_ERROR( "Cannot allocate memory" ); }
11c606a6 (kx 2023-04-11 01:18:34 +0300 133) bzero( (void *)tmp, PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 134)
11c606a6 (kx 2023-04-11 01:18:34 +0300 135) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 136)
11c606a6 (kx 2023-04-11 01:18:34 +0300 137) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 138) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 139) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 140) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 141)
11c606a6 (kx 2023-04-11 01:18:34 +0300 142) dialog_vars.yes_label = "Install";
11c606a6 (kx 2023-04-11 01:18:34 +0300 143) dialog_vars.no_label = "Cancel";
11c606a6 (kx 2023-04-11 01:18:34 +0300 144)
11c606a6 (kx 2023-04-11 01:18:34 +0300 145) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 146)
11c606a6 (kx 2023-04-11 01:18:34 +0300 147) (void)sprintf( &tmp[0],
11c606a6 (kx 2023-04-11 01:18:34 +0300 148) " %s \\Z1%s-%s\\Zn [%s] ",
11c606a6 (kx 2023-04-11 01:18:34 +0300 149) title, pkgname, pkgver, priority );
11c606a6 (kx 2023-04-11 01:18:34 +0300 150) status = dialog_yesno( (const char *)&tmp[0], message, height, 74 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 151)
11c606a6 (kx 2023-04-11 01:18:34 +0300 152) free( tmp );
11c606a6 (kx 2023-04-11 01:18:34 +0300 153)
11c606a6 (kx 2023-04-11 01:18:34 +0300 154) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 155) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 156)
11c606a6 (kx 2023-04-11 01:18:34 +0300 157) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 158) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 159) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 160) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 161) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 162) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 163)
11c606a6 (kx 2023-04-11 01:18:34 +0300 164) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 165) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 166)
11c606a6 (kx 2023-04-11 01:18:34 +0300 167) int ask_remove_box( const char *title, const char *pkgname, const char *pkgver,
11c606a6 (kx 2023-04-11 01:18:34 +0300 168) const char *message, int height, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 169) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 170) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 171)
11c606a6 (kx 2023-04-11 01:18:34 +0300 172) char *tmp = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 173)
11c606a6 (kx 2023-04-11 01:18:34 +0300 174) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 175)
11c606a6 (kx 2023-04-11 01:18:34 +0300 176) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 177)
11c606a6 (kx 2023-04-11 01:18:34 +0300 178) tmp = (char *)malloc( (size_t)PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 179) if( !tmp ) { FATAL_ERROR( "Cannot allocate memory" ); }
11c606a6 (kx 2023-04-11 01:18:34 +0300 180) bzero( (void *)tmp, PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 181)
11c606a6 (kx 2023-04-11 01:18:34 +0300 182) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 183)
11c606a6 (kx 2023-04-11 01:18:34 +0300 184) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 185) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 186) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 187) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 188)
11c606a6 (kx 2023-04-11 01:18:34 +0300 189) dialog_vars.yes_label = "Remove";
11c606a6 (kx 2023-04-11 01:18:34 +0300 190) dialog_vars.no_label = "Cancel";
11c606a6 (kx 2023-04-11 01:18:34 +0300 191)
11c606a6 (kx 2023-04-11 01:18:34 +0300 192) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 193)
11c606a6 (kx 2023-04-11 01:18:34 +0300 194) (void)sprintf( &tmp[0],
11c606a6 (kx 2023-04-11 01:18:34 +0300 195) " %s \\Z1%s-%s\\Zn ",
11c606a6 (kx 2023-04-11 01:18:34 +0300 196) title, pkgname, pkgver );
11c606a6 (kx 2023-04-11 01:18:34 +0300 197) status = dialog_yesno( (const char *)&tmp[0], message, height, 74 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 198)
11c606a6 (kx 2023-04-11 01:18:34 +0300 199) free( tmp );
11c606a6 (kx 2023-04-11 01:18:34 +0300 200)
11c606a6 (kx 2023-04-11 01:18:34 +0300 201) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 202) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 203)
11c606a6 (kx 2023-04-11 01:18:34 +0300 204) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 205) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 206) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 207) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 208) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 209) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 210)
11c606a6 (kx 2023-04-11 01:18:34 +0300 211) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 212) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 213)
11c606a6 (kx 2023-04-11 01:18:34 +0300 214) int ask_reinstall_box( const char *title, const char *pkgname, const char *pkgver,
11c606a6 (kx 2023-04-11 01:18:34 +0300 215) const char *message, int height, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 216) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 217) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 218)
11c606a6 (kx 2023-04-11 01:18:34 +0300 219) char *tmp = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 220)
11c606a6 (kx 2023-04-11 01:18:34 +0300 221) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 222)
11c606a6 (kx 2023-04-11 01:18:34 +0300 223) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 224)
11c606a6 (kx 2023-04-11 01:18:34 +0300 225) tmp = (char *)malloc( (size_t)PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 226) if( !tmp ) { FATAL_ERROR( "Cannot allocate memory" ); }
11c606a6 (kx 2023-04-11 01:18:34 +0300 227) bzero( (void *)tmp, PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 228)
11c606a6 (kx 2023-04-11 01:18:34 +0300 229) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 230)
11c606a6 (kx 2023-04-11 01:18:34 +0300 231) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 232) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 233) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 234) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 235)
11c606a6 (kx 2023-04-11 01:18:34 +0300 236) dialog_vars.yes_label = "Re-install";
11c606a6 (kx 2023-04-11 01:18:34 +0300 237) dialog_vars.no_label = "Cancel";
11c606a6 (kx 2023-04-11 01:18:34 +0300 238)
11c606a6 (kx 2023-04-11 01:18:34 +0300 239) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 240)
11c606a6 (kx 2023-04-11 01:18:34 +0300 241) (void)sprintf( &tmp[0],
11c606a6 (kx 2023-04-11 01:18:34 +0300 242) " %s \\Z1%s-%s\\Zn ",
11c606a6 (kx 2023-04-11 01:18:34 +0300 243) title, pkgname, pkgver );
11c606a6 (kx 2023-04-11 01:18:34 +0300 244) status = dialog_yesno( (const char *)&tmp[0], message, height, 74 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 245)
11c606a6 (kx 2023-04-11 01:18:34 +0300 246) free( tmp );
11c606a6 (kx 2023-04-11 01:18:34 +0300 247)
11c606a6 (kx 2023-04-11 01:18:34 +0300 248) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 249) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 250)
11c606a6 (kx 2023-04-11 01:18:34 +0300 251) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 252) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 253) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 254) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 255) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 256) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 257)
11c606a6 (kx 2023-04-11 01:18:34 +0300 258) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 259) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 260)
11c606a6 (kx 2023-04-11 01:18:34 +0300 261) int ask_update_box( const char *title, const char *pkgname, const char *pkgver, const char *priority,
11c606a6 (kx 2023-04-11 01:18:34 +0300 262) const char *message, int height, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 263) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 264) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 265)
11c606a6 (kx 2023-04-11 01:18:34 +0300 266) char *tmp = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 267)
11c606a6 (kx 2023-04-11 01:18:34 +0300 268) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 269)
11c606a6 (kx 2023-04-11 01:18:34 +0300 270) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 271)
11c606a6 (kx 2023-04-11 01:18:34 +0300 272) tmp = (char *)malloc( (size_t)PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 273) if( !tmp ) { FATAL_ERROR( "Cannot allocate memory" ); }
11c606a6 (kx 2023-04-11 01:18:34 +0300 274) bzero( (void *)tmp, PATH_MAX );
11c606a6 (kx 2023-04-11 01:18:34 +0300 275)
11c606a6 (kx 2023-04-11 01:18:34 +0300 276) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 277)
11c606a6 (kx 2023-04-11 01:18:34 +0300 278) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 279) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 280) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 281) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 282)
11c606a6 (kx 2023-04-11 01:18:34 +0300 283) dialog_vars.yes_label = "Update";
11c606a6 (kx 2023-04-11 01:18:34 +0300 284) dialog_vars.no_label = "Cancel";
11c606a6 (kx 2023-04-11 01:18:34 +0300 285)
11c606a6 (kx 2023-04-11 01:18:34 +0300 286) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 287)
11c606a6 (kx 2023-04-11 01:18:34 +0300 288) (void)sprintf( &tmp[0],
11c606a6 (kx 2023-04-11 01:18:34 +0300 289) " %s \\Z1%s-%s\\Zn [%s] ",
11c606a6 (kx 2023-04-11 01:18:34 +0300 290) title, pkgname, pkgver, priority );
11c606a6 (kx 2023-04-11 01:18:34 +0300 291) status = dialog_yesno( (const char *)&tmp[0], message, height, 74 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 292)
11c606a6 (kx 2023-04-11 01:18:34 +0300 293) free( tmp );
11c606a6 (kx 2023-04-11 01:18:34 +0300 294)
11c606a6 (kx 2023-04-11 01:18:34 +0300 295) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 296) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 297)
11c606a6 (kx 2023-04-11 01:18:34 +0300 298) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 299) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 300) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 301) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 302) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 303) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 304)
11c606a6 (kx 2023-04-11 01:18:34 +0300 305) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 306) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 307)
11c606a6 (kx 2023-04-11 01:18:34 +0300 308) int select_packages_box( DIALOG_LISTITEM *items, int items_num, int sleep, int clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 309) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 310) int status = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 311)
11c606a6 (kx 2023-04-11 01:18:34 +0300 312) int current = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 313) const char *states = " *";
11c606a6 (kx 2023-04-11 01:18:34 +0300 314) FILE *in = stdin, *out = stdout;
11c606a6 (kx 2023-04-11 01:18:34 +0300 315)
11c606a6 (kx 2023-04-11 01:18:34 +0300 316) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 317)
11c606a6 (kx 2023-04-11 01:18:34 +0300 318) init_dialog( in, out );
11c606a6 (kx 2023-04-11 01:18:34 +0300 319)
11c606a6 (kx 2023-04-11 01:18:34 +0300 320) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 321) dialog_vars.column_separator = " ";
11c606a6 (kx 2023-04-11 01:18:34 +0300 322) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 323) if( clear_screen ) dialog_vars.dlg_clear_screen = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 324) dialog_vars.sleep_secs = sleep;
11c606a6 (kx 2023-04-11 01:18:34 +0300 325)
11c606a6 (kx 2023-04-11 01:18:34 +0300 326) dialog_vars.yes_label = "Install";
11c606a6 (kx 2023-04-11 01:18:34 +0300 327) dialog_vars.no_label = "Cancel";
11c606a6 (kx 2023-04-11 01:18:34 +0300 328)
11c606a6 (kx 2023-04-11 01:18:34 +0300 329) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 330)
11c606a6 (kx 2023-04-11 01:18:34 +0300 331) status = dlg_checklist( " \\Z0SELECT PACKAGES TO INSTALL\\Zn ",
11c606a6 (kx 2023-04-11 01:18:34 +0300 332) "\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 333) " Please confirm the packages you wish to install. Use the UP/DOWN\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 334) " keys to scroll through the list, and the SPACE key to deselect any\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 335) " items you don't want to install.\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 336) "\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 337) " Press ENTER when you are done.\n",
11c606a6 (kx 2023-04-11 01:18:34 +0300 338) 19, 74 /* min 73 */, 7, items_num, items, states, 1, ¤t );
11c606a6 (kx 2023-04-11 01:18:34 +0300 339)
11c606a6 (kx 2023-04-11 01:18:34 +0300 340) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 341) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 342)
11c606a6 (kx 2023-04-11 01:18:34 +0300 343) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 344) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 345) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 346) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 347) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 348) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 349)
11c606a6 (kx 2023-04-11 01:18:34 +0300 350) return status;
11c606a6 (kx 2023-04-11 01:18:34 +0300 351) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 352)
11c606a6 (kx 2023-04-11 01:18:34 +0300 353)
11c606a6 (kx 2023-04-11 01:18:34 +0300 354)
11c606a6 (kx 2023-04-11 01:18:34 +0300 355) void show_install_dlg_progress( int percent )
11c606a6 (kx 2023-04-11 01:18:34 +0300 356) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 357) static void *gauge = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 358)
11c606a6 (kx 2023-04-11 01:18:34 +0300 359)
11c606a6 (kx 2023-04-11 01:18:34 +0300 360) if( percent < 1 )
11c606a6 (kx 2023-04-11 01:18:34 +0300 361) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 362) if( gauge ) return; /* only one instance of progress box */
11c606a6 (kx 2023-04-11 01:18:34 +0300 363)
11c606a6 (kx 2023-04-11 01:18:34 +0300 364) bzero( (void *)&dialog_vars, sizeof(DIALOG_VARS) );
11c606a6 (kx 2023-04-11 01:18:34 +0300 365)
11c606a6 (kx 2023-04-11 01:18:34 +0300 366) init_dialog( stdin, stdout );
11c606a6 (kx 2023-04-11 01:18:34 +0300 367)
11c606a6 (kx 2023-04-11 01:18:34 +0300 368) dialog_vars.colors = 1;
11c606a6 (kx 2023-04-11 01:18:34 +0300 369) dialog_vars.backtitle = "\\Z7Radix\\Zn \\Z1cross\\Zn \\Z7Linux\\Zn";
11c606a6 (kx 2023-04-11 01:18:34 +0300 370) dialog_vars.dlg_clear_screen = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 371) dialog_vars.sleep_secs = 0;
11c606a6 (kx 2023-04-11 01:18:34 +0300 372)
11c606a6 (kx 2023-04-11 01:18:34 +0300 373) dlg_put_backtitle();
11c606a6 (kx 2023-04-11 01:18:34 +0300 374) gauge = dlg_allocate_gauge( " \\Z0INSTALL PACKAGES\\Zn ",
11c606a6 (kx 2023-04-11 01:18:34 +0300 375) "\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 376) " Please wait for install all specified packages:\n"
11c606a6 (kx 2023-04-11 01:18:34 +0300 377) "\n\n", 8, 74, 0 );
11c606a6 (kx 2023-04-11 01:18:34 +0300 378) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 379)
11c606a6 (kx 2023-04-11 01:18:34 +0300 380) if( gauge )
11c606a6 (kx 2023-04-11 01:18:34 +0300 381) dlg_update_gauge( gauge, percent );
11c606a6 (kx 2023-04-11 01:18:34 +0300 382)
11c606a6 (kx 2023-04-11 01:18:34 +0300 383) if( percent > 99 )
11c606a6 (kx 2023-04-11 01:18:34 +0300 384) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 385) if( gauge )
11c606a6 (kx 2023-04-11 01:18:34 +0300 386) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 387) dlg_free_gauge( gauge );
11c606a6 (kx 2023-04-11 01:18:34 +0300 388) gauge = NULL;
11c606a6 (kx 2023-04-11 01:18:34 +0300 389)
11c606a6 (kx 2023-04-11 01:18:34 +0300 390) if( dialog_vars.sleep_secs )
11c606a6 (kx 2023-04-11 01:18:34 +0300 391) (void)napms(dialog_vars.sleep_secs * 1000);
11c606a6 (kx 2023-04-11 01:18:34 +0300 392)
11c606a6 (kx 2023-04-11 01:18:34 +0300 393) if( dialog_vars.dlg_clear_screen )
11c606a6 (kx 2023-04-11 01:18:34 +0300 394) {
11c606a6 (kx 2023-04-11 01:18:34 +0300 395) dlg_clear();
11c606a6 (kx 2023-04-11 01:18:34 +0300 396) (void)refresh();
11c606a6 (kx 2023-04-11 01:18:34 +0300 397) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 398) end_dialog();
11c606a6 (kx 2023-04-11 01:18:34 +0300 399) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 400) }
11c606a6 (kx 2023-04-11 01:18:34 +0300 401) }