Beispiel #1
0
    def __init__(self, configFileName, mode, time_cycle, d):
        # 多线程用,quit flag
        self.quit = False

        # 同步模式
        self.mode = mode

        # 自动同步时间
        self.time_cycle = time_cycle

        # 自动在同步前清空远端文件夹
        self.autoDelete = d

        # RPC 端口
        self.rpc_port = slave.PORT

        # 符合条件的路径会被排除   {dir:[re]}
        self.ignoreExp = defaultdict(list)

        # 文件对应的修改时间和md5   {file:(md5,time)}
        self.file2md5time = {}

        # 读取配置文件
        self.config = ConfigData(configFileName)
        self.config.show()

        # 建立存放同步用数据的文件夹
        self.infoDir = os.path.join(self.config.currentDir, self.INFO_DIR)
        if not os.path.exists(self.infoDir):
            os.makedirs(self.infoDir)

        self.remoteInfoDir = os.path.join(self.config.remoteDir, self.INFO_DIR)

        # 读取本地同步文件夹信息
        self._loadDir()
Beispiel #2
0
    def __init__(self, *args, **kwargs):
        """Default Constructor for wx.Frame"""
        super(MainWindow, self).__init__(*args, **kwargs)
        icon = PyEmbeddedImage(
            "iVBORw0KGgoAAAANSUhEUgAAAE4AAABECAYAAAAvMQN7AAAD+klEQVR42u1cP08yMRg//6CA"
            "KEhCSBwY3VwcNOED8AHcTEx4+QysjHwBJjYSRhIkzk6EWROjm4sTMXyKvj6XKynH9dq7a3tt"
            "735JAxJp6a/Pvz7PA46TI4dWGI/H6O8BHR4euo/k86OjI/yaMXh5eXE/P94Dfl4oFNDBwUHy"
            "/by+vroTEZPt/E0+J0jVFsvlcmcvpCCQ+yH/J/Ii7XYblcvlnYlpAxY6Pj72v64NVqsVKpVK"
            "rnZgsnzkBO4J3nN6eop+fn649+MSwZo8bBCqkCpqtZpLGGFSYo3RaIS49D/JIn4C05DAAJVL"
            "NDziw6VNJHF4A7Dw1dUVc/Fer4cqlcqOhID0wxgOh8z3Y5UU9fnJfVA16Pr6Wugp+QfMT9vw"
            "5+en+8HC1sd2h3XwsgZ8vu/v7/31wR2LlDZe4sDbRT39NIgjnIu6RRkSF5k48HaqiSOih/SJ"
            "u7y8RHENOcXmIdnqqgVxxWIx9umDE8kscQKckdI9BNpXlleTZOPEbiINicuJY68HkYcuXtUo"
            "Vb27u0PK4yAbiAu9soi+59lAHNed++TkRMp9z1TiwK7RbNseLi4uhEueicTFze7gq03WVTU6"
            "np+ft8wnlT4TiMOCwpN/4wJMmJQ83YmDvYGJ6nQ64hOv1Wo1NoG6Ewd7k5qWDijMGE0ceMyz"
            "szM16X2ogEUNWXQlzsvQqAPEe1HshwrieDPYcOhESks9vBoAVzwUlLWNQj5PpiJK6h8cQWp1"
            "y/V6PQL7wHIWtFYJATWOWPk9WgpcOVjkEbeQQFWNYi8x2e/v7zvzPT4+8pClD2l+taMRGHJ9"
            "ESJtYLNYB8B951QNLxYKHb+/v//ikkerNdzf3zOLydpJmh9w6mFqG1JU9rda7ama1wi0g263"
            "y1RtTxv0Rr/fZ54+raj89va2tXnYLhKemxpThhHHUf3XB6yyHxAiIvBkpb4gBJpMJkY1PnKH"
            "Gk9PT5E31mq1EJlwpZEn/f4pAx8fH1xNfNhwh7Q1bNFsNgO7KYPmFJYaSkvqeLofiY26Kkwm"
            "EnCzixdKcOfVGo2GucQJuh2IqrkaB9WEoZubG/OJ22w2TdUS59gCVepK2EZroEzaZrOZVcQ5"
            "CiXOLpyfn0vthrLOvmGEXeBFedSgJIDxeHh4UCFx1iIPeuPm6mQRV6/X7SVOZjxnRLIyLqCo"
            "E7cTIJOhiApVtdo5JP0ebGadQ05cAucgS11vb2/tjuNkEbdYLOwlbjAYSPlOrA7f/zfu9kB0"
            "POXERR3T6TQTxDle66iwGoOTJXjNM7EHNAYaWXBOiq+vLyRA8jIN7hCF/DEpJ4fjQPBKSl9Q"
            "JR97z/l8npPmB/wGCbRAkE3ZkHL3ekZy5Mgw/gMoRoA7F6WE6gAAAABJRU5ErkJggg=="
        )
        self.SetIcon(icon.GetIcon())

        self.sx = 0
        self.sy = 0 - 20
        self.mainpan = wx.Panel(self)
        self.configs = ConfigData()
        self.online_status = False
        self.goodcolor = self.configs.colors['online']
        self.warningcolor = self.configs.colors['offline']
        self.on_off_flag = threading.Event()
        self.running_flag = threading.Event()
        self.configs.VK_CODE

        self.__init_ui()
        self._start_watcher_thread()
