Added menubar, statusbar and toolbar

This commit is contained in:
Ingo Ruhnke 2008-04-30 08:32:42 +02:00
parent b85072f5b9
commit 73507eca14
2 changed files with 549 additions and 26 deletions

445
gui/button.xpm Normal file
View file

@ -0,0 +1,445 @@
/* XPM */
static char * xine_xpm[] = {
"32 32 410 2",
" c None",
". c #333333",
"+ c #474747",
"@ c #999999",
"# c #B9B9B9",
"$ c #B5B5B5",
"% c #B2B2B2",
"& c #B6B0B0",
"* c #B0A1A1",
"= c #A28D8D",
"- c #303030",
"; c #A5A5A5",
"> c #C7C7C7",
", c #C4C4C4",
"' c #D4D4D4",
") c #D0D0D0",
"! c #CCCCCC",
"~ c #C8C8C8",
"{ c #C9C0C0",
"] c #D3C0C0",
"^ c #DEBFBF",
"/ c #D3AFAF",
"( c #D2A5A5",
"_ c #A98181",
": c #5D5D5D",
"< c #4C4C4C",
"[ c #D2D2D2",
"} c #DDDDDD",
"| c #DADADA",
"1 c #D6D6D6",
"2 c #D1D1D1",
"3 c #CDCDCD",
"4 c #C9C9C9",
"5 c #D5C0C0",
"6 c #E1BEBE",
"7 c #EBBEBE",
"8 c #F7BCBC",
"9 c #E5AFAD",
"0 c #DCB8AD",
"a c #494949",
"b c #808080",
"c c #DCDCDC",
"d c #EDEDED",
"e c #E5E5E5",
"f c #DFDFDF",
"g c #DBDBDB",
"h c #D7D7D7",
"i c #D3D3D3",
"j c #CECECE",
"k c #CBC0C0",
"l c #D7BEBE",
"m c #E4BFBF",
"n c #F0BDBD",
"o c #FCBBBB",
"p c #F8C4BB",
"q c #ECCFBD",
"r c #CEC6AD",
"s c #E7E7E7",
"t c #F8F8F8",
"u c #F2F2F2",
"v c #EBEBEB",
"w c #E2E2E2",
"x c #D9D9D9",
"y c #CFCFCF",
"z c #DABFBF",
"A c #E7BEBE",
"B c #F3BEBE",
"C c #FEBDBB",
"D c #F1C9BC",
"E c #E5D5BC",
"F c #DCE0BD",
"G c #C1D3AD",
"H c #F9F9F9",
"I c #FFFFFF",
"J c #F0F0F0",
"K c #E8E8E8",
"L c #E0E0E0",
"M c #CACACA",
"N c #CDC0C0",
"O c #DDBEBE",
"P c #FBBCBC",
"Q c #F7C3BA",
"R c #E9D0BC",
"S c #DEDFBC",
"T c #D4E8BD",
"U c #CBF1BC",
"V c #B3E1AD",
"W c #000000",
"X c #EEEEEE",
"Y c #F3F3F3",
"Z c #F7F7F7",
"` c #D8D8D8",
" . c #CBCBCB",
".. c #CEC1C1",
"+. c #F1BCBC",
"@. c #EECCBB",
"#. c #E0DCBD",
"$. c #D6E7BD",
"%. c #C3FABB",
"&. c #BBFEBB",
"*. c #AEDFAE",
"=. c #9B9B9B",
"-. c #ECECEC",
";. c #F1F1F1",
">. c #F6F6F6",
",. c #D1C0C0",
"'. c #E5BEBE",
"). c #F9BCBC",
"!. c #F3C5BC",
"~. c #E4D8BD",
"{. c #D7E5BC",
"]. c #C2FBBA",
"^. c #BBFCBB",
"/. c #BEF3BE",
"(. c #AED7AE",
"_. c #94B094",
":. c #414141",
"<. c #3C3C3C",
"[. c #E4E4E4",
"}. c #E9E9E9",
"|. c #EFEFEF",
"1. c #F4F4F4",
"2. c #ABABAB",
"3. c #A4A4A4",
"4. c #9D9D9D",
"5. c #AB9B9B",
"6. c #D9E3BC",
"7. c #C1FCBB",
"8. c #BBFABB",
"9. c #BDF0BD",
"0. c #BFE8BF",
"a. c #BFE2BF",
"b. c #ADC6AD",
"c. c #434343",
"d. c #3F3F3F",
"e. c #3A3A3A",
"f. c #C6C6C6",
"g. c #E6E6E6",
"h. c #F5F5F5",
"i. c #C2C2C2",
"j. c #090909",
"k. c #C39A9A",
"l. c #C1A499",
"m. c #BEFEBB",
"n. c #BCF5BC",
"o. c #BEEBBE",
"p. c #BEE3BE",
"q. c #BFDCBF",
"r. c #3B3B3B",
"s. c #313131",
"t. c #2C2C2C",
"u. c #929292",
"v. c #989898",
"w. c #1E1E1E",
"x. c #383838",
"y. c #A4C199",
"z. c #BEE5BE",
"A. c #424242",
"B. c #3D3D3D",
"C. c #2E2E2E",
"D. c #292929",
"E. c #DFCE6F",
"F. c #C1C1C1",
"G. c #B6B6B6",
"H. c #7F7F7F",
"I. c #FDFDFD",
"J. c #9AC79A",
"K. c #404040",
"L. c #353535",
"M. c #2B2B2B",
"N. c #A58D40",
"O. c #B29C48",
"P. c #C3AE57",
"Q. c #BFBFBF",
"R. c #D5D5D5",
"S. c #AEAEAE",
"T. c #373737",
"U. c #323232",
"V. c #2D2D2D",
"W. c #69612F",
"X. c #232323",
"Y. c #9B8139",
"Z. c #A79041",
"`. c #BCBCBC",
" + c #A9A9A9",
".+ c #343434",
"++ c #2F2F2F",
"@+ c #897638",
"#+ c #615B2F",
"$+ c #4B4C29",
"%+ c #5C572D",
"&+ c #161616",
"*+ c #7D6D33",
"=+ c #8D7836",
"-+ c #BABABA",
";+ c #363636",
">+ c #D3BF60",
",+ c #C9B256",
"'+ c #B99F4B",
")+ c #A18940",
"!+ c #817136",
"~+ c #56542C",
"{+ c #0E0E0E",
"]+ c #706530",
"^+ c #B7B7B7",
"/+ c #9F9F9F",
"(+ c #D4BE62",
"_+ c #DBCB6A",
":+ c #DDCE6C",
"<+ c #D9C866",
"[+ c #D1BD5E",
"}+ c #C8AF54",
"|+ c #B49B49",
"1+ c #9C843D",
"2+ c #7A6C34",
"3+ c #010101",
"4+ c #51512B",
"5+ c #B1B1B1",
"6+ c #C5C5C5",
"7+ c #C3C3C3",
"8+ c #C0C7C0",
"9+ c #9BA89B",
"0+ c #C0A64F",
"a+ c #B8A14B",
"b+ c #BEA751",
"c+ c #CCB45C",
"d+ c #D5C164",
"e+ c #DCCD6B",
"f+ c #D8C665",
"g+ c #CFBA5C",
"h+ c #C6AC52",
"i+ c #B09646",
"j+ c #919191",
"k+ c #C1C2C1",
"l+ c #C0CDC0",
"m+ c #C0D3C0",
"n+ c #BEDDBE",
"o+ c #E6DA75",
"p+ c #282828",
"q+ c #C7AE54",
"r+ c #BEA64E",
"s+ c #B6A04A",
"t+ c #C2AB53",
"u+ c #CEB75D",
"v+ c #D7C366",
"w+ c #DFD06D",
"x+ c #DBCB69",
"y+ c #D7C463",
"z+ c #CEB75A",
"A+ c #C3A850",
"B+ c #AEB0AE",
"C+ c #C0CBC0",
"D+ c #C0D1C0",
"E+ c #BFD6BF",
"F+ c #EEE07D",
"G+ c #F1E780",
"H+ c #F6EE84",
"I+ c #EDE47D",
"J+ c #202020",
"K+ c #DACB69",
"L+ c #C5AB51",
"M+ c #BDA54D",
"N+ c #B59F4A",
"O+ c #C4AD56",
"P+ c #D1B95F",
"Q+ c #D9C668",
"R+ c #DFD16E",
"S+ c #DACA68",
"T+ c #D4C262",
"U+ c #272727",
"V+ c #9EAA9E",
"W+ c #BFD8BF",
"X+ c #B5A04B",
"Y+ c #C6B259",
"Z+ c #D6C368",
"`+ c #E4D474",
" @ c #EEE27E",
".@ c #F2E881",
"+@ c #181818",
"@@ c #131313",
"#@ c #E2D571",
"$@ c #D9C968",
"%@ c #CDB85B",
"&@ c #C3A951",
"*@ c #BBA34C",
"=@ c #B8A24C",
"-@ c #C7B057",
";@ c #D3BC61",
">@ c #DAC969",
",@ c #DECF6D",
"'@ c #DAC968",
")@ c #8A9C8A",
"!@ c #ADC7AD",
"~@ c #9C843A",
"{@ c #AA9343",
"]@ c #B8A34D",
"^@ c #C9B55C",
"/@ c #D9C76A",
"(@ c #E6D876",
"_@ c #EFE37F",
":@ c #0B0B0B",
"<@ c #F3EB82",
"[@ c #EADF79",
"}@ c #E0D36F",
"|@ c #D6C565",
"1@ c #CBB458",
"2@ c #C2A850",
"3@ c #B9A24B",
"4@ c #BBA54F",
"5@ c #C9B259",
"6@ c #1C1C1C",
"7@ c #57552D",
"8@ c #4E4F2A",
"9@ c #5F5A2E",
"0@ c #806F34",
"a@ c #907A37",
"b@ c #A0873C",
"c@ c #AC9645",
"d@ c #BCA651",
"e@ c #CDB95F",
"f@ c #DCCA6D",
"g@ c #030303",
"h@ c #F4EB83",
"i@ c #F1E880",
"j@ c #E8DC77",
"k@ c #C9B156",
"l@ c #1D1D1D",
"m@ c #7A6D34",
"n@ c #4C4E2A",
"o@ c #625C2E",
"p@ c #736731",
"q@ c #847234",
"r@ c #947C37",
"s@ c #A28A3E",
"t@ c #AF9946",
"u@ c #BFAB53",
"v@ c #D0BD62",
"w@ c #393939",
"x@ c #ECDF7B",
"y@ c #F1E580",
"z@ c #F5EC84",
"A@ c #EFE57F",
"B@ c #1B1B1B",
"C@ c #151515",
"D@ c #060606",
"E@ c #2A2A2A",
"F@ c #977F3A",
"G@ c #736833",
"H@ c #444829",
"I@ c #55532B",
"J@ c #665E2F",
"K@ c #766932",
"L@ c #877334",
"M@ c #977F38",
"N@ c #E1D172",
"O@ c #222222",
"P@ c #171717",
"Q@ c #0D0D0D",
"R@ c #080808",
"S@ c #C1AA53",
"T@ c #DED06D",
"U@ c #C3A950",
"V@ c #AC9244",
"W@ c #907B3A",
"X@ c #6B6231",
"Y@ c #474A29",
"Z@ c #58552C",
"`@ c #69602F",
" # c #796B32",
".# c #8A7635",
"+# c #9A8039",
"@# c #191919",
"## c #0F0F0F",
"$# c #0A0A0A",
"%# c #050505",
"&# c #CFBB5D",
"*# c #C5AC51",
"=# c #C4AD55",
"-# c #BEA44E",
";# c #A68D42",
"># c #615C2F",
",# c #6D6230",
"'# c #262626",
")# c #212121",
"!# c #111111",
"~# c #0C0C0C",
"{# c #070707",
"]# c #F5ED84",
"^# c #EBE17B",
"/# c #B8A14C",
"(# c #C7AF57",
"_# c #C9B257",
":# c #B9A04B",
"<# c #827136",
"[# c #F3EA82",
"}# c #BBA54E",
"|# c #252525",
"1# c #101010",
"2# c #DBCA6D",
"3# c #E9DB79",
"4# c #F0E57F",
"5# c #E8DD77",
"6# c #C0A74F",
"7# c #121212",
"8# c #BFAA53",
"9# c #DFCE6E",
"0# c #F1E57F",
"a# c #DCCE6B",
"b# c #D2BE60",
"c# c #141414",
" ",
" . . . . . . . . ",
" + + + @ # # $ % & * = - - - ",
" + ; > , ' ) ! ~ , { ] ^ / ( _ - ",
" : < [ ~ } | 1 2 3 4 , { 5 6 7 8 9 0 - a ",
" : b c d e f g h i j 4 , k l m n o p q r b a ",
" : b s t u v w } x ' y 4 , k z A B C D E F G b a ",
" < } H I t J K L g 1 ) M , N O 7 P Q R S T U V W ",
" + i X Y t I Z X e } ` 2 ., ..6 +.C @.#.$.U %.&.*.W ",
" + =.j s -.;.Z I >.-.L | i ! , ,.'.).!.~.{.U ].^./.(._.W :.<.",
" + # f L [.}.|.H I 1.K } 2.3.4.5.7 C R 6.U 7.8.9.0.a.b.c.d.e.I ",
" + f.c } f L g.d h.I i.$ d.W j.d.k.l.F U m.n.o.p.q.c.:.r.I s.t.",
". u.x x | c } f w }.i.v.w.x.W j.W W b y.&.9.z.q.c.A.B.I . C.D.E.",
". F.1 1 h ` x g } f G.w.% H.I.I.H.W W J.0.q.c.c.K.I L.- M.N.O.P.",
". Q.i i ' R.R.1 ` S.d.x.H.} } H.W d.c.c.:.I T.U.V.W.X.w.Y.Z.",
". `.) ) 2 2 2 [ i +W W I. I c.c.c.I e..+++@+#+$+%+&+*+=+",
". -+3 3 3 3 3 3 3 3.j.j.I. c.c.c.I r.;+s.>+,+'+)+!+~+{+j.]+",
". ^+M M M 4 4 ~ ~ /+d.W H.} c.c.c.I B.x.. (+_+:+<+[+}+|+1+2+3+4+",
". 5+> > f.f.6+, 7+8+9+W c.c.c.I K.r.L.0+a+b+c+d+:+e+f+g+h+i+<.T.",
". j+6+, 7+k+8+l+m+n+c.c.c.I :.<.T.o+V.p+q+r+s+t+u+v+w+x+y+z+A+++",
" - B+8+C+D+E+n+c.c.c.I c.d.e.F+G+H+I+J+K+g+L+M+N+O+P+Q+R+S+T+U+",
" - V+m+W+n+c.c.c.I c.:.r.X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@",
" - )@!@c.c.c.I c.A.B.*+=+~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@&+",
" c.c.c.I c.c.K.7@8@9@]+0@a@b@c@d@e@f@g@:.h@i@j@w+T+k@l@+@@@I ",
"c.c.c.I c.c.:.}+T.U.m@n@4+o@p@q@r@s@t@u@v@w@x@y@z@A@J+B@C@I :@D@",
"c.I c.c.c.:+e+f+g+E@i+F@G@H@I@J@K@L@M@N.O.s.t.N@O@6@P@I Q@R@g@ ",
"c.c.c.s+S@u+v+T@x+O@l@U@V@W@X@Y@Z@`@ #.#+#Z.X.w.@#I ##$#%# ",
"c.K+&#*#M+N+=#P+Q+R+C@T+1@-#;#@+>#$+%+,#'#)#6@I !#~#{# ",
"]#^##@$@%@&@*@/#(#;@Q@R@'@>+_#:#)+<#p+O@l@I @@{+j. ",
"_@[#<@[@}@|@1@2@3@}#5@c._+:+<+[+E@|#J+I C@1#:@ ",
"2#3#4#h@i@5#w+T+,+6#a+r.;+d+t.U+O@I P@7#Q@ ",
"8#v@9#x@0#z@4#o+a#b#q+r+C.D.X.I @#c### "};

