コード例 #1
0
    def __init__(self):
        Gtk.Window.__init__(self, title="Cloud Disk")

        self.set_border_width(10)
        self.maximize()
        #Setting up the self.grid in which the elements are to be positionned
        self.grid = Gtk.Grid()
        self.grid.set_column_homogeneous(True)
        self.grid.set_row_homogeneous(True)
        self.add(self.grid)
        #box = Gtk.Box(spacing=6)
        #self.add(box)
        self.tokens = auth.index()

        self.bdstoken, self.sign1, self.sign3, self.timestamp = self.tokens

        #self.connect('activate', self.on_login_dialog_close)
        #self.connect("delete-event", Gtk.main_quit)
        if not self.bdstoken:
            dialog = LoginDialog(self)
            #dialog.connect("close",self.on_login_dialog_close)
            response = dialog.run()

            dialog.destroy()
            if response == Gtk.ResponseType.DELETE_EVENT:
                print(response)
                print("quit")
                #self.close()

                self.destroy()
                return
            elif response == 11:
                print("login")
            else:
                return
        self.down_list = []

        self.current_path = "/"
        self.current_selection = None
        ##							   num,pix,filename,size,path,isdir,fsid,cate,spath,speed,progress,status
        #                              0   1   2        3     4    5     6    7    8     9     10       11
        self.liststore = Gtk.ListStore(int, GdkPixbuf.Pixbuf, str, str, str,
                                       int, str, int, str, str, int, str)
        self.current_list = []
        #self.loading_spin = Gtk.Spinner()
        #self.loading_spin.props.valign = Gtk.Align.CENTER
        #box.pack_start(self.loading_spin, False, False, 0)
        #self.grid.add(self.loading_spin)

        self.init_view(self.current_path)
        #self.spinn.hide()
        #list_json = cloudapi.list_path(self.current_path,500,settings.DRY,self.bdstoken)
        #logger.debug("list json: %s"%str(len(list_json))
        #file_list = cloudapi.get_list(list_json)
        #logger.debug("file_list: %s"%str(file_list))

        #self.populate_view(file_list)

        self.stop_gif = False

        #creating the treeview, making it use the filter as a model, and adding the columns
        self.treeview = Gtk.TreeView(model=self.liststore)
        for i, column_title in enumerate(
            ["Num", "Thumb", "File", "Size", "Path"]):
            if column_title != "Thumb":
                renderer = Gtk.CellRendererText()
                column = Gtk.TreeViewColumn(column_title, renderer, text=i)
            else:
                renderer_pixbuf = Gtk.CellRendererPixbuf()

                column = Gtk.TreeViewColumn(column_title,
                                            renderer_pixbuf,
                                            pixbuf=i)

            #if not column_title == 'isdir' and not column_title == 'fsid' and not column_title == 'cate'  :
            self.treeview.append_column(column)

        self.treeview.props.activate_on_single_click = False
        self.treeview.connect("row-activated", self.on_row_double_click)

        self.selection = self.treeview.get_selection()
        self.selection.connect("changed", self.on_tree_selection_changed)
        self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)
        #select = selection.get_selected_rows()

        #creating buttons to filter by programming language, and setting up their events
        self.buttons = list()
        for act in [
                "Up level", "Refresh View", "Batch Add Task", "Remove File",
                "Download", "CleanUp", "Search"
        ]:
            button = Gtk.Button(act)
            self.buttons.append(button)
            funcname = "on_%s_button_clicked" % act.lower().replace(" ", "_")
            print(funcname)
            func = getattr(self, funcname)
            button.connect("clicked", func)

        #setting up the layout, putting the treeview in a scrollwindow, and the buttons in a row
        self.scrollable_treelist = Gtk.ScrolledWindow()
        self.scrollable_treelist.set_vexpand(True)
        #self.grid.attach(self.loading_spin, 0, 0, 10, 20)
        #self.grid.attach_next_to(self.scrollable_treelist,self.loading_spin, Gtk.PositionType.BOTTOM, 10, 23)
        self.grid.attach(self.scrollable_treelist, 0, 0, 8, 20)
        #box.pack_start(self.scrollable_treelist, True, True, 0)
        self.grid.attach_next_to(self.buttons[0], self.scrollable_treelist,
                                 Gtk.PositionType.BOTTOM, 1, 1)
        for i, button in enumerate(self.buttons[1:]):
            self.grid.attach_next_to(button, self.buttons[i],
                                     Gtk.PositionType.RIGHT, 1, 1)
            #self.add_action_widget(self.buttons[i],i+1)
            #box.pack_start(self.buttons[i], False, False, 0)
        self.scrollable_treelist.add(self.treeview)

        #box.show_all()
        self.grid.show_all()
