void Icon::cb_execute_i() { Fl_Config &iconfig = *cfg; iconfig.set_section("Desktop Entry"); char *cmd=0; if(!iconfig.read("Exec", cmd, 0) && cmd) { char pRun[256]; char browser[256]; Fl_Config pGlobalConfig(fl_find_config_file("ede.conf", 0)); pGlobalConfig.get("Web", "Browser", browser, 0, sizeof(browser)); if(pGlobalConfig.error() && !browser) { strncpy(browser, "netscape", sizeof(browser)); } char *location = cmd; char *prefix = strstr(location, ":"); if(prefix) // it is internet resource { *prefix = '\0'; if (!strcasecmp(location, "http") || !strcasecmp(location, "ftp") || !strcasecmp(location, "file")) { snprintf(pRun, sizeof(pRun)-1, "%s %s &", browser, cmd); } else if (!strcasecmp(location, "gg")) { snprintf(pRun, sizeof(pRun)-1, "%s http://www.google.com/search?q=\"%s\" &", browser, ++prefix); } else if (!strcasecmp(location, "leo")) { snprintf(pRun, sizeof(pRun)-1, "%s http://dict.leo.org/?search=\"%s\" &", browser, ++prefix); } else if (!strcasecmp(location, "av")) { snprintf(pRun, sizeof(pRun)-1, "%s http://www.altavista.com/sites/search/web?q=\"%s\" &", browser, ++prefix); } else { snprintf(pRun, sizeof(pRun)-1, "%s %s &", browser, cmd); } } else // local executable { snprintf(pRun, sizeof(pRun)-1, "%s &", cmd); } fl_start_child_process(pRun); free((char*)cmd); } }
void cb_menu(fltk::Widget *wid, long user_data) { if(!dir) return; char cmd[FL_PATH_MAX]; EDE_Config pGlobalConfig(find_config_file("ede.conf", false)); // we can't use Fl_String here, because gcc3.2.3 bug, so we will use // plain char with stupid FL_PATH_MAX switch(user_data) { case 1: { char term[FL_PATH_MAX]; pGlobalConfig.get("Terminal", "Terminal", term, 0, sizeof(term)); if(pGlobalConfig.error() && !term[0] || (strlen(term) == 0)) strncpy(term, "xterm", sizeof(term)); snprintf(cmd, sizeof(cmd)-1, "cd %s; %s\n", dir, term); } break; case 2: { char browser[FL_PATH_MAX]; pGlobalConfig.get("Web", "Browser", browser, 0, sizeof(browser)); if(pGlobalConfig.error() && !browser[0] || (strlen(browser) == 0)) strncpy(browser, "mozilla", sizeof(browser)); snprintf(cmd, sizeof(cmd)-1, "%s %s\n", browser, dir); } break; case 0: fltk::exit_modal(); default: return; } fltk::start_child_process(cmd, false); }