本文整理汇总了Python中pychess.System.conf.notify_add函数的典型用法代码示例。如果您正苦于以下问题:Python notify_add函数的具体用法?Python notify_add怎么用?Python notify_add使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了notify_add函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__ (self, widgets):
# Init 'auto save" checkbutton
def checkCallBack (*args):
checkbox = widgets["autoSave"]
widgets["autosave_grid"].set_property("sensitive", checkbox.get_active())
conf.notify_add("autoSave", checkCallBack)
widgets["autoSave"].set_active(False)
uistuff.keep(widgets["autoSave"], "autoSave")
checkCallBack()
default_path = os.path.expanduser("~")
autoSavePath = conf.get("autoSavePath", default_path)
conf.set("autoSavePath", autoSavePath)
auto_save_chooser_dialog = Gtk.FileChooserDialog(_("Select auto save path"), None, Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
auto_save_chooser_button = Gtk.FileChooserButton.new_with_dialog(auto_save_chooser_dialog)
auto_save_chooser_button.set_current_folder(autoSavePath)
widgets["savePathChooserDock"].add(auto_save_chooser_button)
auto_save_chooser_button.show()
def select_auto_save(button):
new_directory = auto_save_chooser_dialog.get_filename()
if new_directory != autoSavePath:
conf.set("autoSavePath", new_directory)
auto_save_chooser_button.connect("current-folder-changed", select_auto_save)
conf.set("autoSaveFormat", conf.get("autoSaveFormat", "pychess"))
uistuff.keep(widgets["autoSaveFormat"], "autoSaveFormat")
uistuff.keep(widgets["saveEmt"], "saveEmt")
uistuff.keep(widgets["saveEval"], "saveEval")
uistuff.keep(widgets["saveOwnGames"], "saveOwnGames")
示例2: __init__
def __init__(self, connection):
self.connection = connection
# Lists
self.publicLists = {}
self.personalLists = {}
self.personalBackup = {}
self.listLock = Semaphore(0)
self.connection.expect_fromplus(self.onUpdateLists, "Lists:", "(?:\w+\s+is (?:PUBLIC|PERSONAL))|$")
self.connection.expect_line(self.onUpdateEmptyListitems, "-- (\w+) list: 0 \w+ --")
self.connection.expect_fromplus(self.onUpdateListitems, "-- (\w+) list: ([1-9]\d*) \w+ --", "(?:\w+ *)+$")
print >> self.connection.client, "showlist"
# Variables
self.variablesBackup = {}
self.ivariablesBackup = {}
self.variables = {}
self.ivariables = {}
self.varLock = Semaphore(0)
self.connection.expect_fromplus(
self.onVariables, "((?:Interface v|V)ariable settings) of (\w+):", "(?:\w*=\w+ *)*$"
)
print >> self.connection.client, "variables"
print >> self.connection.client, "ivariables"
self.connection.connect("disconnecting", self.stop)
# Auto flag
conf.notify_add("autoCallFlag", self.autoFlagNotify)
示例3: __init__
def __init__(self, connection):
self.connection = connection
# Lists
self.publicLists = {}
self.personalLists = {}
self.personalBackup = {}
if self.connection.USCN:
self.connection.expect_line(self.onUpdateList,
"(?:\w+\s+is (?:PUBLIC|PERSONAL))|$")
else:
self.connection.expect_fromplus(
self.onUpdateLists, "Lists:",
"(?:\w+\s+is (?:PUBLIC|PERSONAL))|$")
self.connection.expect_line(self.onUpdateEmptyListitems,
"-- (\w+) list: 0 \w+ --")
self.connection.expect_fromplus(self.onUpdateListitems,
"-- (\w+) list: ([1-9]\d*) \w+ --",
"(?:\w+ *)+$")
self.connection.client.run_command("showlist")
# Auto flag
conf.notify_add('autoCallFlag', self.autoFlagNotify)
示例4: __init__
def __init__(self, connection):
self.connection = connection
self.publicLists = {}
self.personalLists = {}
self.personalBackup = {}
# Auto flag
conf.notify_add('autoCallFlag', self.autoFlagNotify)
示例5: __init__
def __init__(self, gamemodel=None):
gtk.DrawingArea.__init__(self)
if gamemodel == None:
gamemodel = GameModel()
self.model = gamemodel
glock_connect(self.model, "game_started", self.game_started)
glock_connect_after(self.model, "game_started", self.game_started_after)
glock_connect_after(self.model, "game_changed", self.game_changed)
glock_connect_after(self.model, "moves_undoing", self.moves_undoing)
glock_connect_after(self.model, "game_loading", self.game_loading)
glock_connect_after(self.model, "game_loaded", self.game_loaded)
glock_connect_after(self.model, "game_ended", self.game_ended)
self.connect("expose_event", self.expose)
self.connect_after("realize", self.on_realized)
conf.notify_add("showCords", self.on_show_cords)
conf.notify_add("faceToFace", self.on_face_to_face)
self.set_size_request(350,350)
self.animationStart = time()
self.lastShown = None
self.deadlist = []
self.autoUpdateShown = True
self.padding = 0 # Set to self.pad when setcords is active
self.square = 0, 0, 8, 1 # An object global variable with the current
# board size
self.pad = 0.13 # Padding applied only when setcords is active
self._selected = None
self._hover = None
self._active = None
self._redarrow = None
self._greenarrow = None
self._bluearrow = None
self._shown = self.model.ply
self._showCords = False
self.showCords = conf.get("showCords", False)
self._showEnpassant = False
self.lastMove = None
self.matrix = cairo.Matrix()
self.matrixPi = cairo.Matrix.init_rotate(pi)
self.cordMatricesState = (0, 0)
self._rotation = 0
self.drawcount = 0
self.drawtime = 0
self.gotStarted = False
self.animationLock = RLock()
self.rotationLock = Lock()
self.draggedPiece = None # a piece being dragged by the user
示例6: __init__
def __init__(self):
GObject.GObject.__init__(self)
self.connect("draw", self.expose)
self.names = [_("White"), _("Black")]
self.model = None
self.short_on_time = [False, False]
self.alarm_spin = conf.get("alarm_spin")
conf.notify_add("alarm_spin", self.on_alarm_spin)
示例7: keep
def keep(widget, key, get_value_=None, set_value_=None, first_value=None):
if widget is None:
raise AttributeError("key '%s' isn't in widgets" % key)
for class_, methods_ in METHODS:
# Use try-except just to make spinx happy...
try:
if isinstance(widget, class_):
getter, setter, signal = methods_
break
except TypeError:
getter, setter, signal = methods_
break
else:
raise AttributeError("I don't have any knowledge of type: '%s'" %
widget)
if get_value_:
def get_value():
return get_value_(widget)
else:
get_value = getattr(widget, getter)
if set_value_:
def set_value(v):
return set_value_(widget, v)
else:
set_value = getattr(widget, setter)
def setFromConf():
try:
v = conf.get(key)
except TypeError:
log.warning("uistuff.keep.setFromConf: Key '%s' from conf had the wrong type '%s', ignored" %
(key, type(conf.get(key))))
if first_value is not None:
conf.set(key, first_value)
else:
conf.set(key, get_value())
else:
set_value(v)
def callback(*args):
if not conf.hasKey(key) or conf.get(key) != get_value():
conf.set(key, get_value())
widget.connect(signal, callback)
conf.notify_add(key, lambda *args: setFromConf())
if conf.hasKey(key):
setFromConf()
elif first_value is not None:
conf.set(key, first_value)
示例8: workfunc
def workfunc (worker, gamemodel, player0tup, player1tup, loaddata=None):
log.debug("ionest.workfunc: %s\n %s\n %s\n" % (gamemodel, player0tup, player1tup))
gmwidg = gamewidget.GameWidget(gamemodel)
worker.publish((gmwidg,gamemodel))
# Initing players
players = []
for i, playertup in enumerate((player0tup, player1tup)):
type, func, args, prename = playertup
if type != LOCAL:
players.append(func(*args))
#if type == ARTIFICIAL:
# def readyformoves (player, color):
# gmwidg.setTabText(gmwidg.display_text))
# players[i].connect("readyForMoves", readyformoves, i)
else:
# Until PyChess has a proper profiles system, as discussed on the
# issue tracker, we need to give human players special treatment
player = func(gmwidg, *args)
players.append(player)
# Connect to conf
if i == 0 or (i == 1 and player0tup[0] != LOCAL):
key = "firstName"
alt = _("You")
else:
key = "secondName"
alt = _("Guest")
if prename == conf.get(key, alt):
conf.notify_add(key, lambda *a:player.setName(conf.get(key,alt)))
if player0tup[0] == ARTIFICIAL and player1tup[0] == ARTIFICIAL:
def emit_action (action, param):
if gmwidg.isInFront():
gamemodel.curplayer.emit("offer", Offer(action, param=param))
gmwidg.board.connect("action", lambda b,action,param: emit_action(action, param))
gamemodel.setPlayers(players)
# Starting
if loaddata:
try:
uri, loader, gameno, position = loaddata
gamemodel.loadAndStart (uri, loader, gameno, position)
except LoadingError, e:
d = gtk.MessageDialog (type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK)
d.set_markup ("<big><b>%s</b></big>" % e.args[0])
d.format_secondary_text (e.args[1] + "\n\n" +
_("Correct the move, or start playing with what could be read"))
d.connect("response", lambda d,a: d.hide())
worker.publish(d.show)
示例9: __init__
def __init__(self, widgets):
# Init 'auto save" checkbutton
def checkCallBack(_):
""" :Description: Sets the various option based on user interaction with the
checkboxes in the gui
"""
checkbox = widgets["autoSave"]
widgets["autosave_grid"].set_property("sensitive",
checkbox.get_active())
conf.notify_add("autoSave", checkCallBack)
widgets["autoSave"].set_active(False)
uistuff.keep(widgets["autoSave"], "autoSave")
checkCallBack(_)
default_path = os.path.expanduser("~")
self.auto_save_path = conf.get("autoSavePath", default_path)
conf.set("autoSavePath", self.auto_save_path)
auto_save_chooser_dialog = Gtk.FileChooserDialog(
_("Select auto save path"), None,
Gtk.FileChooserAction.SELECT_FOLDER,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN,
Gtk.ResponseType.OK))
auto_save_chooser_button = Gtk.FileChooserButton.new_with_dialog(
auto_save_chooser_dialog)
auto_save_chooser_button.set_current_folder(self.auto_save_path)
widgets["savePathChooserDock"].add(auto_save_chooser_button)
auto_save_chooser_button.show()
def selectAutoSave(_):
""" :Description: Sets the auto save path for stored games if it
has changed since last time
:signal: Activated on receiving the 'current-folder-changed' signal
"""
new_directory = auto_save_chooser_dialog.get_filename()
if new_directory != self.auto_save_path:
conf.set("autoSavePath", new_directory)
auto_save_chooser_button.connect("current-folder-changed", selectAutoSave)
conf.set("autoSaveFormat", conf.get("autoSaveFormat", "pychess"))
uistuff.keep(widgets["autoSaveFormat"], "autoSaveFormat")
uistuff.keep(widgets["saveEmt"], "saveEmt")
uistuff.keep(widgets["saveEval"], "saveEval")
uistuff.keep(widgets["saveOwnGames"], "saveOwnGames")
示例10: load
def load(self, gmwidg):
__widget__ = Gtk.ScrolledWindow()
__widget__.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS)
__widget__.add(self.textview)
self.gamewidget = gmwidg
self.boardview = gmwidg.board.view
self.boardview.connect("shownChanged", self.shownChanged)
self.gamemodel = gmwidg.board.view.model
self.gamemodel.connect_after("game_loaded", self.game_loaded)
self.gamemodel.connect_after("game_changed", self.game_changed)
self.gamemodel.connect_after("game_started", self.update)
self.gamemodel.connect_after("game_ended", self.update)
self.gamemodel.connect_after("moves_undone", self.moves_undone)
self.gamemodel.connect_after("opening_changed", self.update)
self.gamemodel.connect_after("players_changed", self.players_changed)
self.gamemodel.connect("variation_added", self.variation_added)
self.gamemodel.connect("variation_extended", self.variation_extended)
self.gamemodel.connect("analysis_changed", self.analysis_changed)
# Connect to preferences
self.fan = conf.get("figuresInNotation", False)
def figuresInNotationCallback(none):
self.fan = conf.get("figuresInNotation", False)
self.update()
conf.notify_add("figuresInNotation", figuresInNotationCallback)
# Elapsed move time
self.showEmt = conf.get("showEmt", False)
def showEmtCallback(none):
self.showEmt = conf.get("showEmt", False)
self.update()
conf.notify_add("showEmt", showEmtCallback)
# Blunders
self.showBlunder = conf.get("showBlunder", False)
def showBlunderCallback(none):
self.showBlunder = conf.get("showBlunder", False)
self.update()
conf.notify_add("showBlunder", showBlunderCallback)
# Eval values
self.showEval = conf.get("showEval", False)
def showEvalCallback(none):
self.showEval = conf.get("showEval", False)
self.update()
conf.notify_add("showEval", showEvalCallback)
return __widget__
示例11: load
def load(self, gmwidg):
self.boardview = gmwidg.board.view
self.plot = ScorePlot(self.boardview)
self.sw = __widget__ = Gtk.ScrolledWindow()
__widget__.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
port = Gtk.Viewport()
port.add(self.plot)
port.set_shadow_type(Gtk.ShadowType.NONE)
__widget__.add(port)
__widget__.show_all()
self.plot_cid = self.plot.connect("selected", self.plot_selected)
self.cid = self.boardview.connect('shownChanged', self.shownChanged)
self.model_cids = [
self.boardview.model.connect_after("game_changed", self.game_changed),
self.boardview.model.connect_after("moves_undone", self.moves_undone),
self.boardview.model.connect_after("analysis_changed", self.analysis_changed),
self.boardview.model.connect_after("game_started", self.game_started),
self.boardview.model.connect_after("game_terminated", self.on_game_terminated),
]
def cb_config_changed(none):
self.fetch_chess_conf()
self.plot.redraw()
self.cids_conf = [
conf.notify_add("scoreLinearScale", cb_config_changed)
]
self.fetch_chess_conf()
uistuff.keepDown(__widget__)
return __widget__
示例12: __init__
def __init__ (self, connection):
self.connection = connection
# Lists
self.publicLists = {}
self.personalLists = {}
self.personalBackup = {}
self.listLock = Semaphore(0)
if self.connection.USCN:
self.connection.expect_line (self.onUpdateList,
"(?:\w+\s+is (?:PUBLIC|PERSONAL))|$")
else:
self.connection.expect_fromplus (self.onUpdateLists,
"Lists:",
"(?:\w+\s+is (?:PUBLIC|PERSONAL))|$")
self.connection.expect_line (self.onUpdateEmptyListitems,
"-- (\w+) list: 0 \w+ --")
self.connection.expect_fromplus (self.onUpdateListitems,
"-- (\w+) list: ([1-9]\d*) \w+ --",
"(?:\w+ *)+$")
self.connection.client.run_command("showlist")
# Variables
self.variablesBackup = {}
self.variables = {}
self.ivariables = {}
self.varLock = Semaphore(0)
self.connection.expect_fromplus (self.onIVariables,
"(Interface variable settings of \w+):",
"(?:\w+=(?:\w+|\?) *)*$")
self.connection.expect_fromplus (self.onVariables,
"(Variable settings of \w+):",
"(?:\w+=(?:\w+|\?) *)*$")
# The order of next two is important to FatICS !
self.connection.client.run_command("ivariables")
self.connection.client.run_command("variables")
# Auto flag
conf.notify_add('autoCallFlag', self.autoFlagNotify)
atexit.register(self.stop)
示例13: _init
def _init(cls):
cls.white = get_pixbuf("glade/white.png")
cls.black = get_pixbuf("glade/black.png")
cls.widgets = uistuff.GladeWidgets("newInOut.glade")
cls.widgets["newgamedialog"].set_transient_for(mainwindow())
def on_exchange_players(widget, button_event):
white = cls.widgets["whitePlayerCombobox"].get_active()
black = cls.widgets["blackPlayerCombobox"].get_active()
whiteLevel = cls.widgets["skillSlider1"].get_value()
blackLevel = cls.widgets["skillSlider2"].get_value()
cls.widgets["whitePlayerCombobox"].set_active(black)
cls.widgets["blackPlayerCombobox"].set_active(white)
cls.widgets["skillSlider1"].set_value(blackLevel)
cls.widgets["skillSlider2"].set_value(whiteLevel)
cls.widgets["whitePlayerButton"].set_image(Gtk.Image.new_from_pixbuf(cls.white))
cls.widgets["whitePlayerButton"].connect("button-press-event", on_exchange_players)
cls.widgets["blackPlayerButton"].set_image(Gtk.Image.new_from_pixbuf(cls.black))
cls.widgets["blackPlayerButton"].connect("button-press-event", on_exchange_players)
uistuff.createCombo(cls.widgets["whitePlayerCombobox"], name="whitePlayerCombobox")
uistuff.createCombo(cls.widgets["blackPlayerCombobox"], name="blackPlayerCombobox")
cls.widgets["playersIcon"].set_from_pixbuf(big_people)
cls.widgets["timeIcon"].set_from_pixbuf(big_time)
def on_playerCombobox_changed(widget, skill_hbox, skill_level):
position = widget.get_active()
skill_hbox.props.visible = position > 0
if position > 0:
tree_iter = widget.get_active_iter()
if tree_iter is not None:
engine_name = widget.get_model()[tree_iter][1]
engine = discoverer.getEngineByName(engine_name)
if engine:
pref_level = engine.get("level")
if pref_level:
skill_level.set_value(pref_level)
cls.widgets["whitePlayerCombobox"].connect("changed", on_playerCombobox_changed, cls.widgets["skillHbox1"], cls.widgets["skillSlider1"])
cls.widgets["blackPlayerCombobox"].connect("changed", on_playerCombobox_changed, cls.widgets["skillHbox2"], cls.widgets["skillSlider2"])
cls.widgets["whitePlayerCombobox"].set_active(0)
cls.widgets["blackPlayerCombobox"].set_active(1)
def on_skill_changed(scale, image):
image.set_from_pixbuf(skillToIcon[int(scale.get_value())])
cls.widgets["skillSlider1"].connect("value-changed", on_skill_changed, cls.widgets["skillIcon1"])
cls.widgets["skillSlider2"].connect("value-changed", on_skill_changed, cls.widgets["skillIcon2"])
cls.widgets["skillSlider1"].set_value(3)
cls.widgets["skillSlider2"].set_value(3)
cls.__initTimeRadio("ngblitz", cls.widgets["blitzRadio"], cls.widgets["configImageBlitz"], 5, 0, 0)
cls.__initTimeRadio("ngrapid", cls.widgets["rapidRadio"], cls.widgets["configImageRapid"], 15, 5, 0)
cls.__initTimeRadio("ngnormal", cls.widgets["normalRadio"], cls.widgets["configImageNormal"], 45, 15, 0)
cls.__initTimeRadio("ngclassical", cls.widgets["classicalRadio"], cls.widgets["configImageClassical"], 3, 0, 40)
cls.__initVariantRadio("ngvariant1", cls.widgets["playVariant1Radio"], cls.widgets["configImageVariant1"])
cls.__initVariantRadio("ngvariant2", cls.widgets["playVariant2Radio"], cls.widgets["configImageVariant2"])
def updateCombos(*args):
if cls.widgets["playNormalRadio"].get_active():
variant = NORMALCHESS
elif cls.widgets["playVariant1Radio"].get_active():
variant = conf.get("ngvariant1")
else:
variant = conf.get("ngvariant2")
variant1 = conf.get("ngvariant1")
cls.widgets["playVariant1Radio"].set_tooltip_text(variants[variant1].__desc__)
variant2 = conf.get("ngvariant2")
cls.widgets["playVariant2Radio"].set_tooltip_text(variants[variant2].__desc__)
data = [(item[0], item[1]) for item in playerItems[variant]]
uistuff.updateCombo(cls.widgets["blackPlayerCombobox"], data)
uistuff.updateCombo(cls.widgets["whitePlayerCombobox"], data)
discoverer.connect_after("all_engines_discovered", updateCombos)
updateCombos(discoverer)
conf.notify_add("ngvariant1", updateCombos)
conf.notify_add("ngvariant2", updateCombos)
cls.widgets["playNormalRadio"].connect("toggled", updateCombos)
cls.widgets["playNormalRadio"].set_tooltip_text(variants[NORMALCHESS].__desc__)
cls.widgets["playVariant1Radio"].connect("toggled", updateCombos)
variant1 = conf.get("ngvariant1")
cls.widgets["playVariant1Radio"].set_tooltip_text(variants[variant1].__desc__)
cls.widgets["playVariant2Radio"].connect("toggled", updateCombos)
variant2 = conf.get("ngvariant2")
cls.widgets["playVariant2Radio"].set_tooltip_text(variants[variant2].__desc__)
# The "variant" has to come before players, because the engine positions
# in the user comboboxes can be different in different variants
for key in ("whitePlayerCombobox", "blackPlayerCombobox",
"skillSlider1", "skillSlider2", "notimeRadio",
"blitzRadio", "rapidRadio", "normalRadio", "classicalRadio",
"playNormalRadio", "playVariant1Radio", "playVariant2Radio"):
uistuff.keep(cls.widgets[key], key)
# We don't want the dialog to deallocate when closed. Rather we hide
#.........这里部分代码省略.........
示例14: workfunc
def workfunc (worker, gamemodel, player0tup, player1tup, loaddata=None):
log.debug("ionest.workfunc: %s\n %s\n %s" % (gamemodel, player0tup, player1tup))
gmwidg = gamewidget.GameWidget(gamemodel)
worker.publish((gmwidg,gamemodel))
# Initing players
players = []
for i, playertup in enumerate((player0tup, player1tup)):
type, func, args, prename = playertup
if type != LOCAL:
players.append(func(*args))
#if type == ARTIFICIAL:
# def readyformoves (player, color):
# gmwidg.setTabText(gmwidg.display_text))
# players[i].connect("readyForMoves", readyformoves, i)
else:
# Until PyChess has a proper profiles system, as discussed on the
# issue tracker, we need to give human players special treatment
player = func(gmwidg, *args)
players.append(player)
# Connect to conf
if i == 0 or (i == 1 and player0tup[0] != LOCAL):
key = "firstName"
alt = _("You")
else:
key = "secondName"
alt = _("Guest")
if prename == conf.get(key, alt):
conf.notify_add(key, lambda *a:player.setName(conf.get(key,alt)))
if player0tup[0] == ARTIFICIAL and player1tup[0] == ARTIFICIAL:
def emit_action (action, param):
if gmwidg.isInFront():
gamemodel.curplayer.emit("offer", Offer(action, param=param))
gmwidg.board.connect("action", lambda b,action,param: emit_action(action, param))
log.debug("ionest.workfunc: -> gamemodel.setPlayers(): %s" % (gamemodel))
gamemodel.setPlayers(players)
log.debug("ionest.workfunc: <- gamemodel.setPlayers(): %s" % (gamemodel))
# Starting
if loaddata:
try:
uri, loader, gameno, position = loaddata
gamemodel.loadAndStart (uri, loader, gameno, position)
except LoadingError as e:
d = Gtk.MessageDialog (type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK,
message_format=e.args[0])
d.format_secondary_text (e.args[1])
d.connect("response", lambda d,a: d.hide())
worker.publish(d.show)
else:
if gamemodel.variant.need_initial_board:
for player in gamemodel.players:
player.setOptionInitialBoard(gamemodel)
log.debug("ionest.workfunc: -> gamemodel.start(): %s" % (gamemodel))
gamemodel.start()
log.debug("ionest.workfunc: <- gamemodel.start(): %s" % (gamemodel))
log.debug("ionest.workfunc: returning gmwidg=%s\n gamemodel=%s" % \
(gmwidg, gamemodel))
return gmwidg, gamemodel
示例15: __init__
def __init__(self, widgets):
# Init open dialog
opendialog = Gtk.FileChooserDialog(
_("Open Sound File"), None, Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN,
Gtk.ResponseType.ACCEPT))
for dir in self.SOUND_DIRS:
if os.path.isdir(dir):
opendialog.set_current_folder(dir)
break
soundfilter = Gtk.FileFilter()
soundfilter.set_name(_("Sound files"))
soundfilter.add_mime_type("audio/%s" % EXT)
soundfilter.add_pattern("*.%s" % EXT)
opendialog.add_filter(soundfilter)
# Get combo icons
icons = ((_("No sound"), "audio-volume-muted", "audio-volume-muted"),
(_("Beep"), "stock_bell", "audio-x-generic"),
(_("Select sound file..."), "gtk-open", "document-open"))
items = []
for level, stock, altstock in icons:
image = load_icon(16, stock, altstock)
items += [(image, level)]
audioIco = load_icon(16, "audio-x-generic")
# Set-up combos
def callback(combobox, index):
if combobox.get_active() == SOUND_SELECT:
if opendialog.run() == Gtk.ResponseType.ACCEPT:
uri = opendialog.get_uri()
model = combobox.get_model()
conf.set("sounduri%d" % index, uri)
label = unquote(os.path.split(uri)[1])
if len(model) == 3:
model.append([audioIco, label])
else:
model.set(model.get_iter((3, )), 1, label)
combobox.set_active(3)
else:
combobox.set_active(conf.get("soundcombo%d" % index,
SOUND_MUTE))
opendialog.hide()
for i in range(self.COUNT_OF_SOUNDS):
combo = widgets["sound%dcombo" % i]
uistuff.createCombo(combo, items, name="soundcombo%d" % i)
# combo.set_active(0)
combo.connect("changed", callback, i)
label = widgets["soundlabel%d" % i]
label.props.mnemonic_widget = combo
uri = conf.get("sounduri%d" % i, "")
if os.path.isfile(url2pathname(uri[5:])):
model = combo.get_model()
model.append([audioIco, unquote(os.path.split(uri)[1])])
# combo.set_active(3)
for i in range(self.COUNT_OF_SOUNDS):
if conf.get("soundcombo%d" % i, SOUND_MUTE) == SOUND_URI and \
not os.path.isfile(url2pathname(conf.get("sounduri%d" % i, "")[5:])):
conf.set("soundcombo%d" % i, SOUND_MUTE)
uistuff.keep(widgets["sound%dcombo" % i], "soundcombo%d" % i)
# Init play button
def playCallback(button, index):
SoundTab.playAction(index)
for i in range(self.COUNT_OF_SOUNDS):
button = widgets["sound%dbutton" % i]
button.connect("clicked", playCallback, i)
# Init 'use sound" checkbutton
def checkCallBack(*args):
checkbox = widgets["useSounds"]
widgets["sounds_frame"].set_property("sensitive", checkbox.get_active())
conf.notify_add("useSounds", checkCallBack)
widgets["useSounds"].set_active(True)
uistuff.keep(widgets["useSounds"], "useSounds")
checkCallBack()
if not self.getPlayer().ready:
widgets["useSounds"].set_sensitive(False)
widgets["useSounds"].set_active(False)
uistuff.keep(widgets["alarm_spin"], "alarm_spin", first_value=15)