Ejemplo n.º 1
0
    def __init__(self, setting_path, folder):
        self.win = Gtk.Window()
        self.win.set_default_size(800, 500)

        #HeadBar
        self.head = Gtk.HeaderBar()
        self.head.props.show_close_button = True
        self.head.props.title = g("PlankSetting")
        self.win.set_titlebar(self.head)

        #instance
        self.ins = Window(setting_path, folder)
        self.themes = Theme(setting_path, folder)
        self.adda = AddApps(setting_path, folder)

        self.box = Gtk.VBox()
        self.menu = Gtk.MenuBar()
        self.menu.set_hexpand(True)

        self.plankmenu = Gtk.MenuItem(g("Menu"))
        self.menu.append(self.plankmenu)
        self.m = Gtk.Menu()
        self.plankmenu.set_submenu(self.m)
        """ Translate """
        self.tra = Gtk.MenuItem(g("Translate this Application"))
        self.tra.connect('activate', self.translation)
        self.m.append(self.tra)
        """ Report a bug """
        self.bug = Gtk.MenuItem(g("Report a bug"))
        self.bug.connect('activate', self.report)
        self.m.append(self.bug)
        """ About """
        self.abt = Gtk.MenuItem(g("About"))
        self.abt.connect('activate', self.about)
        self.m.append(self.abt)
        """ Exit """
        self.xit = Gtk.MenuItem(g("Exit"))
        self.xit.connect('activate', self.destroy)
        self.m.append(self.xit)

        """ Tabs """
        self.tab = Gtk.Notebook()
        self.tab.append_page(self.ins.scroll, Gtk.Label(g("General")))
        self.tab.append_page(self.themes.box, Gtk.Label(g("Themes")))
        self.tab.append_page(self.adda.box, Gtk.Label(g("Group Apps")))

        self.head.pack_start(self.menu)
        self.box.pack_end(self.tab, True, True, 25)

        #self.win = HeaderBarWindow()
        self.win.add(self.box)
        self.win.show_all()
        self.win.connect("destroy", self.destroy)
Ejemplo n.º 2
0
    def addgroup(self, widget):
        self.dialog = Gtk.Dialog(title=g("New Group"), buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK))

        label = Gtk.Label(g("Enter the Group name"))
        entry = Gtk.Entry()

        box = self.dialog.get_content_area()
        box.add(label)
        box.add(entry)
        box.show_all()
        response = self.dialog.run()
        if response == Gtk.ResponseType.OK:
            if len(entry.get_text()) > 0:
                with open(self.dockitems + entry.get_text() + ".dockitem", 'w') as rf:
                    rf.write("[PlankItemsDockItemPreferences]\nLauncher=file://" + self.groupdir + entry.get_text())
                self.makedire(self.groupdir + entry.get_text())
        self.refresh(self.liststore, self.groupdir)
        self.dialog.destroy()
Ejemplo n.º 3
0
	def addfunc(self, widget):
		f = widget.get_filename()
		bn = os.path.basename(f)
		name = bn[:bn.find(".")+1]
		path = self.theme_path + '/' + name
		newpath = self.theme_path + '/' + name[:name.find('_')].capitalize()
		if f.find('.') != -1:
			if f[f.find('.')+1:] == 'rar':
				try:
					with RarFile(f, 'r') as fi:
							if (len(fi.namelist()) == 2) and ('dock.theme' in fi.namelist()) and ('hover.theme' in fi.namelist()):
								fi.extractall(self.theme_path+'/'+name[:name.find('_')].capitalize(), fi.namelist())
					os.system("unrar x {0} {1}".format(f, self.theme_path))
				except:
					msg = Gtk.MessageDialog(message_type = Gtk.MessageType.WARNING, message_format = g("You dont have a UNRAR program\nPlease make sure to install it before!"))
					msg.run()
					msg.destroy()
			elif f[f.find('.')+1:] == 'tar':
				with tarfile.TarFile(f, 'r') as fi:
					if (len(fi.getnames()) == 2) and ('dock.theme' in fi.getnames()) and ('hover.theme' in fi.getnames()):
						fi.extractall(self.theme_path+'/'+name[:name.find('_')].capitalize(), fi.namelist())
			elif f[f.find('.')+1:] == 'tar.bz2':
				with tarfile.open(f, 'r') as fi:
					i = 0
					for a in fi.getmembers():
						if (name+'/'+a.name == 'dock.theme') or (name+'/'+a.name == 'hover.theme'):
							i += 1
					fi.extractall(self.theme_path, fi.getmembers())
			elif f[f.find('.')+1:] == 'tar.gz':
				with tarfile.open(f, 'r') as fi:
					i = 0
					for a in fi.getmembers():
						if (name+'/'+a.name == 'dock.theme') or (name+'/'+a.name == 'hover.theme'):
							i += 1
					fi.extractall(self.theme_path, fi.getmembers())
			
			elif f[f.find('.')+1:] == 'zip':
					try:
						with zipfile.ZipFile(f, 'r') as fi:
							if (len(fi.namelist()) == 2) and ('dock.theme' in fi.namelist()) and ('hover.theme' in fi.namelist()):
								fi.extractall(self.theme_path+'/'+name[:name.find('_')].capitalize(), fi.namelist())
					except:
						msg = Gtk.MessageDialog(message_type = Gtk.MessageType.WARNING, message_format = g("You dont have a UNZIP program\nPlease make sure to install it before!"))
						msg.run()
						msg.destroy()
					
		else:
			msg = Gtk.MessageDialog(message_type = Gtk.MessageType.WARNING, message_format = g("The theme format is not supported!"))
			msg.run()
			msg.destroy()
		try:
			os.rename(path, newpath)
		except:
			pass
		self.refresh(self.liststore)