コード例 #2
0
ファイル: MajorWindow.py プロジェクト: xiviwo/baiducloud
	def __init__(self):
		Gtk.Window.__init__(self, title="Cloud Disk")

		self.set_border_width(10)
		self.maximize()
		#Setting up the self.grid in which the elements are to be positionned
		self.grid = Gtk.Grid()
		self.grid.set_column_homogeneous(True)
		self.grid.set_row_homogeneous(True)
		self.add(self.grid)
		#box = Gtk.Box(spacing=6)
		#self.add(box)
		self.tokens = auth.index()

		self.bdstoken,self.sign1,self.sign3,self.timestamp = self.tokens
	
		#self.connect('activate', self.on_login_dialog_close)
		#self.connect("delete-event", Gtk.main_quit)
		if not self.bdstoken:
			dialog = LoginDialog(self)	
			#dialog.connect("close",self.on_login_dialog_close)
			response = dialog.run()
	
			dialog.destroy()
			if response == Gtk.ResponseType.DELETE_EVENT:
				print(response)
				print("quit")
				#self.close()
		
				self.destroy()
				return
			elif response == 11:
				print("login")
			else:
				return 
		self.down_list = []

		self.current_path = "/"
		self.current_selection = None
		##							   num,pix,filename,size,path,isdir,fsid,cate,spath,speed,progress,status
		#                              0   1   2        3     4    5     6    7    8     9     10       11
		self.liststore = Gtk.ListStore(int,GdkPixbuf.Pixbuf,str, str, str,int,str,int,str,str,int,str)
		self.current_list = []
		#self.loading_spin = Gtk.Spinner()
		#self.loading_spin.props.valign = Gtk.Align.CENTER
		#box.pack_start(self.loading_spin, False, False, 0)
		#self.grid.add(self.loading_spin)
		
		self.init_view(self.current_path)
		#self.spinn.hide()
		#list_json = cloudapi.list_path(self.current_path,500,settings.DRY,self.bdstoken)
		#logger.debug("list json: %s"%str(len(list_json))
		#file_list = cloudapi.get_list(list_json)
		#logger.debug("file_list: %s"%str(file_list))


		#self.populate_view(file_list)
		
		self.stop_gif = False


		#creating the treeview, making it use the filter as a model, and adding the columns
		self.treeview = Gtk.TreeView(model=self.liststore)
		for i, column_title in enumerate(["Num","Thumb","File", "Size", "Path"]):
			if column_title != "Thumb":
				renderer = Gtk.CellRendererText()
				column = Gtk.TreeViewColumn(column_title, renderer, text=i)
			else:
				renderer_pixbuf = Gtk.CellRendererPixbuf()
				
				column = Gtk.TreeViewColumn(column_title, renderer_pixbuf,pixbuf=i)
			
			#if not column_title == 'isdir' and not column_title == 'fsid' and not column_title == 'cate'  :
			self.treeview.append_column(column)

		self.treeview.props.activate_on_single_click = False
		self.treeview.connect("row-activated",self.on_row_double_click)


		self.selection = self.treeview.get_selection()
		self.selection.connect("changed", self.on_tree_selection_changed)
		self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)
		#select = selection.get_selected_rows() 

		#creating buttons to filter by programming language, and setting up their events
		self.buttons = list()
		for act in ["Up level", "Refresh View", "Batch Add Task", "Remove File", "Download","CleanUp","Search"]:
			button = Gtk.Button(act)
			self.buttons.append(button)
			funcname = "on_%s_button_clicked"%act.lower().replace(" ","_")
			print(funcname)
			func = getattr(self, funcname)
			button.connect("clicked", func)


		#setting up the layout, putting the treeview in a scrollwindow, and the buttons in a row
		self.scrollable_treelist = Gtk.ScrolledWindow()
		self.scrollable_treelist.set_vexpand(True)
		#self.grid.attach(self.loading_spin, 0, 0, 10, 20)
		#self.grid.attach_next_to(self.scrollable_treelist,self.loading_spin, Gtk.PositionType.BOTTOM, 10, 23)
		self.grid.attach(self.scrollable_treelist, 0, 0, 8, 20)
		#box.pack_start(self.scrollable_treelist, True, True, 0)
		self.grid.attach_next_to(self.buttons[0], self.scrollable_treelist, Gtk.PositionType.BOTTOM, 1, 1)
		for i, button in enumerate(self.buttons[1:]):
			self.grid.attach_next_to(button, self.buttons[i], Gtk.PositionType.RIGHT, 1, 1)
			#self.add_action_widget(self.buttons[i],i+1)
			#box.pack_start(self.buttons[i], False, False, 0)
		self.scrollable_treelist.add(self.treeview)

		#box.show_all()
		self.grid.show_all()
