📄 initgui.c
字号:
/* * 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 + -