Ejemplo n.º 4
0
    def about(self, widget):
        about = Gtk.AboutDialog()
        about.set_program_name(g("PlankSetting"))
        about.set_logo(
            GdkPixbuf
            .Pixbuf.new_from_file("/usr/share/pixmaps/planksetting.png"))
        about.set_icon(
            GdkPixbuf.Pixbuf
            .new_from_file("/usr/share/pixmaps/planksetting_logo.png"))
        about.set_version("0.1.3.1")
        about.set_comments(
            g("A stupid application to customize plank dock easily."))
        about.set_copyright("Copyright (c) 2014-2015 Karim Oulad Chalha")
        about.set_website("http://karim88.github.io/PlankSetting/")
        about.set_website_label(g("PlankSetting website"))
        about.set_authors(["Karim Oulad Chalha"])
        about.set_license(g("GPL v3"))
        about.set_translator_credits(g("translator-credits"))

        about.run()
        about.destroy()
Ejemplo n.º 5
0
	def __init__(self, setting_path, folder):
		self.theme_path = os.path.expanduser("~") + "/.local/share/plank/themes"
		self.sys_theme_path = "/usr/share/plank/themes"
		self.setting = setting_path + folder + "/settings"
		self.win = Gtk.Window()
		self.scroll = Gtk.ScrolledWindow()
		
		self.liststore = Gtk.ListStore(str)
		self.refresh(self.liststore)
		
		self.treeview = Gtk.TreeView(model=self.liststore)
		
		self.treeviewcolumn = Gtk.TreeViewColumn(g("Themes"))
		self.treeview.append_column(self.treeviewcolumn)
		self.cellrenderertext = Gtk.CellRendererText()
		self.treeviewcolumn.pack_start(self.cellrenderertext, True)
		self.treeviewcolumn.add_attribute(self.cellrenderertext, "text", 0)
		self.select = self.treeview.get_selection()
		self.read_file()
		self.select.connect("changed", self.on_tree_selection_changed)
		
		self.button = Gtk.ButtonBox()
		self.button.set_spacing(15)
		self.b = Gtk.FileChooserButton()
		self.b.set_tooltip_text(g("Add a theme"))
		self.b.connect('file-set', self.addfunc)
		self.button.add(self.b)
		self.b1 = Gtk.Button(stock=Gtk.STOCK_REMOVE)
		self.b1.set_tooltip_text(g("Remove a theme"))
		self.b1.connect('clicked', self.delfunc)
		self.button.add(self.b1)
		
		self.scroll.add(self.treeview)
		
		self.box = Gtk.VBox()
		self.box.pack_start(self.scroll, True, True, 15)
		self.box.pack_start(self.button, False, False, 15)
Ejemplo n.º 6
0
 def toggled(widget):
     value = 0
     if widget.get_active():
         if widget.get_label() == g("Hide")or widget.get_label()== g("Left") or widget.get_label() == g("Panel mode"):
             value = 0
         elif widget.get_label() == g("Intelligently hide") or widget.get_label() == g("Right") or widget.get_label() == g("Right aligned"):
             value = 1
         elif widget.get_label() == g("Auto hide") or widget.get_label() == g("Top") or widget.get_label() == g("Left aligned"):
             value = 2
         elif widget.get_label() == g("Dodge") or widget.get_label() == g("Bottom") or widget.get_label() == g("Centered"):
             value = 3
     if nmbr == 1:
         write_func(read_func(self.setting), self.setting, "HideMode", value)
     elif nmbr == 2:
         write_func(read_func(self.setting), self.setting, "Position", value)
     elif nmbr == 3:
         write_func(read_func(self.setting), self.setting, "Alignment", value)
     elif nmbr == 4:
         write_func(read_func(self.setting), self.setting, "ItemsAlignment", value)
