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

📄 initgui.c

📁 一个很好的SDL建立应用程序界面的例子
💻 C
📖 第 1 页 / 共 4 页
字号:
/* * GUI interface for Picstart Plus programmer * Copyright (C) 2004 by Jeffery L. Post * theposts<AT>pacbell<DOT>net * * initgui.c * * Version 0.0.8 - 07/23/04 * *	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; either version 2 of the License, or *	(at your option) any later version. * *	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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */#include	<stdio.h>#include	<stdlib.h>#include	<malloc.h>#include	<string.h>#include	<ctype.h>#include <unistd.h>#include	<fcntl.h>#include	<signal.h>#include	<sys/stat.h>#include	"picdev.h"#include	"widgets.h"#include	"gui.h"#include	"fileselect.h"#include	"deviceselect.h"///////////////// Code///////////////////////////////////////////////////// Initialize all the widgets.////////////////////////////////////void initGUI(void){	int		i;	BUTTON	*btn = NULL;	picProgramData = (unsigned char *) malloc(PIC_PROGRAM_SIZE);	if (!picProgramData)	{		printf("Can't allocate space for PIC program data!\n");		exit(1);	}	picProgramTemp = (unsigned char *) malloc(PIC_PROGRAM_SIZE);	if (!picProgramTemp)	{		printf("Can't allocate space for PIC program temp buffer!\n");		exit(1);	}	picDataBuffer = (unsigned char *) malloc(MAX_EEPROM_DATA_SIZE);	if (!picDataBuffer)	{		printf("Can't allocate space for PIC data memory buffer!\n");		exit(1);	}	picDataTemp = (unsigned char *) malloc(MAX_EEPROM_DATA_SIZE);	if (!picDataTemp)	{		printf("Can't allocate space for PIC data memory temp buffer!\n");		exit(1);	}	fileStr[0] = '\0';	src[0] = '\0';	fileName[0] = '\0';	strcpy(fileExt, ".hex");	menu1 = newMenu(0, 0, SCREEN_PIXEL_WIDTH, 16, black, yellow, lyellow, dyellow);	btn = newButton(0, 0, 0, 0, 0, 0, "File ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &fileButtonCB);	addButton(menu1, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Serial Port ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &portButtonCB);	addButton(menu1, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Enable Programmer ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &enableButtonCB);	addButton(menu1, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Device ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &selectDeviceCB);	addButton(menu1, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Read ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &readButtonCB);	addButton(menu1, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Help ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &helpButtonCB);	addButton(menu1, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " About ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &aboutButtonCB);	addButton(menu1, btn, FALSE);	commDbgBox = newCheckBox(0, 0, 0, 0, 0, 0, "Log", &commdbg);	attachCallBack(commDbgBox, SDL_MOUSEBUTTONDOWN, &logBoxCB);	addCheckBox(menu1, commDbgBox, FALSE);	showWidget(menu1);	menu2 = newMenu(0, ROW_HEIGHT - 1, SCREEN_PIXEL_WIDTH, 16, black, yellow, lyellow, dyellow);	btn = newButton(0, 0, 0, 0, 0, 0, "Write ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &programButtonCB);	addButton(menu2, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Erase ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &eraseButtonCB);	addButton(menu2, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Verify ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &verifyButtonCB);	addButton(menu2, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Blank Check ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &blankButtonCB);	addButton(menu2, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Edit cfg bits ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &configEditCB);	addButton(menu2, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Edit ID ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &IdEditCB);	addButton(menu2, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Disasm ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &disasmCB);	addButton(menu2, btn, FALSE);	ISPBox = newCheckBox(0, 0, 0, 0, 0, 0, "ISP", &ISPprog);	attachCallBack(ISPBox, SDL_MOUSEBUTTONDOWN, &ispBoxCB);	addCheckBox(menu2, ISPBox, FALSE);	showWidget(menu2);	i = 2;	picstartName = newMenu(0, ROW_HEIGHT * i - (i - 1), SCREEN_PIXEL_WIDTH, 16, black, gray, lgray, black);	addLabel(picstartName, newLabel(0, 0, 0, 0, 0, 0, "Programmer: "), FALSE);	strcpy(picFWversionString, " Not connected ");	picstartVersion = newLabel(0, 0, 0, 0, 0, 0, (char *) &picFWversionString);	picstartVersion->w = SCREEN_PIXEL_WIDTH - 14 * FONT_WIDTH - 2;	addLabel(picstartName, picstartVersion, FALSE);	showWidget(picstartName);	i++;	filename = newMenu(0, ROW_HEIGHT * i - (i - 1), SCREEN_PIXEL_WIDTH, 16, black, gray, lgray, black);	addLabel(filename, newLabel(0, 0, 0, 0, 0, 0, "File: "), FALSE);	filelabel = newLabel(0, 0, 0, 0, 0, 0, " No file selected, use File\xc4\x1aOpen to select a file ");	strcpy(programFileStr, filelabel->text);	strcpy(dataFileStr, filelabel->text);	filelabel->w = SCREEN_PIXEL_WIDTH - 8 * FONT_WIDTH - 2;	addLabel(filename, filelabel, FALSE);	showWidget(filename);	i++;	statusMenu1 = newMenu(0, ROW_HEIGHT * i - (i - 1), SCREEN_PIXEL_WIDTH, 16, black, gray, lgray, black);	addLabel(statusMenu1, newLabel(0, 0, 0, 0, 0, 0, "Port: "), FALSE);	addLabel(statusMenu1, newLabel(0, 0, 0, 0, 0, 0, (char *) &serialPort), FALSE);	addLabel(statusMenu1, newLabel(0, 0, 0, 0, 0, 0, " Device: "), FALSE);	addLabel(statusMenu1, newLabel(0, 0, 0, 0, 0, 0, (char *) &deviceType), FALSE);	showWidget(statusMenu1);	i++;	statusMenu2 = newMenu(0, ROW_HEIGHT * i - (i - 1), SCREEN_PIXEL_WIDTH, 16, black, lgray, white, black);	configTextLabel = newLabel(0, 0, 0, 0, 0, 0, "Configuration bits:");	attachCallBack(configTextLabel, SDL_MOUSEBUTTONDOWN, (void *) &configEditCB);	addLabel(statusMenu2, configTextLabel, FALSE);	configDataLabel = newLabel(0, 0, 0, 0, 0, 0, (char *) &configText);	attachCallBack(configDataLabel, SDL_MOUSEBUTTONDOWN, (void *) &configEditCB);	addLabel(statusMenu2, configDataLabel, FALSE);	i++;	statusMenu3 = newMenu(0, ROW_HEIGHT * i - (i - 1), SCREEN_PIXEL_WIDTH, 16, black, lgray, white, black);	IdTextLabel = newLabel(0, 0, 0, 0, 0, 0, "ID:");	attachCallBack(IdTextLabel, SDL_MOUSEBUTTONDOWN, (void *) &IdEditCB);	addLabel(statusMenu3, IdTextLabel, FALSE);	IdDataLabel = newLabel(0, 0, 0, 0, 0, 0, (char *) &IdText);	attachCallBack(IdDataLabel, SDL_MOUSEBUTTONDOWN, (void *) &IdEditCB);	addLabel(statusMenu3, IdDataLabel, FALSE);	fileMenu = newVMenu(0, FONT_HEIGHT + 4, 0, 0, black, lgray, white, gray);	btn = newButton(0, 0, 0, 0, 0, 0, " Open ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &openButtonCB);	addButton(fileMenu, btn, FALSE);	saveButton = newButton(0, 0, 0, 0, 0, 0, " Save ");	attachCallBack(saveButton, SDL_MOUSEBUTTONDOWN, (void *) &saveButtonCB);	addButton(fileMenu, saveButton, FALSE);	saveAsButton = newButton(0, 0, 0, 0, 0, 0, " Save as ");	attachCallBack(saveAsButton, SDL_MOUSEBUTTONDOWN, (void *) &saveAsButtonCB);	addButton(fileMenu, saveAsButton, FALSE);	saveConfigButton = newButton(0, 0, 0, 0, 0, 0, " Save configuration ");	attachCallBack(saveConfigButton, SDL_MOUSEBUTTONDOWN, (void *) &saveConfigButtonCB);	addButton(fileMenu, saveConfigButton, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Exit ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &exitButtonCB);	addButton(fileMenu, btn, FALSE);	btn = newButton(0, 0, 0, 0, 0, 0, " Close menu ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &closeFileMenuCB);	addButton(fileMenu, btn, TRUE);	saveButton->fg = gray;	portMenu = newVMenu(50, FONT_HEIGHT + 4, 0, 0, black, lgray, white, gray);	btn = newButton(0, 0, 0, 0, 0, 0, " Select serial port ");	attachCallBack(btn, SDL_MOUSEBUTTONDOWN, (void *) &nullCallBack);	addButton(portMenu, btn, TRUE);	btn = newButton(0, 0, 0, 0, 0, 0, " /dev/ttyS0 ");

⌨️ 快捷键说明

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