void ProjectHandle::clearProject(){ emit cleanGl(); emit cleanWindow(); if(map!=NULL){ if(map->data!=NULL){ delete map->data; } delete map; map=NULL; } if(colorMap!=NULL){ delete colorMap; colorMap = NULL; } projName="Default project"; projPath=""; projObjects.clear(); }
int metaconnectcommand (struct connection_t* co, char* inputbuffer, fd_set* read_set) { int inputcount = 0; char** buffer = parse(inputbuffer, &inputcount); /* Resets the terminal to it's original launch settings */ if (!strcmp(buffer[0], RESET)) { /* Reset Terminal */ endwin(); /* Close active sockets */ close(co->LEFT_FACING_SOCKET); close(co->RIGHT_FACING_SOCKET); close(co->LEFT_FACING_SOCKET_LISTENING); cleanWindowUpper(co->OUTGOING_LEFT_WINDOW); cleanWindowUpper(co->INCOMING_LEFT_WINDOW); cleanWindowUpper(co->OUTGOING_RIGHT_WINDOW); cleanWindowUpper(co->INCOMING_RIGHT_WINDOW); cleanWindow(co->OUTGOING_LEFT_WINDOW); cleanWindow(co->INCOMING_LEFT_WINDOW); cleanWindow(co->OUTGOING_RIGHT_WINDOW); cleanWindow(co->INCOMING_RIGHT_WINDOW); cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Instance Reset"); /* Handle initial NO_RIGHT */ if (ORIGINAL_SETTINGS.NO_RIGHT) { putInWindowUpper(co->OUTGOING_RIGHT_WINDOW, "[NO RIGHT]"); putInWindowUpper(co->INCOMING_RIGHT_WINDOW, "[NO RIGHT]"); } /* Handle initial NO_LEFT */ if (ORIGINAL_SETTINGS.NO_LEFT) { putInWindowUpper(co->OUTGOING_LEFT_WINDOW, "[NO LEFT]"); putInWindowUpper(co->INCOMING_LEFT_WINDOW, "[NO LEFT]"); } activate(ORIGINAL_SETTINGS); } /* Puts the left side in passive listening mode */ else if (!strcmp(buffer[0], LISTENL)) { co->LEFT_REMOTE_PORT = 0; if (co->LEFT_FACING_SOCKET != SOCKET_RESET) { guiError ("Left side is already connected. Please drop left side.", *co); free (buffer); return 1; } if (inputcount > 1) { int port = atoi(buffer[1]); if (port < 1 || port > 65535) { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Specified port out of range [1 - 65535]"); free(buffer); return 1; } co->LEFT_LOCAL_PORT = port; establish_passive_left(co, read_set); } else establish_passive_left(co, read_set); co->NO_LEFT = 0; } /* Puts the right side in passive listening mode */ else if (!strcmp(buffer[0], LISTENR)) { co->RIGHT_REMOTE_PORT = 0; if (co->RIGHT_FACING_SOCKET != SOCKET_RESET) { guiError ("Right side is already connected. Please drop right side.", *co); free (buffer); return 1; } if (inputcount > 1) { int port = atoi(buffer[1]); if (port < 1 || port > 65535) { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Specified port out of range [1 - 65535]"); free(buffer); return 1; } co->RIGHT_LOCAL_PORT = port; establish_passive_right(co, read_set); } else establish_passive_right(co, read_set); co->NO_RIGHT = 0; } /* Attempts an active connection on the right side */ else if (!strcmp(buffer[0], CONNECTR)) { if (co->RIGHT_FACING_SOCKET != SOCKET_RESET) { guiError ("Right side is already connected. Please drop right side.", *co); free (buffer); return 1; } if (inputcount > 2) { int port = atoi(buffer[2]); if (port < 1 || port > 65535) { guiError ("Specified port out of range [1 - 65535]", *co); free(buffer); return 1; } co->RIGHT_REMOTE_PORT = port; co->RIGHT_REMOTE_ADDR = ipbydns(buffer[1]); co->RIGHT_REMOTE_DNS = buffer[1]; if (!strcmp(co->RIGHT_REMOTE_DNS, co->RIGHT_REMOTE_ADDR)) co->RIGHT_REMOTE_DNS = NULL; establish_active_right(co, read_set); } else if (inputcount > 1){ co->RIGHT_REMOTE_PORT = DEFAULT_PORT; co->RIGHT_REMOTE_ADDR = ipbydns(buffer[1]); co->RIGHT_REMOTE_DNS = buffer[1]; if (!strcmp(co->RIGHT_REMOTE_DNS, co->RIGHT_REMOTE_ADDR)) co->RIGHT_REMOTE_DNS = NULL; establish_active_right(co, read_set); } else { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Must specify address for active connection attempt."); free(buffer); return 1; } cleanWindowUpper(co->INCOMING_RIGHT_WINDOW); cleanWindowUpper(co->OUTGOING_RIGHT_WINDOW); resetPrompt(co->PROMPT_WINDOW, co->PROMPT, 0); if (co->NO_RIGHT) { co->OUTPUT_DIRECTION = 1; co->NO_RIGHT = 0; } } /* Attempts an active connection on the left side */ else if (!strcmp(buffer[0], CONNECTL)) { if (co->LEFT_FACING_SOCKET != SOCKET_RESET) { guiError ("Left side is already connected. Please drop left side.", *co); free (buffer); return 1; } if (inputcount > 2) { int port = atoi(buffer[2]); if (port < 1 || port > 65535) { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Specified port out of range [1 - 65535]"); free(buffer); return 1; } co->LEFT_REMOTE_PORT = port; co->LEFT_REMOTE_ADDR = ipbydns(buffer[1]); co->LEFT_REMOTE_DNS = buffer[1]; if (!strcmp(co->LEFT_REMOTE_DNS, co->LEFT_REMOTE_ADDR)) co->LEFT_REMOTE_DNS = NULL; establish_active_left(co, read_set); } else if (inputcount > 1){ co->LEFT_REMOTE_PORT = DEFAULT_PORT; co->LEFT_REMOTE_ADDR = ipbydns(buffer[1]); co->LEFT_REMOTE_DNS = buffer[1]; if (!strcmp(co->LEFT_REMOTE_DNS, co->LEFT_REMOTE_ADDR)) co->LEFT_REMOTE_DNS = NULL; establish_active_left(co, read_set); } else { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Must specify address for active connection attempt."); free(buffer); return 1; } cleanWindowUpper(co->INCOMING_LEFT_WINDOW); cleanWindowUpper(co->OUTGOING_LEFT_WINDOW); resetPrompt(co->PROMPT_WINDOW, co->PROMPT, 0); if (co->NO_LEFT) { co->OUTPUT_DIRECTION = 0; co->NO_LEFT = 0; } } /* Reads input from a file and injects it into the current data stream */ else if (!strcmp(buffer[0], READ)) { char temp[100]; if (inputcount > 1) { char readsend[BUFFER_SIZE]; FILE *fp = fopen(buffer[1], "r"); if (fp == 0) { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Failed to open specified file."); free(buffer); return 1; } fgets(readsend, BUFFER_SIZE-1, fp); readsend[BUFFER_SIZE] = '\0'; fclose(fp); if (!co->NO_RIGHT && (co->OUTPUT_DIRECTION || co->NO_LEFT) && co->RIGHT_FACING_SOCKET != SOCKET_RESET) { if (!co->LOOP_RIGHT) datatoright(readsend, co); else datatoleft(readsend, co); } if (!co->NO_LEFT && (!co->OUTPUT_DIRECTION || co->NO_RIGHT) && co->LEFT_FACING_SOCKET != SOCKET_RESET) { if (!co->LOOP_LEFT) datatoleft(readsend, co); else datatoright(readsend, co); } if (co->OUTPUT_DIRECTION) snprintf(temp, 100, "'%s' read and sent to right side", buffer[1]); else snprintf(temp, 100, "'%s' read and sent to left side", buffer[1]); cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, temp); } else { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); putInPromptLower(co->PROMPT_WINDOW, "Must specify read file."); } } /* Default escape action */ else { cleanPrompt(co->PROMPT_WINDOW, &co->PROMPT); free (buffer); return 0; } free(buffer); return 1; }