def load_static(map_container, src_path): txt_files = sorted([x for x in os.listdir(src_path) if get_file_ext(x) == 'txt']) map_container.images = [] for txt_file in txt_files: ini = deserialize_ini(os.path.join(src_path, txt_file)) txt_caption = get_ini_attr(ini, 'Options', 'Caption') txt_type = get_ini_attr(ini, 'Options', 'Type') if txt_type == 'Image': __load_images(map_container.images, txt_caption, ini)
def __extract_map_id(self, map_folder, map_item): ini = deserialize_ini(find_file_by_extension(map_folder, '.cty')) name = get_ini_attr(ini, 'Options', 'Name') if name is None: name = uuid.uuid1().hex self.__logger.warning('Empty NAME map property in file \'%s\', used UID %s' % (ini['__FILE_NAME__'], name)) map_item['map_id'] = name
def __import_lines(self, ini): sections = get_ini_sections(ini, 'Line') if not any(sections): return [] lines = [] for section_name in sorted(sections): line_name = get_ini_attr(ini, section_name, 'Name') line_display_name = get_ini_attr(ini, section_name, 'Alias', line_name) line_map = get_ini_attr(ini, section_name, 'LineMap') stations_text = get_ini_attr(ini, section_name, 'Stations') drivings_text = get_ini_attr(ini, section_name, 'Driving') aliases_text = get_ini_attr(ini, section_name, 'Aliases') line_delays = get_ini_attr_collection(ini, section_name, 'Delay') stations = self.__get_stations(line_name, stations_text, as_dict(aliases_text)) segments = self.__get_segments(stations, stations_text, drivings_text) lines.append( MapTransportLine( line_name, self.__text_index_table.as_text_id(line_display_name), get_file_name_without_ext(line_map).lower() if line_map is not None else None, stations, segments, parse_line_delays(line_name, line_delays))) return lines
def __load_scheme_line(self, ini, line_name, scheme_line_width, additional_nodes): text_id = self.__line_index[line_name].text_id line_color = self.__get_line_color( line_name, get_ini_attr(ini, line_name, 'Color')) line_width = get_ini_attr_int(ini, line_name, 'Width', scheme_line_width) labels_color = get_ini_attr(ini, line_name, 'LabelsColor', PmzSchemeImporter.default_labels_color) labels_bg_color = get_ini_attr( ini, line_name, 'LabelsBColor', PmzSchemeImporter.default_labels_background_color) stations, segments = self.__load_stations_and_segments( line_name, as_int_point_list(get_ini_attr(ini, line_name, 'Coordinates', '')), as_int_rect_list(get_ini_attr(ini, line_name, 'Rects', '')), additional_nodes) return MapSchemeLine(line_name, text_id, line_color, line_width, labels_color, labels_bg_color, stations, segments)
def load_metadata(map_container, path, text_index_table): metadata_files = find_files_by_extension(path, '.cty') if not any(metadata_files): raise FileNotFoundError('Cannot found .cty file in %s' % path) metadata = deserialize_ini(sorted(metadata_files)[0]) delays = as_list( get_ini_attr(metadata, 'Options', 'DelayNames', 'Day,Night')) map_container.meta.delays = __parse_delays(delays, text_index_table) map_container.meta.transport_types = list( set([trp.type_name for trp in map_container.transports])) map_container.meta.transports = list( [__get_transport_meta(trp) for trp in map_container.transports]) child_schemes = __get_child_schemes(map_container) map_container.meta.schemes = list([ __get_scheme_meta(scheme, child_schemes) for scheme in map_container.schemes ])
def get_transport_type(file_name, trp_name, ini): if not any(__TRANSPORT_TYPE_DICT): assets_path = os.path.join(os.path.dirname(__file__), 'assets') with codecs.open(os.path.join(assets_path, 'transports.csv'), 'rU', encoding='utf-8') as f: for line in f: _file_name, _trp_name, _trp_type = as_quoted_list(line) __TRANSPORT_TYPE_DICT[_file_name.lower().strip() + '.zip.' + _trp_name.lower().strip( )] = _trp_type.strip('\r\n').strip() trp_type = get_ini_attr(ini, 'Options', 'Type', None) if trp_type is not None: return trp_type dict_id = file_name.lower() + '.' + trp_name.lower() if dict_id in __TRANSPORT_TYPE_DICT: return __TRANSPORT_TYPE_DICT[dict_id] else: LOG.error( 'Unknown transport type for \'%s.trp\' in \'%s\', used defaults' % (trp_name, file_name)) return __TRANSPORT_TYPE_DEFAULT
def __import_scheme(self, file): ini = deserialize_ini(file) name = get_file_name_without_ext(file).lower() map_files = get_ini_attr(ini, 'Options', 'ImageFileName', '') line_width = get_ini_attr_int(ini, 'Options', 'LinesWidth', PmzSchemeImporter.default_lines_width) diameter = get_ini_attr_float(ini, 'Options', 'StationDiameter', PmzSchemeImporter.default_diameter) is_upper_case = get_ini_attr_bool(ini, 'Options', 'UpperCase', True) is_word_wrap = get_ini_attr_bool(ini, 'Options', 'WordWrap', True) is_vector = get_ini_attr(ini, 'Options', 'IsVector', '1') == '1' additional_node_section = get_ini_section(ini, 'AdditionalNodes') transports = default_if_empty( as_nullable_list_stripped( get_ini_attr(ini, 'Options', 'Transports')), ['Metro']) default_transports = default_if_empty( as_nullable_list_stripped( get_ini_attr(ini, 'Options', 'CheckedTransports', None)), ['Metro']) display_name, type_name = \ suggest_scheme_display_name_and_type( name, self.__transport_index, self.__scheme_index, self.__text_index_table) scheme = MapScheme() scheme.name = name scheme.name_text_id = self.__text_index_table.as_text_id(display_name) scheme.type_text_id = self.__text_index_table.as_text_id( type_name, TEXT_AS_COMMON_LANGUAGE) scheme.type_name = type_name scheme.images = self.__get_images_links(file, as_quoted_list(map_files)) scheme.lines_width = line_width scheme.stations_diameter = diameter scheme.upper_case = is_upper_case scheme.word_wrap = is_word_wrap scheme.is_vector = is_vector scheme.transports = [ get_file_name_without_ext(x).lower() for x in transports ] scheme.default_transports = [ get_file_name_without_ext(x).lower() for x in default_transports ] additional_nodes = self.__load_additional_nodes( file, additional_node_section) scheme.lines = [] for name in ini: if name not in self.__line_index: continue scheme.lines.append( self.__load_scheme_line(ini, name, line_width, additional_nodes)) scheme.transfers = self.__create_scheme_transfers(scheme.lines) scheme.width, scheme.height = get_scheme_size( scheme, PmzSchemeImporter.default_scheme_gap_size) return scheme