Beispiel #3
0
    def __init__(self,
                 parent,
                 style=wx.FULL_REPAINT_ON_RESIZE,
                 flag=wx.ADJUST_MINSIZE):
        wx.Frame.__init__(self, parent, -1, _(u"Template-Designer"))

        self.myConfig = ConfigData()
        self.myConfig.saveConfig()
        """
        Set taskbar icon. If you remove this, do not forget to 
        remove the RemoveIcon() and Destroy() methods 
        in self.OnExitWindow()
        """
        self.taskBarIcon = wx.TaskBarIcon()
        iconPath = self.myConfig.skinGraphics() + "/domtreeviewer.png"
        icon = wx.Icon(iconPath, wx.BITMAP_TYPE_PNG)
        self.taskBarIcon.SetIcon(icon, _(u"Template-Designer"))

        #Set titlebar icon
        self.SetIcon(icon)

        self.logoPanel = wx.Panel(self, -1)
        self.settingsPanel = wx.Panel(self, -1)

        self.fullRadio = wx.RadioButton(self.settingsPanel,
                                        -1,
                                        _(u"Full Access"),
                                        name="fullAccess")
        self.fullRadio.SetValidator(WelcomeValidator(self))

        self.restrictedRadio = wx.RadioButton(self.settingsPanel,
                                              -1,
                                              _(u"Restricted Access"),
                                              name="restrictedAccess")
        self.restrictedRadio.SetValidator(WelcomeValidator(self))

        self.viewRadio = wx.RadioButton(self.settingsPanel,
                                        -1,
                                        _(u"View available templates"),
                                        name="viewAccess")
        self.viewRadio.SetValidator(WelcomeValidator(self))

        self.placeholderPanel = wx.Panel(self.settingsPanel, -1)

        self.passwordLabel = wx.StaticText(self.settingsPanel,
                                           -1,
                                           _(u"Password"),
                                           name="passwordLabel")
        self.passwordTextCtrl = wx.TextCtrl(self.settingsPanel,
                                            -1,
                                            "",
                                            style=wx.TE_PASSWORD,
                                            name="password")
        self.passwordTextCtrl.SetValidator(WelcomeValidator(self))

        logo = wx.Bitmap("logo.png", wx.BITMAP_TYPE_ANY)
        self.logoBitmap = wx.StaticBitmap(self.logoPanel, -1, logo)

        self.staticLine = wx.StaticLine(self, -1)

        self.bitplantLabel = wx.StaticText(self, -1,
                                           _(u"Bitplant Template-Designer"))
        self.goButton = wx.Button(self, -1, _(u"OK"), name="goButton")
        self.goButton.SetValidator(WelcomeValidator(self))
        self.exitButton = wx.Button(self, -1, _(u"Exit"), name="exitButton")

        self.__doProperties()
        self.__doBindings()
        self.__doLayout()
Beispiel #4
0
parser = argparse.ArgumentParser()
parser.add_argument('--config_file',
                    help='path/to/config/file',
                    default='./conf.xml')
parser.add_argument('--mode',
                    choices=['synchronize', 'echo'],
                    help='synchronize mode',
                    default='echo')

args = parser.parse_args()

confFile = args.config_file
mode = args.mode

conf = ConfigData(confFile)
conf.show()

md5FilePath = os.path.join(conf.currentDir, MD5FILE)
conf.hashDict = {}

# 初始化
if os.path.exists(md5FilePath):
    with open(md5FilePath) as f:
        for _line in f:
            _path, _md5 = _line.split()
            conf.hashDict[_path] = _md5

# 初始化更新文件md5
for root, dirs, files in os.walk(conf.currentDir):
    for name in files: