Exemple #1
0
 def btnSaveSet_handle(self, event):
     if os.path.isdir(self.txtSetDownPath.GetValue()) and os.path.isdir(
             self.txtSetPrintPath.GetValue()):
         global_var.setting['download_path'] = self.txtSetDownPath.GetValue(
         )
         global_var.setting['print_path'] = self.txtSetPrintPath.GetValue()
         GUItools.saveSetting()
         global_var.warnDialog.html.SetPage(u'''
         <html>
         <body bgcolor="#FFEFD5">
         <centre><font size=4><strong>下载文件夹和打印文件夹的设置保存成功!</font></centre>
         
         </body>
         </html>
         ''')
         global_var.warnDialog.SetSize((400, 150))
         global_var.warnDialog.SetTitle(u"设置完成")
         global_var.warnDialog.ShowModal()
     else:
         global_var.warnDialog.html.SetPage(u'''
         <html>
         <body bgcolor="#FFEFD5">
         <centre><font size=4><strong>你设置的文件夹不存在,请重新设置</font></centre>
         
         </body>
         </html>
         ''')
         global_var.warnDialog.SetSize((300, 150))
         global_var.warnDialog.SetTitle(u"文件夹不存在!")
         global_var.warnDialog.ShowModal()
Exemple #2
0
 def btnLogin_handle(self, event):
     self.btnSaveSet_handle(event)
     if os.path.isdir(self.txtSetDownPath.GetValue()) and os.path.isdir(
             self.txtSetPrintPath.GetValue()):
         userid = self.txtUserid.GetValue()
         userpass = self.txtUserpass.GetValue()
         if (userid == '' or userpass == ''):
             global_var.warnDialog.html.SetPage(u'''
             <html>
             <body bgcolor="#FFEFD5">
             <centre><font size=4><strong>用户名和密码不能为空!</font></centre>
             
             </body>
             </html>
             ''')
             global_var.warnDialog.SetSize((300, 150))
             global_var.warnDialog.SetTitle(u"请输入用户名密码")
             global_var.warnDialog.ShowModal()
         else:
             self.info = [userid, userpass]
             if (self.autoSaved.GetValue()):
                 global_var.setting['userinfo'][0] = aeslib.encode(userid)
                 global_var.setting['userinfo'][1] = aeslib.encode(userpass)
                 global_var.setting['autologin'] = True
                 GUItools.saveSetting()
             else:
                 global_var.setting['autologin'] = False
                 GUItools.saveSetting()
                 global_var.setting['userinfo'][0] = aeslib.encode(userid)
                 global_var.setting['userinfo'][1] = aeslib.encode(userpass)
             self.EndModal(wx.ID_OK)
         return
Exemple #3
0
 def btnLogin_handle(self,event):
     self.btnSaveSet_handle(event)
     if os.path.isdir(self.txtSetDownPath.GetValue()) and os.path.isdir(self.txtSetPrintPath.GetValue()):
         userid=self.txtUserid.GetValue()
         userpass=self.txtUserpass.GetValue()
         if (userid == '' or userpass=='' ):
             global_var.warnDialog.html.SetPage(u'''
             <html>
             <body bgcolor="#FFEFD5">
             <centre><font size=4><strong>用户名和密码不能为空!</font></centre>
             
             </body>
             </html>
             ''')
             global_var.warnDialog.SetSize((300,150))
             global_var.warnDialog.SetTitle(u"请输入用户名密码")
             global_var.warnDialog.ShowModal()
         else:
             self.info=[userid,userpass]
             if (self.autoSaved.GetValue()):
                 global_var.setting['userinfo'][0]=aeslib.encode(userid)
                 global_var.setting['userinfo'][1]=aeslib.encode(userpass)
                 global_var.setting['autologin']=True
                 GUItools.saveSetting()
             else:
                 global_var.setting['autologin']=False
                 GUItools.saveSetting()
                 global_var.setting['userinfo'][0]=aeslib.encode(userid)
                 global_var.setting['userinfo'][1]=aeslib.encode(userpass)
             self.EndModal(wx.ID_OK)
         return
Exemple #4
0
 def btnSaveSet_handle(self,event):
     if os.path.isdir(self.txtSetDownPath.GetValue()) and os.path.isdir(self.txtSetPrintPath.GetValue()):
         global_var.setting['download_path']=self.txtSetDownPath.GetValue()
         global_var.setting['print_path']=self.txtSetPrintPath.GetValue()
         GUItools.saveSetting()
         global_var.warnDialog.html.SetPage(u'''
         <html>
         <body bgcolor="#FFEFD5">
         <centre><font size=4><strong>下载文件夹和打印文件夹的设置保存成功!</font></centre>
         
         </body>
         </html>
         ''')
         global_var.warnDialog.SetSize((400,150))
         global_var.warnDialog.SetTitle(u"设置完成")
         global_var.warnDialog.ShowModal()
     else:
         global_var.warnDialog.html.SetPage(u'''
         <html>
         <body bgcolor="#FFEFD5">
         <centre><font size=4><strong>你设置的文件夹不存在,请重新设置</font></centre>
         
         </body>
         </html>
         ''')
         global_var.warnDialog.SetSize((300,150))
         global_var.warnDialog.SetTitle(u"文件夹不存在!")
         global_var.warnDialog.ShowModal()
