bool i3_module::update() { m_workspaces.clear(); i3_util::connection_t ipc; try { vector<shared_ptr<i3_util::workspace_t>> workspaces; if (m_pinworkspaces) { workspaces = i3_util::workspaces(ipc, m_bar.monitor->name); } else { workspaces = i3_util::workspaces(ipc); } if (m_indexsort) { sort(workspaces.begin(), workspaces.end(), i3_util::ws_numsort); } for (auto&& ws : workspaces) { state ws_state{state::NONE}; if (ws->focused) { ws_state = state::FOCUSED; } else if (ws->urgent) { ws_state = state::URGENT; } else if (ws->visible) { ws_state = state::VISIBLE; } else { ws_state = state::UNFOCUSED; } string ws_name{ws->name}; // Remove workspace numbers "0:" if (m_strip_wsnumbers) { ws_name.erase(0, string_util::find_nth(ws_name, 0, ":", 1) + 1); } // Trim leading and trailing whitespace ws_name = string_util::trim(move(ws_name), ' '); auto icon = m_icons->get(ws->name, DEFAULT_WS_ICON, m_fuzzy_match); auto label = m_statelabels.find(ws_state)->second->clone(); label->reset_tokens(); label->replace_token("%output%", ws->output); label->replace_token("%name%", ws_name); label->replace_token("%icon%", icon->get()); label->replace_token("%index%", to_string(ws->num)); m_workspaces.emplace_back(factory_util::unique<workspace>(ws->name, ws_state, move(label))); } return true; } catch (const exception& err) { m_log.err("%s: %s", name(), err.what()); return false; } }
void terrain_builder::replace_token(terrain_builder::rule_imagelist &list, const std::string &token, const std::string &replacement) { rule_imagelist::iterator itor; for(itor = list.begin(); itor != list.end(); ++itor) { replace_token(*itor, token, replacement); } }
void terrain_builder::replace_token(terrain_builder::rule_image &image, const std::string &token, const std::string &replacement) { rule_image_variantlist::iterator itor; for(itor = image.variants.begin(); itor != image.variants.end(); ++itor) { replace_token(itor->second, token, replacement); } }
/* * set up all the config files */ static void setup_config(void) { char **conflines; char repltok[100]; char path[MAXPGPATH]; fputs(_("creating configuration files ... "), stdout); fflush(stdout); /* gtm.conf/gtm_proxy.conf */ conflines = readfile(conf_file); /* Set options dedicated to both nodes */ snprintf(repltok, sizeof(repltok), "nodename = '%s'", n_name); conflines = replace_token(conflines, "#nodename = ''", repltok); snprintf(repltok, sizeof(repltok), "port = %d", n_port); conflines = replace_token(conflines, "#port = 6666", repltok); if (is_gtm) snprintf(path, sizeof(path), "%s/gtm.conf", pg_data); else { /* Set options dedicated to Proxy */ snprintf(repltok, sizeof(repltok), "gtm_host = '%s'", gtm_host); conflines = replace_token(conflines, "#gtm_host = ''", repltok); snprintf(repltok, sizeof(repltok), "gtm_port = %d", gtm_port); conflines = replace_token(conflines, "#gtm_port =", repltok); snprintf(path, sizeof(path), "%s/gtm_proxy.conf", pg_data); } writefile(path, conflines); chmod(path, S_IRUSR | S_IWUSR); free(conflines); check_ok(); }
void terrain_builder::replace_token(terrain_builder::building_rule &rule, const std::string &token, const std::string& replacement) { constraint_set::iterator cons; for(cons = rule.constraints.begin(); cons != rule.constraints.end(); ++cons) { // Transforms attributes std::vector<std::string>::iterator flag; for(flag = cons->second.set_flag.begin(); flag != cons->second.set_flag.end(); ++flag) { replace_token(*flag, token, replacement); } for(flag = cons->second.no_flag.begin(); flag != cons->second.no_flag.end(); ++flag) { replace_token(*flag, token, replacement); } for(flag = cons->second.has_flag.begin(); flag != cons->second.has_flag.end(); ++flag) { replace_token(*flag, token, replacement); } replace_token(cons->second.images, token, replacement); } //replace_token(rule.images, token, replacement); }
terrain_builder::building_rule terrain_builder::rotate_rule(const terrain_builder::building_rule &rule, int angle, const std::vector<std::string>& rot) { building_rule ret; if(rot.size() != 6) { ERR_NG << "invalid rotations\n"; return ret; } ret.location_constraints = rule.location_constraints; ret.probability = rule.probability; ret.local = rule.local; constraint_set tmp_cons; constraint_set::const_iterator cons; for(cons = rule.constraints.begin(); cons != rule.constraints.end(); ++cons) { const terrain_constraint &rcons = rotate(cons->second, angle); tmp_cons[rcons.loc] = rcons; } // Normalize the rotation, so that it starts on a positive location int minx = INT_MAX; int miny = INT_MAX; constraint_set::iterator cons2; for(cons2 = tmp_cons.begin(); cons2 != tmp_cons.end(); ++cons2) { minx = std::min<int>(cons2->second.loc.x, minx); miny = std::min<int>(2*cons2->second.loc.y + (cons2->second.loc.x & 1), miny); } if((miny & 1) && (minx & 1) && (minx < 0)) miny += 2; if(!(miny & 1) && (minx & 1) && (minx > 0)) miny -= 2; for(cons2 = tmp_cons.begin(); cons2 != tmp_cons.end(); ++cons2) { // Adjusts positions cons2->second.loc.legacy_sum_assign(map_location(-minx, -((miny-1)/2))); ret.constraints[cons2->second.loc] = cons2->second; } for(int i = 0; i < 6; ++i) { int a = (angle+i) % 6; std::string token = "@R"; token.push_back('0' + i); replace_token(ret, token, rot[a]); } return ret; }
void CPlayer::replace_token(QString &str, QString token, uint seconds, uint totalSeconds) { QTime t = QTime(0,0,0).addSecs(seconds); replace_token(str,token,(totalSeconds==0? "" : t.toString((t.hour()>0? "hh:mm:ss" : "mm:ss")))); }
QString CPlayer::replace_tokens(QString str, bool hidePlayingState) { QString status_text = ""; switch(GetState()) { case PLAYER_STOPPED: if(GetPlayer()=="") status_text = ""; else status_text = "Stopped"; break; case PLAYER_PAUSED: status_text = "Paused"; break; case PLAYER_PLAYING: status_text = (hidePlayingState? "" : "Playing"); break; } replace_token(str,"title" ,GetTitle()); replace_token(str,"artist" ,GetArtist()); replace_token(str,"album" ,GetAlbum()); replace_token(str,"duration" ,GetDuration(),GetDuration()); replace_token(str,"played" ,GetPosition(),GetDuration()); replace_token(str,"remaining",GetDuration() - GetPosition(),GetDuration()); replace_token(str,"status" ,status_text); replace_token(str,"player" ,GetPlayer()); replace_token(str,"file" ,GetFilePath()); replace_token(str,"shuffle" ,(GetShuffle() ? "Shuffle" : "")); replace_token(str,"repeat" ,(GetRepeat() ? "Repeat" : "")); replace_token(str,"rating" ,QString::number(GetRating())); replace_token(str,"lyrics" ,GetLyrics()); return str; }