diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 674deb69..00000000 --- a/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# A simulation of Subversion default ignores, generated by reposurgeon. -*.o -*.lo -*.la -*.al -*.libs -*.so -*.so.[0-9]* -*.a -*.pyc -*.pyo -*.rej -*~ -*.#* -.*.swp -.DS_store -# Simulated Subversion default ignores end here diff --git a/BUG b/BUG deleted file mode 100644 index ac514cf1..00000000 --- a/BUG +++ /dev/null @@ -1 +0,0 @@ -* Too much shit when trying to run with no display diff --git a/COPYING b/COPYING deleted file mode 100644 index b7b5f53d..00000000 --- a/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index ccb3902c..00000000 --- a/ChangeLog +++ /dev/null @@ -1,110 +0,0 @@ -* Changed some strings to reflect new email and website -* Fixed and cleaned some stuff with the glade loading -========================== version 0.6.0 ======================== -* Fixed evil no ROM problem. -* Added ALSA support (sort of) -* Fixed join/host problem. -========================== version 0.5.2 ======================== -Cleanup: -* Fixed silly hack when forcing GTK event processing. -* Accepted patch from Scott Brown on improved options file system -* Completely reworked glade handling -========================== version 0.5.1 ======================== -Bug Fixes: -* Updated chooser filters -* Allow support for loading zipped ROMs -* Network ROM loading works -* Code cleanup -* Strides towards platform independence -* Fixed man page error -========================== version 0.5.0 ======================== -Other: -* Added man page -* Shortened menu labels -* General code cleanup -* Advanced tab added -========================== version 0.4.0 ======================== -Bug Fixes: -* Correction: Changed "Alt-Tab for fullscreen" to "Alt-Enter" -Interface: -* Accelerators added to many buttons -* Video tab added -* OpenGL option added in video tab -* Fullscreen option moved into Video tab -* Change "FCE Ultra" strings to "GFCE Ultra" -* Cleaned gamepad buttons -* Icon in window -Internal: -* Made glade interface cleaner -* More effecient use of options struct -* Minor code cleanup -========================== version 0.3.2 ======================== -Bug Fixes: -* Fixed bug with fresh configuration -========================== version 0.3.1 ======================= -Under the hood: -* Switched interpreter to /usr/bin/python -Bug Fixes: -* Fixed bug in when gfceu wouldn't close on delete -* Fixed bug in which icon couldn't be found when running from tarbell -========================== version 0.3 ======================= -* No more confusing error when quitting with interrupts -* Spin button now used for port options -* New interface for network -* Hosting added -* Cleaned code to look nicer in standard size terminal -* Cleaned up code in other minor aspects -* Added help button to unintuitive button configuration -* More code cleanup -* Network passwords with spaces now execute properly -* Initial extra parameter support -* Some new cool scripts that make my life easier -========================== version 0.2.6 ======================== -* Fixed error that wouldn't let "Please specify ROM to open" close -* Fixed fatal error that wouldn't allow ROMs to open? -========================== version 0.2.5 ========================= -* Network ROM loading properly implemented. -* Fatal option added to error system -========================== version 0.2.4 ========================= -* Fixed bug in which last entry in $PATH wasn't being processed -========================== version 0.2.3 ========================= -* Option parser added -* Erased stupid comment in desktop file -* --version option now accepted. -* Smarter error messages (using both GTK and command-line) -* Detects when fceu is not install and displays error -* Smarter and more descriptive when gtk or glade aren't available -* Smarter glade file loading -========================= version 0.2.2 ========================= -* Romentry now stretches! -* Using stock icons for execute -* Can now open ROM files via network -========================== version 0.2.1 ========================= -* Icon provided (Thanks Jimmy Angelakos!) -* Desktop file provided -* Logo provied in about menu -* Fixed chooser problem about remembering -========================== version 0.2 =========================== -* Changed ChangeLog format :) -* Fixed network bug when no password was provided. -* Overall code cleanup: removed object to reduce the self.* headache. -* Remembers settings on close. -* Fullscreen option now available. -* Fullscreen tip added. -* Verticle resize bug fixed. -* Filechooser checks in a smart folder -========================== version 0.1.1 ============================ -6/12/06 - Now handles specialcharacter filenames and spaces. -6/12/06 - ROM file no longer required for input configuration. - -=========================== 0.1 ==================================== -6/12/06 - Changed directories for installation and changed structure. Made my -life a lot easier -6/10/06 3 - Add network functionality. -6/10/06 2 - Cleaned up interface. Added error when no ROM is available. -Added chooser filter for NES ROMs. -6/10/06 - Redesigned entire UI to use GtkNotebook for tabs. Cleaned up code -a lot. Fixed it so the window is hidden when FCE Ultra starts. Fixed ugly -things. Now closes on 'X'. -6/8/06 - Added sound checkbox. Config game works. Run game works. Woot -6/7/06 - Started project. Doesn't work yet. diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 8446979a..00000000 --- a/INSTALL +++ /dev/null @@ -1,11 +0,0 @@ -You can install gfceu with setup.py: - -$ sudo ./setup.py install - -Requirements: -Python (tested with 2.4) (Ubuntu package name: python) -PyGTK, GTK, and PyGlade (tested with 2.8) (Ubuntu package name: (python-gtk2 libgtk2.0-0 python-glade) -FCE Ultra (Ubuntu package name: fceu) - -Optional: -GnomeVFS 2 (tested with 2.14.1) (Ubuntu package name libgnomevfs2-0 python-gtk2)alsa-oss (tested with 1.0.11 diff --git a/MANIFEST b/MANIFEST deleted file mode 100644 index 493dbe58..00000000 --- a/MANIFEST +++ /dev/null @@ -1,11 +0,0 @@ -gfceu -setup.py -COPYING -ChangeLog -INSTALL -TODO -gfceu.glade -gfceu.desktop -gfceu.png -gfceu_big.png -gfceu.1 diff --git a/TODO b/TODO deleted file mode 100644 index fc12b5ac..00000000 --- a/TODO +++ /dev/null @@ -1,10 +0,0 @@ -TODO: -* Ensure version server >= 0.0.5 -* Resolution? -* Windows Support -* --last command line option -* normal options (quiet) -* server nick -* no xterm - In progress - status_window.py started, needs to work to be functional -* Browser? diff --git a/gfceu b/gfceu deleted file mode 100644 index b27687fc..00000000 --- a/gfceu +++ /dev/null @@ -1,544 +0,0 @@ -#!/usr/bin/python -# gfceu - Graphical launcher for FCE Ultra. -# Designed on Ubuntu, with platfrom independence in mind. -version = "0.6.1svn" -title = "gfceux" -# Copyright (C) 2006 Lukas Sabota -## -""" -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -""" - - # # # # # # # # -# Python imports - -import sys -import os -import pickle -import shutil -from optparse import OptionParser -from subprocess import Popen - - # # # # # # # # -# Messaging Functions -def gfceu_message(message, use_gtk=False): - """ - gqfceu_message() - - This function prints messages to the user. This is generally used for status - messages. However, it can be used for important messages as well. If a - GTK message_box is requried, the use_gtk flag can be enabled - """ - print title + ' message: '+message - if use_gtk: - msgbox = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_INFO, - buttons=gtk.BUTTONS_CLOSE) - msgbox.set_markup(message) - msgbox.run() - msgbox.destroy() - -def gfceu_error(message, code, use_gtk=True, fatal=True): - """ - gfceu_error() - - TODO: This can be reworked to use the raise/except methods already defined - in the standard python language. One of these days... - """ - print '# # # #' - print title + ' ERROR code '+str(code)+':' - print message - print '# # # #' - if use_gtk: - msgbox = gtk.MessageDialog(parent=None, flags=0, type=gtk.MESSAGE_ERROR, - buttons=gtk.BUTTONS_CLOSE) - msgbox.set_markup(title + ' ERROR Code '+str(code)+':\n'+message) - msgbox.run() - msgbox.destroy() - if fatal: - sys.exit(code) - - - # # # # # # # # -# Import libraries -try: - import pytgtk - pygtk.require("2.6") -except: - pass -try: - import gtk -except ImportError: - gfceu_error('The PyGTK libraries cannot be found.\n\ - Ensure that PyGTK (>=2.0) is installed on this system.\n\ - On Debian based systems (like Ubuntu), try this command:\n\ - sudo apt-get install python-gtk2 libgtk2.0-0', 1, False) - -try: - import gtk.glade -except ImportError: - gfceu_error('The glade libraries cannot be found.\n\ - Ensure that libglade is installed on this system.\n\ - On Debian based systems (like Ubuntu), try this command:\n\ - sudo apt-get install libglade2-0 python-gtk2', 2, False) - -try: - import gnomevfs - have_gnomevfs = True -except ImportError: - gfceu_error('The gnomevfs libraries cannot be found.\n\ - To enable ROM loading over the network, ensure that gnomevfs is installed on\ - this system.\n\ - On Debian based systems (like Ubuntu), try this command:\n\ - sudo apt-get install python-gtk2 libgnomevfs2-0', 5, False, False) - have_gnomevfs = False - - - # # # # # # # # -# GFCEU Functions - -class game_options: - sound_check = True - fullscreen_check = False - extra_entry = '' - romfile = '' - opengl_check = False - join_radio = False - join_add = '' - join_port = 4046 - join_pass = '' - host_radio = False - host_port = 4046 - host_pass = '' - no_network_radio = True - network_rom = False - - -def load_options(): - global options, optionsfile - try: - ifile = file(optionsfile, 'r') - options = pickle.load(ifile) - pickle.load(ifile) - except: - return - ifile.close() - -def save_options(): - global options, optionsfile, appconfigdir - ofile = file(optionsfile, 'w') - pickle.dump(options, ofile) - ofile.close() - -def give_widgets(): - """ - give_widgets() - - This function takes data from the options struct and relays it to - the GTK window - """ - global xml, options - try: - widgets['rom_entry'].set_text(options.romfile) - widgets['sound_check'].set_active(options.sound_check) - - widgets['fullscreen_check'].set_active(options.fullscreen_check) - widgets['opengl_check'].set_active(options.opengl_check) - - widgets['extra_entry'].set_text(options.extra_entry) - - # Usability point: - # Users will probably not want to remember their previous network setting. - # Users may accidently be connecting to a remote server/hosting a game when - # they were unaware. - # No network is being set by default - widgets['no_network_radio'].set_active(True) - widgets['join_add'].set_text(options.join_add) - widgets['join_port'].set_value(float(options.join_port)) - widgets['join_pass'].set_text(options.join_pass) - widgets['host_port'].set_value(float(options.host_port)) - widgets['host_pass'].set_text(options.host_pass) - - except AttributeError: - # When new widgets are added, old pickle files might break. - options = game_options() - give_widgets() - -def setup_environment (): - """ - Configures the environment if this is the first time the application - has been run. For instance, it checks for the options file and creates - it if it doesn't exist. It also converts between the old version and - the new version of this application, which stores the options file in - a separate directory. - """ - - global appconfigdir, old_optionsfile, optionsfile - - - if not os.path.exists(appconfigdir): - # this is the first time the application is run. - # create the directory - gfceu_message("Creating application settings directory") - os.mkdir(appconfigdir) - - if os.path.exists(old_optionsfile): - # for full backwards compatibility, this file is processed, but moved - # to the new directory and filename for future compatibility - gfceu_message("Old version of options file found, converting to new version") - shutil.move(old_optionsfile,optionsfile) - -def set_options(): - """ - set_options() - - This function grabs all of the data from the GTK widgets - and stores it in the options object. - """ - global xml - options.romfile = widgets['rom_entry'].get_text() - options.sound_check = widgets['sound_check'].get_active() - - options.fullscreen_check = widgets['fullscreen_check'].get_active() - options.opengl_check = widgets['opengl_check'].get_active() - - options.extra_entry = widgets['extra_entry'].get_text() - - options.join_radio = widgets['join_radio'].get_active() - options.host_radio = widgets['host_radio'].get_active() - options.no_network_radio = widgets['no_network_radio'].get_active() - options.join_add = widgets['join_add'].get_text() - options.join_port = widgets['join_port'].get_value() - options.join_pass = widgets['join_pass'].get_text() - options.host_port = widgets['host_port'].get_value() - options.host_pass = widgets['host_pass'].get_text() - - -def launch(passed, local=False): - global xml, options, fceu_server_binary, fceux_binary - set_options() - - if options.sound_check: - sound = '--sound 1 ' - else: - sound = '--sound 0 ' - - if options.fullscreen_check: - fullscreen = '--fullscreen 1 ' - else: - fullscreen = '--fullscreen 0 ' - - if options.join_radio: - if options.join_pass == '': - netpass = '' - else: - netpass = '--pass ' + '"' + options.join_pass + '" ' - network = '-net "' + options.join_add + '"'\ - ' --port '+ str(options.join_port) + ' ' + netpass - else: - network = '' - - if options.host_radio: - if options.host_pass == '': - netpass = ' ' - else: - netpass = ' --pass ' + '"' + options.host_pass + '" ' - network = '--net localhost --port '+\ - str(options.host_port) + netpass + ' ' - - - if local: - network = '' - - if options.opengl_check: - opengl = '--opengl 1 ' - else: - opengl = '--opengl 0 ' - - command = fceux_binary +' '+ sound + fullscreen +\ - network + opengl + options.extra_entry + ' '+ passed - gfceu_message('Command: ' + command) - - - if options.host_radio: - xterm_binary = find_binary("xterm") - if xterm_binary == None: - gfceu_error("Cannot find xterm on this system. You will not \n\ - be informed of server output.", 102, True, False) - args = [fceu_server_binary] - else: - args = [xterm_binary, "-e", fceu_server_binary] - args.append('--port') - args.append(str(options.host_port)) - if options.host_pass: - args.append("--password") - args.append(options.host_pass) - pid = Popen(args).pid - - widgets['main_window'].hide() - - # os.system() is a blocker, so we must force - # gtk to process our events. - while gtk.events_pending(): - gtk.main_iteration_do() - - os.system(command) - if options.host_radio: - os.kill(pid, 9) - widgets['main_window'].show() - -def find_binary(file): - - path = os.getenv('PATH') - directories= [] - directory = '' - # check for '$' so last entry is processed - for x in path + '$': - if x != ':' and x != '$': - directory = directory + x - else: - directories.append(directory) - directory = '' - - for x in directories: - if os.path.isfile(os.path.join(x, file)): - return os.path.join(x,file) - - if os.path.isfile(os.path.join(os.curdir,file)): - return os.path.join(os.curdir, file) - - return None - - # # # # # # # # -# GTK Signal Handlers -class GladeHandlers: - def launch_button_clicked(arg1): - global xml - global options - options.romfile = widgets['rom_entry'].get_text() - if widgets['rom_entry'].get_text() == '': - gfceu_message('Please specify a ROM to open in the main tab.', True) - return - if options.network_rom: - try: - myvfs = gnomevfs.Handle(options.romfile) - # FIXME - # Smarter way of handling this? Copying direct error information? - except gnomevfs.HostNotFoundError: - gfceu_error("Remote ROM host not found.", 7, True, False) - return - except: - gfceu_error("Failed to open the network ROM.", 6, True, False) - return - myfile = file('/tmp/gfceu.nes', 'wb') - while 1: - try: - myfile.write(myvfs.read(1024)) - except gnomevfs.EOFError: - break - except: - gfceu_error("Failed to open the network ROM.", 10, True, False) - return - - myvfs.close() - myfile.close() - romfile = '/tmp/gfceu.nes' - else: - romfile = options.romfile - - launch('"'+romfile+'"') - - - def about_button_clicked(arg1): - global xml - widgets['about_dialog'].set_name('GNOME FCE Ultra '+version) - widgets['about_dialog'].run() - widgets['about_dialog'].hide() - - def browse_button_clicked(widget): - global xml,options - set_options() - chooser = gtk.FileChooserDialog("Open...", None, - gtk.FILE_CHOOSER_ACTION_OPEN, - (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_OPEN, gtk.RESPONSE_OK)) - if have_gnomevfs: - chooser.set_property("local-only", False) - else: - chooser.set_property("local-only", True) - - chooser.set_default_response(gtk.RESPONSE_OK) - - filter=gtk.FileFilter() - filter.set_name("NES Roms") - filter.add_mime_type("application/x-nes-rom") - filter.add_mime_type("application/zip") - filter.add_pattern("*.nes") - filter.add_pattern("*.zip") - chooser.add_filter(filter) - - filter = gtk.FileFilter() - filter.set_name("All files") - filter.add_pattern("*") - chooser.add_filter(filter) - - - - if options.romfile == '': - folder = os.getenv('HOME') - else: - folder = os.path.split(options.romfile)[0] - - chooser.set_current_folder (folder) - - response = chooser.run() - chooser.hide() - - if response == gtk.RESPONSE_OK: - if chooser.get_filename(): - x = chooser.get_filename() - widgets['rom_entry'].set_text(x) - options.romfile = x - options.network_rom = False - elif chooser.get_uri(): - x = chooser.get_uri() - widgets['rom_entry'].set_text(x) - options.romfile = x - options.network_rom = True - - def gamepad_clicked(widget): - print widget.name - d = {'gp1_button' : '1', - 'gp2_button' : '2', - 'gp3_button' : '3', - 'gp4_button' : '4'} - command = '-inputcfg gamepad' + d[widget.name] + ' /dev/null' - launch(command, True) - - def config_help_button_clicked(arg1): - msgbox = gtk.MessageDialog(parent=None, flags=0, - type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_CLOSE) - msgbox.set_markup("Once a gamepad is seleceted, a titlebar will be displayed\ - indicating a NES button. Press the button or key you would like to have\ - associated with the button indicated on the titlebar. This process\ - will repeat until all buttons on the gamepad are configured.") - msgbox.run() - msgbox.hide() - - - def join_radio_clicked(arg1): - global options - widgets['join_frame'].set_sensitive(True) - widgets['host_frame'].set_sensitive(False) - options.join_radio = True - options.host_radio = False - options.no_network_radio = False - - def host_radio_clicked(arg1): - global fceu_server_binary - if widgets['host_radio'].get_active(): - fceu_server_binary = find_binary('fceu-server') - if fceu_server_binary == None: - if os.name == 'nt': - gfceu_error("The fceu server software cannot be found. \n\ - Ensure that it is installed in the same directory as \n\ - GFCE Ultra.", 102, True, False) - else: - gfceu_error("The fceu server software cannot be found on \n\ - this system. Ensure that it is installed and in your path.", - 101, True, False) - widgets['no_network_radio'].set_active(True) - options.no_network_radio = True - return False - - gfceu_message("Using: "+fceu_server_binary) - widgets['join_frame'].set_sensitive(False) - widgets['host_frame'].set_sensitive(True) - options.join_radio = False - options.host_radio = True - options.no_network_radio = False - - def no_network_radio_clicked(arg1): - widgets['join_frame'].set_sensitive(False) - widgets['host_frame'].set_sensitive(False) - options.join_radio = False - options.host_radio = False - options.no_network_radio = True - - def end(widget,arg=0): - global xml, options, optionsfile - set_options() - save_options() - gtk.main_quit() - -############################################################################## -# Globals -options = None -appconfigdir = os.getenv('HOME') + '/.'+ title -old_optionsfile = os.getenv('HOME')+'/.' + title + '_options' -optionsfile = appconfigdir + 'gfceu_options.dat' -fceux_binary = None -fceu_server_binary = None -#version is defined earlier in the code -#have_vfs is defined earlier in the code - -class WidgetsWrapper: - def __init__(self): - # Search for the glade file - # Check first in the directory of this script. - if os.path.isfile('gfceu.glade'): - glade_file = 'gfceu.glade' - # Then check to see if its installed on a *nix system - elif os.path.isfile(os.path.join(os.path.dirname(sys.executable), '../share/gfceu/gfceu.glade')): - glade_file = os.path.join(os.path.dirname(sys.executable), '../share/gfceu/gfceu.glade') - else: - print 'ERROR.' - print 'Could not find the glade interface file.' - print 'Try reinstalling the application.' - sys.exit(1) - - self.widgets = gtk.glade.XML(glade_file) - self.widgets.signal_autoconnect(GladeHandlers.__dict__) - - def __getitem__(self, key): - return self.widgets.get_widget(key) - - - # # # # # # # # -# main -if __name__ == '__main__': - # Parse options - parser = OptionParser(version='%prog '+ version) - parser.parse_args() - - fceux_binary = find_binary('fceux') - if fceux_binary == None: - gfceu_error('Could not find the fceu binary.\n\ - Ensure that FCE Ultra is installed and in the $PATH.\n\ - On Debian based systems (like Ubuntu), try the following command:\n\ - sudo apt-get install fceu', 4, True) - else: - gfceu_message('Using: '+fceux_binary) - - widgets = WidgetsWrapper() - widgets['main_window'].show_all() - setup_environment() - - options = game_options() - load_options() - give_widgets() - try: - gtk.main() - except KeyboardInterrupt: - sys.exit(0) diff --git a/gfceu.1 b/gfceu.1 deleted file mode 100644 index 74543b99..00000000 --- a/gfceu.1 +++ /dev/null @@ -1,19 +0,0 @@ -.TH gfceu 1 "July 17 2006" "Lukas Sabota" -.SH NAME -GNOME FCE Ultra - A graphical front-end for FCE Ultra -.SH SYNOPSIS -.B gfceu -.BR [options] -.PP -.SH DESCRIPTION -GFCE Ultra is a graphical front-end for FCE Ultra, an advanced Nintendo Entertainment System emulator. The program allows easy control over various options including input, network, video, and sound. It uses the GTK+2 library and optionally GNOMEVFS. -.SH OPTIONS -.TP -.B --version -Displays the version number of the application -.TP -.B --help -Displays a help message displaying options -.SH AUTHOR -.TP -Written for Ubuntu/Debian by Lukas Sabota. diff --git a/gfceu.desktop b/gfceu.desktop deleted file mode 100644 index 37cc8e87..00000000 --- a/gfceu.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=GFCE Ultra NES Emulator -Comment=Play Nintendo ROM files -Exec=gfceu -Terminal=false -Type=Application -StartupNotify=true -Icon=gfceu -Categories=GNOME;GTK;Game; diff --git a/gfceu.glade b/gfceu.glade deleted file mode 100644 index 399c0144..00000000 --- a/gfceu.glade +++ /dev/null @@ -1,872 +0,0 @@ - - - - - - True - GFCE Ultra - 442 - gfceu.png - - - - True - 1 - - - True - True - 3 - - - True - 5 - 5 - - - True - 5 - - - True - 5 - ROM Filename: - - - False - False - - - - - True - True - - - 1 - - - - - True - True - _Browse... - True - 0 - - - - False - False - 2 - - - - - False - False - - - - - - - True - Main - - - tab - False - - - - - True - 5 - 5 - - - True - - - True - gtk-dialog-info - - - False - False - - - - - True - Select an NES gamepad to configure. - True - - - False - False - 7 - 1 - - - - - False - False - - - - - True - 2 - 2 - 5 - 5 - - - True - True - Gamepad _1 - True - 0 - - - - - - - - - True - True - Gamepad _2 - True - 0 - - - - 1 - 2 - - - - - - True - True - Gamepad _4 - True - 0 - - - - 1 - 2 - 1 - 2 - - - - - - True - True - Gamepad _3 - True - 0 - - - - 1 - 2 - - - - - - False - False - 1 - - - - - True - True - gtk-help - True - 0 - - - - False - False - 2 - - - - - 1 - - - - - True - Input - - - tab - 1 - False - - - - - True - 5 - 5 - - - True - True - Enable _OpenGL Rendering - True - 0 - True - - - False - False - - - - - True - True - Enable _Full Screen - True - 0 - True - - - False - False - 1 - - - - - True - - - True - X scale: - - - False - 5 - - - - - True - True - 1 1 10 0.5 2 2 - True - - - False - 1 - - - - - False - 2 - - - - - True - - - True - Y scale: - - - False - 5 - - - - - True - True - 1 1 10 0.5 1 10 - True - GTK_UPDATE_IF_VALID - - - False - 1 - - - - - False - 3 - - - - - True - - - True - Bits per pixel: - - - False - 5 - - - - - True - 3 - 8 -16 -32 - - - False - False - 1 - - - - - False - 4 - - - - - True - <small><i>(Press Alt+Enter to toggle fullscreen in-game.)</i></small> - True - True - - - False - False - 5 - - - - - 2 - - - - - True - Video - - - tab - 2 - False - - - - - True - 5 - 5 - - - True - - - True - gtk-dialog-info - - - False - False - - - - - True - If you would like to specify any command line options to FCE Ultra, specify them below. For a complete option reference, consult the official FCE Ultra documentation. - -Invalid options may cause GFCE Ultra to perform incorrectly. - - True - - - False - False - 1 - - - - - False - False - 5 - - - - - True - - - True - Extra Parameters: - - - False - False - 5 - - - - - True - True - - - 5 - 1 - - - - - False - 1 - - - - - 3 - - - - - True - Advanced - - - tab - 3 - False - - - - - True - True - Enable _Sound - True - 0 - True - True - - - 4 - - - - - True - Sound - - - tab - 4 - False - - - - - True - False - 5 - 5 - - - True - True - _Host Game - True - 0 - True - - - - False - False - - - - - True - 0 - GTK_SHADOW_NONE - - - True - 19 - - - True - 2 - 2 - 5 - 5 - - - True - 0 - Port: - - - GTK_FILL - - - - - - True - 0 - Password: - - - 1 - 2 - GTK_FILL - - - - - - True - True - 4046 1 65536 1 10 10 - 1 - - - 1 - 2 - - - - - - True - True - - - 1 - 2 - 1 - 2 - - - - - - - - - - False - False - 1 - - - - - True - True - _Join Game - True - 0 - True - host_radio - - - - False - False - 2 - - - - - True - 0 - GTK_SHADOW_NONE - - - True - 0 - 19 - - - True - 5 - 3 - 2 - 3 - 5 - - - True - True - - - 1 - 2 - - - - - - True - True - False - * - - - 1 - 2 - 2 - 3 - - - - - - True - 0 - Server Address: - - - GTK_FILL - - - - - - True - 0 - Server Port: - - - 1 - 2 - GTK_FILL - - - - - - True - 0 - Password: - - - 2 - 3 - GTK_FILL - - - - - - True - True - 4046 1 65536 1 10 10 - 1 - - - 1 - 2 - 1 - 2 - - - - - - - - - - False - False - 3 - - - - - True - True - _No Network - True - 0 - True - True - host_radio - - - - False - False - 4 - - - - - 5 - - - - - True - False - Network - - - tab - 5 - False - - - - - 10 - - - - - True - True - - - True - 3 - - - True - True - True - True - True - gtk-execute - True - 0 - - - - False - - - - - True - True - gtk-about - True - 0 - - - - False - False - 1 - - - - - True - True - gtk-quit - True - 0 - - - - False - 2 - - - - - - - False - False - 1 - - - - - - - GDK_WINDOW_TYPE_HINT_NORMAL - (C) Copyright 2006 - A GNOME front-end end for the FCE Ultra Nintendo Entertainment System emulator - http://dietschnitzel.com/gfceu/ - This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Lukas Sabota -<ltsmooth42@gmail.comt> - -Patch writers: -Scott Brown - translator-credits - Sketching: - J. Sammer -Digital Manipulation: - C. Kontros - -Artwork for old versions (< 0.2.7): - Jimmy Angelakos - <vyruss000@gmail.com> - gfceu_big.png - - - True - - - - - - True - - - False - GTK_PACK_END - - - - - - diff --git a/gfceu.png b/gfceu.png deleted file mode 100644 index 4b7c4246..00000000 Binary files a/gfceu.png and /dev/null differ diff --git a/gfceu_big.png b/gfceu_big.png deleted file mode 100644 index b35457b4..00000000 Binary files a/gfceu_big.png and /dev/null differ diff --git a/gfceu_big_old.png b/gfceu_big_old.png deleted file mode 100644 index 24ecfa26..00000000 Binary files a/gfceu_big_old.png and /dev/null differ diff --git a/gfceu_old.png b/gfceu_old.png deleted file mode 100644 index ab5144d9..00000000 Binary files a/gfceu_old.png and /dev/null differ diff --git a/setup.py b/setup.py deleted file mode 100644 index 9dbf60e1..00000000 --- a/setup.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python -from distutils.core import setup -setup(name="gfceu", - version="0.6.0", - scripts = ['gfceu'], - data_files=[('share/gfceu/',['gfceu.glade', 'gfceu_big.png', 'gfceu.png']), - ('share/pixmaps/', ['gfceu.png']), - ('share/man/man1/', ['gfceu.1']), - ('share/applications/', ['gfceu.desktop'])], - author = "Lukas Sabota", - author_email = "punkrockguy318@comcast.net", - url = "http://punkrockguy318.no-ip.org" - - ) - diff --git a/status_window.py b/status_window.py deleted file mode 100644 index 4970cc84..00000000 --- a/status_window.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python -# A cool thing that i don't feel like explaining -import gtk -import gobject -import os -class shit: - def __init__(self, command, title="Status Window"): - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.window.set_default_size(400,300) - self.window.set_title(title) - - self.scroll = gtk.ScrolledWindow() - self.scroll.set_property("hscrollbar-policy", gtk.POLICY_NEVER) - - self.buffer = gtk.TextBuffer() - - self.text_view = gtk.TextView(self.buffer) - self.text_view.set_editable(False) - self.window.add(self.scroll) - self.scroll.add(self.text_view) - - gobject.timeout_add(10, self.get_output) - - self.handle = os.popen(command, "r",1) - self.add(self.handle.readlines()) - def get_output(self): - self.add(self.handle.read()) - - def show(self): - self.window.show_all() - - def hide(self): - self.window.hide_all() - - def add(self, string): - self.buffer.insert_at_cursor(string) - -myshit = shit("fceu-server", "THE StatUZ") -myshit.show() -gtk.main()