Commit c144ad14 authored by Alex Muñoz's avatar Alex Muñoz Committed by John Stowers

GMenu

parent cdcd3c8c
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="main_window">
<menu id="appmenu">
<section>
<item>
<attribute name='label' translatable='yes'>_Reset to Defaults</attribute>
<attribute name='action'>app.reset</attribute>
</item>
</section>
<section>
<item>
<attribute name='label' translatable='yes'>_Help</attribute>
<attribute name='action'>app.help</attribute>
</item>
<item>
<attribute name='label' translatable='yes'>_About Tweak Tool</attribute>
<attribute name='action'>app.about</attribute>
</item>
<item>
<attribute name='label' translatable='yes'>_Quit</attribute>
<attribute name='action'>app.quit</attribute>
<attribute name='accel'>&lt;Primary&gt;q</attribute>
</item>
</section>
</menu>
<object class="GtkApplicationWindow" id="main_window">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Tweak Tool</property>
<property name="resizable">True</property>
......
......@@ -18,11 +18,14 @@ import optparse
import logging
import locale
import gettext
import sys
import gi
gi.require_version("Gtk", "3.0")
import gtweak
from gi.repository import GObject
GObject.threads_init()
if __name__ == '__main__':
parser = optparse.OptionParser()
......@@ -71,6 +74,8 @@ if __name__ == '__main__':
locale.setlocale(locale.LC_ALL, None)
gettext.install(gtweak.APP_NAME, LOCALE_DIR, names=('gettext', 'ngettext'))
from gtweak.mainwindow import MainWindow
MainWindow()
from gtweak.app import GnomeTweakTool
app = GnomeTweakTool()
exit_status = app.run(None)
sys.exit(exit_status)
# This file is part of gnome-tweak-tool.
#
# Copyright (c) 2011 John Stowers
#
# gnome-tweak-tool is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# gnome-tweak-tool is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with gnome-tweak-tool. If not, see <http://www.gnu.org/licenses/>.
import os.path
from gi.repository import Gtk
from gi.repository import Gio
import gtweak
from gtweak.tweakmodel import TweakModel
from gtweak.tweakview import TweakView
from gtweak.utils import SchemaList
class GnomeTweakTool(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self,application_id="org.gnome.TweakTool")
def do_activate(self):
self.win = self.builder.get_object('main_window')
self.win.set_position(Gtk.WindowPosition.CENTER)
self.win.set_application(self)
self.win.set_size_request(720, 580)
toolbar = self.builder.get_object('toolbar')
toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
model = TweakModel()
view = TweakView(self.builder, model)
self.builder.get_object('overview_sw').add(view.treeview)
self.win.show_all()
view.run()
def do_startup(self):
Gtk.Application.do_startup(self)
self.builder = Gtk.Builder()
assert(os.path.exists(gtweak.PKG_DATA_DIR))
filename = os.path.join(gtweak.PKG_DATA_DIR, 'shell.ui')
self.builder.add_from_file(filename)
appmenu = self.builder.get_object('appmenu')
self.set_app_menu(appmenu)
reset_action = Gio.SimpleAction.new("reset", None)
reset_action.connect("activate", self.reset_cb)
self.add_action(reset_action)
help_action = Gio.SimpleAction.new("help", None)
help_action.connect("activate", self.help_cb)
self.add_action(help_action)
about_action = Gio.SimpleAction.new("about", None)
about_action.connect("activate", self.about_cb)
self.add_action(about_action)
quit_action = Gio.SimpleAction.new("quit", None)
quit_action.connect("activate", self.quit_cb)
self.add_action(quit_action)
def reset_cb(self, action, parameter):
dialog = Gtk.MessageDialog(self.win,0, Gtk.MessageType.QUESTION,
Gtk.ButtonsType.OK_CANCEL, "Reset to Defaults")
dialog.format_secondary_text("Reset all tweak settings to the original default state?")
response = dialog.run()
if response == Gtk.ResponseType.OK:
s = SchemaList()
s.reset()
dialog.destroy()
def help_cb(self, action, parameter):
print "This does nothing. It is only a demonstration."
def about_cb(self, action, parameter):
aboutdialog = Gtk.AboutDialog()
aboutdialog.set_title("About Gnome Tweak Tool")
aboutdialog.set_program_name("Gnome Tweak Tool")
aboutdialog.set_copyright("Copyright \xc2\xa9 2011 - 2013 John Stowers.")
aboutdialog.set_logo_icon_name("gnome-tweak-tool")
aboutdialog.set_website("http://live.gnome.org/GnomeTweakTool")
aboutdialog.set_website_label("Homepage")
aboutdialog.set_license_type(Gtk.License.GPL_3_0)
AUTHORS = [
"John Stowers <john.stowers@gmail.com>"
]
aboutdialog.set_authors(AUTHORS)
aboutdialog.connect("response", lambda w, r: aboutdialog.destroy())
aboutdialog.show()
def quit_cb(self, action, parameter):
self.quit()
......@@ -20,7 +20,7 @@ import glob
import os.path
import gtweak
from gtweak.utils import SchemaList
from gi.repository import Gtk
def N_(x): return x
......@@ -149,13 +149,23 @@ class TweakModel(Gtk.ListStore):
for mod in [getattr(mods, file_name) for file_name in tweak_files]:
groups.extend( getattr(mod, "TWEAK_GROUPS", []) )
tweaks.extend( getattr(mod, "TWEAKS", []) )
schemas = SchemaList()
for g in groups:
if g.tweaks:
self.add_tweak_group(g)
for i in g.tweaks:
try:
schemas.insert(i.key_name, i.schema_name)
except:
pass
for t in tweaks:
self.add_tweak_auto_to_group(t)
try:
schemas.insert(t.key_name, t.schema_name)
except:
pass
def add_tweak_group(self, tweakgroup):
if tweakgroup.name in self._tweak_group_names:
......
......@@ -17,7 +17,6 @@ from gtweak.widgets import FileChooserButton, build_label_beside_widget, build_h
from gtweak.egowrapper import ExtensionsDotGnomeDotOrg
def N_(x): return x
GObject.threads_init()
class _ShellExtensionTweak(Tweak):
......
......@@ -42,12 +42,6 @@ class TweakView:
def __init__(self, builder, model):
self._notebook = builder.get_object('notebook')
self._detail_vbox = builder.get_object('detail_vbox')
self._main_window = builder.get_object('main_window')
self._main_window.props.title = gettext(self._main_window.props.title)
self._main_window.set_size_request(740, 636)
self._main_window.connect('destroy', Gtk.main_quit)
self._entry_manager = EntryManager(
builder.get_object('search_entry'),
......@@ -63,6 +57,7 @@ class TweakView:
Gtk.TreeViewColumn(
"Tweak", Gtk.CellRendererText(), text=TweakModel.COLUMN_NAME))
self.treeview.get_selection().connect("changed", self._on_selection_changed)
self.treeview.show_all()
#make sure the tweak background is the correct color
ctx = builder.get_object('tweak_viewport').get_style_context ()
......@@ -75,7 +70,6 @@ class TweakView:
#add all tweaks
self._tweak_vbox = builder.get_object('tweak_vbox')
for t in sorted(self._model.tweaks, key=_sort_tweak_widgets_by_widget_type):
t.main_window = self._main_window
self._tweak_vbox.pack_start(t.widget, False, False, 0)
t.set_notify_cb(self._on_tweak_notify)
......@@ -83,10 +77,8 @@ class TweakView:
self._notification_functions = {}
def run(self):
self._main_window.show_all()
self.treeview.get_selection().select_iter(
self._model.get_tweakgroup_iter(DEFAULT_TWEAKGROUP))
Gtk.main()
def show_only_tweaks(self, tweaks):
for t in self._model.tweaks:
......
......@@ -25,7 +25,7 @@ import gtweak
from gtweak.gsettings import GSettingsSetting
from gi.repository import GLib
from gi.repository import Gio
def singleton(cls):
"""
Singleton decorator that works with GObject derived types. The 'recommended'
......@@ -225,6 +225,27 @@ class AutostartManager:
old.close()
new.close()
class SchemaList:
__list = None
def __init__(self):
if SchemaList.__list == None:
SchemaList.__list = []
def get(self):
return SchemaList.__list
def insert(self, key_name, schema_name):
v = [key_name, schema_name]
SchemaList.__list.append(v)
def reset(self):
for i in SchemaList.__list:
s = Gio.Settings(i[1])
s.reset(i[0])
if __name__ == "__main__":
gtweak.DATA_DIR = "/usr/share"
gtweak.GSETTINGS_SCHEMA_DIR = "/usr/share/glib-2.0/schemas/"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment