From 3b4f58dac48132f2571baba2efcdbe98d76b1531 Mon Sep 17 00:00:00 2001 From: superturbocat2001 Date: Wed, 16 Dec 2020 20:10:09 +0000 Subject: [PATCH] TinyHashView 2.5: - Added launch of OpenDialog if the program is launched without parameters. - Macros are used for convenient work with the clipboard git-svn-id: svn://kolibrios.org@8430 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/other/TinyHashView/BUILD_KEX.SH | 2 +- programs/other/TinyHashView/Makefile | 2 +- programs/other/TinyHashView/thashview.c | 51 +++++++++++++++--------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/programs/other/TinyHashView/BUILD_KEX.SH b/programs/other/TinyHashView/BUILD_KEX.SH index 3620a7f775..b99d48c1fa 100644 --- a/programs/other/TinyHashView/BUILD_KEX.SH +++ b/programs/other/TinyHashView/BUILD_KEX.SH @@ -1,2 +1,2 @@ #SHS -/kolibrios/develop/tcc/tcc thashview.c -o thashview -lck -lcryptal +/kolibrios/develop/tcc/tcc thashview.c -o thashview -lck -lcryptal -ldialog diff --git a/programs/other/TinyHashView/Makefile b/programs/other/TinyHashView/Makefile index 98b1e7380d..8a2738b29c 100755 --- a/programs/other/TinyHashView/Makefile +++ b/programs/other/TinyHashView/Makefile @@ -7,7 +7,7 @@ KPACK=kpack SRC=thashview.c CFLAGS=-I $(KTCC_DIR)/libc/include -LIBS = -lck -lcryptal +LIBS = -lck -lcryptal -ldialog all: $(KTCC) $(CFLAGS) $(SRC) $(LIBS) -o $(NAME) diff --git a/programs/other/TinyHashView/thashview.c b/programs/other/TinyHashView/thashview.c index 0986e3f4fb..53268a2589 100644 --- a/programs/other/TinyHashView/thashview.c +++ b/programs/other/TinyHashView/thashview.c @@ -1,5 +1,7 @@ -/*Автор: Логаев Максим(turbocat2001) */ +/* Copyright (C) 2019-2020 Logaev Maxim (turbocat2001), GPLv3 */ + #include +#include #include #include #include @@ -7,14 +9,14 @@ #include #include #include +#include #define TRUE 1; #define FALSE 0; #define MAX_HASH_LEN 65 // Максимальная длина строки #define WINDOW_W 665 -#define VERSION "%s - thashview 2.4" +#define VERSION "%s - thashview 2.5" -typedef unsigned char bool; struct kolibri_system_colors sys_color_table; char hex[]={"abcdefABCDEF1234567890"}; //Для проверки вводимых символов @@ -34,7 +36,6 @@ enum MYCOLORS // GREY = 0x00DDD7CF }; - unsigned int str_pos=0; // Позиция курсора при печати в строке ввода int md5_flag=0, sha1_flag=0, sha256_flag=0; // Флаги показывающие была ли уже рассчитана котрольная сумма в функции check_sum() int edit_box_text_color=BLACK; // Изначальный цвет текста в строке ввода @@ -168,8 +169,8 @@ void sprint_hash(BYTE *hash, char* hash_str, int hash_size) // void redraw_window() //Рисуем окно { - pos_t win_pos = get_mouse_pos(0); //Получаем позицию курсора мыши. sprintf(title,VERSION, filename); // Устанавливаем заголовок окна + pos_t win_pos = get_mouse_pos(0); // Получаем координаты курсора begin_draw(); //Начинаем рисование интерфейса ) sys_create_window(win_pos.x, win_pos.y, WINDOW_W, 150, title, sys_color_table.work_area, 0x14); // Создаём окно. @@ -213,14 +214,13 @@ void paste_to_edit_buffer() // { temp_buff=kol_clip_get(kol_clip_num()-1); memset(edit_box_buff,0,MAX_HASH_LEN); - if(((int)*(temp_buff)>0) && ((int)*(temp_buff+4)==0) && ((int)*(temp_buff+8)==1)) + if(DATA(int, temp_buff,0)>0 && DATA(int,temp_buff,4)==TEXT && DATA(int,temp_buff,8)==CP866) { strncpy(edit_box_buff,temp_buff+12, MAX_HASH_LEN-1); str_pos=strlen(edit_box_buff); notify_show("'Pasted from clipboard!' -I"); edit_box_text_color=BLACK; user_free(temp_buff); - } } } @@ -232,8 +232,8 @@ void copy_to_clipboard(char *text) // { char *temp_buffer=safe_malloc(MAX_HASH_LEN+12); memset(temp_buffer, 0, MAX_HASH_LEN); - *(temp_buffer+4)=0; - *(temp_buffer+8)=1; + DATA(char,temp_buffer,4)=TEXT; + DATA(char,temp_buffer,8)=CP866; strncpy(temp_buffer+12, text, MAX_HASH_LEN-1); kol_clip_set(strlen(text)+12, temp_buffer); notify_show("'Copied to clipboard!' -I"); @@ -325,15 +325,29 @@ void edit_box(oskey_t key) // int main(int argc, char** argv) { - // получаем имя файла - if(argc<2) // Если аргументов нет то сообщаем об этом + if(argc<2) // Если аргументов нет, то запускаем диалог выбора файла { - notify_show("'No file selected!' -E"); - exit(0); + kolibri_dialog_init(); // Инициализация библиотеки + open_dialog* dialog = kolibri_new_open_dialog(OPEN,0, 0, 420, 320); + OpenDialog_init(dialog); + OpenDialog_start(dialog); + if(dialog->status==SUCCESS) // Если файл выбран + { + global_var_init(strlen(dialog->openfile_path)); + strcpy(filename, dialog->openfile_path); + } + else // Если файл не выбран + { + notify_show("'No file selected!' -E"); + exit(0); + } + free(dialog); + } + else + { + global_var_init(strlen(argv[1])); + strcpy(filename, argv[1]); } - - global_var_init(strlen(argv[1])); - strcpy(filename, argv[1]); if(NULL==fopen(filename,"rb")) // Если файла нет или не открывается { @@ -346,11 +360,11 @@ int main(int argc, char** argv) notify_show("'Low screen resolution! Program will not display correctrly!' -W"); } - int gui_event; // Перемная для хранения события + int gui_event; // Переменная для хранения события uint32_t pressed_button = 0; // Код нажатой кнопки в окне get_system_colors(&sys_color_table); - set_event_mask(0xC0000027); // Устанавливаем маску событий + set_event_mask(0xC0000027);// Устанавливаем маску событий do // Цикл обработки событий { gui_event = get_os_event(); // Получаем событие @@ -427,4 +441,5 @@ int main(int argc, char** argv) } } }while(1); + exit(0); }