Load session from .activity files
This commit is contained in:
parent
64dc217f52
commit
11a923d4b1
@ -1,4 +1,3 @@
|
|||||||
import os
|
data_basedir = '@prefix@/share/'
|
||||||
|
data_dirs = [ 'sugar' ]
|
||||||
def internal_get_data_file(filename):
|
activities_dir = 'activities'
|
||||||
return os.path.join('@prefix@/share/sugar', filename)
|
|
||||||
|
@ -1,12 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
basedir = os.path.dirname(os.path.dirname(__file__))
|
data_basedir = os.path.dirname(os.path.dirname(__file__))
|
||||||
data_dirs = [ 'sugar/browser', 'sugar/chat' ]
|
data_dirs = [ 'sugar/browser', 'sugar/chat' ]
|
||||||
|
activities_dir = ''
|
||||||
def internal_get_data_file(filename):
|
|
||||||
for data_dir in data_dirs:
|
|
||||||
path = os.path.abspath(os.path.join(basedir, data_dir, filename))
|
|
||||||
if os.path.isfile(path):
|
|
||||||
return path
|
|
||||||
|
|
||||||
return None
|
|
||||||
|
@ -9,5 +9,11 @@ icon_DATA = \
|
|||||||
fold.png \
|
fold.png \
|
||||||
unfold.png
|
unfold.png
|
||||||
|
|
||||||
|
rcdir = $(pkgdatadir)
|
||||||
|
rc_DATA = browser.rc
|
||||||
|
|
||||||
|
activitydir = $(pkgdatadir)/activities
|
||||||
|
activity_DATA = browser.activity
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
$(icon_DATA)
|
$(icon_DATA)
|
||||||
|
@ -340,5 +340,8 @@ if len(sys.argv) > 1 and sys.argv[1] == "--console":
|
|||||||
sys.stdout = LogWriter("Web Browser")
|
sys.stdout = LogWriter("Web Browser")
|
||||||
sys.stderr = LogWriter("Web Browser")
|
sys.stderr = LogWriter("Web Browser")
|
||||||
|
|
||||||
|
gtk.rc_parse(sugar.env.get_data_file('browser.rc'))
|
||||||
|
|
||||||
BrowserShell.get_instance().open_web_activity()
|
BrowserShell.get_instance().open_web_activity()
|
||||||
|
|
||||||
gtk.main()
|
gtk.main()
|
||||||
|
@ -9,4 +9,7 @@ icon_DATA = \
|
|||||||
bubble.png \
|
bubble.png \
|
||||||
bubbleOutline.png
|
bubbleOutline.png
|
||||||
|
|
||||||
|
activitydir = $(pkgdatadir)/activities
|
||||||
|
activity_DATA = chat.activity
|
||||||
|
|
||||||
EXTRA_DIST = $(icon_DATA)
|
EXTRA_DIST = $(icon_DATA)
|
||||||
|
24
sugar/env.py
24
sugar/env.py
@ -1,7 +1,23 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from sugar.__uninstalled__ import internal_get_data_file
|
from sugar.__uninstalled__ import *
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from sugar.__installed__ import internal_get_data_file
|
from sugar.__installed__ import *
|
||||||
|
|
||||||
def get_data_file(filename):
|
def get_data_file(filename):
|
||||||
return internal_get_data_file(filename)
|
for data_dir in get_data_dirs():
|
||||||
|
path = os.path.join(data_dir, filename)
|
||||||
|
if os.path.isfile(path):
|
||||||
|
return path
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_data_dirs():
|
||||||
|
dirs = []
|
||||||
|
for data_dir in data_dirs:
|
||||||
|
path = os.path.join(data_basedir, data_dir)
|
||||||
|
dirs.append(path)
|
||||||
|
return dirs
|
||||||
|
|
||||||
|
def get_activities_dir():
|
||||||
|
return activities_dir
|
||||||
|
@ -781,18 +781,14 @@ class RetransmitSegmentTestCase(SegmentBaseTestCase):
|
|||||||
assert seg.rt_master_sha() == self._DEF_MASTER_SHA, "RT master SHA after segment creation didn't match expected."
|
assert seg.rt_master_sha() == self._DEF_MASTER_SHA, "RT master SHA after segment creation didn't match expected."
|
||||||
assert seg.rt_segment_number() == self._DEF_SEGNO, "RT segment number after segment creation didn't match expected."
|
assert seg.rt_segment_number() == self._DEF_SEGNO, "RT segment number after segment creation didn't match expected."
|
||||||
|
|
||||||
def _new_from_data(self, rt_msg_seq_num, rt_master_sha, rt_segment_number):
|
|
||||||
payload = struct.pack(RetransmitSegment.data_template(), rt_msg_seq_num, rt_master_sha, rt_segment_number)
|
|
||||||
payload_sha = _sha_data(payload)
|
|
||||||
header_template = SegmentBase.header_template()
|
|
||||||
header = struct.pack(header_template, self._SEG_MAGIC, SegmentBase.type_retransmit(), 1, 1,
|
|
||||||
self._DEF_MSG_SEQ_NUM, payload_sha)
|
|
||||||
return header + payload
|
|
||||||
|
|
||||||
def _test_new_from_data_fail(self, rt_msg_seq_num, rt_master_sha, rt_segment_number, fail_msg):
|
def _test_new_from_data_fail(self, rt_msg_seq_num, rt_master_sha, rt_segment_number, fail_msg):
|
||||||
try:
|
try:
|
||||||
packet = self._new_from_data(rt_msg_seq_num, rt_master_sha, rt_segment_number)
|
payload = struct.pack(RetransmitSegment.data_template(), rt_msg_seq_num, rt_master_sha, rt_segment_number)
|
||||||
seg = SegmentBase.new_from_data(self._DEF_ADDRESS, packet)
|
payload_sha = _sha_data(payload)
|
||||||
|
header_template = SegmentBase.header_template()
|
||||||
|
header = struct.pack(header_template, self._SEG_MAGIC, SegmentBase.type_retransmit(), 1, 1,
|
||||||
|
self._DEF_MSG_SEQ_NUM, payload_sha)
|
||||||
|
seg = SegmentBase.new_from_data(self._DEF_ADDRESS, header + payload)
|
||||||
except ValueError, exc:
|
except ValueError, exc:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
@ -806,13 +802,7 @@ class RetransmitSegmentTestCase(SegmentBaseTestCase):
|
|||||||
self._test_new_from_data_fail(self._DEF_MSG_SEQ_NUM, self._DEF_MASTER_SHA, 0, "invalid RT segment number")
|
self._test_new_from_data_fail(self._DEF_MSG_SEQ_NUM, self._DEF_MASTER_SHA, 0, "invalid RT segment number")
|
||||||
self._test_new_from_data_fail(self._DEF_MSG_SEQ_NUM, self._DEF_MASTER_SHA, 65536, "invalid RT segment number")
|
self._test_new_from_data_fail(self._DEF_MSG_SEQ_NUM, self._DEF_MASTER_SHA, 65536, "invalid RT segment number")
|
||||||
|
|
||||||
# Ensure something that should work
|
# TODO: Ensure something that should work
|
||||||
packet = self._new_from_data(self._DEF_MSG_SEQ_NUM, self._DEF_MASTER_SHA, self._DEF_SEGNO)
|
|
||||||
seg = SegmentBase.new_from_data(self._DEF_ADDRESS, packet)
|
|
||||||
assert seg.segment_type() == SegmentBase.type_retransmit(), "Segment wasn't expected type."
|
|
||||||
assert seg.rt_msg_seq_num() == self._DEF_MSG_SEQ_NUM, "Segment RT message sequence number didn't match expected."
|
|
||||||
assert seg.rt_master_sha() == self._DEF_MASTER_SHA, "Segment RT master SHA didn't match expected."
|
|
||||||
assert seg.rt_segment_number() == self._DEF_SEGNO, "Segment RT segment number didn't match expected."
|
|
||||||
|
|
||||||
def addToSuite(suite):
|
def addToSuite(suite):
|
||||||
suite.addTest(RetransmitSegmentTestCase("testInit"))
|
suite.addTest(RetransmitSegmentTestCase("testInit"))
|
||||||
|
@ -1,16 +1,30 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
from ConfigParser import ConfigParser
|
||||||
|
|
||||||
import pygtk
|
import pygtk
|
||||||
pygtk.require('2.0')
|
pygtk.require('2.0')
|
||||||
import gtk
|
import gtk
|
||||||
|
|
||||||
from sugar.shell import shell
|
from sugar.shell import shell
|
||||||
|
from sugar import env
|
||||||
|
|
||||||
def start(console):
|
def start(console):
|
||||||
shell.main()
|
shell.main()
|
||||||
|
|
||||||
activities = ['sugar/chat/chat', 'sugar/browser/browser']
|
activities = []
|
||||||
|
|
||||||
|
for data_dir in env.get_data_dirs():
|
||||||
|
activities_dir = os.path.join(data_dir, env.get_activities_dir())
|
||||||
|
for filename in os.listdir(activities_dir):
|
||||||
|
if filename.endswith(".activity"):
|
||||||
|
path = os.path.join(activities_dir, filename)
|
||||||
|
|
||||||
|
cp = ConfigParser()
|
||||||
|
cp.read([path])
|
||||||
|
python_class = cp.get('Activity', "python_class")
|
||||||
|
|
||||||
|
activities.append(python_class)
|
||||||
|
|
||||||
for activity in activities:
|
for activity in activities:
|
||||||
args = [ 'python', '-m', activity ]
|
args = [ 'python', '-m', activity ]
|
||||||
|
Loading…
Reference in New Issue
Block a user