[tictactoe] Dont depend on stanza_session module
It has been removed from Gajim
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
[info]
|
[info]
|
||||||
name: Tic tac toe
|
name: Tic tac toe
|
||||||
short_name: Tic tac toe
|
short_name: Tic tac toe
|
||||||
version: 1.3
|
version: 1.4
|
||||||
description: Play tic tac toe
|
description: Play tic tac toe
|
||||||
authors = Yann Leboulanger <asterix@lagaule.org>
|
authors = Yann Leboulanger <asterix@lagaule.org>
|
||||||
homepage = https://dev.gajim.org/gajim/gajim-plugins/wikis/TictactoePlugin
|
homepage = https://dev.gajim.org/gajim/gajim-plugins/wikis/TictactoePlugin
|
||||||
min_gajim_version: 0.16.11
|
min_gajim_version: 1.0.0
|
||||||
|
|||||||
@@ -26,13 +26,10 @@ Tictactoe plugin.
|
|||||||
:license: GPL
|
:license: GPL
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
import string
|
||||||
|
import itertools
|
||||||
|
import random
|
||||||
|
|
||||||
from gajim.common import helpers
|
|
||||||
from gajim.common import app
|
|
||||||
from gajim.plugins import GajimPlugin
|
|
||||||
from gajim.plugins.gajimplugin import GajimPluginException
|
|
||||||
from gajim.plugins.helpers import log_calls, log
|
|
||||||
from gajim.plugins.gui import GajimPluginConfigDialog
|
|
||||||
import nbxmpp
|
import nbxmpp
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
from gi.repository import Gdk
|
from gi.repository import Gdk
|
||||||
@@ -41,11 +38,15 @@ from gi.repository import GLib
|
|||||||
import gi
|
import gi
|
||||||
gi.require_version('PangoCairo', '1.0')
|
gi.require_version('PangoCairo', '1.0')
|
||||||
from gi.repository import PangoCairo
|
from gi.repository import PangoCairo
|
||||||
|
|
||||||
|
from gajim.common import helpers
|
||||||
|
from gajim.common import app
|
||||||
|
from gajim.plugins import GajimPlugin
|
||||||
|
from gajim.plugins.helpers import log_calls, log
|
||||||
|
from gajim.plugins.gui import GajimPluginConfigDialog
|
||||||
from gajim import chat_control
|
from gajim import chat_control
|
||||||
from gajim.common import ged
|
from gajim.common import ged
|
||||||
from gajim import dialogs
|
from gajim import dialogs
|
||||||
from gajim.common import caps_cache
|
|
||||||
from gajim.common import stanza_session
|
|
||||||
from gajim.common.connection_handlers_events import InformationEvent
|
from gajim.common.connection_handlers_events import InformationEvent
|
||||||
|
|
||||||
NS_GAMES = 'http://jabber.org/protocol/games'
|
NS_GAMES = 'http://jabber.org/protocol/games'
|
||||||
@@ -57,19 +58,22 @@ class TictactoePlugin(GajimPlugin):
|
|||||||
self.description = _('Play Tictactoe.')
|
self.description = _('Play Tictactoe.')
|
||||||
self.config_dialog = TictactoePluginConfigDialog(self)
|
self.config_dialog = TictactoePluginConfigDialog(self)
|
||||||
self.events_handlers = {
|
self.events_handlers = {
|
||||||
'decrypted-message-received': (ged.GUI1,
|
'decrypted-message-received': (
|
||||||
self._nec_decrypted_message_received),
|
ged.PREGUI, self._nec_decrypted_message_received),
|
||||||
}
|
}
|
||||||
|
|
||||||
self.gui_extension_points = {
|
self.gui_extension_points = {
|
||||||
'chat_control': (self.connect_with_chat_control,
|
'chat_control': (self.connect_with_chat_control,
|
||||||
self.disconnect_from_chat_control),
|
self.disconnect_from_chat_control),
|
||||||
'chat_control_base_update_toolbar': (self.update_button_state,
|
'chat_control_base_update_toolbar': (
|
||||||
None),
|
self.update_button_state, None),
|
||||||
'update_caps': (self._update_caps, None),
|
'update_caps': (self._update_caps, None),
|
||||||
}
|
}
|
||||||
|
|
||||||
self.config_default_values = {
|
self.config_default_values = {
|
||||||
'board_size': (5, ''),
|
'board_size': (5, ''),
|
||||||
}
|
}
|
||||||
|
|
||||||
self.controls = []
|
self.controls = []
|
||||||
self.announce_caps = True
|
self.announce_caps = True
|
||||||
|
|
||||||
@@ -218,16 +222,44 @@ class Base(object):
|
|||||||
class InvalidMove(Exception):
|
class InvalidMove(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class TicTacToeSession(stanza_session.StanzaSession):
|
class TicTacToeSession(object):
|
||||||
def __init__(self, conn, jid, thread_id, type_):
|
def __init__(self, conn, jid, thread_id, type_):
|
||||||
stanza_session.StanzaSession.__init__(self, conn, jid, thread_id, type_)
|
self.conn = conn
|
||||||
contact = app.contacts.get_contact(conn.name,
|
self.jid = jid
|
||||||
app.get_jid_without_resource(str(jid)))
|
self.type_ = type_
|
||||||
|
self.resource = jid.getResource()
|
||||||
|
|
||||||
|
if thread_id:
|
||||||
|
self.received_thread_id = True
|
||||||
|
self.thread_id = thread_id
|
||||||
|
else:
|
||||||
|
self.received_thread_id = False
|
||||||
|
self.thread_id = self.generate_thread_id()
|
||||||
|
|
||||||
|
contact = app.contacts.get_contact(
|
||||||
|
conn.name, app.get_jid_without_resource(str(jid)))
|
||||||
self.name = contact.get_shown_name()
|
self.name = contact.get_shown_name()
|
||||||
self.base = None
|
self.base = None
|
||||||
self.control = None
|
self.control = None
|
||||||
self.enable_encryption = False
|
self.enable_encryption = False
|
||||||
|
|
||||||
|
def send(self, msg):
|
||||||
|
if self.thread_id:
|
||||||
|
msg.NT.thread = self.thread_id
|
||||||
|
|
||||||
|
msg.setAttr('to', self.get_to())
|
||||||
|
self.conn.send_stanza(msg)
|
||||||
|
|
||||||
|
def get_to(self):
|
||||||
|
to = str(self.jid)
|
||||||
|
return app.get_jid_without_resource(to) + '/' + self.resource
|
||||||
|
|
||||||
|
def generate_thread_id(self):
|
||||||
|
return ''.join(
|
||||||
|
[f(string.ascii_letters) for f in itertools.repeat(
|
||||||
|
random.choice, 32)]
|
||||||
|
)
|
||||||
|
|
||||||
# initiate a session
|
# initiate a session
|
||||||
def begin(self, role_s='x'):
|
def begin(self, role_s='x'):
|
||||||
self.rows = self.base.plugin.config['board_size']
|
self.rows = self.base.plugin.config['board_size']
|
||||||
|
|||||||
Reference in New Issue
Block a user