def __init__(self, parent):

        # display variables
        self.dist_max = 2**127L        
        self.scale = 1.0
        self.coeff_zoom = 1

        # my node variables
        self.myNode_pseudo = ""
        self.myNode_ar = ""
        self.delta_x = 0
        self.delta_y = 0

        # displaying options
        self.isDisplayPseudos = 0
        val = configuration.readConfParameterValue("displayPseudos")
        if val:
            self.isDisplayPseudos = long(val)

        self.isDisplayAvatars = 1
        val = configuration.readConfParameterValue("displayAvatars")
        if val:
            self.isDisplayAvatars = long(val)

        # default images
        #self.myNode_avatar = 'Img//avat_gh.png'
        self.myNode_avatar = ""
        self.neighbor_avatar = 'Img//avat_gris.png'
        avatarFile = commun.AVATAR_DIR_NAME + os.sep + "neighbor_default.png"
        shutil.copyfile(self.neighbor_avatar, avatarFile)
        # resize the avatar file
        self.neighbor_avatar = commun.chgSize(avatarFile)

        # dictionary associating widget item with a neighbor
        # {[neighbor_id]:[neighbor_posX, neighbor_posY, neighbor_pseudo,
        #  neighbor_chat, neighbor_display2d, neighbor_sharing, neighbor_image]}
        self.neighbor_item = {}

        # init controls
        self._init_ctrls(parent)

        # navigator
        #self.navigator = Navigator(self, socket.gethostbyname(socket.gethostname()), "8080")
        self.navigator = Navigator(self)

        # refresh timer variables
        self.TIMER_ID = 1
        self.toRefresh = FALSE

        # start the timer to refresh displaying every second
        self.timer = wxTimer(self, self.TIMER_ID)
        EVT_TIMER(self, self.TIMER_ID, self.OnRefreshTimer)
        self.timer.Start(1000)
    def OnOpenMenu(self, event):
        """ Refresh some menu items on Open Menu event """

        # check the connect/disconnect mode
        if (self.navigator.getIsConnected() == 1):
            enableMenu = TRUE
        else:
            enableMenu = FALSE

        # refresh flags menu with the flags list
        flagsMenuList = self.menuFlags.GetMenuItems()
        for menu in flagsMenuList:
            self.menuFlags.Remove(menu.GetId())
        self.menuFlags.Append(wxID_WXMAINFRAMEMENUFLAGSADD, "Add flag", "")
        self.menuFlags.Append(wxID_WXMAINFRAMEMENUFLAGSTELEPORTATION, "Teleportation", "")
        self.menuFlags.Append(wxID_WXMAINFRAMEMENUFLAGSMANAGE, "Manage flags", "")

        flagsList = []
        try:
            flagsList = os.listdir("Flags")
        except:
            pass
        if flagsList:
            self.menuFlags.InsertSeparator(3)
            for flag in flagsList:
                id = wxNewId()
                self.menuFlags.Append(id, flag, "")
                self.menuFlags.Enable(id, enableMenu)
                EVT_MENU(self, id, self.OnFlagsGoto)

        # enable/disable menus
        self.menuEntity.Enable(wxID_WXMAINFRAMEMENUENTITYDISCONNECT, enableMenu)
        self.menuFlags.Enable(wxID_WXMAINFRAMEMENUFLAGSADD, enableMenu)
        self.menuFlags.Enable(wxID_WXMAINFRAMEMENUFLAGSTELEPORTATION, enableMenu)

        # check/uncheck menus
        val=configuration.readConfParameterValue("displayPseudos")
        if val:
            self.menu2DView.Check(wxID_WXMAINFRAMEMENU2DVIEWDISPLAYPSEUDOS, long(val))
        val=configuration.readConfParameterValue("displayAvatars")
        if val:
            self.menu2DView.Check(wxID_WXMAINFRAMEMENU2DVIEWDISPLAYAVATARS, long(val))
    def initSizeSlider(self):
        """ Initialize the size slider with the current size of avatars """

        # read the current size for the avatar in the conf file
        size = configuration.readConfParameterValue("avatarSize")
        if not size:
            # default size
            self.sizeSlider.SetValue(100)
            self.sizeTextCtrl.SetValue("100")
        else:
            self.sizeSlider.SetValue(int(size))
            self.sizeTextCtrl.SetValue(size)
def chgSize(avatarFile):
    """ change size of an image in accordance with size of avatars """
    debug.debug_info("commun.chgSize(" + avatarFile + ")")

    # open avatar file
    avatarImg = Image.open(avatarFile)
    # convert in RGBA format for transparency
    avatarImg = avatarImg.convert("RGBA")

    # resize the image file
    size = configuration.readConfParameterValue("avatarSize")
    if size:
        (width, height) = avatarImg.size
        newSize = width * int(size)/100
        if newSize < 5:
            # min size = 5 pixels
            newSize = 5
        avatarImg = avatarImg.resize((newSize, newSize))

    # save the resize image
    resizeFile = AVATAR_DIR_NAME + os.sep + RESIZE_DIR_NAME + os.sep + os.path.basename(avatarFile)
    avatarImg.save(resizeFile)
    return resizeFile