Ejemplo n.º 7
0
	def delfunc(self, widget):
		model, treeiter = self.select.get_selected()
		sys = False
		try:
			if model[treeiter][0] in os.listdir(self.theme_path):
				rmtheme = self.theme_path+'/'+model[treeiter][0]
			else:
				rmtheme = self.sys_theme_path+'/'+model[treeiter][0]
				sys = True
			msg = Gtk.MessageDialog(None, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK_CANCEL, g("Do you really wanna remove the theme {} ?").format(model[treeiter][0]))
			resp = msg.run()
			if resp == Gtk.ResponseType.OK:
				if sys:
					os.system("gksu 'rm -r {0}'".format(rmtheme))
				else:
					shutil.rmtree(rmtheme)
			msg.destroy()
		except:
			pass
		self.refresh(self.liststore)
Ejemplo n.º 8
0
    def __init__(self, setting_path, folder):
        self.win = Gtk.Window()
        self.setting = setting_path + folder + "/settings"
        self.scroll = Gtk.ScrolledWindow()

        #Whether to show only windows of the current workspace.
        self.label1 = Gtk.Label(g("Show windows"))
        self.label1.set_tooltip_text(
            g("Show only windows of the current workspace."))
        self.switch = Gtk.Switch()
        self.switch.connect("notify::active", self.switched)

        #The size of dock icons (in pixels).
        self.label2 = Gtk.Label(g("Dock size"))
        self.label2.set_tooltip_text(g("The size of dock icons (in pixels)."))
        self.adjustment = Gtk.Adjustment(32, 16, 48, 1, 5, 0)
        self.spinbutton = Gtk.SpinButton(adjustment=self.adjustment)
        self.spinbutton.connect("value-changed", self.spinb_chenged)

        #If 0, the dock won't hide.  If 1,
        #the dock intelligently hides.  If 2, the dock auto-hides.
        #If 3, the dock dodges active maximized windows.
        self.label3 = Gtk.Label(g("Display mode"))
        self.label3.set_tooltip_text(g("The display of the dock."))
        self.display = self.radios(
            g("Don't hide"), g("Intelligently hide"),
            g("Auto hide"), g("Dodge"), 1)

        #Time (in ms) to wait before unhiding the dock.
        self.label4 = Gtk.Label(g("Waiting time"))
        self.label4.set_tooltip_text(
            g("Time (in ms) to wait before unhiding the dock."))
        self.adj = Gtk.Adjustment(0, 0, 60, 1, 5, 0)
        self.spintime = Gtk.SpinButton(adjustment=self.adj)
        self.spintime.connect("value-changed", self.spint_chenged)

        #The monitor number for the dock. Use -1 to keep on the primary monitor.
        self.label5 = Gtk.Label(g("The monitor number for the dock."))

        #The position for the dock on the monitor.
        #If 0, left.  If 1, right.  If 2, top.  If 3, bottom.
        self.label6 = Gtk.Label(g("Position"))
        self.label6.set_tooltip_text(
            g("The position for the dock on the monitor."))
        self.pos = self.radios(g("Left"), g("Right"), g("Top"), g("Bottom"), 2)

        #The dock's position offset from center (in percent).
        self.label7 = Gtk.Label(g("Offset"))
        self.label7.set_tooltip_text(
            g("The dock's position offset from center (in percent)."))
        self.adj1 = Gtk.Adjustment(0, 0, 100, 1, 5, 0)
        self.offset = Gtk.SpinButton(adjustment=self.adj1)
        self.offset.connect("value-changed", self.offset_chenged)

        #The alignment for the dock on the monitor's edge.
        #If 0, panel-mode.  If 1, right-aligned.
        #If 2, left-aligned.  If 3, centered.
        self.label8 = Gtk.Label(g("Alignment"))
        self.label8.set_tooltip_text(
            g("The alignment for the dock on the monitor's edge."))
        self.alignment = self.radios(
            g("Panel mode"), g("Right aligned"),
            g("Left aligned"), g("Centered"), 3)

        #The alignment of the items in this dock if panel-mode is used.
        #If 1, right-aligned.  If 2, left-aligned.  If 3, centered.
        self.label9 = Gtk.Label(g("Item alignment"))
        self.label9.set_tooltip_text(
            g("The alignment of the items in this dock."))
        self.itemalig = self.radios(
            g("Panel mode"), g("Right aligned"),
            g("Left aligned"), g("Centered"), 4)

        #Whether to prevent drag'n'drop actions and lock items on the dock.
        self.label10 = Gtk.Label(g("Drag'n'drop"))
        self.label10.set_tooltip_text(
            g("Prevent drag'n'drop actions and lock items on the dock."))
        self.drag = Gtk.Switch()
        self.drag.connect("notify::active", self.switched1)

        #################
        self.read_file()
        #################

        self.table = Gtk.VBox()

        self.table.pack_start(self.fbox(self.label1, self.switch),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label2, self.spinbutton),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label3, self.display[0]),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label4, self.spintime),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label5),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label6, self.pos[0]),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label7, self.offset),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label8, self.alignment[0]),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label9, self.itemalig[0]),
            False, False, 5)
        self.table.pack_start(self.fbox(self.label10, self.drag),
            False, False, 5)

        self.scroll.add(self.table)
