рдПрдХ рдЕрдиреБрдХреВрд▓рди рдХреА рдХрд╣рд╛рдиреА

рдпрд╣ рдПрдХрддрд╛-рд▓рд╛рдВрдЪрд░-рд╕рдВрдкрд╛рджрдХ - рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдкрд╛рджрдХ рдФрд░ рдЙрдмрдВрдЯреВ рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдкреИрдирд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ (рдХреНрд╡рд┐рдХрд▓рд┐рд╕реНрдЯ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рд╕рдВрдкрд╛рджрдХ рдХреЛ python + gtk рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдХрд░реНрддрд╡реНрдпреЛрдВ рдХреЛ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреА рдШреЛрд╖рдгрд╛: рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛ рд╕рдордп рдЧреБрдЬрд░рддрд╛ рд╣реИред

рдЖрдк рдкрд╛рдпрдерди, рдпреВрдирд┐рдЯреА рдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рджреЛрд╖ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИред "рдЕрдзреНрдпрдпрди" рдХреЗ рджреМрд░рд╛рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдиреЛрдЯреНрд╕ рдмрдирд╛рдП рдЬреЛ рдЗрд╕ рдиреЛрдЯ рдХрд╛ рдЖрдзрд╛рд░ рдмрдиреЗред рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВред


рдЪрд░рдг 1

рд╣рдо рдПрдХ рдорд╛рдирдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рджреЗрдЦрддреЗ рд╣реИрдВ: python -m cProfile -s cumulative ule
рдкрд░рд┐рдгрд╛рдо:
  211267 function calls (203946 primitive calls) in 49.801 seconds Ordered by: cumulative time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.002 0.002 49.801 49.801 ule:19(<module>) 1 0.000 0.000 49.415 49.415 ule:29(main) 4598/4584 0.007 0.000 49.224 0.011 types.py:46(function) 4599/4585 49.208 0.011 49.218 0.011 {method 'invoke' of 'gi.CallableInfo' objects} 1 0.001 0.001 46.013 46.013 app.py:47(__init__) 1 0.001 0.001 45.945 45.945 app.py:230(__populate) 24 0.007 0.000 45.936 1.914 app.py:211(new_from_file) 45 0.002 0.000 45.454 1.010 iconmanager.py:93(get_icon) 45 0.014 0.000 0.408 0.009 iconmanager.py:29(__init__) 1 0.000 0.000 0.343 0.343 iconmanager.py:71(get_icon_with_file) 1 0.000 0.000 0.343 0.343 iconmanager.py:60(get_icon_with_name) ................................................................................ 

рд╡рд╛рд╣! рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 50 рд╕реЗрдХрдВрдбред

рдЪрд░рдг 2

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, app.py рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рдерд╛:
app.py:230(__populate) - рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ 46 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ
app.py:211(new_from_file) - 24 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддрд┐ рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 2 рд╕реЗрдХрдВрдб
iconmanager.py:93(get_icon) - 45 рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рдЧрднрдЧ 1 рд╕реЗрдХрдВрдб рдкреНрд░рддрд┐ рдХреЙрд▓

рдХреЛрдб рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдХреВрдмрдбрд╝ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ __populate рдлрд╝рдВрдХреНрд╢рди new_form_file рдХреЙрд▓ new_form_file , рдЬреЛ get_icon рдХреЙрд▓ get_icon ред

рдЖрдЗрдП __populate рд╢реБрд░реВ рдХрд░реЗрдВ:
 def __populate(self): self.launcher_view.clear_list(); self.unity = self.gsettings.get_value('favorites') log.info(self.unity) for menu_item in self.unity: self.new_from_file(menu_item, False) self.launcher_view.connect('selection-changed', self.__launcher_view_row_change) #make first row active self.launcher_view.set_selected_iter(0) 

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдкреИрдирд▓ рдореЗрдВ 24 рддрддреНрд╡ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП new_from_file(menu_item, False)
 def new_from_file(self, filename, selected=True): try: file_path = normalize_path(filename, True) obj = DesktopParser(file_path) sname = obj.get('Name',locale=LOCALE) desc = obj.get('Comment',locale=LOCALE) icon = obj.get('Icon') pix = IconManager().get_icon(ThemedIcon('image-missing'),32) if icon: if icon.rfind('.') != -1: pix = IconManager().get_icon(FileIcon(File(icon)),32) else: pix = IconManager().get_icon(ThemedIcon(icon),32) data = (pix, '%s' % sname, obj, sname.upper(), file_path) return self.launcher_view.add_row(data,selected) except: return None 

рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИ рд╡рд╣ рд╣реИ рд░реЗрдЦрд╛:
 pix = IconManager().get_icon(ThemedIcon('image-missing'),32) 

рдЫрд╡рд┐-рд▓рд╛рдкрддрд╛ рдЬреИрд╕рд╛ рдЖрдЗрдХрди рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдЗрд╕реЗ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЧреБрдг рдмрдирд╛рддреЗ рд╣реИрдВред __populate рд╡рд┐рдзрд┐ рдореЗрдВ, __populate рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ __populate рдЬреЛрдбрд╝реЗрдВ:
 self.pix_missing = IconManager().get_icon(ThemedIcon('image-missing'), 32) 

рдФрд░ pix = self.pix_missing рд╕рд╛рде new_from_file рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрди рдХреЛ pix = self.pix_missing

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХрд╛ рд╕рдордп рдХреИрд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ: python -m cProfile -s cumulative ule
рдкрд░рд┐рдгрд╛рдо 2:
 194247 function calls (186926 primitive calls) in 8.863 seconds Ordered by: cumulative time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.007 0.007 8.864 8.864 ule:19(<module>) 1 0.000 0.000 8.363 8.363 ule:29(main) 2988/2974 0.008 0.000 8.189 0.003 types.py:46(function) 2989/2975 8.176 0.003 8.182 0.003 {method 'invoke' of 'gi.CallableInfo' objects} 1 0.001 0.001 6.817 6.817 app.py:48(__init__) 1 0.000 0.000 6.704 6.704 app.py:244(__populate) 24 0.003 0.000 6.697 0.279 app.py:224(new_from_file) 22 0.001 0.000 6.489 0.295 iconmanager.py:93(get_icon) 1 0.004 0.004 0.248 0.248 app.py:18(<module>) 

рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдбрдмрд▓-рдЪреЗрдХ (рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛): рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рд╕реЗ 35-40 рд╕реЗрдХрдВрдбред
9 рд╕реЗрдХрдВрдб рдмрд╣реБрдд рдХрдо рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред
рдЖрдЗрдП рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рдЪрд░рдг 3

рд╣рд░ рдмрд╛рд░ IconManager рдХреЛ рдПрдХ рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ (рдФрд░ рд╣рдореЗрд╢рд╛ рддрд░реНрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛) рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЧреБрдг рдмрдирд╛рддреЗ рд╣реИрдВред

__init__ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
 self.icon_manager = IconManager() 

IconManager() рдХреА рд╕рднреА рдШрдЯрдирд╛рдПрдВ IconManager() self.icon_manager рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: python -m cProfile -s cumulative ule
Rezultat3:
 178980 function calls (171659 primitive calls) in 1.949 seconds Ordered by: cumulative time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.001 0.001 1.949 1.949 ule:19(<module>) 1 0.000 0.000 1.449 1.449 ule:29(main) 1560/1546 0.004 0.000 1.314 0.001 types.py:46(function) 1561/1547 1.304 0.001 1.310 0.001 {method 'invoke' of 'gi.CallableInfo' objects} 1 0.001 0.001 0.285 0.285 app.py:48(__init__) 1 0.004 0.004 0.252 0.252 app.py:18(<module>) 206/45 0.005 0.000 0.191 0.004 {__import__} 9/5 0.000 0.000 0.187 0.037 importer.py:56(load_module) 9/5 0.000 0.000 0.186 0.037 module.py:239(_load) 1 0.002 0.002 0.174 0.174 pkg_resources.py:14(<module>) 1 0.000 0.000 0.159 0.159 app.py:245(__populate) 2617/377 0.011 0.000 0.159 0.000 {map} 24 0.003 0.000 0.153 0.006 app.py:225(new_from_file) 1 0.004 0.004 0.146 0.146 Gtk.py:22(<module>) 159/132 0.012 0.000 0.132 0.001 module.py:111(__getattr__) 1 0.000 0.000 0.107 0.107 pkg_resources.py:698(subscribe) 102 0.000 0.000 0.107 0.001 pkg_resources.py:2835(<lambda>) 102 0.001 0.000 0.106 0.001 pkg_resources.py:2256(activate) 22 0.001 0.000 0.098 0.004 iconmanager.py:93(get_icon) 


рдЦрд┐рдбрд╝рдХреА рд▓рдЧрднрдЧ рддреБрд░рдиреНрдд рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рдХреБрд▓ рд╕рдордп рд▓рдЧрднрдЧ рджреЛ рд╕реЗрдХрдВрдб рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрдВрдХреНрддрд┐ 1 0.001 0.001 0.285 0.285 app.py:48(__init__) рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдкрд┐рдЫрд▓реЗ рдорд╛рдк рдореЗрдВ 6.8 рд╕реЗрдХрдВрдб рд╕реЗ рдмрджрд▓рдХрд░ рдЖрдЦрд┐рд░реА рдореЗрдВ 0.3 рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЖрдк рд╡рд╣реАрдВ рд░реБрдХ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо

рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╕рдордп 46 рд╕реЗрдХрдВрдб рд╕реЗ app.py:48(__init__) 0.3 ( app.py:48(__init__) рд▓рд┐рдП) рд╣реЛ рдЧрдпрд╛ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдмрджрд▓рд╛рд╡
рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЕрдкрдирд╛ рдХрд╛рдлреА рд╕рдордп рдЦрд░реНрдЪ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реБрдзрд╛рд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрд╢реНрдХрд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди
 === modified file 'unitylaunchereditor/dialogs/app.py' --- unitylaunchereditor/dialogs/app.py 2011-11-28 17:12:07 +0000 +++ unitylaunchereditor/dialogs/app.py 2013-02-26 16:47:52 +0000 @@ -71,6 +71,8 @@ #bottom window buttons self.__create_bottom_box(main_box) + self.icon_manager = IconManager() + self.pix_missing = self.icon_manager.get_icon(ThemedIcon('image-missing'),32) self.__populate() self.connect('delete-event', Gtk.main_quit) @@ -198,12 +200,12 @@ sname = info['Name'] desc = info['Comment'] icon = info['Icon'] - pix = IconManager().get_icon(ThemedIcon('image-missing'),32) + pix = self.pix_missing if icon: if icon.rfind('.') != -1: - pix = IconManager().get_icon(FileIcon(File(icon)),32) + pix = self.icon_manager.get_icon(FileIcon(File(icon)),32) else: - pix = IconManager().get_icon(ThemedIcon(icon),32) + pix = self.icon_manager.get_icon(ThemedIcon(icon),32) data = (pix, '%s' % sname, obj, sname.upper(), file_path) return self.launcher_view.add_row(data,True) @@ -215,12 +217,12 @@ sname = obj.get('Name',locale=LOCALE) desc = obj.get('Comment',locale=LOCALE) icon = obj.get('Icon') - pix = IconManager().get_icon(ThemedIcon('image-missing'),32) + pix = self.pix_missing if icon: if icon.rfind('.') != -1: - pix = IconManager().get_icon(FileIcon(File(icon)),32) + pix = self.icon_manager.get_icon(FileIcon(File(icon)),32) else: - pix = IconManager().get_icon(ThemedIcon(icon),32) + pix = self.icon_manager.get_icon(ThemedIcon(icon),32) data = (pix, '%s' % sname, obj, sname.upper(), file_path) return self.launcher_view.add_row(data,selected) @@ -325,12 +327,12 @@ self.launcher_view.set_value(obj['Name'], self.launcher_view.COLUMN_NAME) self.launcher_view.set_value(obj['Name'].upper(), self.launcher_view.COLUMN_NAME_UPPER) icon = obj['Icon'] - pix = IconManager().get_icon(ThemedIcon('image-missing'),32) + pix = self.pix_missing if icon: if icon.rfind('.') != -1: - pix = IconManager().get_icon(FileIcon(File(icon)),32) + pix = self.icon_manager.get_icon(FileIcon(File(icon)),32) else: - pix = IconManager().get_icon(ThemedIcon(icon),32) + pix = self.icon_manager.get_icon(ThemedIcon(icon),32) self.launcher_view.set_value(pix, self.launcher_view.COLUMN_ICON) if button_type == TOOLBUTTON_REMOVE: 



рдпреБрдкреАрдбреА:
рдФрд░ рдореИрдВрдиреЗ рд╣рд╛рдереА рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛

рджреЛ рдкреНрд░рд╢реНрди рдЕрд╕реНрдкрд╖реНрдЯ рд░рд╣реЗ:

рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЕрдкрд░рд╛рдзреА self.icontheme = Gtk.IconTheme.get_default() рдСрдмреНрдЬреЗрдХреНрдЯ рдерд╛ред
IconManager рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдЙрди рд░рд╛рд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА, рдЬрд┐рдирдореЗрдВ рдЖрдЗрдХрди рдЦреЛрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ Gtk.IconTheme.get_default () рд╕рд┐рдВрдЧреНрд▓рдЯрди рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, IconManager рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рд╕реВрдЪреА рдореЗрдВ 67 рддрддреНрд╡ рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд▓рдЧрднрдЧ 300 рдЧреБрдирд╛ (10 рд╕реЗ 2985 рддрдХ) рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред
IconManager рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рддрд╛
 def __init__(self): self.icontheme = Gtk.IconTheme.get_default() # add the humanity icon theme to the iconpath, as not all icon # themes contain all the icons we need # this *shouldn't* lead to any performance regressions path = '/usr/share/icons/Humanity' if exists(path): for subpath in listdir(path): subpath = join(path, subpath) if isdir(subpath): for subsubpath in listdir(subpath): subsubpath = join(subpath, subsubpath) if isdir(subsubpath): self.icontheme.append_search_path(subsubpath) 


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрджрд▓рдХрд░, рдЖрдк рдкреНрд░рд╛рд░рдВрдн рд╕рдордп рдХреЛ 0.8 рд╕реЗрдХрдВрдб (рдкрд┐рдЫрд▓реЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛) рдФрд░ 0.6 (рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде) рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди "рдХреЙрд╕реНрдореЗрдЯрд┐рдХ" рдмрди рдЧрдП рд╣реИрдВред
рдореБрд╢реНрдХрд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди
 === modified file 'unitylaunchereditor/core/iconmanager.py' --- unitylaunchereditor/core/iconmanager.py 2011-11-26 14:36:43 +0000 +++ unitylaunchereditor/core/iconmanager.py 2013-02-28 19:13:42 +0000 @@ -28,6 +28,7 @@ class IconManager: def __init__(self): self.icontheme = Gtk.IconTheme.get_default() + search_paths = self.icontheme.get_search_path() # add the humanity icon theme to the iconpath, as not all icon # themes contain all the icons we need # this *shouldn't* lead to any performance regressions @@ -38,7 +39,7 @@ if isdir(subpath): for subsubpath in listdir(subpath): subsubpath = join(subpath, subsubpath) - if isdir(subsubpath): + if isdir(subsubpath) and subsubpath not in search_paths: self.icontheme.append_search_path(subsubpath) def get_icon_with_type(self,filepath, size=24): 


рдмрдЧ рдмрдирд╛рдпрд╛ , рдкреИрдЪ рднреЗрдЬрд╛ ред

Source: https://habr.com/ru/post/In171005/


All Articles