beremiz

file isExecutable
fix Traceback if search icon on library panel is clicked, when no
category/item is selected in the library.

The problem is here, that if nothing is selected method GetSelection()
returns root item, that doesn't have any python data associated with it.
This issue seems to be wx3.0 specified, because it doesn't exist
with wx2.8 on Windows.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
#
# See COPYING file for copyrights details.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Package initialisation
from os import listdir, path
_base_path = path.split(__file__)[0]
def _GetLocalConnectorClassFactory(name):
return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_factory")
connectors = {name:_GetLocalConnectorClassFactory(name)
for name in listdir(_base_path)
if path.isdir(path.join(_base_path, name))
and not name.startswith("__")}
def ConnectorFactory(uri, confnodesroot):
"""
Return a connector corresponding to the URI
or None if cannot connect to URI
"""
servicetype = uri.split("://")[0].upper()
if servicetype == "LOCAL":
# Local is special case
# pyro connection to local runtime
# started on demand, listening on random port
servicetype = "PYRO"
runtime_port = confnodesroot.AppFrame.StartLocalRuntime(
taskbaricon=True)
uri = "PYROLOC://127.0.0.1:" + str(runtime_port)
elif servicetype in connectors:
pass
elif servicetype[-1] == 'S' and servicetype[:-1] in connectors:
servicetype = servicetype[:-1]
else:
return None
# import module according to uri type
connectorclass = connectors[servicetype]()
return connectorclass(uri, confnodesroot)