Ejemplo n.º 9
0
g = gettext.gettext

setting_path = os.listdir(os.path.expanduser("~") + "/.config/plank")
folder = ""


def choosed(widget):
    folder = widget.get_label()
    win.hide()
    main = Mainwin(os.path.expanduser("~") + "/.config/plank/", folder)
    main.main()

if __name__ == "__main__":
    if len(setting_path) > 1:
        win = Gtk.Window()
        label = Gtk.Label(g("Choose the dock:"))
        box = Gtk.VBox()
        box.pack_start(label, False, False, 5)
        for a in setting_path:
            button = Gtk.Button(a)
            button.connect('clicked', choosed)
            box.pack_start(button, False, False, 5)
        win.add(box)
        win.show_all()
        Gtk.main()

    else:
        for a in setting_path:
            folder = a
            main = Mainwin(os.path.expanduser("~") + "/.config/plank/", folder)
            main.main()
Ejemplo n.º 10
0
    def __init__(self, path_setting, folder):
        self.selectedgroup, self.selectedapp = str(), str()
        self.appname, self.appnom = str(), str()
        self.groupdir = os.path.expanduser("~") + "/.config/plank/" + folder + "/groupapps/"
        self.dockitems = os.path.expanduser("~") + "/.config/plank/" + folder + "/launchers/"
        self.makedire(self.groupdir)

        self.win = Gtk.Window()
        #self.scroll = Gtk.ScrolledWindow()
        self.box = Gtk.VBox()
        self.hb1 = Gtk.HBox()
        self.hb2 = Gtk.HBox()

        ### Listview

        self.liststore = Gtk.ListStore(str)
        self.refresh(self.liststore, self.groupdir)

        self.treeview = Gtk.TreeView(model=self.liststore)

        self.treeviewcolumn = Gtk.TreeViewColumn(g("Group of Apps"))
        self.treeview.append_column(self.treeviewcolumn)
        self.cellrenderertext = Gtk.CellRendererText()
        self.treeviewcolumn.pack_start(self.cellrenderertext, True)
        self.treeviewcolumn.add_attribute(self.cellrenderertext, "text", 0)
        self.select = self.treeview.get_selection()
        self.select.connect("changed", self.on_selection_changed)

        self.store = Gtk.ListStore(str)

        self.view = Gtk.TreeView(model=self.store)

        self.viewcolumn = Gtk.TreeViewColumn(g("Application"))
        self.view.append_column(self.viewcolumn)
        self.cellrenderertext = Gtk.CellRendererText()
        self.viewcolumn.pack_start(self.cellrenderertext, True)
        self.viewcolumn.add_attribute(self.cellrenderertext, "text", 0)
        self.select1 = self.view.get_selection()
        self.select1.connect("changed", self.on_tree_selection_changed)

#        self.listbox = Gtk.ListBox()
#        for g in os.listdir(self.groupdir):
#            self.listbox.add(Gtk.Label(g))
#        self.listbox.connect("row-activated", self.groupsel)

        self.hb1.pack_start(self.treeview, True, True, 5)
        self.hb1.pack_end(self.view, True, True, 5)

        ### Button

        self.addg = Gtk.Button(stock=Gtk.STOCK_ADD)
        self.addg.connect('clicked', self.addgroup)
        self.addg.set_tooltip_text(g("Add a Group"))
        #
        self.delg = Gtk.Button(stock=Gtk.STOCK_REMOVE)
        self.delg.set_sensitive(False)
        self.delg.connect('clicked', self.delgroup)
        self.delg.set_tooltip_text(g("Delete a Group"))
        #
        self.addapp = Gtk.Button(stock=Gtk.STOCK_ADD)
        self.addapp.set_sensitive(False)
        self.addapp.connect('clicked', self.appchooser)
        self.addapp.set_tooltip_text(g("Add a Application"))
        #
        self.delapp = Gtk.Button(stock=Gtk.STOCK_REMOVE)
        self.delapp.set_sensitive(False)
        self.delapp.connect('clicked', self.delapplication)
        self.delapp.set_tooltip_text(g("Delete a Application"))

        self.hb2.pack_start(self.addg, False, False, 5)
        self.hb2.pack_start(self.delg, False, False, 5)
        self.hb2.pack_end(self.delapp, False, False, 5)
        self.hb2.pack_end(self.addapp, False, False, 5)

        self.box.pack_start(self.hb1, True, True, 15)
        self.box.pack_start(self.hb2, False, False, 15)