Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2013-01-22 15:46:25 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2013-01-22 15:48:57 (GMT)
commit4e0210968c6fb8862b6c808f783536899ade1644 (patch)
treeec8a2e6444fe5cf8396590b58832b47753460710
parent2ced9950cd6511ef1ce36673df332e11d570c1d6 (diff)
Start port of TamTamJam to Gtk3
Using pygi-convert.sh, sugar-convert.sh and a few manual fixes. Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
-rw-r--r--Jam/Block.py5
-rw-r--r--Jam/Desktop.py25
-rw-r--r--Jam/Fillin.py13
-rw-r--r--Jam/JamMain.py111
-rw-r--r--Jam/Parasite.py9
-rw-r--r--Jam/Picker.py65
-rw-r--r--Jam/Popup.py220
-rw-r--r--Jam/Toolbars.py144
-rw-r--r--TamTamJam.py27
9 files changed, 299 insertions, 320 deletions
diff --git a/Jam/Block.py b/Jam/Block.py
index 14cd8c0..004adae 100644
--- a/Jam/Block.py
+++ b/Jam/Block.py
@@ -1,7 +1,4 @@
-
-import pygtk
-pygtk.require( '2.0' )
-import gtk
+from gi.repository import Gtk
import random
diff --git a/Jam/Desktop.py b/Jam/Desktop.py
index 0698e88..ac84c3f 100644
--- a/Jam/Desktop.py
+++ b/Jam/Desktop.py
@@ -1,7 +1,6 @@
-
-import pygtk
-pygtk.require( '2.0' )
-import gtk
+from gi.repository import GObject
+from gi.repository import Gtk
+from gi.repository import Gdk
import common.Config as Config
@@ -11,15 +10,15 @@ import common.Util.InstrumentDB as InstrumentDB
from Jam import Block
from Jam import Popup
-class Desktop( gtk.EventBox ):
+class Desktop( Gtk.EventBox ):
def __init__( self, owner ):
- gtk.EventBox.__init__( self )
+ GObject.GObject.__init__( self )
self.instrumentDB = InstrumentDB.getRef()
self.owner = owner
- self.drawingArea = gtk.DrawingArea()
+ self.drawingArea = Gtk.DrawingArea()
self.add( self.drawingArea )
# take drawing setup from owner
@@ -29,10 +28,10 @@ class Desktop( gtk.EventBox ):
self.noteDB = owner.noteDB
- self.dirtyRectToAdd = gtk.gdk.Rectangle() # used by the invalidate_rect function
+ self.dirtyRectToAdd = Gdk.Rectangle() # used by the invalidate_rect function
self.screenBuf = None
self.screenBufDirty = False
- self.screenBufDirtyRect = gtk.gdk.Rectangle()
+ self.screenBufDirtyRect = ()
self.blocks = [] # items on the desktop
self.activeInstrument = None
@@ -40,7 +39,7 @@ class Desktop( gtk.EventBox ):
self.loops = {} # dict of playing loops by loop root
self.drums = [] # list of active drums
- self.add_events(gtk.gdk.POINTER_MOTION_MASK|gtk.gdk.POINTER_MOTION_HINT_MASK)
+ self.add_events(Gdk.EventMask.POINTER_MOTION_MASK|Gdk.EventMask.POINTER_MOTION_HINT_MASK)
self.connect( "size-allocate", self.on_size_allocate )
self.connect( "button-press-event", self.on_button_press )
@@ -70,8 +69,8 @@ class Desktop( gtk.EventBox ):
def on_size_allocate( self, widget, allocation ):
if self.screenBuf == None or self.alloc.width != allocation.width or self.alloc.height != allocation.height:
- win = gtk.gdk.get_default_root_window()
- self.screenBuf = gtk.gdk.Pixmap( win, allocation.width, allocation.height )
+ win = Gdk.get_default_root_window()
+ self.screenBuf = Gdk.Pixmap( win, allocation.width, allocation.height )
self.invalidate_rect( 0, 0, allocation.width, allocation.height )
self.alloc = allocation
self.absoluteLoc = [0,0]
@@ -100,7 +99,7 @@ class Desktop( gtk.EventBox ):
else: y = self.alloc.height//2
if drag:
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
display = win.get_display()
screen = display.get_default_screen()
display.warp_pointer( screen, int(self.absoluteLoc[0] + x), int(self.absoluteLoc[1] + y) )
diff --git a/Jam/Fillin.py b/Jam/Fillin.py
index 8588f6d..61af3cc 100644
--- a/Jam/Fillin.py
+++ b/Jam/Fillin.py
@@ -1,7 +1,4 @@
-import pygtk
-pygtk.require( '2.0' )
-import gtk
-import gobject
+from gi.repository import GObject
from RythmGenerator import *
from common.Util.CSoundClient import new_csound_client
@@ -43,7 +40,7 @@ class Fillin:
def setBeats( self, nbeats ):
if self.playBackTimeout != None:
- gobject.source_remove( self.playBackTimeout )
+ GObject.source_remove( self.playBackTimeout )
self.nbeats = nbeats
self.clear()
@@ -52,7 +49,7 @@ class Fillin:
def setTempo( self, tempo ):
self.tempo = tempo
if self.playBackTimeout != None:
- gobject.source_remove( self.playBackTimeout )
+ GObject.source_remove( self.playBackTimeout )
self.play()
def setReverb( self, reverb ):
@@ -63,12 +60,12 @@ class Fillin:
def play( self ):
if self.playBackTimeout == None:
- self.playBackTimeout = gobject.timeout_add( int(60000/self.tempo/8), self.handleClock )
+ self.playBackTimeout = GObject.timeout_add( int(60000/self.tempo/8), self.handleClock )
self.handleClock()
def stop( self ):
if self.playBackTimeout != None:
- gobject.source_remove( self.playBackTimeout )
+ GObject.source_remove( self.playBackTimeout )
self.clear()
def clear( self ):
diff --git a/Jam/JamMain.py b/Jam/JamMain.py
index beee980..e8a7341 100644
--- a/Jam/JamMain.py
+++ b/Jam/JamMain.py
@@ -1,7 +1,7 @@
-import pygtk
-pygtk.require('2.0')
-import gtk
-import pango
+from gi.repository import Gtk
+from gi.repository import Gdk
+from gi.repository import GObject
+from gi.repository import Pango
import os
import sys
@@ -14,7 +14,7 @@ import common.Config as Config
from common.Config import scale
from common.Config import imagefile
from gettext import gettext as _
-import sugar.graphics.style as style
+import sugar3.graphics.style as style
from Jam.Desktop import Desktop
import Jam.Picker as Picker
@@ -44,10 +44,9 @@ import common.Util.Network as Net
import xdrlib
import time
-import gobject
-from sugar.presence import presenceservice
-from sugar.graphics.xocolor import XoColor
+from sugar3.presence import presenceservice
+from sugar3.graphics.xocolor import XoColor
from math import sqrt
@@ -56,10 +55,10 @@ from math import sqrt
HEARTBEAT_BUFFER = 100
-class JamMain(gtk.EventBox):
+class JamMain(Gtk.EventBox):
def __init__(self, activity):
- gtk.EventBox.__init__(self)
+ GObject.GObject.__init__(self)
self.activity = activity
@@ -113,9 +112,9 @@ class JamMain(gtk.EventBox):
xoColorKey = ("#8D8D8D,#FFDDEA")
xoColor = XoColor(xoColorKey)
- win = gtk.gdk.get_default_root_window()
- self.gc = gtk.gdk.GC(win)
- colormap = gtk.gdk.colormap_get_system()
+ win = Gdk.get_default_root_window()
+ self.gc = Gdk.GC(win)
+ colormap = Gdk.colormap_get_system()
self.colors = {"bg": colormap.alloc_color(Config.PANEL_BCK_COLOR),
"black": colormap.alloc_color(
style.COLOR_BLACK.get_html()),
@@ -151,7 +150,7 @@ class JamMain(gtk.EventBox):
self.colors["Note_Border_Inactive"] = self.colors["Border_Inactive"]
if True: # load block clipmask
- pix = gtk.gdk.pixbuf_new_from_file(imagefile('jam-blockMask.png'))
+ pix = GdkPixbuf.Pixbuf.new_from_file(imagefile('jam-blockMask.png'))
pixels = pix.get_pixels()
stride = pix.get_rowstride()
channels = pix.get_n_channels()
@@ -173,17 +172,17 @@ class JamMain(gtk.EventBox):
bitmap += "%c" % byte
byte = 0
shift = 0
- self.blockMask = gtk.gdk.bitmap_create_from_data(
+ self.blockMask = Gdk.bitmap_create_from_data(
None, bitmap, pix.get_width(), pix.get_height())
- pix = gtk.gdk.pixbuf_new_from_file(imagefile('sampleBG.png'))
- self.sampleBg = gtk.gdk.Pixmap(win, pix.get_width(), pix.get_height())
+ pix = GdkPixbuf.Pixbuf.new_from_file(imagefile('sampleBG.png'))
+ self.sampleBg = Gdk.Pixmap(win, pix.get_width(), pix.get_height())
self.sampleBg.draw_pixbuf(self.gc, pix, 0, 0, 0, 0, pix.get_width(),
- pix.get_height(), gtk.gdk.RGB_DITHER_NONE)
+ pix.get_height(), Gdk.RGB_DITHER_NONE)
self.sampleBg.endOffset = pix.get_width() - 5
self.sampleNoteHeight = 7
if True: # load sample note clipmask
- pix = gtk.gdk.pixbuf_new_from_file(imagefile('sampleNoteMask.png'))
+ pix = GdkPixbuf.Pixbuf.new_from_file(imagefile('sampleNoteMask.png'))
pixels = pix.get_pixels()
stride = pix.get_rowstride()
channels = pix.get_n_channels()
@@ -205,7 +204,7 @@ class JamMain(gtk.EventBox):
bitmap += "%c" % byte
byte = 0
shift = 0
- self.sampleNoteMask = gtk.gdk.bitmap_create_from_data(
+ self.sampleNoteMask = Gdk.bitmap_create_from_data(
None, bitmap, pix.get_width(), pix.get_height())
self.sampleNoteMask.endOffset = pix.get_width() - 3
@@ -246,7 +245,7 @@ class JamMain(gtk.EventBox):
#-- Toolbars ------------------------------------------
if Config.HAVE_TOOLBOX:
- from sugar.graphics.toolbarbox import ToolbarButton
+ from sugar3.graphics.toolbarbox import ToolbarButton
self.jamToolbar = JamToolbar(self)
jam_toolbar_button = ToolbarButton(label=_('Jam'),
@@ -281,7 +280,7 @@ class JamMain(gtk.EventBox):
record_toolbar_button.show()
self.activity.toolbox.toolbar.insert(record_toolbar_button, -1)
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.props.draw = True
separator.set_expand(False)
self.activity.toolbox.toolbar.insert(separator, -1)
@@ -311,25 +310,25 @@ class JamMain(gtk.EventBox):
#-- GUI -----------------------------------------------
if True: # GUI
- self.modify_bg(gtk.STATE_NORMAL, self.colors["bg"]) # window bg
+ self.modify_bg(Gtk.StateType.NORMAL, self.colors["bg"]) # window bg
self.GUI = {}
- self.GUI["mainVBox"] = gtk.VBox()
+ self.GUI["mainVBox"] = Gtk.VBox()
self.add(self.GUI["mainVBox"])
#-- Desktop -------------------------------------------
self.desktop = self.GUI["desktop"] = Desktop(self)
- self.GUI["mainVBox"].pack_start(self.GUI["desktop"])
+ self.GUI["mainVBox"].pack_start(self.GUI["desktop"], True, True, 0)
#-- Bank ----------------------------------------------
- separator = gtk.Label(" ")
+ separator = Gtk.Label(label=" ")
separator.set_size_request(-1, style.TOOLBOX_SEPARATOR_HEIGHT)
self.GUI["mainVBox"].pack_start(separator, False)
- self.GUI["notebook"] = gtk.Notebook()
+ self.GUI["notebook"] = Gtk.Notebook()
self.GUI["notebook"].set_scrollable(True)
- self.GUI["notebook"].modify_bg(gtk.STATE_NORMAL,
+ self.GUI["notebook"].modify_bg(Gtk.StateType.NORMAL,
self.colors["Picker_Bg"])
- self.GUI["notebook"].modify_bg(gtk.STATE_ACTIVE,
+ self.GUI["notebook"].modify_bg(Gtk.StateType.ACTIVE,
self.colors["Picker_Bg_Inactive"])
self.GUI["notebook"].props.tab_vborder = style.TOOLBOX_TAB_VBORDER
self.GUI["notebook"].props.tab_hborder = style.TOOLBOX_TAB_HBORDER
@@ -342,10 +341,10 @@ class JamMain(gtk.EventBox):
self.pickers[type] = type(self)
def prepareLabel(name):
- label = gtk.Label(Tooltips.categories.get(name) or name)
+ label = Gtk.Label(label=Tooltips.categories.get(name) or name)
label.set_alignment(0.0, 0.5)
- label.modify_fg(gtk.STATE_NORMAL, self.colors["Picker_Fg"])
- label.modify_fg(gtk.STATE_ACTIVE, self.colors["Picker_Fg"])
+ label.modify_fg(Gtk.StateType.NORMAL, self.colors["Picker_Fg"])
+ label.modify_fg(Gtk.StateType.ACTIVE, self.colors["Picker_Fg"])
return label
self.GUI["notebook"].append_page(self.pickers[Picker.Drum],
@@ -356,7 +355,7 @@ class JamMain(gtk.EventBox):
sets = self.instrumentDB.getLabels()[:]
sets.sort()
for set in sets:
- page = gtk.HBox()
+ page = Gtk.HBox()
page.set = set
self.GUI["notebook"].append_page(page, prepareLabel(set))
@@ -422,7 +421,7 @@ class JamMain(gtk.EventBox):
self.heartbeatStart = time.time()
self.csnd.loopStart(self.heartbeatLoop)
self.curBeat = 0
- self.beatWheelTimeout = gobject.timeout_add(100, self.updateBeatWheel)
+ self.beatWheelTimeout = GObject.timeout_add(100, self.updateBeatWheel)
# data packing classes
self.packer = xdrlib.Packer()
@@ -431,10 +430,10 @@ class JamMain(gtk.EventBox):
# handle forced networking
if self.network.isHost():
self.updateSync()
- self.syncTimeout = gobject.timeout_add(1000, self.updateSync)
+ self.syncTimeout = GObject.timeout_add(1000, self.updateSync)
elif self.network.isPeer():
self.sendTempoQuery()
- self.syncTimeout = gobject.timeout_add(1000, self.updateSync)
+ self.syncTimeout = GObject.timeout_add(1000, self.updateSync)
self.activity.connect("shared", self.shared)
@@ -515,7 +514,7 @@ class JamMain(gtk.EventBox):
self.instrumentDB.instNamed[inst.kit[pitch]].instrumentId,
self.instrument["reverb"])
else:
- if event.state == gtk.gdk.MOD1_MASK:
+ if event.get_state() == Gdk.ModifierType.MOD1_MASK:
pitch += 5
# Percussions resonance
@@ -992,28 +991,28 @@ class JamMain(gtk.EventBox):
# Pixmaps
def prepareInstrumentImage(self, id, img_path):
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
try:
- pix = gtk.gdk.pixbuf_new_from_file(img_path)
+ pix = GdkPixbuf.Pixbuf.new_from_file(img_path)
except:
if Config.DEBUG >= 5:
print "JamMain:: file does not exist: " + img_path
- pix = gtk.gdk.pixbuf_new_from_file(imagefile('generic.png'))
+ pix = GdkPixbuf.Pixbuf.new_from_file(imagefile('generic.png'))
x = (Block.Block.WIDTH - pix.get_width()) // 2
y = (Block.Block.HEIGHT - pix.get_height()) // 2
- img = gtk.gdk.Pixmap(win, Block.Block.WIDTH, Block.Block.HEIGHT)
+ img = Gdk.Pixmap(win, Block.Block.WIDTH, Block.Block.HEIGHT)
self.gc.foreground = self.colors["Bg_Inactive"]
img.draw_rectangle(self.gc, True, 0, 0, Block.Block.WIDTH,
Block.Block.HEIGHT)
img.draw_pixbuf(self.gc, pix, 0, 0, x, y, pix.get_width(),
- pix.get_height(), gtk.gdk.RGB_DITHER_NONE)
+ pix.get_height(), Gdk.RGB_DITHER_NONE)
self.instrumentImage[id] = img
- img = gtk.gdk.Pixmap(win, Block.Block.WIDTH, Block.Block.HEIGHT)
+ img = Gdk.Pixmap(win, Block.Block.WIDTH, Block.Block.HEIGHT)
self.gc.foreground = self.colors["Bg_Active"]
img.draw_rectangle(self.gc, True, 0, 0, Block.Block.WIDTH,
Block.Block.HEIGHT)
img.draw_pixbuf(self.gc, pix, 0, 0, x, y, pix.get_width(),
- pix.get_height(), gtk.gdk.RGB_DITHER_NONE)
+ pix.get_height(), Gdk.RGB_DITHER_NONE)
self.instrumentImageActive[id] = img
def _drawNotes(self, pixmap, beats, notes, active):
@@ -1048,15 +1047,15 @@ class JamMain(gtk.EventBox):
self.sampleNoteHeight)
def prepareKeyImage(self, key):
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
pangolayout = self.create_pango_layout(_(self.valid_shortcuts[key]))
- fontDesc = pango.FontDescription("bold")
+ fontDesc = Pango.FontDescription("bold")
pangolayout.set_font_description(fontDesc)
extents = pangolayout.get_pixel_extents()
x = (Block.Block.KEYSIZE - extents[1][2]) // 2
y = (Block.Block.KEYSIZE - extents[1][3]) // 2
- pixmap = gtk.gdk.Pixmap(win, Block.Block.KEYSIZE, Block.Block.KEYSIZE)
+ pixmap = Gdk.Pixmap(win, Block.Block.KEYSIZE, Block.Block.KEYSIZE)
self.gc.foreground = self.colors["Border_Inactive"]
pixmap.draw_rectangle(self.gc, True, 0, 0, Block.Block.KEYSIZE,
Block.Block.KEYSIZE)
@@ -1064,7 +1063,7 @@ class JamMain(gtk.EventBox):
pixmap.draw_layout(self.gc, x, y, pangolayout)
self.keyImage[key] = pixmap
- pixmap = gtk.gdk.Pixmap(win, Block.Block.KEYSIZE, Block.Block.KEYSIZE)
+ pixmap = Gdk.Pixmap(win, Block.Block.KEYSIZE, Block.Block.KEYSIZE)
self.gc.foreground = self.colors["Border_Active"]
pixmap.draw_rectangle(self.gc, True, 0, 0, Block.Block.KEYSIZE,
Block.Block.KEYSIZE)
@@ -1075,22 +1074,22 @@ class JamMain(gtk.EventBox):
def updateLoopImage(self, id):
page = self.noteDB.getPage(id)
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
width = Block.Loop.WIDTH[page.beats]
height = Block.Loop.HEIGHT
- self.gc.set_clip_rectangle(gtk.gdk.Rectangle(0, 0, width, height))
+ self.gc.set_clip_rectangle((0, 0, width, height))
- pixmap = gtk.gdk.Pixmap(win, width, height)
+ pixmap = Gdk.Pixmap(win, width, height)
self.gc.foreground = self.colors["Bg_Inactive"]
pixmap.draw_rectangle(self.gc, True, 0, 0, width, height)
self._drawNotes(pixmap, page.beats, self.noteDB.getNotesByTrack(id, 0),
False)
self.loopImage[id] = pixmap
- self.gc.set_clip_rectangle(gtk.gdk.Rectangle(0, 0, width, height))
+ self.gc.set_clip_rectangle((0, 0, width, height))
- pixmap = gtk.gdk.Pixmap(win, width, height)
+ pixmap = Gdk.Pixmap(win, width, height)
self.gc.foreground = self.colors["Bg_Active"]
pixmap.draw_rectangle(self.gc, True, 0, 0, width, height)
self._drawNotes(pixmap, page.beats, self.noteDB.getNotesByTrack(id, 0),
@@ -1185,7 +1184,7 @@ class JamMain(gtk.EventBox):
self.activity._shared_activity.connect("buddy-left", self.buddy_left)
self.network.setMode(Net.MD_HOST)
self.updateSync()
- self.syncTimeout = gobject.timeout_add(1000, self.updateSync)
+ self.syncTimeout = GObject.timeout_add(1000, self.updateSync)
def joined(self, activity):
if Config.DEBUG:
@@ -1245,12 +1244,12 @@ class JamMain(gtk.EventBox):
def networkStatusWatcher(self, mode):
if mode == Net.MD_OFFLINE:
if self.syncTimeout:
- gobject.source_remove(self.syncTimeout)
+ GObject.source_remove(self.syncTimeout)
self.syncTimeout = None
if mode == Net.MD_PEER:
self.updateSync()
if not self.syncTimeout:
- self.syncTimeout = gobject.timeout_add(1000, self.updateSync)
+ self.syncTimeout = GObject.timeout_add(1000, self.updateSync)
self.sendTempoQuery()
def processHT_SYNC_REPLY(self, sock, message, data):
diff --git a/Jam/Parasite.py b/Jam/Parasite.py
index 74b9e0d..c5ac2ec 100644
--- a/Jam/Parasite.py
+++ b/Jam/Parasite.py
@@ -1,6 +1,5 @@
-import pygtk
-pygtk.require( '2.0' )
-import gtk
+from gi.repository import Gtk
+from gi.repository import Gdk
import common.Config as Config
@@ -170,7 +169,7 @@ class LoopParasite:
playSample = False
- if event.type == gtk.gdk._2BUTTON_PRESS: # select bar
+ if event.type == Gdk._2BUTTON_PRESS: # select bar
self.potentialDeselect = False
start = 0
check = self.note.cs.onset - Config.TICKS_PER_BEAT
@@ -179,7 +178,7 @@ class LoopParasite:
check += self.note.cs.duration
while stop < check: stop += Config.TICKS_PER_BEAT
emitter.selectNotesByBar( self.note.track, start, stop )
- elif event.type == gtk.gdk._3BUTTON_PRESS: # select track
+ elif event.type == Gdk._3BUTTON_PRESS: # select track
self.potentialDeselect = False
emitter.selectNotesByTrack( self.note.track )
else:
diff --git a/Jam/Picker.py b/Jam/Picker.py
index f1030bf..5456555 100644
--- a/Jam/Picker.py
+++ b/Jam/Picker.py
@@ -1,11 +1,8 @@
-
-import pygtk
-pygtk.require( '2.0' )
-import gtk
+from gi.repository import Gtk
+from gi.repository import Gdk
import os
-import random #TEMP
import sets
from common.Util.CSoundClient import new_csound_client
@@ -13,7 +10,7 @@ from common.port.scrolledbox import HScrolledBox
import common.Config as Config
from gettext import gettext as _
-from sugar.graphics.palette import Palette, WidgetInvoker
+from sugar3.graphics.palette import Palette, WidgetInvoker
from common.Util import ControlStream
from common.Util import InstrumentDB
@@ -36,13 +33,13 @@ class Picker(HScrolledBox):
self.desktop = owner.getDesktop()
- self.pickerBox = gtk.HBox()
+ self.pickerBox = Gtk.HBox()
self.set_viewport(self.pickerBox)
- self.modify_bg( gtk.STATE_NORMAL, self.colors["Picker_Bg"] )
+ self.modify_bg( Gtk.StateType.NORMAL, self.colors["Picker_Bg"] )
# spacers
- self.pickerBox.pack_start( gtk.Label(" "), True, True )
- self.pickerBox.pack_end( gtk.Label(" "), True, True )
+ self.pickerBox.pack_start( Gtk.Label(" "), True, True, 0)
+ self.pickerBox.pack_end( Gtk.Label(" "), True, True, 0)
self.show_all()
self.scroll = {}
@@ -56,12 +53,12 @@ class Picker(HScrolledBox):
invoker._position_hint = WidgetInvoker.AT_CURSOR
invoker.set_palette(Palette(name))
- block.add_events( gtk.gdk.BUTTON_PRESS_MASK
- | gtk.gdk.BUTTON_RELEASE_MASK
- | gtk.gdk.ENTER_NOTIFY_MASK
- | gtk.gdk.LEAVE_NOTIFY_MASK
- | gtk.gdk.POINTER_MOTION_MASK
- | gtk.gdk.POINTER_MOTION_HINT_MASK )
+ block.add_events( Gdk.EventMask.BUTTON_PRESS_MASK
+ | Gdk.EventMask.BUTTON_RELEASE_MASK
+ | Gdk.EventMask.ENTER_NOTIFY_MASK
+ | Gdk.EventMask.LEAVE_NOTIFY_MASK
+ | Gdk.EventMask.POINTER_MOTION_MASK
+ | Gdk.EventMask.POINTER_MOTION_HINT_MASK )
block.connect( "button-press-event", self.on_button_press )
block.connect( "button-release-event", self.on_button_release )
block.connect( "motion-notify-event", self.on_motion_notify )
@@ -145,12 +142,12 @@ class Instrument( Picker ):
data = { "name": self.instrumentDB.instId[id].nameTooltip,
"id": id }
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
width = Block.Instrument.WIDTH
height = Block.Instrument.HEIGHT
- pixmap = gtk.gdk.Pixmap( win, width, height )
+ pixmap = Gdk.Pixmap( win, width, height )
- self.gc.set_clip_rectangle( gtk.gdk.Rectangle( 0, 0, width, height ) )
+ self.gc.set_clip_rectangle( ( 0, 0, width, height ) )
# draw bg
self.gc.foreground = self.colors["Picker_Bg"]
@@ -168,11 +165,11 @@ class Instrument( Picker ):
self.gc.set_clip_origin( -Block.Instrument.MASK_START, -height )
pixmap.draw_drawable( self.gc, inst, 0, 0, 0, 0, width, height )
- image = gtk.Image()
+ image = Gtk.Image()
image.set_from_pixmap( pixmap, None )
- block = gtk.EventBox()
- block.modify_bg( gtk.STATE_NORMAL, self.colors["Picker_Bg"] )
+ block = Gtk.EventBox()
+ block.modify_bg( Gtk.StateType.NORMAL, self.colors["Picker_Bg"] )
block.add( image )
Picker.addBlock( self, data, data["name"], block )
@@ -213,12 +210,12 @@ class Drum( Picker ):
data = { "name": self.instrumentDB.instId[id].nameTooltip,
"id": id }
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
width = Block.Drum.WIDTH
height = Block.Drum.HEIGHT
- pixmap = gtk.gdk.Pixmap( win, width, height )
+ pixmap = Gdk.Pixmap( win, width, height )
- self.gc.set_clip_rectangle( gtk.gdk.Rectangle( 0, 0, width, height ) )
+ self.gc.set_clip_rectangle( ( 0, 0, width, height ) )
# draw bg
self.gc.foreground = self.colors["Picker_Bg"]
@@ -236,11 +233,11 @@ class Drum( Picker ):
self.gc.set_clip_origin( -Block.Drum.MASK_START, -height )
pixmap.draw_drawable( self.gc, inst, 0, 0, 0, 0, width, height )
- image = gtk.Image()
+ image = Gtk.Image()
image.set_from_pixmap( pixmap, None )
- block = gtk.EventBox()
- block.modify_bg( gtk.STATE_NORMAL, self.colors["Picker_Bg"] )
+ block = Gtk.EventBox()
+ block.modify_bg( Gtk.StateType.NORMAL, self.colors["Picker_Bg"] )
block.add( image )
Picker.addBlock( self, data, data["name"], block )
@@ -310,12 +307,12 @@ class Loop( Picker ):
page = self.owner.noteDB.getPage( id )
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
width = Block.Loop.WIDTH[page.beats]
height = Block.Loop.HEIGHT
- pixmap = gtk.gdk.Pixmap( win, width, height )
+ pixmap = Gdk.Pixmap( win, width, height )
- self.gc.set_clip_rectangle( gtk.gdk.Rectangle( 0, 0, width, height ) )
+ self.gc.set_clip_rectangle( ( 0, 0, width, height ) )
# draw bg
self.gc.foreground = self.colors["Picker_Bg"]
@@ -373,11 +370,11 @@ class Loop( Picker ):
self.gc.set_clip_origin( curx-Block.Loop.MASK_TAIL, -height )
pixmap.draw_drawable( self.gc, loop, curx, 0, curx, 0, Block.Loop.TAIL, height )
- image = gtk.Image()
+ image = Gtk.Image()
image.set_from_pixmap( pixmap, None )
- block = gtk.EventBox()
- block.modify_bg( gtk.STATE_NORMAL, self.colors["Picker_Bg"] )
+ block = Gtk.EventBox()
+ block.modify_bg( Gtk.StateType.NORMAL, self.colors["Picker_Bg"] )
block.add( image )
Picker.addBlock( self, data, data["name"], block )
diff --git a/Jam/Popup.py b/Jam/Popup.py
index 8ff1888..55eb299 100644
--- a/Jam/Popup.py
+++ b/Jam/Popup.py
@@ -1,14 +1,12 @@
-
-import pygtk
-pygtk.require( '2.0' )
-import gtk
+from gi.repository import Gtk
+from gi.repository import Gdk
import common.Config as Config
from gettext import gettext as _
-from sugar.graphics import style
-from sugar.graphics.palette import Palette, Invoker
-import gobject
+from sugar3.graphics import style
+from sugar3.graphics.palette import Palette, Invoker
+from gi.repository import GObject
from Jam import Block
from common.Util.NoteDB import PARAMETER
@@ -34,7 +32,7 @@ class NoneInvoker( Invoker ):
self._position_hint = Invoker.AT_CURSOR
def get_rect( self ):
- return gtk.gdk.Rectangle( 0, 0, 0, 0 )
+ return ( 0, 0, 0, 0 )
def get_toplevel( self ):
return None
@@ -110,75 +108,75 @@ class Instrument( Popup ):
self.GUI = {}
- self.GUI["mainBox"] = gtk.VBox()
+ self.GUI["mainBox"] = Gtk.VBox()
self.set_content( self.GUI["mainBox"] )
#-- Volume --------------------------------------------
- self.GUI["volumeBox"] = gtk.HBox()
+ self.GUI["volumeBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["volumeBox"], padding = style.DEFAULT_PADDING )
- self.GUI["volumeLabel"] = gtk.Label( _("Volume") + ':' )
+ self.GUI["volumeLabel"] = Gtk.Label(label= _("Volume") + ':' )
self.GUI["volumeLabel"].set_size_request( 100, -1 )
self.GUI["volumeLabel"].set_alignment( 0.0, 0.5 )
self.GUI["volumeBox"].pack_start( self.GUI["volumeLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["volumeAdjustment"] = gtk.Adjustment( 0.5, 0.0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["volumeAdjustment"] = Gtk.Adjustment( 0.5, 0.0, 1.0, 0.01, 0.01, 0 )
self.GUI["volumeAdjustment"].connect( 'value-changed', self.handleVolume )
- self.GUI["volumeSlider"] = gtk.HScale( adjustment = self.GUI["volumeAdjustment"] )
+ self.GUI["volumeSlider"] = Gtk.HScale( adjustment = self.GUI["volumeAdjustment"] )
self.GUI["volumeSlider"].set_size_request( 250, -1 )
self.GUI["volumeSlider"].set_draw_value( True )
self.GUI["volumeSlider"].set_digits( 2 )
- self.GUI["volumeSlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["volumeSlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["volumeBox"].pack_start( self.GUI["volumeSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["volumeImage"] = gtk.Image()
+ self.GUI["volumeImage"] = Gtk.Image()
self.GUI["volumeBox"].pack_start( self.GUI["volumeImage"], False, padding = style.DEFAULT_PADDING )
#-- Pan -----------------------------------------------
- self.GUI["panBox"] = gtk.HBox()
+ self.GUI["panBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["panBox"], padding = style.DEFAULT_PADDING )
- self.GUI["panLabel"] = gtk.Label( _("Pan:") )
+ self.GUI["panLabel"] = Gtk.Label(label= _("Pan:") )
self.GUI["panLabel"].set_size_request( 100, -1 )
self.GUI["panLabel"].set_alignment( 0.0, 0.5 )
self.GUI["panBox"].pack_start( self.GUI["panLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["panAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["panAdjustment"] = Gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 )
self.GUI["panAdjustment"].connect( 'value-changed', self.handlePan )
- self.GUI["panSlider"] = gtk.HScale( adjustment = self.GUI["panAdjustment"] )
+ self.GUI["panSlider"] = Gtk.HScale( adjustment = self.GUI["panAdjustment"] )
self.GUI["panSlider"].set_size_request( 250, -1 )
self.GUI["panSlider"].set_draw_value( True )
self.GUI["panSlider"].set_digits( 2 )
- self.GUI["panSlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["panSlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["panBox"].pack_start( self.GUI["panSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["panImage"] = gtk.Image()
+ self.GUI["panImage"] = Gtk.Image()
self.GUI["panBox"].pack_start( self.GUI["panImage"], False, padding = style.DEFAULT_PADDING )
#-- Reverb --------------------------------------------
- self.GUI["reverbBox"] = gtk.HBox()
+ self.GUI["reverbBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["reverbBox"], padding = style.DEFAULT_PADDING )
- self.GUI["reverbLabel"] = gtk.Label( _("Reverb") + ':' )
+ self.GUI["reverbLabel"] = Gtk.Label(label= _("Reverb") + ':' )
self.GUI["reverbLabel"].set_size_request( 100, -1 )
self.GUI["reverbLabel"].set_alignment( 0.0, 0.5 )
self.GUI["reverbBox"].pack_start( self.GUI["reverbLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["reverbAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["reverbAdjustment"] = Gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 )
self.GUI["reverbAdjustment"].connect( 'value-changed', self.handleReverb )
- self.GUI["reverbSlider"] = gtk.HScale( adjustment = self.GUI["reverbAdjustment"] )
+ self.GUI["reverbSlider"] = Gtk.HScale( adjustment = self.GUI["reverbAdjustment"] )
self.GUI["reverbSlider"].set_size_request( 250, -1 )
self.GUI["reverbSlider"].set_draw_value( True )
self.GUI["reverbSlider"].set_digits( 2 )
- self.GUI["reverbSlider"].set_value_pos(gtk.POS_RIGHT)
+ self.GUI["reverbSlider"].set_value_pos(Gtk.PositionType.RIGHT)
self.GUI["reverbBox"].pack_start( self.GUI["reverbSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["reverbImage"] = gtk.Image()
+ self.GUI["reverbImage"] = Gtk.Image()
self.GUI["reverbBox"].pack_start( self.GUI["reverbImage"], False, padding = style.DEFAULT_PADDING )
if False: # TEMP quote out
- self.GUI["separator"] = gtk.HSeparator()
+ self.GUI["separator"] = Gtk.HSeparator()
self.GUI["mainBox"].pack_start( self.GUI["separator"], padding = style.DEFAULT_PADDING )
#-- Export --------------------------------------------
- self.GUI["exportBox"] = gtk.HBox()
+ self.GUI["exportBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["exportBox"], padding = style.DEFAULT_PADDING )
- self.GUI["exportEntry"] = gtk.Entry()
- self.GUI["exportEntry"].modify_fg( gtk.STATE_NORMAL, self.owner.colors["black"] )
- self.GUI["exportEntry"].modify_fg( gtk.STATE_ACTIVE, self.owner.colors["black"] )
+ self.GUI["exportEntry"] = Gtk.Entry()
+ self.GUI["exportEntry"].modify_fg( Gtk.StateType.NORMAL, self.owner.colors["black"] )
+ self.GUI["exportEntry"].modify_fg( Gtk.StateType.ACTIVE, self.owner.colors["black"] )
self.GUI["exportBox"].pack_start( self.GUI["exportEntry"], padding = style.DEFAULT_PADDING )
- self.GUI["exportButton"] = gtk.Button( "Export" )
+ self.GUI["exportButton"] = Gtk.Button( "Export" )
self.GUI["exportBox"].pack_start( self.GUI["exportButton"], False, padding = style.DEFAULT_PADDING )
self.GUI["mainBox"].show_all()
@@ -218,91 +216,91 @@ class Drum( Popup ):
self.GUI = {}
- self.GUI["mainBox"] = gtk.VBox()
+ self.GUI["mainBox"] = Gtk.VBox()
self.set_content( self.GUI["mainBox"] )
#-- Volume --------------------------------------------
- self.GUI["volumeBox"] = gtk.HBox()
+ self.GUI["volumeBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["volumeBox"], padding = style.DEFAULT_PADDING )
- self.GUI["volumeLabel"] = gtk.Label( _("Volume") + ':' )
+ self.GUI["volumeLabel"] = Gtk.Label(label= _("Volume") + ':' )
self.GUI["volumeLabel"].set_size_request( 130, -1 )
self.GUI["volumeLabel"].set_alignment( 0.0, 0.5 )
self.GUI["volumeBox"].pack_start( self.GUI["volumeLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["volumeAdjustment"] = gtk.Adjustment( 0.5, 0.0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["volumeAdjustment"] = Gtk.Adjustment( 0.5, 0.0, 1.0, 0.01, 0.01, 0 )
self.GUI["volumeAdjustment"].connect( 'value-changed', self.handleVolume )
- self.GUI["volumeSlider"] = gtk.HScale( adjustment = self.GUI["volumeAdjustment"] )
+ self.GUI["volumeSlider"] = Gtk.HScale( adjustment = self.GUI["volumeAdjustment"] )
self.GUI["volumeSlider"].set_size_request( 250, -1 )
self.GUI["volumeSlider"].set_draw_value( True )
self.GUI["volumeSlider"].set_digits( 2 )
- self.GUI["volumeSlider"].set_value_pos(gtk.POS_RIGHT)
+ self.GUI["volumeSlider"].set_value_pos(Gtk.PositionType.RIGHT)
self.GUI["volumeBox"].pack_start( self.GUI["volumeSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["volumeImage"] = gtk.Image()
+ self.GUI["volumeImage"] = Gtk.Image()
self.GUI["volumeBox"].pack_start( self.GUI["volumeImage"], False, padding = style.DEFAULT_PADDING )
#-- Reverb --------------------------------------------
- self.GUI["reverbBox"] = gtk.HBox()
+ self.GUI["reverbBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["reverbBox"], padding = style.DEFAULT_PADDING )
- self.GUI["reverbLabel"] = gtk.Label( _("Reverb") + ':' )
+ self.GUI["reverbLabel"] = Gtk.Label(label= _("Reverb") + ':' )
self.GUI["reverbLabel"].set_size_request( 130, -1 )
self.GUI["reverbLabel"].set_alignment( 0.0, 0.5 )
self.GUI["reverbBox"].pack_start( self.GUI["reverbLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["reverbAdjustment"] = gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["reverbAdjustment"] = Gtk.Adjustment( 0.5, 0, 1.0, 0.01, 0.01, 0 )
self.GUI["reverbAdjustment"].connect( 'value-changed', self.handleReverb )
- self.GUI["reverbSlider"] = gtk.HScale( adjustment = self.GUI["reverbAdjustment"] )
+ self.GUI["reverbSlider"] = Gtk.HScale( adjustment = self.GUI["reverbAdjustment"] )
self.GUI["reverbSlider"].set_size_request( 250, -1 )
self.GUI["reverbSlider"].set_draw_value( True )
self.GUI["reverbSlider"].set_digits( 2 )
- self.GUI["reverbSlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["reverbSlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["reverbBox"].pack_start( self.GUI["reverbSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["reverbImage"] = gtk.Image()
+ self.GUI["reverbImage"] = Gtk.Image()
self.GUI["reverbBox"].pack_start( self.GUI["reverbImage"], False, padding = style.DEFAULT_PADDING )
- self.GUI["generationSeparator"] = gtk.HSeparator()
+ self.GUI["generationSeparator"] = Gtk.HSeparator()
self.GUI["mainBox"].pack_start( self.GUI["generationSeparator"], padding = style.DEFAULT_PADDING )
#-- Beats ---------------------------------------------
- self.GUI["beatsBox"] = gtk.HBox()
+ self.GUI["beatsBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["beatsBox"], padding = style.DEFAULT_PADDING )
- self.GUI["beatsLabel"] = gtk.Label( _("Beats:") )
+ self.GUI["beatsLabel"] = Gtk.Label(label= _("Beats:") )
self.GUI["beatsLabel"].set_size_request( 130, -1 )
self.GUI["beatsLabel"].set_alignment( 0.0, 0.5 )
self.GUI["beatsBox"].pack_start( self.GUI["beatsLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["beatsAdjustment"] = gtk.Adjustment( 4, 2, Config.MAXIMUM_BEATS, 1, 1, 0 )
+ self.GUI["beatsAdjustment"] = Gtk.Adjustment( 4, 2, Config.MAXIMUM_BEATS, 1, 1, 0 )
self.GUI["beatsAdjustment"].connect( 'value-changed', self.handleBeats )
- self.GUI["beatsSlider"] = gtk.HScale( adjustment = self.GUI["beatsAdjustment"] )
+ self.GUI["beatsSlider"] = Gtk.HScale( adjustment = self.GUI["beatsAdjustment"] )
self.GUI["beatsSlider"].set_size_request( 250, -1 )
self.GUI["beatsSlider"].set_draw_value( True )
- self.GUI["beatsSlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["beatsSlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["beatsSlider"].set_digits(0)
self.GUI["beatsBox"].pack_start( self.GUI["beatsSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["beatsImage"] = gtk.Image()
+ self.GUI["beatsImage"] = Gtk.Image()
self.GUI["beatsBox"].pack_start( self.GUI["beatsImage"], False, padding = style.DEFAULT_PADDING )
#-- Regularity ----------------------------------------
- self.GUI["regularityBox"] = gtk.HBox()
+ self.GUI["regularityBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["regularityBox"], padding = style.DEFAULT_PADDING )
- self.GUI["regularityLabel"] = gtk.Label( _("Regularity:") )
+ self.GUI["regularityLabel"] = Gtk.Label(label= _("Regularity:") )
self.GUI["regularityLabel"].set_size_request( 130, -1 )
self.GUI["regularityLabel"].set_alignment( 0.0, 0.5 )
self.GUI["regularityBox"].pack_start( self.GUI["regularityLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["regularityAdjustment"] = gtk.Adjustment( 0.8, 0.0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["regularityAdjustment"] = Gtk.Adjustment( 0.8, 0.0, 1.0, 0.01, 0.01, 0 )
self.GUI["regularityAdjustment"].connect( 'value-changed', self.handleRegularity )
- self.GUI["regularitySlider"] = gtk.HScale( adjustment = self.GUI["regularityAdjustment"] )
+ self.GUI["regularitySlider"] = Gtk.HScale( adjustment = self.GUI["regularityAdjustment"] )
self.GUI["regularitySlider"].set_size_request( 250, -1 )
self.GUI["regularitySlider"].set_draw_value( True )
self.GUI["regularitySlider"].set_digits( 2 )
- self.GUI["regularitySlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["regularitySlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["regularityBox"].pack_start( self.GUI["regularitySlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["regularityImage"] = gtk.Image()
+ self.GUI["regularityImage"] = Gtk.Image()
self.GUI["regularityBox"].pack_start( self.GUI["regularityImage"], False, padding = style.DEFAULT_PADDING )
#-- Generate ------------------------------------------
- self.GUI["generateBox"] = gtk.HBox()
+ self.GUI["generateBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["generateBox"], padding = style.DEFAULT_PADDING )
- self.GUI["regenerateButton"] = gtk.Button( "Regenerate" )
+ self.GUI["regenerateButton"] = Gtk.Button( "Regenerate" )
self.GUI["regenerateButton"].connect( "clicked", self.handleRegenerate )
self.GUI["generateBox"].pack_start( self.GUI["regenerateButton"], True, False, padding = style.DEFAULT_PADDING )
- self.GUI["clearButton"] = gtk.Button( "Clear" )
+ self.GUI["clearButton"] = Gtk.Button( "Clear" )
self.GUI["clearButton"].connect( "clicked", self.handleClear )
self.GUI["generateBox"].pack_start( self.GUI["clearButton"], True, False, padding = style.DEFAULT_PADDING )
@@ -365,69 +363,69 @@ class Loop( Popup ):
self.GUI = {}
- self.GUI["mainBox"] = gtk.VBox()
+ self.GUI["mainBox"] = Gtk.VBox()
self.set_content( self.GUI["mainBox"] )
#-- Beats ---------------------------------------------
- self.GUI["beatsBox"] = gtk.HBox()
+ self.GUI["beatsBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["beatsBox"], padding = style.DEFAULT_PADDING )
- self.GUI["beatsLabel"] = gtk.Label( _("Beats:") )
+ self.GUI["beatsLabel"] = Gtk.Label(label= _("Beats:") )
self.GUI["beatsLabel"].set_size_request( 130, -1 )
self.GUI["beatsLabel"].set_alignment( 0.0, 0.5 )
self.GUI["beatsBox"].pack_start( self.GUI["beatsLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["beatsAdjustment"] = gtk.Adjustment( 4, 2, Config.MAXIMUM_BEATS, 1, 1, 0 )
+ self.GUI["beatsAdjustment"] = Gtk.Adjustment( 4, 2, Config.MAXIMUM_BEATS, 1, 1, 0 )
self.GUI["beatsAdjustment"].connect( 'value-changed', self.handleBeats )
- self.GUI["beatsSlider"] = gtk.HScale( adjustment = self.GUI["beatsAdjustment"] )
+ self.GUI["beatsSlider"] = Gtk.HScale( adjustment = self.GUI["beatsAdjustment"] )
self.GUI["beatsSlider"].set_size_request( 250, -1 )
self.GUI["beatsSlider"].set_draw_value( True )
- self.GUI["beatsSlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["beatsSlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["beatsSlider"].set_digits( 0 )
self.GUI["beatsBox"].pack_start( self.GUI["beatsSlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["beatsImage"] = gtk.Image()
+ self.GUI["beatsImage"] = Gtk.Image()
self.GUI["beatsBox"].pack_start( self.GUI["beatsImage"], False, padding = style.DEFAULT_PADDING )
#-- Regularity ----------------------------------------
- self.GUI["regularityBox"] = gtk.HBox()
+ self.GUI["regularityBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["regularityBox"], padding = style.DEFAULT_PADDING )
- self.GUI["regularityLabel"] = gtk.Label( _("Regularity:") )
+ self.GUI["regularityLabel"] = Gtk.Label(label= _("Regularity:") )
self.GUI["regularityLabel"].set_size_request( 130, -1 )
self.GUI["regularityLabel"].set_alignment( 0.0, 0.5 )
self.GUI["regularityBox"].pack_start( self.GUI["regularityLabel"], False, padding = style.DEFAULT_PADDING )
- self.GUI["regularityAdjustment"] = gtk.Adjustment( 0.8, 0.0, 1.0, 0.01, 0.01, 0 )
+ self.GUI["regularityAdjustment"] = Gtk.Adjustment( 0.8, 0.0, 1.0, 0.01, 0.01, 0 )
self.GUI["regularityAdjustment"].connect( 'value-changed', self.handleRegularity )
- self.GUI["regularitySlider"] = gtk.HScale( adjustment = self.GUI["regularityAdjustment"] )
+ self.GUI["regularitySlider"] = Gtk.HScale( adjustment = self.GUI["regularityAdjustment"] )
self.GUI["regularitySlider"].set_size_request( 250, -1 )
self.GUI["regularitySlider"].set_draw_value( True )
self.GUI["regularitySlider"].set_digits( 2 )
- self.GUI["regularitySlider"].set_value_pos( gtk.POS_RIGHT )
+ self.GUI["regularitySlider"].set_value_pos( Gtk.PositionType.RIGHT )
self.GUI["regularityBox"].pack_start( self.GUI["regularitySlider"], False, padding = style.DEFAULT_PADDING )
- self.GUI["regularityImage"] = gtk.Image()
+ self.GUI["regularityImage"] = Gtk.Image()
self.GUI["regularityBox"].pack_start( self.GUI["regularityImage"], False, padding = style.DEFAULT_PADDING )
#-- Generate ------------------------------------------
- self.GUI["generateBox"] = gtk.HBox()
+ self.GUI["generateBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["generateBox"], padding = style.DEFAULT_PADDING )
- self.GUI["regenerateButton"] = gtk.Button( "Regenerate" )
+ self.GUI["regenerateButton"] = Gtk.Button( "Regenerate" )
self.GUI["regenerateButton"].connect( "clicked", self.handleRegenerate )
self.GUI["generateBox"].pack_start( self.GUI["regenerateButton"], True, False, padding = style.DEFAULT_PADDING )
- self.GUI["clearButton"] = gtk.Button( "Clear" )
+ self.GUI["clearButton"] = Gtk.Button( "Clear" )
self.GUI["clearButton"].connect( "clicked", self.handleClear )
self.GUI["generateBox"].pack_start( self.GUI["clearButton"], True, False, padding = style.DEFAULT_PADDING )
- self.GUI["recordButton"] = gtk.ToggleButton( "Record" )
+ self.GUI["recordButton"] = Gtk.ToggleButton( "Record" )
self.GUI["recordButton"].connect( "toggled", self.handleRecord )
self.GUI["generateBox"].pack_start( self.GUI["recordButton"], True, False, padding = style.DEFAULT_PADDING )
#-- Preview -------------------------------------------
- self.GUI["previewBox"] = gtk.HBox()
+ self.GUI["previewBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["previewBox"], padding = style.DEFAULT_PADDING )
- self.GUI["previewEventBox"] = gtk.EventBox()
- self.GUI["previewEventBox"].add_events(gtk.gdk.POINTER_MOTION_MASK|gtk.gdk.POINTER_MOTION_HINT_MASK)
+ self.GUI["previewEventBox"] = Gtk.EventBox()
+ self.GUI["previewEventBox"].add_events(Gdk.EventMask.POINTER_MOTION_MASK|Gdk.EventMask.POINTER_MOTION_HINT_MASK)
self.GUI["previewEventBox"].connect( "button-press-event", self.handlePreviewPress )
self.GUI["previewEventBox"].connect( "button-release-event", self.handlePreviewRelease )
self.GUI["previewEventBox"].connect( "motion-notify-event", self.handlePreviewMotion )
self.GUI["previewEventBox"].connect( "leave-notify-event", self.handlePreviewLeave )
self.GUI["previewBox"].pack_start( self.GUI["previewEventBox"], True, padding = style.DEFAULT_PADDING )
- self.previewDA = self.GUI["previewDA"] = gtk.DrawingArea()
+ self.previewDA = self.GUI["previewDA"] = Gtk.DrawingArea()
self.GUI["previewDA"].connect( "size-allocate", self.handlePreviewAlloc )
self.GUI["previewDA"].connect( "expose-event", self.handlePreviewExpose )
self.GUI["previewEventBox"].add( self.GUI["previewDA"] )
@@ -436,8 +434,8 @@ class Loop( Popup ):
self.previewDA.alloced = False
self.previewDirty = False
- self.previewDirtyRect = gtk.gdk.Rectangle( 0, 0, 0, 0 )
- self.dirtyRectToAdd = gtk.gdk.Rectangle( 0, 0, 0, 0 )
+ self.previewDirtyRect = ( 0, 0, 0, 0 )
+ self.dirtyRectToAdd = ( 0, 0, 0, 0 )
self.sampleBg = self.owner.sampleBg
self.GUI["previewDA"].set_size_request( -1, self.sampleBg.get_size()[1] )
@@ -452,12 +450,12 @@ class Loop( Popup ):
self.cursor = { \
"default": None, \
- "drag-onset": gtk.gdk.Cursor(gtk.gdk.SB_RIGHT_ARROW), \
- "drag-pitch": gtk.gdk.Cursor(gtk.gdk.BOTTOM_SIDE), \
- "drag-duration": gtk.gdk.Cursor(gtk.gdk.RIGHT_SIDE), \
- "drag-playhead": gtk.gdk.Cursor(gtk.gdk.SB_H_DOUBLE_ARROW), \
- "pencil": gtk.gdk.Cursor(gtk.gdk.PENCIL), \
- "paste": gtk.gdk.Cursor(gtk.gdk.CENTER_PTR), \
+ "drag-onset": Gdk.Cursor.new(Gdk.SB_RIGHT_ARROW), \
+ "drag-pitch": Gdk.Cursor.new(Gdk.BOTTOM_SIDE), \
+ "drag-duration": Gdk.Cursor.new(Gdk.RIGHT_SIDE), \
+ "drag-playhead": Gdk.Cursor.new(Gdk.SB_H_DOUBLE_ARROW), \
+ "pencil": Gdk.Cursor.new(Gdk.PENCIL), \
+ "paste": Gdk.Cursor.new(Gdk.CursorType.CENTER_PTR), \
"error": None }
self.recording = False
@@ -600,8 +598,8 @@ class Loop( Popup ):
self.clickButton = event.button
- if event.type == gtk.gdk._2BUTTON_PRESS: self.buttonPressCount = 2
- elif event.type == gtk.gdk._3BUTTON_PRESS: self.buttonPressCount = 3
+ if event.type == Gdk._2BUTTON_PRESS: self.buttonPressCount = 2
+ elif event.type == Gdk._3BUTTON_PRESS: self.buttonPressCount = 3
else: self.buttonPressCount = 1
self.clickLoc = [ int(event.x), int(event.y) ]
@@ -682,7 +680,7 @@ class Loop( Popup ):
self.updateTooltip( event )
return
- if event.state & gtk.gdk.BUTTON1_MASK:
+ if event.get_state() & Gdk.ModifierType.BUTTON1_MASK:
if not self.curAction: # no action is in progress yet we're dragging, start a marquee
self.setCurrentAction( "marquee", self )
@@ -708,11 +706,11 @@ class Loop( Popup ):
def handlePreviewAlloc( self, widget, allocation ):
self.previewDA.alloced = True
- win = gtk.gdk.get_default_root_window()
+ win = Gdk.get_default_root_window()
self.previewDA.width = allocation.width
self.previewDA.height = allocation.height
- self.previewBuffer = gtk.gdk.Pixmap( win, allocation.width, allocation.height )
- self.clearClipMask = gtk.gdk.Rectangle( 0, 0, allocation.width, allocation.height )
+ self.previewBuffer = Gdk.Pixmap( win, allocation.width, allocation.height )
+ self.clearClipMask = ( 0, 0, allocation.width, allocation.height )
self.pixelsPerTick = [0] + [ self.previewDA.width/float(i*Config.TICKS_PER_BEAT) for i in range(1,Config.MAXIMUM_BEATS+1) ]
self.ticksPerPixel = [0] + [ 1.0/self.pixelsPerTick[i] for i in range(1,Config.MAXIMUM_BEATS+1) ]
@@ -730,7 +728,7 @@ class Loop( Popup ):
keyval = event.keyval
# backspace and del keys
- if keyval == gtk.keysyms.Delete or keyval == gtk.keysyms.BackSpace:
+ if keyval == Gdk.KEY_Delete or keyval == Gdk.KEY_BackSpace:
if len( self.selectedNotes[0] ):
self.owner.noteDB.deleteNotes(
[ self.curPage, self.activeTrack, len( self.selectedNotes[0] ) ]
@@ -762,7 +760,7 @@ class Loop( Popup ):
self.previewBuffer.draw_drawable( self.gc, self.sampleBg, self.sampleBg.endOffset, 0, self.previewDA.width-5, 0, 5, self.previewDA.height )
# draw beat lines
- self.gc.set_line_attributes( Config.BEAT_LINE_SIZE, gtk.gdk.LINE_ON_OFF_DASH, gtk.gdk.CAP_BUTT, gtk.gdk.JOIN_MITER )
+ self.gc.set_line_attributes( Config.BEAT_LINE_SIZE, Gdk.LINE_ON_OFF_DASH, Gdk.CAP_BUTT, Gdk.JOIN_MITER )
self.gc.foreground = self.colors["Beat_Line"]
for i in range(1,beats):
x = self.beatSpacing[beats][i]
@@ -786,12 +784,12 @@ class Loop( Popup ):
widget.window.draw_drawable( self.gc, self.previewBuffer, event.area.x, event.area.y, event.area.x, event.area.y, event.area.width, event.area.height )
if self.marqueeLoc: # draw the selection rect
- self.gc.set_line_attributes( Config.MARQUEE_SIZE, gtk.gdk.LINE_ON_OFF_DASH, gtk.gdk.CAP_BUTT, gtk.gdk.JOIN_MITER )
+ self.gc.set_line_attributes( Config.MARQUEE_SIZE, Gdk.LINE_ON_OFF_DASH, Gdk.CAP_BUTT, Gdk.JOIN_MITER )
self.gc.foreground = self.colors["Preview_Note_Selected"]
widget.window.draw_rectangle( self.gc, False, self.marqueeRect[0][0], self.marqueeRect[0][1], self.marqueeRect[1][0], self.marqueeRect[1][1] )
if self.recording: # draw playhead
- self.gc.set_line_attributes( Config.PLAYHEAD_SIZE, gtk.gdk.LINE_SOLID, gtk.gdk.CAP_BUTT, gtk.gdk.JOIN_MITER )
+ self.gc.set_line_attributes( Config.PLAYHEAD_SIZE, Gdk.LINE_SOLID, Gdk.CAP_BUTT, Gdk.JOIN_MITER )
self.gc.foreground = self.colors["black"]
widget.window.draw_line( self.gc, self.playheadX, event.area.y, self.playheadX, event.area.y + event.area.height )
@@ -837,14 +835,14 @@ class Loop( Popup ):
self.recordLoop = self.owner._playLoop( self.instrument["id"], self.instrument["amplitude"], self.instrument["reverb"], [ self.curPage ], force = True, sync = False )
self.updatePlayhead()
- self.recordTimeout = gobject.timeout_add( 20, self._record_timeout )
+ self.recordTimeout = GObject.timeout_add( 20, self._record_timeout )
self.recording = True
def stopRecording( self ):
if not self.recording:
return
- gobject.source_remove( self.recordTimeout )
+ GObject.source_remove( self.recordTimeout )
self.recording = False
if self.recordingNote:
@@ -1359,7 +1357,7 @@ class Shortcut( Popup ):
self.GUI = {}
- self.GUI["mainBox"] = gtk.VBox()
+ self.GUI["mainBox"] = Gtk.VBox()
self.set_content( self.GUI["mainBox"] )
#-- Keys ----------------------------------------------
@@ -1369,21 +1367,21 @@ class Shortcut( Popup ):
[ 1.7, [ 47, 48, 51 ] ],
[ 1.1, [ 60, 61 ] ] ]
- self.GUI["keyBox"] = gtk.VBox()
+ self.GUI["keyBox"] = Gtk.VBox()
self.GUI["mainBox"].pack_start( self.GUI["keyBox"], padding = style.DEFAULT_PADDING - 2 )
for row in layout:
offset = row[0]
- hbox = gtk.HBox()
+ hbox = Gtk.HBox()
self.GUI["keyBox"].pack_start( hbox, padding = 2 )
- separator = gtk.Label("")
+ separator = Gtk.Label(label="")
separator.set_size_request( int(Block.Block.KEYSIZE*row[0]) + style.DEFAULT_PADDING, -1 )
hbox.pack_start( separator, False )
- separator = gtk.Label("")
+ separator = Gtk.Label(label="")
separator.set_size_request( style.DEFAULT_PADDING, -1 )
hbox.pack_end( separator, False )
for key in row[1]:
- self.GUI[key] = gtk.ToggleButton()
+ self.GUI[key] = Gtk.ToggleButton()
self.GUI[key].connect( "expose-event", self.keyExpose )
self.GUI[key].connect( "toggled", self.keyToggled )
self.GUI[key].set_size_request( Block.Block.KEYSIZE, Block.Block.KEYSIZE )
@@ -1393,9 +1391,9 @@ class Shortcut( Popup ):
hbox.pack_start( self.GUI[key], False, padding = 2 )
#-- None ----------------------------------------------
- self.GUI["noneBox"] = gtk.HBox()
+ self.GUI["noneBox"] = Gtk.HBox()
self.GUI["mainBox"].pack_start( self.GUI["noneBox"], padding = style.DEFAULT_PADDING )
- self.GUI["noneButton"] = gtk.Button( _("None") )
+ self.GUI["noneButton"] = Gtk.Button( _("None") )
self.GUI["noneButton"].connect( "clicked", self.handleNone )
self.GUI["noneBox"].pack_start( self.GUI["noneButton"], True, False, padding = style.DEFAULT_PADDING )
diff --git a/Jam/Toolbars.py b/Jam/Toolbars.py
index 23da473..7d54a10 100644
--- a/Jam/Toolbars.py
+++ b/Jam/Toolbars.py
@@ -1,41 +1,39 @@
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-import gobject
+from gi.repository import Gtk
+from gi.repository import Gdk
+from gi.repository import GObject
import os, commands
from gettext import gettext as _
-from sugar.graphics.palette import Palette, WidgetInvoker
-from sugar.graphics.radiotoolbutton import RadioToolButton
-from sugar.graphics.toolbutton import ToolButton
-from sugar.graphics.toggletoolbutton import ToggleToolButton
-from sugar.graphics.combobox import ComboBox
-from sugar.graphics.toolcombobox import ToolComboBox
+from sugar3.graphics.palette import Palette, WidgetInvoker
+from sugar3.graphics.radiotoolbutton import RadioToolButton
+from sugar3.graphics.toolbutton import ToolButton
+from sugar3.graphics.toggletoolbutton import ToggleToolButton
+from sugar3.graphics.combobox import ComboBox
+from sugar3.graphics.toolcombobox import ToolComboBox
from common.Util.ThemeWidgets import *
import common.Config as Config
from common.Util import OS
-class JamToolbar(gtk.Toolbar):
+class JamToolbar(Gtk.Toolbar):
def __init__(self, owner):
- gtk.Toolbar.__init__(self)
+ GObject.GObject.__init__(self)
self.owner = owner
self.toolItem = {}
- self.volumeImg = gtk.Image()
+ self.volumeImg = Gtk.Image()
self._insert_separator(True)
- self.volumeAdjustment = gtk.Adjustment(0.0, 0, 1.0, 0.1, 0.1, 0)
+ self.volumeAdjustment = Gtk.Adjustment(0.0, 0, 1.0, 0.1, 0.1, 0)
self.volumeAdjustment.connect('value-changed', self.handleVolume)
- self.volumeSlider = gtk.HScale(adjustment=self.volumeAdjustment)
+ self.volumeSlider = Gtk.HScale(adjustment=self.volumeAdjustment)
self.volumeSlider.set_size_request(260, -1)
self.volumeSlider.set_draw_value(False)
self._add_tooltip(self.volumeSlider, _("Master volume"))
@@ -44,18 +42,18 @@ class JamToolbar(gtk.Toolbar):
self._insert_separator(True)
- self.tempoImg = gtk.Image()
+ self.tempoImg = Gtk.Image()
# used to store tempo updates while the slider is active
self.delayedTempo = 0
self.tempoSliderActive = False
- self.tempoAdjustment = gtk.Adjustment(
+ self.tempoAdjustment = Gtk.Adjustment(
Config.PLAYER_TEMPO_LOWER, Config.PLAYER_TEMPO_LOWER,
Config.PLAYER_TEMPO_UPPER + 1, 10, 10, 0)
self.tempoAdjustmentHandler = self.tempoAdjustment.connect(
'value-changed', self.handleTempo)
- self.tempoSlider = gtk.HScale(adjustment=self.tempoAdjustment)
+ self.tempoSlider = Gtk.HScale(adjustment=self.tempoAdjustment)
self.tempoSlider.set_size_request(260, -1)
self.tempoSlider.set_draw_value(False)
self.tempoSlider.connect("button-press-event",
@@ -81,12 +79,12 @@ class JamToolbar(gtk.Toolbar):
self._add_palette(widget, Palette(tooltip))
def _insert_widget(self, widget, pos):
- self.toolItem[widget] = gtk.ToolItem()
+ self.toolItem[widget] = Gtk.ToolItem()
self.toolItem[widget].add(widget)
self.insert(self.toolItem[widget], pos)
def _insert_separator(self, expand=False):
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.set_draw(False)
separator.set_expand(expand)
self.insert(separator, -1)
@@ -159,10 +157,10 @@ def common_playback_buttons(toolbar, owner):
toolbar.muteButton.set_tooltip(_('Mute Loops'))
-class PlaybackToolbar(gtk.Toolbar):
+class PlaybackToolbar(Gtk.Toolbar):
def __init__(self, owner):
- gtk.Toolbar.__init__(self)
+ GObject.GObject.__init__(self)
self.owner = owner
@@ -172,10 +170,10 @@ class PlaybackToolbar(gtk.Toolbar):
self.show_all()
-class BeatToolbar(gtk.Toolbar):
+class BeatToolbar(Gtk.Toolbar):
def __init__(self, owner):
- gtk.Toolbar.__init__(self)
+ GObject.GObject.__init__(self)
self.owner = owner
@@ -199,8 +197,8 @@ class BeatToolbar(gtk.Toolbar):
self.insert(btn, -1)
self.beatWheel.append(btn)
- label = gtk.Label(_("Synch to:"))
- self.syncLabel = gtk.ToolItem()
+ label = Gtk.Label(label=_("Synch to:"))
+ self.syncLabel = Gtk.ToolItem()
self.syncLabel.add(label)
self.insert(self.syncLabel, 0)
@@ -235,12 +233,12 @@ class BeatToolbar(gtk.Toolbar):
self._add_palette(widget, Palette(tooltip))
def _insert_widget(self, widget, pos):
- self.toolItem[widget] = gtk.ToolItem()
+ self.toolItem[widget] = Gtk.ToolItem()
self.toolItem[widget].add(widget)
self.insert(self.toolItem[widget], pos)
def _insert_separator(self, expand=False):
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.set_draw(False)
separator.set_expand(expand)
self.insert(separator, -1)
@@ -267,10 +265,10 @@ class BeatToolbar(gtk.Toolbar):
self.owner._setSyncBeats(beats)
-class DesktopToolbar(gtk.Toolbar):
+class DesktopToolbar(Gtk.Toolbar):
def __init__(self, owner):
- gtk.Toolbar.__init__(self)
+ GObject.GObject.__init__(self)
self.owner = owner
@@ -298,7 +296,7 @@ class DesktopToolbar(gtk.Toolbar):
self.show_all()
def _insert_separator(self, expand=False):
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.set_draw(False)
separator.set_expand(expand)
self.insert(separator, -1)
@@ -311,13 +309,13 @@ class DesktopToolbar(gtk.Toolbar):
self.owner._setDesktop(which)
-class RecordToolbar(gtk.Toolbar):
+class RecordToolbar(Gtk.Toolbar):
def __init__(self, jam):
- gtk.Toolbar.__init__(self)
+ GObject.GObject.__init__(self)
def _insertSeparator(x=1):
for i in range(x):
- self.separator = gtk.SeparatorToolItem()
+ self.separator = Gtk.SeparatorToolItem()
self.separator.set_draw(True)
self.insert(self.separator, -1)
self.separator.show()
@@ -372,7 +370,7 @@ class LoopSettingsPalette(Palette):
self.jam = jam
- self.tooltips = gtk.Tooltips()
+ self.tooltips = Gtk.Tooltips()
self.loopedSound = False
self.soundLength = 1.00
self.start = 0
@@ -382,14 +380,14 @@ class LoopSettingsPalette(Palette):
self.register = 0
self.ok = True
- self.mainBox = gtk.VBox()
+ self.mainBox = Gtk.VBox()
- self.controlsBox = gtk.HBox()
+ self.controlsBox = Gtk.HBox()
self.GUI = {}
- self.soundBox = gtk.HBox()
- self.soundLabel = gtk.Label(_('Sound: '))
+ self.soundBox = Gtk.HBox()
+ self.soundLabel = Gtk.Label(label=_('Sound: '))
self.soundMenuBox = BigComboBox()
self.sounds = [snd for snd in os.listdir(Config.DATA_DIR) \
if snd != 'snds_info']
@@ -401,16 +399,16 @@ class LoopSettingsPalette(Palette):
self.mainBox.pack_start(self.soundBox, False, False, 10)
- nameBox = gtk.VBox()
- self.nameEntry = gtk.Entry()
- entrycolor = gtk.gdk.Color()
- self.nameEntry.modify_text(gtk.STATE_NORMAL, entrycolor)
+ nameBox = Gtk.VBox()
+ self.nameEntry = Gtk.Entry()
+ entrycolor = Gdk.Color()
+ self.nameEntry.modify_text(Gtk.StateType.NORMAL, entrycolor)
self.nameEntry.set_text("name_of_the_sound")
- nameBox.pack_start(self.nameEntry)
+ nameBox.pack_start(self.nameEntry, True, True, 0)
self.mainBox.pack_start(nameBox, False, False, 10)
- registerBox = gtk.HBox()
- self.registerBoxLabel = gtk.Label(_('Register: '))
+ registerBox = Gtk.HBox()
+ self.registerBoxLabel = Gtk.Label(label=_('Register: '))
self.registerMenuBox = BigComboBox()
self.registers = ['LOW', 'MID', 'HIGH', 'PUNCH']
for reg in self.registers:
@@ -420,17 +418,17 @@ class LoopSettingsPalette(Palette):
registerBox.pack_end(self.registerMenuBox, False, False, padding=10)
self.mainBox.pack_start(registerBox, False, False, 10)
- loopedBox = gtk.HBox()
- loopedLabel = gtk.Label("Looped sound: ")
+ loopedBox = Gtk.HBox()
+ loopedLabel = Gtk.Label(label="Looped sound: ")
loopedToggle = ImageToggleButton('checkOff.png', 'checkOn.png')
loopedToggle.connect('button-press-event', self.handleLooped)
loopedBox.pack_start(loopedLabel, False, False, padding=10)
loopedBox.pack_end(loopedToggle, False, False, padding=10)
self.mainBox.pack_start(loopedBox, False, False, 10)
- startBox = gtk.VBox()
- self.startAdjust = gtk.Adjustment(0.01, 0, 1., .001, .001, 0)
- self.GUI['startSlider'] = gtk.VScale(adjustment=self.startAdjust)
+ startBox = Gtk.VBox()
+ self.startAdjust = Gtk.Adjustment(0.01, 0, 1., .001, .001, 0)
+ self.GUI['startSlider'] = Gtk.VScale(adjustment=self.startAdjust)
self.startAdjust.connect("value-changed", self.handleStart)
self.GUI['startSlider'].set_inverted(True)
self.GUI['startSlider'].set_size_request(50, 200)
@@ -439,54 +437,54 @@ class LoopSettingsPalette(Palette):
#self._add_tooltip(self.GUI['startSlider'], _("Loop start position"))
self.handleStart(self.startAdjust)
startBox.pack_start(self.GUI['startSlider'], True, True, 5)
- self.controlsBox.pack_start(startBox)
+ self.controlsBox.pack_start(startBox, True, True, 0)
- endBox = gtk.VBox()
- self.endAdjust = gtk.Adjustment(0.9, 0, 1, .001, .001, 0)
- self.GUI['endSlider'] = gtk.VScale(adjustment=self.endAdjust)
+ endBox = Gtk.VBox()
+ self.endAdjust = Gtk.Adjustment(0.9, 0, 1, .001, .001, 0)
+ self.GUI['endSlider'] = Gtk.VScale(adjustment=self.endAdjust)
self.endAdjust.connect("value-changed", self.handleEnd)
self.GUI['endSlider'].set_inverted(True)
self.GUI['endSlider'].set_size_request(50, 200)
self.GUI['endSlider'].set_digits(3)
self.handleEnd(self.endAdjust)
endBox.pack_start(self.GUI['endSlider'], True, True, 5)
- self.controlsBox.pack_start(endBox)
+ self.controlsBox.pack_start(endBox, True, True, 0)
- durBox = gtk.VBox()
- self.durAdjust = gtk.Adjustment(0.01, 0, 0.2, .001, .001, 0)
- self.GUI['durSlider'] = gtk.VScale(adjustment=self.durAdjust)
+ durBox = Gtk.VBox()
+ self.durAdjust = Gtk.Adjustment(0.01, 0, 0.2, .001, .001, 0)
+ self.GUI['durSlider'] = Gtk.VScale(adjustment=self.durAdjust)
self.durAdjust.connect("value-changed", self.handleDur)
self.GUI['durSlider'].set_inverted(True)
self.GUI['durSlider'].set_size_request(50, 200)
self.GUI['durSlider'].set_digits(3)
self.handleDur(self.durAdjust)
durBox.pack_start(self.GUI['durSlider'], True, True, 5)
- self.controlsBox.pack_start(durBox)
+ self.controlsBox.pack_start(durBox, True, True, 0)
- volBox = gtk.VBox()
- self.volAdjust = gtk.Adjustment(1, 0, 2, .01, .01, 0)
- self.GUI['volSlider'] = gtk.VScale(adjustment=self.volAdjust)
+ volBox = Gtk.VBox()
+ self.volAdjust = Gtk.Adjustment(1, 0, 2, .01, .01, 0)
+ self.GUI['volSlider'] = Gtk.VScale(adjustment=self.volAdjust)
self.volAdjust.connect("value-changed", self.handleVol)
self.GUI['volSlider'].set_inverted(True)
self.GUI['volSlider'].set_size_request(50, 200)
self.GUI['volSlider'].set_digits(3)
self.handleVol(self.volAdjust)
volBox.pack_start(self.GUI['volSlider'], True, True, 5)
- self.controlsBox.pack_start(volBox)
+ self.controlsBox.pack_start(volBox, True, True, 0)
self.mainBox.pack_start(self.controlsBox, False, False, 10)
- previewBox = gtk.VBox()
+ previewBox = Gtk.VBox()
self.playStopButton = ImageToggleButton('miniplay.png', 'stop.png')
self.playStopButton.connect('button-press-event',
self.handlePlayButton)
- previewBox.pack_start(self.playStopButton)
+ previewBox.pack_start(self.playStopButton, True, True, 0)
self.mainBox.pack_start(previewBox, False, False, 10)
- checkBox = gtk.VBox()
+ checkBox = Gtk.VBox()
checkButton = ImageButton(Config.TAM_TAM_ROOT + '/icons/accept.svg')
checkButton.connect('clicked', self.handleCheck)
- checkBox.pack_start(checkButton)
+ checkBox.pack_start(checkButton, True, True, 0)
self.mainBox.pack_start(checkBox, False, False, 10)
self.mainBox.show_all()
@@ -526,11 +524,11 @@ class LoopSettingsPalette(Palette):
self.startAdjust.set_all(0.01, 0, soundLength, .001, .001, 0)
self.endAdjust.set_all(
soundLength - 0.01, 0, soundLength, .001, .001, 0)
- self.timeoutLoad = gobject.timeout_add(2000, self.loopSettingsDelay)
+ self.timeoutLoad = GObject.timeout_add(2000, self.loopSettingsDelay)
def loopSettingsDelay(self):
self.jam.load_ls_instrument(self.sndname)
- gobject.source_remove(self.timeoutLoad)
+ GObject.source_remove(self.timeoutLoad)
def handleCheck(self, widget):
if self.nameEntry.get_text() != self.sndname:
@@ -607,7 +605,7 @@ class LoopSettingsPalette(Palette):
self.jam.loopSettingsPlayStop(widget.get_active(),
self.loopedSound)
if self.loopedSound == False and widget.get_active() == False:
- self.timeoutStop = gobject.timeout_add(
+ self.timeoutStop = GObject.timeout_add(
int(self.soundLength * 1000) + 500, self.playButtonState)
def setButtonState(self):
@@ -618,5 +616,5 @@ class LoopSettingsPalette(Palette):
def playButtonState(self):
self.ok = False
self.playStopButton.set_active(False)
- gobject.source_remove(self.timeoutStop)
+ GObject.source_remove(self.timeoutStop)
self.ok = True
diff --git a/TamTamJam.py b/TamTamJam.py
index e419aa6..ab34bdc 100644
--- a/TamTamJam.py
+++ b/TamTamJam.py
@@ -20,19 +20,14 @@
import locale
locale.setlocale(locale.LC_NUMERIC, 'C')
-import signal
import time
import sys
import os
import shutil
-import pygtk
-pygtk.require('2.0')
-import gtk
+from gi.repository import Gtk
+from gi.repository import Gdk
import logging
-import gobject
-import time
-
import common.Config as Config
from common.Util.CSoundClient import new_csound_client
from common.Util.Profiler import TP
@@ -41,11 +36,11 @@ from Jam.JamMain import JamMain
from common.Util.Trackpad import Trackpad
from gettext import gettext as _
import commands
-from sugar.activity import activity
+from sugar3.activity import activity
if Config.HAVE_TOOLBOX:
- from sugar.graphics.toolbarbox import ToolbarBox
- from sugar.activity import widgets
+ from sugar3.graphics.toolbarbox import ToolbarBox
+ from sugar3.activity import widgets
class TamTamJam(activity.Activity):
@@ -53,7 +48,7 @@ class TamTamJam(activity.Activity):
# !!!!!! initialize threading in gtk !!!!!
# ! this is important for the networking !
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- gtk.gdk.threads_init()
+ Gdk.threads_init()
activity.Activity.__init__(self, handle)
@@ -62,8 +57,8 @@ class TamTamJam(activity.Activity):
shutil.copyfile(Config.SOUNDS_DIR + '/' + snd, Config.DATA_DIR + '/' + snd)
os.system('chmod 0777 ' + Config.DATA_DIR + '/' + snd + ' &')
- color = gtk.gdk.color_parse(Config.WS_BCK_COLOR)
- self.modify_bg(gtk.STATE_NORMAL, color)
+ color = Gdk.color_parse(Config.WS_BCK_COLOR)
+ self.modify_bg(Gtk.StateType.NORMAL, color)
self.set_title('TamTam Jam')
self.set_resizable(False)
@@ -79,7 +74,7 @@ class TamTamJam(activity.Activity):
if Config.HAVE_TOOLBOX:
self.toolbox = ToolbarBox()
self.toolbox.toolbar.insert(widgets.ActivityToolbarButton(self), -1)
- self.toolbox.toolbar.insert(gtk.SeparatorToolItem(), -1)
+ self.toolbox.toolbar.insert(Gtk.SeparatorToolItem(), -1)
else:
self.toolbox = activity.ActivityToolbox(self)
self.set_toolbox(self.toolbox)
@@ -97,7 +92,7 @@ class TamTamJam(activity.Activity):
self.jam.onActivate(arg=None)
if Config.HAVE_TOOLBOX:
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.props.draw = False
separator.set_expand(True)
self.toolbox.toolbar.insert(separator, -1)
@@ -150,7 +145,7 @@ class TamTamJam(activity.Activity):
csnd.connect(False)
csnd.destroy()
- gtk.main_quit()
+ Gtk.main_quit()
def ensure_dir(self, dir, perms=0777, rw=os.R_OK | os.W_OK):
if not os.path.isdir(dir):