View file

@ -197,19 +197,19 @@ class Connection:
fill_color="black",
line_width=0)
self.ellipse_out = goocanvas.Ellipse(parent=root,
radius_x=3, radius_y=3,
fill_color="black",
line_width=0)
radius_x=3, radius_y=3,
fill_color="black",
line_width=0)
self.layout()
def layout(self):
str = "M %(x1)d,%(y1)d C %(midx)d,%(y1)d %(midx)d,%(y2)d %(x2)d,%(y2)d" % \
{ 'x1' : self.portIn.get_pos()[0],
'y1' : self.portIn.get_pos()[1],
'midx' : (self.portIn.get_pos()[0] + self.portOut.get_pos()[0])/2,
'x2' : self.portOut.get_pos()[0],
'y2' : self.portOut.get_pos()[1] }
{ 'x1' : self.portIn.get_pos()[0],
'y1' : self.portIn.get_pos()[1],
'midx' : (self.portIn.get_pos()[0] + self.portOut.get_pos()[0])/2,
'x2' : self.portOut.get_pos()[0],
'y2' : self.portOut.get_pos()[1] }
self.path.set_properties(data=str)
self.ellipse_in.set_properties(center_x = self.portIn.get_pos()[0],
@ -230,14 +230,14 @@ class InputCfg:
self.layout(event.x, event.y)
def on_button_press(self, item, event):
if event.button == 3: # right click
popupMenu = gtk.Menu()
menuPopup1 = gtk.ImageMenuItem (gtk.STOCK_OPEN)
popupMenu.add(menuPopup1)
menuPopup2 = gtk.ImageMenuItem (gtk.STOCK_OK)
popupMenu.add(menuPopup2)
popupMenu.show_all()
popupMenu.popup(None, None, None, 1, 0)
if event.button == 3: # right click
popupMenu = gtk.Menu()
menuPopup1 = gtk.ImageMenuItem (gtk.STOCK_OPEN)
popupMenu.add(menuPopup1)
menuPopup2 = gtk.ImageMenuItem (gtk.STOCK_OK)
popupMenu.add(menuPopup2)
popupMenu.show_all()
popupMenu.popup(None, None, None, 1, 0)
# else:
# if self.start_port:
# self.path.set_properties(data="")
@ -271,6 +271,33 @@ class InputCfg:
'y2' : y }
self.path.set_properties(data=str)
def get_main_menu(self, window):
accel_group = gtk.AccelGroup()
# This function initializes the item factory.
# Param 1: The type of menu - can be MenuBar, Menu,
# or OptionMenu.
# Param 2: The path of the menu.
# Param 3: A reference to an AccelGroup. The item factory sets up
# the accelerator table while generating menus.
item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group)
# This method generates the menu items. Pass to the item factory
# the list of menu items
item_factory.create_items(self.menu_items)
# Attach the new accelerator group to the window.
window.add_accel_group(accel_group)
# need to keep a reference to item_factory to prevent its destruction
self.item_factory = item_factory
# Finally, return the actual menu bar created by the item factory.
return item_factory.get_widget("<main>")
def print_hello(self, *rest):
print "Hello:", rest
def __init__(self):
self.start_port = None
self.connections = []
@ -279,12 +306,61 @@ class InputCfg:
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
self.canvas = goocanvas.Canvas()
self.canvas.set_size_request(800, 600)
self.window.add(self.canvas)
self.canvas.show()
self.window.set_title("InputDrv - Event Rerouter")
self.window.set_size_request(800, 600)
self.menu_items = (
( "/_File", None, None, 0, "<Branch>" ),
( "/File/_New", "<control>N", self.print_hello, 0, None ),
( "/File/_Open", "<control>O", self.print_hello, 0, None ),
( "/File/_Save", "<control>S", self.print_hello, 0, None ),
( "/File/Save _As", None, None, 0, None ),
( "/File/sep1", None, None, 0, "<Separator>" ),
( "/File/Quit", "<control>Q", gtk.main_quit, 0, None ),
( "/_Options", None, None, 0, "<Branch>" ),
( "/Options/Test", None, None, 0, None ),
( "/_Help", None, None, 0, "<LastBranch>" ),
( "/_Help/About", None, None, 0, None ),
)
self.canvas = goocanvas.Canvas()
# self.canvas.set_size_request(800, 600)
self.main_vbox = gtk.VBox(False, 1)
self.toolbar = gtk.Toolbar()
iconw = gtk.Image() # icon widget
iconw.set_from_file("button.xpm")
self.toolbar.append_item(None, "tooltip_text", "tooltip_private_text", iconw, None)
self.toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL)
self.toolbar.set_style(gtk.TOOLBAR_BOTH)
self.main_vbox.set_border_width(1)
self.menubar = self.get_main_menu(self.window)
self.statusbar = gtk.Statusbar()
self.main_vbox.pack_start(self.menubar, False, True, 0)
self.main_vbox.pack_start(self.toolbar, False, True, 0)
self.main_vbox.add(self.canvas)
self.main_vbox.pack_start(self.statusbar, False, True, 0)
self.statusbar.push(0, "Hello World")
self.window.add(self.main_vbox)
self.toolbar.show()
self.menubar.show()
self.statusbar.show()
self.canvas.show()
self.statusbar.show()
self.main_vbox.show()
self.window.show()
self.root = self.canvas.get_root_item()
@ -292,6 +368,13 @@ class InputCfg:
self.canvas.connect("motion-notify-event", self.motion)
self.canvas.connect("button-press-event", self.on_button_press)
self.path = goocanvas.Path(parent=self.root,
pointer_events=0,
line_width=2,
stroke_color_rgba=0x00000060)
self.init_test_elements()
def init_test_elements(self):
self.control3 = Control("Xbox360 Gamepad", self.root)
self.control3.add_in_port("btn0")
self.control3.add_in_port("btn1")
@ -316,11 +399,6 @@ class InputCfg:
self.control2.add_out_port("abs6")
self.control2.set_pos(500, 200)
self.path = goocanvas.Path(parent=self.root,
pointer_events=0,
line_width=2,
stroke_color_rgba=0x00000060)
def main(self):
gtk.main()