コード例 #3
0
ファイル: Login.py プロジェクト: mgaitan/beppo
class Login:
    PORTNO = 10102
    #BACKGROUND = "#c0a9cf"
    BACKGROUND = "#c098af"

    def __init__(self):
        self.window = Tk()
        self.window["bg"] = self.BACKGROUND
        self.window.title(APP_NAME)
        self.window.minsize(700, 550)

        tksupport.install(self.window)
        self.window.protocol("WM_DELETE_WINDOW", self.application_quit)

        self.createMenu()

        selectionGet = self.window.selection_get
        self.client = Client(self, selectionGet)
        self.client.pack()

        self.factory = pb.PBClientFactory()
        self.window.wait_visibility()
        self.logindialog = LoginDialog(self.window, self.loginSuccess, self.application_quit, REMOTE_SERVER, self.PORTNO, self.factory, self.client.cc)
        reactor.callWhenRunning(self.logindialog.run)
        reactor.run()

    def loginSuccess(self, avatar):
        self.client.setAvatar(avatar)
        #self.client.swb.focus_set()
        self.window.bind("<FocusIn>", lambda e: self.client.swb.focus_set())
        df = avatar.callRemote("getWbServer")
        df.addCallback(self.gotRootObject)
        df2 = avatar.callRemote("whoami")
        df2.addCallback(self.updateMenu)
        df3 = avatar.callRemote("myName")
        df3.addCallback(self.client.setName)
        df3.addCallback(lambda a: self.setWindowStatus())

    def setWindowStatus(self, desc=OUT):
        self.window.title(APP_NAME + " - " + self.client.name + " (" + statusMsg[desc] +")")

    def showRoomAdmin(self, event=None):
        self.client.showRooms()

    def showPostAdmin(self, event=None):
        self.client.showPost()

    def showQuestionAdmin(self, event=None):
        self.client.showQuestions()

    def showSubjectAdmin(self, event=None):
        self.client.showSubjects()

    def gotRootObject(self, root):
        self.client.setRoot(root)

    def createMenu(self):
        menubar = Menu(self.window)

        self.fileMenu = Menu(menubar, tearoff=0)
        self.fileMenu.add_command(label=_("Lista de aulas"), command=self.showRoomAdmin)
        self.fileMenu.add_command(label=_("Lista de materias"), command=self.showSubjectAdmin)
        self.fileMenu.add_separator()
        self.fileMenu.add_command(label=_("Imprimir"))
        self.fileMenu.add_separator()
        self.fileMenu.add_command(label=_("Salir"), command=self.application_quit)
        menubar.add_cascade(label=_("Archivo"), menu=self.fileMenu)

        self.editMenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label=_("Edicion"), menu=self.editMenu)

        self.emoticMenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label=_("Emoticonos"), menu=self.emoticMenu)

        self.symbolMenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label=_("Simbolos"), menu=self.symbolMenu)

        self.mathMenu = Menu(self.symbolMenu, tearoff=0)
        self.symbolMenu.add_cascade(label=_("Matematica"), menu=self.mathMenu)

        self.greekMenu = Menu(self.symbolMenu, tearoff=0)
        self.symbolMenu.add_cascade(label=_("Griego"), menu=self.greekMenu)

        self.helpMenu = Menu(menubar, tearoff=0)
        self.helpMenu.add_command(label=_("Manual de instrucciones"), command=self.showHelp)
        self.helpMenu.add_command(label=_("Acerca de..."), command=self.showAbout)
        menubar.add_cascade(label=_("Ayuda"), menu=self.helpMenu)

        self.linksMenu = Menu(menubar, tearoff=0)
        self.linksMenu.add_command(label=_("Links utiles"), command=self.showLinks)
        menubar.add_cascade(label=_("Links"), menu=self.linksMenu)

        self.window.config(menu=menubar)

    def showHelp(self):
        webbrowser.open(APP_URL + '/content/help.html', new=0)

    def showLinks(self):
        webbrowser.open(APP_URL + '/content/links.html', new=0)

    def showAbout(self):
        pass

    def updateMenu(self, whoami):
        if whoami == TUTOR:
            self.fileMenu.insert_command(1, label=_("Preguntas offline"), command=self.showQuestionAdmin)
            self.fileMenu.insert_command(2, label=_("Postprocesado de pizarras"), command=self.showPostAdmin)
        self.editMenu.add_command(label=_("Cortar"), accelerator="Ctrl-X", command=self.client.swb.wb.cutSelection)
        self.editMenu.add_command(label=_("Copiar"), accelerator="Ctrl-C", command=self.client.swb.wb.copySelection)
        self.editMenu.add_command(label=_("Pegar"), accelerator="Ctrl-V", command=self.client.swb.wb.paste)
        self.editMenu.add_separator()
        self.editMenu.add_command(label=_("Importar texto"), accelerator="Ctrl-B", command=self.client.swb.wb.pasteForeign)
        self._loadImgMenu(self.emoticMenu, EMOTIC)
        self._loadImgMenu(self.greekMenu, SYMBOL)
        self._loadImgMenu(self.mathMenu, MATH)

    def _loadImgMenu(self, menu, kind):
        first = self.client.swb.wb.imgs.firstKind(kind)
        q = self.client.swb.wb.imgs.getQKind(kind)
        for x in range(first, first + q):
            self._createImgOption(menu, x)

    def _createImgOption(self, menu, imgNumber):
        menu.add_command(image=self.client.swb.wb.imgs.getImg(imgNumber), command=lambda: self.client.swb.wb.putImg(imgNumber))

    def application_quit(self, widget=None):
        if reactor.running:
            reactor.stop()
        self.logindialog.destroy()
        self.window.quit()