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

📄 bcsubmenu.c

📁 用你的语音Modem实现像电话一样通话的程序
💻 C
字号:
#include "bcmenubar.h"// ====================================== submenu popupBC_SubMenuPopup::BC_SubMenuPopup(BC_SubMenu *submenu, ArrayList<BC_SubMenuItem*> *submenuitems, BC_Window *top_level, int color, int x, int y, int w, int h) : BC_Popup(top_level, color, x, y, w, h){	this->submenuitems = submenuitems;	this->submenu = submenu;}BC_SubMenuPopup::~BC_SubMenuPopup(){}BC_SubMenuPopup::draw(){	draw_3d_big(0, 0, w, h, LTCYAN, MECYAN, DKCYAN);	for(int i = 0; i < submenuitems->total; i++)	{		submenuitems->values[i]->draw();	}	flash();}BC_SubMenuPopup::cursor_motion(){	submenu->cursor_motion(cursor_x, cursor_y);}BC_SubMenuPopup::button_press(){	for(int i = 0; i < submenuitems->total; i++)	{		submenuitems->values[i]->button_press();	}	flash();}BC_SubMenuPopup::button_release(){// deletes the popup	submenu->button_release(cursor_x, cursor_y);}// ====================================== submenu objectBC_SubMenu::BC_SubMenu(){	active = 0;	highlighted = 0;	popup_submenu = 0;}BC_SubMenu::~BC_SubMenu(){// objects	for(int i = 0; i < submenuitems.total; i++) delete submenuitems.values[i];// pointers	submenuitems.remove_all();	menuitem->submenu = 0;      // deleted derived submenu	if(popup_submenu) 	{		delete popup_submenu;		popup_submenu = 0;	}}BC_SubMenu::create_objects(BC_MenuItem *menuitem, int x, int y){	this->menuitem = menuitem;	top_level = menuitem->menu->top_level;	subwindow = menuitem->menu->subwindow;  menu_x = x;  menu_y = y;  menubar = menuitem->menu->menubar;}BC_SubMenu::activate(){	menu_x = menuitem->get_width() - 10;		popup_submenu = new BC_SubMenuPopup(this, &submenuitems, top_level, MECYAN, menuitem->menu->popup_menu->x + menu_x, menuitem->menu->popup_menu->y + menu_y, get_width(), get_height());	popup_submenu->draw();		active = 1;}BC_SubMenu::deactivate(){	if(active && popup_submenu)	{		deactivate_items();		delete popup_submenu;		popup_submenu = 0;	}	active = 0;	highlighted = 0;}BC_SubMenu::deactivate_items(){	if(active)	{		for(int i = 0; i < submenuitems.total; i++)		{			submenuitems.values[i]->deactivate();		}	}}BC_SubMenu::add_submenuitem(BC_SubMenuItem* submenuitem){	int y;		if(submenuitems.total == 0)	{		y = 0;	}	else	{		y = submenuitems.values[submenuitems.total - 1]->get_y() + submenuitems.values[submenuitems.total - 1]->get_height();	}	submenuitem->create_objects(this, y);// pointer	submenuitems.append(submenuitem);}BC_SubMenu::remove_submenuitem(BC_SubMenuItem *item){// derived object must be deleted manually	//delete submenuitems.values[submenuitems.total - 1];// pointer only	submenuitems.remove(item);}BC_SubMenu::cursor_left_dispatch(){	if(active) popup_submenu->cursor_left_dispatch();	return 0;}BC_SubMenu::motion_event_dispatch(){	if(active) popup_submenu->motion_event_dispatch();}BC_SubMenu::button_release_dispatch(){//printf("BC_SubMenu::button_release_dispatch %d\n", active);	if(active) popup_submenu->button_release_dispatch();}BC_SubMenu::button_press_dispatch(){	if(active) popup_submenu->button_press_dispatch();}// do here since button release deletes the popupBC_SubMenu::button_release(int cursor_x, int cursor_y){	if((cursor_x > 0 && cursor_x < popup_submenu->w && cursor_y > 0 && cursor_y < popup_submenu->h)) 	{             // inside popup		for(int i = 0; i < submenuitems.total && active; i++)		{			submenuitems.values[i]->button_release();		}	}}BC_SubMenu::cursor_motion(int cursor_x, int cursor_y){	popup_submenu->draw_3d_big(0, 0, popup_submenu->w, popup_submenu->h, LTCYAN, MECYAN, DKCYAN);	for(int i = 0; i < submenuitems.total; i++)	{		submenuitems.values[i]->motion_event_dispatch(cursor_x, cursor_y);	}	if(cursor_x > 0 && cursor_x < popup_submenu->w && cursor_y > 0 && cursor_y < popup_submenu->h) highlighted = 1;		else highlighted = 0;	popup_submenu->flash();}BC_SubMenu::in_submenu(){	if(popup_submenu)	{// submenu exists		if(popup_submenu->cursor_x < 0 || popup_submenu->cursor_x > popup_submenu->w ||			popup_submenu->cursor_y < 0 || popup_submenu->cursor_y > popup_submenu->h)		{// not in the existing submenu			return 0;		}		else// in the existing submenu		return 1;	}	else // no submenu	return 0;}BC_SubMenu::get_text_width(XFontStruct *font, char *text){	return menuitem->get_text_width(font, text);}BC_SubMenu::get_width(){	static int test_w, i, w;	w = 0;		for(i = 0; i < submenuitems.total; i++)	{		if((test_w = submenuitems.values[i]->get_text_width()) > w) w = test_w;	}	return w;}BC_SubMenu::get_checked(){	static int i;	for(i = 0; i < submenuitems.total; i++)	{		if(submenuitems.values[i]->checked) return 1;	}	return 0;}BC_SubMenu::get_height(){	int h = 0;	for(int i = 0; i < submenuitems.total; i++)	{		h += submenuitems.values[i]->get_height();	}	return h;}BC_SubMenu::button_down(){	return menuitem->menu->button_down();}

⌨️ 快捷键说明

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