⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcfilebox.c

📁 用你的语音Modem实现像电话一样通话的程序
💻 C
字号:
#include "bcfilebox.h"BC_FileBox::BC_FileBox(char *display, char *init_directory, char *title, char *caption, int show_all_files, int want_directory) : BC_Window(display, MEGREY, title, 320, 400, 0, 0){	dir = new FileSystem(0);// defeat non existant directories	if(init_directory[0] == 0) sprintf(init_directory, "~");		dir->complete_path(init_directory);	dir->extract_dir(directory, init_directory);	dir->extract_name(filename, init_directory);		strcpy(this->caption, caption);	if(show_all_files) dir->set_show_all();	if(want_directory) dir->set_want_directory();	dir->update(directory);	this->want_directory = want_directory;}BC_FileBox::~BC_FileBox(){	delete dir;	delete listbox;	delete textbox;	delete directory_title;	delete ok;	delete cancel;	if(want_directory) delete usethis;}BC_FileBox::create_objects(){	add_tool(listbox = new BC_FileBoxListBox(this, dir->dir_list, dir->total_files));	add_tool(new BC_Title(10, 5, caption));	add_tool(ok = new BC_FileBoxOK(this));	add_tool(cancel = new BC_FileBoxCancel(this));		if(want_directory)	{		add_tool(textbox = new BC_FileBoxTextBox(this, directory));		add_tool(usethis = new BC_FileBoxUseThis(this));	}	else	add_tool(textbox = new BC_FileBoxTextBox(this, filename));		add_tool(directory_title = new BC_FileBoxDirectory(this, directory));	listbox->activate();}BC_FileBox::ok_event(){	set_done(0);}BC_FileBox::cancel_event(){	set_done(1);}char* BC_FileBox::get_directory(){	return directory;}char* BC_FileBox::get_filename(){	return filename;}BC_FileBox::set_show_all(){	dir->set_show_all();	dir->update(directory);}BC_FileBox::submit_file(char *text){	if(!dir->is_dir(text))	{            // is a directory, change directories		dir->change_dir(text);     // change to it		listbox->set_contents(dir->dir_list, dir->total_files);		directory_title->update(dir->current_dir);		if(dir->current_dir[0]) strcpy(directory, dir->current_dir);		if(want_directory) textbox->update(dir->current_dir);		else textbox->update("");		listbox->reset_query();		return 1;	}	else	{            // not a directory, quit now		if(text[0]) dir->extract_dir(directory, text);     // directory is saved in directory for default updating		dir->complete_path(text);		strcpy(filename, text);          // save complete path in filename		return 0;	}}BC_FileBoxOK::BC_FileBoxOK(BC_FileBox *filebox) : BC_BigButton(10, 370, "OK"){ this->filebox = filebox; }BC_FileBoxOK::handle_event(){	int result = 0;	if(!filebox->submit_file(filebox->textbox->text) && strlen(filebox->textbox->text))	{		result = 1;	}		if(result && !filebox->want_directory)	{		filebox->ok_event();		filebox->set_done(0);	}}BC_FileBoxOK::keypress_event(){	if(get_keypress() == 13) handle_event();}BC_FileBoxUseThis::BC_FileBoxUseThis(BC_FileBox *filebox) : BC_BigButton(100, 370, "Use This"){ this->filebox = filebox; }BC_FileBoxUseThis::handle_event(){	if(filebox->submit_file(filebox->textbox->text) && strlen(filebox->textbox->text))	{		filebox->ok_event();		set_done(0);	}}BC_FileBoxCancel::BC_FileBoxCancel(BC_FileBox *filebox)  : BC_BigButton(200, 370, "Cancel"){ this->filebox = filebox; }BC_FileBoxCancel::handle_event(){// get it saved for default updates	filebox->submit_file(filebox->textbox->text) && strlen(filebox->textbox->text);	filebox->cancel_event();	set_done(1);}BC_FileBoxCancel::keypress_event(){	if(top_level->get_keypress() == ESC) handle_event();}BC_FileBoxTextBox::BC_FileBoxTextBox(BC_FileBox *filebox, char *text) : BC_TextBox(10, 340, 300, text){ this->filebox = filebox; }BC_FileBoxTextBox::handle_event(){}BC_FileBoxDirectory::BC_FileBoxDirectory(BC_FileBox *filebox, char *text) : BC_Title(10, 300, filebox->directory){}BC_FileBoxListBox::BC_FileBoxListBox(BC_FileBox *filebox, char **dir_list, int total_files) : BC_ListBox(10, 30, 300, 250, dir_list, total_files, 0, 0){ this->filebox = filebox; }BC_FileBoxListBox::~BC_FileBoxListBox() {}BC_FileBoxListBox::handle_event(){	if(get_keypress() == ESC)	{		filebox->cancel_event();		set_done(1);	}	else	{		char string[1024];		int result = 0;				get_selection(string);		if(filebox->want_directory)		{			if(filebox->submit_file(string)) result = 0;		}		else		{			if(!filebox->submit_file(string)) result = 1;		}				if(result)		{			filebox->ok_event();			set_done(0);		}	}}BC_FileBoxListBox::selection_changed(){	char string[1024];	get_selection(string);	filebox->textbox->update(string);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -