diff --git a/gui/button.xpm b/gui/button.xpm new file mode 100644 index 0000000..814e5a6 --- /dev/null +++ b/gui/button.xpm @@ -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### "}; diff --git a/gui/inputcfg.py b/gui/inputcfg.py index 00bba72..973671a 100755 --- a/gui/inputcfg.py +++ b/gui/inputcfg.py @@ -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()