Exemple #5
0
def DownCourse(courseindex):
    global_var.app_stat = 'downcourse'
    conn = global_var.conn
    list = global_var.list
    download_path = global_var.setting['download_path']
    os.chdir(download_path)
    coursedir = os.path.join(download_path, list[courseindex][1])
    if not os.path.exists(coursedir):
        os.mkdir(coursedir)
    for fileindex in range(len(global_var.list[courseindex][2])):
        file = global_var.list[courseindex][2][fileindex]
        if FileType(courseindex, fileindex) != 0:
            continue
        else:
            if global_var.app_stat == 'breakdown':
                global_var.statusBar.SetStatusText(u"状态:空闲", 2)
                return
            #filepath=os.path.join(download_path,list[courseindex][1],file['file_realname'])
            #newfile=open(filepath,'wb')
            #global_var.statusBar.SetStatusText(u'正在下载'+file['file_realname']+' ......',1)
            #print u'正在下载'+file['file_realname']+u' ......'
            #newfile.write(conn.open(file['file_url']).read())
            #newfile.close()
            #print u'=='+file['file_realname']+u'下载完毕'
            DownSingle(courseindex, fileindex)
            #此句刷新文件列表显示
            GUItools.ShowFile(courseindex)
            global_var.lstLocalFile.InsertStringItem(
                len(global_var.local_files),
                global_var.list[courseindex][2][fileindex]['file_realname'])
            global_var.lstLocalFile.SetItemImage(len(global_var.local_files),
                                                 0)
            #注意print_file列表中只有索引没有其他信息
            #local_files中是课程索引和文件索引的元组
            global_var.print_files.append(len(global_var.local_files))
            global_var.local_files.append((courseindex, fileindex))
    global_var.statusBar.SetStatusText(
        u'<<' + list[courseindex][1] + u'>>的所有课件下载完毕', 1)
    print '-' * 80
    print '>>' + list[courseindex][1] + u' 的课程文件下载完毕'
Exemple #6
0
def refreshFiles():
    global_var.app_stat = 'refreshfile'
    global_var.newfile = []
    oldfile = []
    global_var.prelist = deepcopy(global_var.list)
    list = global_var.list
    prelist = global_var.prelist
    conn = global_var.conn
    conn.login()
    pf = parserFile()
    #存储旧文件
    for course in prelist:
        for file in course[2]:
            oldfile.append(file['file_url'])
    #打开课程下载界面,解析文件地址
    for course in list:
        global_var.log_num += 1
        if (global_var.log_num == 2):
            global_var.t2 = GUItools.MyThread(count, 'name')
            global_var.t2.start()
        ff = conn.open(
            '/MultiLanguage/lesson/student/download.jsp?course_id=' +
            course[0][-6:])
        filepage = ff.read()
        ff.close()
        pf.__init__()
        pf.feed(filepage)
        course[2] = pf.files

    #把新的文件加入新文件列表中
    for courseindex in range(len(list)):
        course = list[courseindex]
        for fileindex in range(len(course[2])):
            file = course[2][fileindex]
            if not (file['file_url'] in oldfile):
                global_var.newfile.append((courseindex, fileindex))

    #确定每个文件的具体信息(文件名,实际大小)
    for course in list:
        print u"-" * 60
        global_var.statusBar.SetStatusText(u"正在解析<<" + course[1] + u">>的课件信息:",
                                           1)
        print u"....开始解析 " + course[1] + u"的课件信息:"
        print u"-" * 60
        for file in course[2]:
            data = conn.open(file['file_url'], method="HEAD")
            uu = data.getheader('content-disposition')
            file['file_realsize'] = int(data.getheader('content-length'))
            data.read()
            data.close()
            raw_name = re.findall(r'=".*"', uu)[0][2:-1]
            raw_name = raw_name.decode('gbk')
            global_var.statusBar.SetStatusText(
                u"发现文件 " + raw_name + u'  大小:' + str(file['file_realsize']), 1)
            print u"  " + raw_name + u'  大小:' + str(file['file_realsize'])
            #找寻随机数
            try:
                file_random = re.findall(r'\S+_(\d{7,9}).\w+$', raw_name)[0]
            except:
                file_random = ''

            if file_random:
                file['file_realname'] = raw_name.replace('_' + file_random, '')
            else:
                print '无法解析除随机号,使用原文件名,请报告这个错误'
                file['file_realname'] = raw_name
            # file['file_realname']=raw_name
    ShowNew()
