Skip to content

Commit

Permalink
Starting on complete python package
Browse files Browse the repository at this point in the history
  • Loading branch information
wolever committed Aug 6, 2013
1 parent d4c4bf5 commit 8aeb4e1
Show file tree
Hide file tree
Showing 13 changed files with 177 additions and 136 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ env/
.hg*
screencasts/
misc/
dist/
4 changes: 4 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
include LICENSE.txt
include README.rst
include browsercast/*.js
include browsercast/*.css
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
all: browsercast.css
all: browsercast/browsercast.css

browsercast.css: browsercast.less
browsercast/browsercast.css: browsercast/browsercast.less
lessc $^ $@

serve:
Expand Down
123 changes: 0 additions & 123 deletions browsercast.css

This file was deleted.

File renamed without changes
123 changes: 123 additions & 0 deletions browsercast/browsercast.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
.browsercast-container {
position: fixed;
left: 0;
bottom: 0;
right: 0;
height: 40px;
/* No idea why I need to fixup these jQuery UI styles... */

}
.browsercast-container > * {
vertical-align: top;
height: 30px;
display: inline-block;
margin-right: 5px;
}
.browsercast-container .mode-select .ui-button {
height: 28px;
}
.browsercast-container .ui-button-text {
padding-top: 7px;
padding-right: 12px;
margin-left: 16px;
}
.browsercast-container .audio-container > * {
display: none;
}
.browsercast-container .audio-container > .state {
display: inline;
}
.browsercast-pick-audio-url input {
width: 100%;
}
.browsercast-pick-audio-url .hints li {
margin-left: 18px;
}
.browsercast-pick-audio-url .nbsp {
white-space: nowrap;
}
.browsercast-controls-container {
position: relative;
}
.browsercast-controls {
position: absolute;
display: inline-block;
width: 150px;
}
.browsercast-controls .ui-button {
margin-bottom: -7px;
height: 20px;
}
.browsercast-controls .ui-button.bc-corner-none .ui-icon {
margin-left: -11px;
}
.browsercast-controls .ui-button.jump-to-time {
width: 27px;
}
.browsercast-controls .input-container {
position: relative;
display: inline-block;
}
.browsercast-controls .input-container .ui-icon {
position: absolute;
top: 5px;
left: 2px;
}
.browsercast-controls input {
padding-left: 16px;
width: 59px;
}
.cell.browsercast-active-cell .edit-controls {
display: inline-block;
}
.cell .edit-controls {
display: none;
}
.browsercast-active-cell {
border-color: #7291D7;
border-radius: 4px;
}
.browsercast-active-cell.ui-widget-content {
border-color: #4E77D7;
}
.browsercast-cell-hidden {
display: none;
}
.browsercast-cell-inactive {
opacity: 0.5;
}
.browsercast-mode-playback .duration-input-container {
display: none;
}
.browsercast-mode-editing .browsercast-cell-hidden,
.browsercast-mode-editing .browsercast-cell-inactive {
display: block;
opacity: 1.0;
}
.ui-button.bc-button-flushleft {
margin-left: -1px;
}
.browsercast-welcome ol li {
margin-left: 21px;
margin-bottom: 12px;
margin-top: 10px;
}
.browsercast-welcome .fakebtn {
white-space: nowrap;
padding: 3px;
border: 1px solid #ccc;
border-radius: 4px;
cursor: default;
}
.browsercast-welcome .controls-img {
float: right;
background-image: url('data:image/png;base64,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');
display: inline-block;
width: 148px;
height: 56px;
border: 1px solid #CCC;
margin-left: 10px;
margin-bottom: 10px;
border-radius: 4px;
box-shadow: 2px 2px 10px #888;
}
File renamed without changes.
2 changes: 1 addition & 1 deletion browsercast.less → browsercast/browsercast.less
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@

.controls-img {
float: right;
background-image: url(browsercast-controls.png);
background-image: data-uri('image/png;base64', 'browsercast-controls.png');
display: inline-block;
width: 148px;
height: 56px;
Expand Down
26 changes: 17 additions & 9 deletions browsercast/browsercast.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import os
import cgi
from urllib import quote

import traceback

class Browsercast(object):
default_assets = {
"browsercast_js": "../browsercast.js",
"browsercast_css": "../browsercast.css",
"popcorn_js": "../popcorn-complete-1.3.min.js",
"browsercast_js": "browsercast.js",
"browsercast_css": "browsercast.css",
"popcorn_js": "popcorn-complete-1.3.min.js",
}
asset_order = [
"popcorn_js",
Expand Down Expand Up @@ -43,12 +46,17 @@ def asset_tag(self, asset_name):
raise AssertionError("Unknown asset format: %r" %(asset_name, ))

def _repr_html_(self):
result = [
"<p class='bc-loading-status-output'>Loading BrowserCast&hellip;</p>"
]
result.extend(self.asset_tag(n) for n in self.asset_order)
return "\n".join(result)

try:
result = [
"<p class='bc-loading-status-output'>Loading BrowserCast&hellip;</p>"
]
result.extend(self.asset_tag(n) for n in self.asset_order)
return "\n".join(result)
except Exception as e:
return "\n".join([
"<div><strong>Error loading BrowserCast</strong>: %s</div>" %(e, ),
"<pre>%s</pre>" %(cgi.escape(traceback.format_exc()), )
])

def load(**kwargs):
return Browsercast(**kwargs)
File renamed without changes.
File renamed without changes.
5 changes: 4 additions & 1 deletion mkbookmarklet
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import sys
import os

if len(sys.argv) == 1:
sys.argv.append("files/")
sys.stderr.write("NOTICE: No prefix provided; using 'files/browsercast/\n")
sys.stderr.write("NOTICE: This bookmarklet will work when running "
"'ipython notebook' from this directory.\n")
sys.argv.append("files/browsercast/")

PREFIX = sys.argv[1]

Expand Down
25 changes: 25 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env python

import os
os.chdir(os.path.dirname(__file__) or ".")

from setuptools import setup, find_packages

import browsercast

version = "%s.%s.%s" %browsercast.__version__
setup(
name="browsercast",
version=version,
url="https://github.com/wolever/browsercast",
packages=find_packages(),
zip_safe=False,
license="BSD",
classifiers=[ x.strip() for x in """
Development Status :: 4 - Beta
License :: OSI Approved :: BSD License
Natural Language :: English
Operating System :: OS Independent
Programming Language :: Python
""".split("\n") if x.strip() ],
)

0 comments on commit 8aeb4e1

Please sign in to comment.