13 _moduleLogger = logging.getLogger("channel.text")
16 class DebugPromptChannel(tp.ChannelTypeText, cmd.Cmd):
18 Look into implementing ChannelInterfaceMessages for rich text formatting
21 def __init__(self, connection, manager, props, contactHandle):
22 self.__manager = manager
25 cmd.Cmd.__init__(self, "Debug Prompt")
26 self.use_rawinput = False
27 tp.ChannelTypeText.__init__(self, connection, manager, props)
28 self.__nextRecievedId = 0
29 self.__lastMessageTimestamp = datetime.datetime(1, 1, 1)
31 self.__otherHandle = contactHandle
33 @gtk_toolbox.log_exception(_moduleLogger)
34 def Send(self, messageType, text):
35 if messageType != telepathy.CHANNEL_TEXT_MESSAGE_TYPE_NORMAL:
36 raise telepathy.errors.NotImplemented("Unhandled message type: %r" % messageType)
38 self.Sent(int(time.time()), messageType, text)
40 oldStdin, oldStdout = self.stdin, self.stdout
42 self.stdin = currentStdin = StringIO.StringIO()
43 self.stdout = currentStdout = StringIO.StringIO()
46 self.stdin, self.stdout = oldStdin, oldStdout
48 self._report_new_message(currentStdout.getvalue())
50 @gtk_toolbox.log_exception(_moduleLogger)
55 _moduleLogger.debug("Closing debug")
56 tp.ChannelTypeText.Close(self)
57 self.remove_from_connection()
59 def _report_new_message(self, message):
60 currentReceivedId = self.__nextRecievedId
62 timestamp = int(time.time())
63 type = telepathy.CHANNEL_TEXT_MESSAGE_TYPE_NORMAL
65 self.Received(currentReceivedId, timestamp, self.__otherHandle, type, 0, message.strip())
67 self.__nextRecievedId += 1
69 def do_reset_state_machine(self, args):
71 self._report_new_message("No arguments supported")
75 for machine in self._conn.session.stateMachine._machines:
76 machine.reset_timers()
78 self._report_new_message(str(e))
80 def help_reset_state_machine(self):
81 self._report_new_message("Reset the refreshing state machine")
83 def do_get_state(self, args):
85 self._report_new_message("No arguments supported")
89 state = self._conn.session.stateMachine.state
90 self._report_new_message(str(state))
92 self._report_new_message(str(e))
94 def help_get_state(self):
95 self._report_new_message("Print the current state the refreshing state machine is in")
97 def do_is_authed(self, args):
99 self._report_new_message("No arguments supported")
103 isAuthed = self._conn.session.backend.is_authed()
104 self._report_new_message(str(isAuthed))
106 self._report_new_message(str(e))
108 def help_is_authed(self):
109 self._report_new_message("Print whether logged in to Google Voice")
111 def do_is_dnd(self, args):
113 self._report_new_message("No arguments supported")
117 isDnd = self._conn.session.backend.is_dnd()
118 self._report_new_message(str(isDnd))
120 self._report_new_message(str(e))
122 def help_is_dnd(self):
123 self._report_new_message("Print whether Do-Not-Disturb mode enabled on the Google Voice account")
125 def do_get_account_number(self, args):
127 self._report_new_message("No arguments supported")
131 number = self._conn.session.backend.get_account_number()
132 self._report_new_message(number)
134 self._report_new_message(str(e))
136 def help_get_account_number(self):
137 self._report_new_message("Print the Google Voice account number")
139 def do_get_callback_numbers(self, args):
141 self._report_new_message("No arguments supported")
145 numbers = self._conn.session.backend.get_callback_numbers()
146 numbersDisplay = "\n".join(
147 "%s: %s" % (name, number)
148 for (number, name) in numbers.iteritems()
150 self._report_new_message(numbersDisplay)
152 self._report_new_message(str(e))
154 def help_get_callback_numbers(self):
155 self._report_new_message("Print a list of all configured callback numbers")
157 def do_get_callback_number(self, args):
159 self._report_new_message("No arguments supported")
163 number = self._conn.session.backend.get_callback_number()
164 self._report_new_message(number)
166 self._report_new_message(str(e))
168 def help_get_callback_number(self):
169 self._report_new_message("Print the callback number currently enabled")
171 def do_call(self, args):
173 self._report_new_message("Must specify the phone number and only the phone nunber")
178 self._conn.session.backend.call(number)
180 self._report_new_message(str(e))
183 self._report_new_message("\n".join(["call NUMBER", "Initiate a callback, Google forwarding the call to the callback number"]))
185 def do_send_sms(self, args):
187 self._report_new_message("Must specify the phone number and then message")
192 message = " ".join(args[1:])
193 self._conn.session.backend.send_sms(number, message)
195 self._report_new_message(str(e))
197 def help_send_sms(self):
198 self._report_new_message("\n".join(["send_sms NUMBER MESSAGE0 MESSAGE1 ...", "Send an sms to number NUMBER"]))