Exemple #7
0
 def __init__(self, *args, **kwds):
     # begin wxGlade: MainFrame.__init__
     kwds["style"] = wx.DEFAULT_FRAME_STYLE
     wx.Frame.__init__(self, *args, **kwds)
     self.panel_1 = wx.Panel(self, -1)
     self.panel_4 = wx.Panel(self.panel_1, -1)
     self.panel_7 = wx.Panel(self.panel_4, -1)
     self.panel_3 = wx.Panel(self.panel_1, -1)
     self.panel_6 = wx.Panel(self.panel_3, -1)
     self.panel_5 = wx.Panel(self.panel_3, -1)
     self.sizer_7_staticbox = wx.StaticBox(self.panel_6, -1, _(u"课程公告"))
     self.sizer_10_staticbox = wx.StaticBox(self.panel_4, -1, _(u"本次下载的文件"))
     self.sizer_11_staticbox = wx.StaticBox(self.panel_4, -1, _(u"远程文件信息"))
     self.sizer_6_staticbox = wx.StaticBox(self.panel_5, -1, _(u"我的课程"))
     
     # Menu Bar
     self.mainFrame_menubar = wx.MenuBar()
     self.SetMenuBar(self.mainFrame_menubar)
     self.excMenu = wx.Menu()
     self.logItem = wx.MenuItem(self.excMenu, wx.NewId(), _(u"登录设置"), "", wx.ITEM_NORMAL)
     self.excMenu.AppendItem(self.logItem)
     self.hideItem = wx.MenuItem(self.excMenu, wx.NewId(), _(u"隐藏"), "", wx.ITEM_NORMAL)
     self.excMenu.AppendItem(self.hideItem)
     self.exitItem = wx.MenuItem(self.excMenu, wx.NewId(), _(u"退出"), "", wx.ITEM_NORMAL)
     self.excMenu.AppendItem(self.exitItem)
     self.mainFrame_menubar.Append(self.excMenu, _(u"操作"))
     self.hlpMenu = wx.Menu()
     self.hlpItem = wx.MenuItem(self.hlpMenu, wx.NewId(), _(u"帮助文档"), "", wx.ITEM_NORMAL)
     self.hlpMenu.AppendItem(self.hlpItem)
     self.aboutItem = wx.MenuItem(self.hlpMenu, wx.NewId(), _(u"说明"), "", wx.ITEM_NORMAL)
     self.hlpMenu.AppendItem(self.aboutItem)
     self.mainFrame_menubar.Append(self.hlpMenu, _(u"帮助"))
     ###### Task Icon! #######
     self.tbicon = ddTaskBarIcon(self)
     self.tbicon.Bind(wx.EVT_MENU, self.exitApp, id=wx.ID_EXIT)
     self.tbicon.Bind(wx.EVT_MENU, self.hide, id=self.tbicon.HIDE)
     self.tbicon.Bind(wx.EVT_MENU, self.restore, id=self.tbicon.RESTORE)
     # Menu Bar end
     self.statusBar = self.CreateStatusBar(1, 0)
     
     # Tool Bar
     self.mainFrame_toolbar = wx.ToolBar(self, -1)
     self.SetToolBar(self.mainFrame_toolbar)
     self.toolLogin=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"登陆"), wx.Bitmap(rp("extra\\Login.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"登陆网络学堂"), "")
     self.toolDownAll=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"下载更新"), wx.Bitmap(rp("extra\\DownAll.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"一键即可查询所有课程的课件,下载所有课件,并显示出所有课程的公告,您可以去喝咖啡啦:)"), "")
     self.toolDownAllFiles=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"下载课件"), wx.Bitmap(rp("extra\\DownFile.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"下载所有课程的课件"), "")
     self.toolRefreshNotes=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"更新公告"), wx.Bitmap(rp("extra\\Notice.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"刷新并显示所有课程的公告"), "")
     self.tollRefreshAll=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"刷新"), wx.Bitmap(rp("extra\\Refresh.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"重新查询所有课程的课件列表"), "")
     self.toolStop=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"停止"), wx.Bitmap(rp("extra\\Stop.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"停止正在进行的动作"), "")
     self.toolHide=self.mainFrame_toolbar.AddLabelTool(wx.NewId(), _(u"最小化到托盘"), wx.Bitmap(rp("extra\\Hide.png"), wx.BITMAP_TYPE_PNG), wx.NullBitmap, wx.ITEM_NORMAL, _(u"最小化到右下角的任务栏托盘"), "")
     # Tool Bar end
     self.lstRemoteCourse = wx.ListCtrl(self.panel_5, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
     self.html = wx.html.HtmlWindow(self.panel_6, -1)
     self.lstLocalFile = wx.ListCtrl(self.panel_4, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
     self.btnCopy = wx.Button(self.panel_4, -1, _(u"把标记的课件复制到打印文件夹"))
     self.lstRemoteFile = wx.ListCtrl(self.panel_7, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
     self.btnDownMarked = wx.Button(self.panel_7, -1, _(u"下载标记的课件"))
     self.btnMarkAll = wx.Button(self.panel_7, -1, _(u"标记本课程所有课件"))
     self.btnDemarkAll = wx.Button(self.panel_7, -1, _(u"取消所有课件的标记"))
     self.btnRefresh = wx.Button(self.panel_7, -1, _(u"刷新本课程"))
     #self.statusBar = self.CreateStatusBar()
     GUItools.FrameInit(self)
     self.__set_properties()
     self.__do_layout()