📄 ppp_modem.cxx
字号:
//ppp_add_config_gateway = new IP_Input(85, 105, 130, 20, "Gateway:"); //ppp_add_config_broadcast = new IP_Input(85, 130, 130, 20, "Broadcast:"); //add_dns_domain = new NxInput(85, 180, 130, 20, "Domainname:"); //add_dns_domain->hide(); //add_dns_ip = new IP_Input(85, 205, 130, 20, "DNS-Server IP:"); //add_dns_ip->hide(); ppp_add_config_script = new NxMultilineInput(BUTTON_X, BUTTON_Y - BUTTON_HEIGHT - 20, W_W - 15, 30, "Chat Script"); ppp_add_config_script->align(FL_ALIGN_TOP); ppp_add_config_group->end(); config_win->add((Fl_Widget *) ppp_add_config_group); }}/***************************ppp_modem_setup**********************************//////////////////////////////////////////////////////////////// function: PPP_Modem_setup::edit_config_value// description: get the config values from config file// parameters: PPP_Add_config *config - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::edit_config_value(PPP_Add_Config * config){ char config_value[60]; char dev_choice[20]; char speed_choice[15]; char ip_dest[20] = ""; char ip_source[20] = ""; //char ip_broadcast[20] = ""; //char ip_gateway[20] = ""; char dhcp[5]; char autos[5] = ""; //char dnsip[16] = ""; char domainname[30] = ""; char file[70]; int val = 0; val = ppp_modem_setup_browser->value(); if (0 >= val) { return; } strcpy(config_value, ppp_modem_setup_browser->text(val)); IniGetString(config_value, "device", NULL, dev_choice, sizeof(dev_choice) - 1, CONFIG_FILE); IniGetString(config_value, "speed", NULL, speed_choice, sizeof(speed_choice) - 1, CONFIG_FILE); IniGetString(config_value, "dest", NULL, ip_dest, sizeof(ip_dest) - 1, CONFIG_FILE); IniGetString(config_value, "source", NULL, ip_source, sizeof(ip_source) - 1, CONFIG_FILE); //IniGetString(config_value, "broadcast", NULL, ip_broadcast, sizeof(ip_broadcast) - 1, CONFIG_FILE); //IniGetString(config_value, "gateway", NULL, ip_gateway, sizeof(ip_gateway) - 2, CONFIG_FILE); IniGetString(config_value, "dhcp", NULL, dhcp, sizeof(dhcp) - 1, CONFIG_FILE); IniGetString(config_value, "auto", NULL, autos, sizeof(autos) - 1, CONFIG_FILE); //IniGetString(config_value, "dnsip", NULL, dnsip, sizeof(dnsip) - 1, CONFIG_FILE); IniGetString(config_value, "domainname", NULL, domainname, sizeof(domainname) - 1, CONFIG_FILE); config->set_config_value(config_value); config->set_device_value(dev_choice); config->set_speed_value(speed_choice); config->set_dest_value(ip_dest); config->set_source_value(ip_source); //config->set_broadcast_value(ip_broadcast); //config->set_gateway_value(ip_gateway); config->set_dhcp_value(dhcp); config->set_auto_value(autos); //config->set_dns_domain_value(domainname); //config->set_dns_ip_value(dnsip); sprintf(file, "%s%s", SCRIPT_PREFIX, config_value); get_script_file(file, config);}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::change_config_value()// description: change the config value to one not in use// parameters: PPP_Add_Config *config - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::change_config_value(PPP_Add_Config * config){ char buf[20]; bool match = true; int configs = ppp_modem_setup_browser->size(); int nums = 1; sprintf(buf, "NewConfig%d", nums); while (match) { for (int idx = 1; idx <= configs; idx++) { if (0 == strcmp(buf, ppp_modem_setup_browser->text(idx))) { match = true; idx = 0; sprintf(buf, "NewConfig%d", ++nums); } } match = false; } config->set_config_value(buf); config->set_device_value(0); config->set_speed_value(0); config->set_dhcp_value("on"); config->set_auto_value("on");}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::write_config()// description: write the config file// parameters: PPP_Add_Config *config - pointer to parnet object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::write_config(PPP_Add_Config * config){ char cfg[60]; char dialer_cfg[90]; char script_file[70]; strcpy(cfg, config->get_config_value()); IniWriteString(cfg, "device", (char *) config->get_device_value(), CONFIG_FILE); IniWriteString(cfg, "speed", (char *) config->get_speed_value(), CONFIG_FILE); IniWriteString(cfg, "dest", (char *) config->get_dest_value(), CONFIG_FILE); IniWriteString(cfg, "source", (char *) config->get_source_value(), CONFIG_FILE); //IniWriteString(cfg, "broadcast", (char *)config->get_broadcast_value(), CONFIG_FILE); //IniWriteString(cfg, "gateway", (char *)config->get_gateway_value(), CONFIG_FILE); IniWriteString(cfg, "dhcp", (char *) config->get_dhcp_value(), CONFIG_FILE); IniWriteString(cfg, "auto", (char *) config->get_auto_value(), CONFIG_FILE); //IniWriteString(cfg, "domainname", (char *)config->get_dns_domain_value(), CONFIG_FILE); //IniWriteString(cfg, "dnsip", (char *)config->get_dns_ip_value(), CONFIG_FILE); sprintf(script_file, "%s%s", SCRIPT_PREFIX, cfg); write_script_file(script_file, config); sprintf(dialer_cfg, "Dialer %s", cfg); IniWriteString(dialer_cfg, "Modem", (char *) config->get_device_value(), DIALER_FILE); IniWriteString(dialer_cfg, "Baud", (char *) config->get_speed_value(), DIALER_FILE); chmod(CONFIG_FILE, MODE_RDWR); chmod(DIALER_FILE, MODE_RDWR); chmod(script_file, MODE_RDWR);}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::write_script_file()// description: write out the script file for this config// parameters: char *file - file to write to// PPP_Add_Config *config - pointer to parent object//// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::write_script_file(char *file, PPP_Add_Config * config){ FILE *fp; if (0 == strcmp(config->get_script_value(), "")) { remove(file); return; } if ((fp = fopen(file, "w+")) == NULL) { return; } fputs(config->get_script_value(), fp); fclose(fp);}/////////////////////////////////////////////////////////////// function: PPP_Modem_setup::get_script_file()// description: get the script input from a file// parameters: char *file - file to get script form// PPP_Add_Config *config - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::get_script_file(char *file, PPP_Add_Config * config){ FILE *fp; char script[MAX_SCRIPT_SIZE] = ""; char buf[4096]; off_t pos = 0; if ((fp = fopen(file, "r")) == NULL) { return; } while (NULL != fgets(buf, sizeof(buf) - 1, fp)) { pos += strlen(buf); if (MAX_SCRIPT_SIZE < pos) { off_t diff = pos - MAX_SCRIPT_SIZE; strncat(script, buf, strlen(buf) - diff - 1); break; } else { strncat(script, buf, strlen(buf)); } } config->set_script_value(script); fclose(fp);}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::edit_config()// description: edit the config value// parameters: PPP_Add_config * config - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::edit_config(PPP_Add_Config * config){ char cfg[60]; strcpy(cfg, config->get_config_value()); if (0 == strcmp(cfg, "")) { change_config_value(config); strcpy(cfg, config->get_config_value()); } for (int idx = 1; idx <= ppp_modem_setup_browser->size(); idx++) { if (0 == strcmp(cfg, ppp_modem_setup_browser->text(idx))) { write_config(config); return; } } fl_addto_browser(ppp_modem_setup_browser, cfg); account_modem->add_config(cfg); write_config(config);}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::add_config// description: add config value to config browser and file// parameters: PPP_Add_config *config - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::add_config(PPP_Add_Config * config){ char cfg[60]; strncpy(cfg, config->get_config_value(), 59); if (0 == strcmp(cfg, "")) { change_config_value(config); strcpy(cfg, config->get_config_value()); } fl_addto_browser(ppp_modem_setup_browser, get_config_value(config)); account_modem->add_config(cfg); write_config(config);}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::ppp_delete_config_cb()// descriptioin: delete config file from config browser and file// parameters: Fl_Widget *widget - pointer to calling widget// void *parent - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::ppp_delete_config_cb(Fl_Widget * widget, void *parent){ char cfg[60]; int val = 0; char file[70]; PPP_Modem_Setup *setup = (PPP_Modem_Setup *) parent; val = setup->ppp_modem_setup_browser->value(); if (0 >= val) { return; } strcpy(cfg, setup->ppp_modem_setup_browser->text(val)); IniDelSection(cfg, CONFIG_FILE); fl_delete_browser_line(setup->ppp_modem_setup_browser, val); fl_select_browser_line(setup->ppp_modem_setup_browser, 1); setup->account_modem->delete_config(val); sprintf(file, "%s%s", SCRIPT_PREFIX, cfg); unlink(file);}/////////////////////////////////////////////////////////////// function: PPP_Modem_Setup::ppp_add_config_cb()// description: callback for add/edit config // parameters: Fl_Widget *widget - pointer to calling widget// void *parent - pointer to parent object// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::ppp_add_config_cb(Fl_Widget * widget, void *parent){ NxButton *button = (NxButton *) widget; PPP_Modem_Setup *setup = (PPP_Modem_Setup *) (parent); PPP_Modem *this_modem = setup->get_ppp_modem(); PPP_Add_Config *config = this_modem->_add_config; if (button == setup->ppp_modem_setup_add_button) { setup->change_config_value(config); } if (button == setup->ppp_modem_setup_edit_button) { if (setup->ppp_modem_setup_browser->size() == 0) return; setup->edit_config_value(config); } config->set_ip_info(); this_modem->_add_config->show(); while (this_modem->_add_config->get_parent_window()->shown()) { Fl::wait(); for (;;) { Fl_Widget *o = Fl::readqueue(); if (!o) { break; } if (o == config->ok_button) { if (button == setup->ppp_modem_setup_add_button) { setup->add_config(config); } if (button == setup->ppp_modem_setup_edit_button) { setup->edit_config(config); } this_modem->_add_config->hide(); setup->show(); // parent_win->show(); // parent_win->remove(&ppp_config_win); return; } if ( /*o == &ppp_config_win || */ o == config->cancel_button) { // ppp_config_win.hide(); this_modem->_add_config->hide(); setup->show(); // parent_win->show(); // parent_win->remove(&ppp_config_win); return; } } }}/////////////////////////////////////////////////////////////// functoin: PPP_Modem_Setup::fill_config_browser()// description: fill config browser from config file// parameters: none// returns: none/////////////////////////////////////////////////////////////voidPPP_Modem_Setup::fill_config_browser(){ int size = account_modem->get_num_configs(); for (int idx = 0; idx < size; idx++) { fl_addto_browser(ppp_modem_setup_browser, account_modem->get_config_name(idx)); } fl_set_browser_topline(ppp_modem_setup_browser, 1); fl_select_browser_line(ppp_modem_setup_browser, 1);}/////////////////////////////////////////////////////////////// fucntion: PPP_Modem_Setup::hide()// description: hide the object// parameters: none// returns: none//////////////////////////////////////////////////////////////voidPPP_Modem_Setup::hide(){ get_parent_win()->hide(); /* ppp_modem_setup_add_button->show(); ppp_modem_setup_edit_button->show();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -