예제 #1
0
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);
    }
}
예제 #2
0
파일: item.cpp 프로젝트: edeproject/svn
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);
}