void ServerWidget::init_cvar_table() { delegate_cvar.set_cvar = [this](const QString& name, const QString& value) { /// \todo Maybe option to choose set or seta rcon_command("set "+name+' '+value); auto cvar = model_cvar.cvar(name); cvar.value = value; model_cvar.set_cvar(cvar); }; table_cvars->setModel(&proxy_cvar); table_cvars->setItemDelegate(&delegate_cvar); proxy_cvar.setSourceModel(&model_cvar); connect(&log_parser, &xonotic::LogParser::cvar, &model_cvar, &CvarModel::set_cvar); connect(&log_parser, &xonotic::LogParser::cvarlist_begin, &model_cvar, &CvarModel::block_updates); connect(&log_parser, &xonotic::LogParser::cvarlist_end, &model_cvar, &CvarModel::unblock_updates); auto header_view = table_cvars->horizontalHeader(); header_view->setSectionResizeMode(CvarModel::Name, QHeaderView::ResizeToContents); header_view->setSectionResizeMode(CvarModel::Value, QHeaderView::Stretch); table_cvars->hideColumn(CvarModel::Default); table_cvars->hideColumn(CvarModel::Description); for ( int i = 0; i < model_cvar.columnCount(); i++ ) input_cvar_filter_section->addItem( model_cvar.headerData(i,Qt::Horizontal).toString()); }
void ServerWidget::detach_log() { if ( log_dest_set ) { QString cmd = settings().console_detach_command; QString ip = QString::fromStdString(connection.local_endpoint().name()); rcon_command(cmd.replace("$ip",ip)); log_dest_set = false; } }
void ServerWidget::attach_log() { if ( connection.xonotic_connected() ) { QString cmd = settings().console_attach_command; QString ip = QString::fromStdString(connection.local_endpoint().name()); rcon_command(cmd.replace("$ip",ip)); log_dest_set = true; } }
int run_commands(int argc, char *argv[]) { int i, ok = 1, ret = 0; for(i = optind; i < argc && ok; i++) { ok = rcon_command(rsock, argv[i]); ret += ok; } return ret; }
void ServerWidget::init_status_table() { auto header_view = table_server_status->verticalHeader(); QFont header_font = header_view->font(); header_font.setBold(true); header_view->setFont(header_font); table_server_status->setModel(&model_server); table_server_status->setItemDelegate(&delegate_server); delegate_server.g_maplist = [this] { return model_cvar.cvar_value("g_maplist"); }; delegate_server.chmap = [this](const QString& map) { QString cmd = settings().cmd_chmap; rcon_command(cmd.replace("$map",map)); model_server.set_server_property("map", map); }; delegate_server.set_hostname = [this](const QString& name) { rcon_command("set hostname "+name); model_server.set_server_property("host", name); }; connect(&log_parser, &xonotic::LogParser::server_property_changed, &model_server, &ServerModel::set_server_property); }
void ServerWidget::on_table_cvars_customContextMenuRequested(const QPoint& pos) { auto index = proxy_cvar.mapToSource(table_cvars->indexAt(pos)); QMenu menu; QAction action_cvar_desc(QIcon::fromTheme("help-contextual"), tr("&Description"), this); connect(&action_cvar_desc, &QAction::triggered, [this, index]{ QWhatsThis::showText(QCursor::pos(), index.data(Qt::WhatsThisRole).toString(), this); }); menu.addAction(&action_cvar_desc); menu.addSeparator(); QAction action_cvar_unset(QIcon::fromTheme("list-remove"), tr("&Unset"), this); connect(&action_cvar_unset, &QAction::triggered, [this, index]{ rcon_command("unset "+index.data(Qt::UserRole).toString()); model_cvar.removeRows(index.row(), 1); }); menu.addAction(&action_cvar_unset); QAction action_cvar_reset(QIcon::fromTheme("edit-clear"), tr("&Reset to Default"), this); connect(&action_cvar_reset, &QAction::triggered, [this, index]{ xonotic::Cvar cvar = model_cvar.cvar_at(index.row()); QString def = cvar.default_value; if ( def.isEmpty() ) def = "\"\""; rcon_command("set "+cvar.name+" "+def); cvar.value = cvar.default_value; model_cvar.set_cvar(cvar); }); menu.addAction(&action_cvar_reset); menu.exec(table_cvars->mapToGlobal(pos)); }
/* interactive terminal mode */ int run_terminal_mode(int rsock) { int ret = 0; char command[DATA_BUFFSIZE] = {0x00}; puts("Logged in. Type \"Q\" to quit!"); while(connection_alive) { int len = get_line(command, DATA_BUFFSIZE); if(command[0] == 'Q' && command[1] == 0) break; if(len > 0 && connection_alive) ret += rcon_command(rsock, command); command[0] = len = 0; } return ret; }
void ServerWidget::request_cvars() { for ( const auto& cmd : settings().cmd_cvarlist ) rcon_command(cmd); label_refresh_cvar->setText(QTime::currentTime().toString("hh:mm:ss")); }