[Rhythmbox-devel] Layout Ideas 2 (specific UI details, mockups, etc)



This is a follow-up thread.  The original can be seen here: http://mail.gnome.org/archives/rhythmbox-devel/2007-December/msg00044.html

First of all, thanks for the replies.  Of course I want all feedback, both positive and negative.  That's how designs get improved!  Second, sorry for the length of this email.  I've tried to group all information as best I could and I've tried to address all issues broughtup by the 3 people that replied.  A variety of attachments are included.  HTML was used to help improve readability.  I hope it doesn't do the opposite for anyone.


View Buttons instead of Sidebar/Browse toggles (Link included)


How does search work? (Mockups)

Search, Repeat, and Shuffle moved below the "active view."


Song Info changes (Alternative mockup attached)

Main Controls (Mockups attached, Glade attached):

Toggle combo Play/Pause ("crackplay") button (Mockups, Glade & Python attached):

The Time Bar:

Too much space is wasted in the top-right (Mockup)



Once again, all comments welcome.

Steve

Attachment: controls_crackplay_with_history.png
Description: PNG image

Attachment: controls_everything_3btn.png
Description: PNG image

Attachment: controls_thin_long.png
Description: PNG image

Attachment: primary_input_comparison.png
Description: PNG image

Attachment: progress_ghost_drag.png
Description: PNG image

Attachment: search_default.png
Description: PNG image

Attachment: search_popup_with_terms.png
Description: PNG image

Attachment: buttons.glade
Description: application/glade

#!/usr/bin/env python

"""
module description
"""

import sys, getopt

import gtk, gtk.glade

def sensitive_toggle(calling_widget, widget1, widget2):
	widget1.set_sensitive( not widget1.props.sensitive )
	widget2.set_sensitive( not widget2.props.sensitive )
	
def togglecombo_clicked(calling_widget, widget1):
	widget1.set_active(not calling_widget.get_active() )
	#widget2.set_active(not widget2.get_active() )

def state_toggle(calling_widget, label):
	current = label.get_text()
	if current == "Playing":
		label.set_text("Play")
		label.set_sensitive(True)
	elif current == "Play":
		label.set_text("Playing")
		label.set_sensitive(False)
	elif current == "Paused":
		label.set_text("Pause")
		label.set_sensitive(True)
	elif current == "Pause":
		label.set_text("Paused")
		label.set_sensitive(False)
	else:
		label.set_text("Error?")

def main(argv):
	try:
		opts, args = getopt.getopt (argv, "h", ["help"])
	except getopt.GetoptError:
		usage()
		sys.exit(2)
	for opt, arg in opts:
		if opt in ("-h", "--help"):
			usage()
			sys.exit()
		
	gui = gtk.glade.XML("buttons.glade")
	play = gui.get_widget("crackplay")
	play_img = gui.get_widget("image1")
	pause_img = gui.get_widget("image2")
	pp_state1 = gui.get_widget("playpause_status1")
	pp_state2 = gui.get_widget("playpause_status2")
	play.connect("clicked", sensitive_toggle, play_img, pause_img)
	play.connect("clicked", state_toggle, pp_state1)
	play.connect("clicked", state_toggle, pp_state2)
	
	pause = gui.get_widget("button2")
	
	togglecombo = gui.get_widget("togglecombo")
	tcplay = gui.get_widget("tc_play")
	tcpause = gui.get_widget("tc_pause")
	tcplay.connect("toggled",togglecombo_clicked,tcpause)
	tcpause.connect("toggled",togglecombo_clicked,tcplay)
	
	
	window = gui.get_widget("window1")
	
	
	
	window.connect("destroy", gtk.main_quit)
	window.show_all()
	gtk.main()


def usage():
	print "usage: %s <valid flags>" % sys.argv[0]
	print "<description of valid options and arguments>\n"


# Run Module
if __name__ == "__main__":
	main(sys.argv[1:])



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]