diff options
-rw-r--r-- | gtk-recordmydesktop/AUTHORS | 14 | ||||
-rw-r--r-- | gtk-recordmydesktop/COPYING | 340 | ||||
-rw-r--r-- | gtk-recordmydesktop/ChangeLog | 31 | ||||
-rw-r--r-- | gtk-recordmydesktop/INSTALL | 67 | ||||
-rw-r--r-- | gtk-recordmydesktop/MANIFEST.in | 9 | ||||
-rw-r--r-- | gtk-recordmydesktop/README | 8 | ||||
-rw-r--r-- | gtk-recordmydesktop/__init__.py | 3 | ||||
-rwxr-xr-x | gtk-recordmydesktop/gtk-recordMyDesktop | 43 | ||||
-rw-r--r-- | gtk-recordmydesktop/gtk-recordmydesktop.desktop | 10 | ||||
-rw-r--r-- | gtk-recordmydesktop/gtk-recordmydesktop.png | bin | 3183 -> 0 bytes | |||
-rw-r--r-- | gtk-recordmydesktop/rmdPrefsWidget.py | 281 | ||||
-rw-r--r-- | gtk-recordmydesktop/rmdSelect.py | 139 | ||||
-rwxr-xr-x | gtk-recordmydesktop/rmdSelectThumb.py | 217 | ||||
-rw-r--r-- | gtk-recordmydesktop/rmdSimple.py | 283 | ||||
-rw-r--r-- | gtk-recordmydesktop/rmdTrayIcon.py | 276 | ||||
-rw-r--r-- | gtk-recordmydesktop/rmdTrayPopup.py | 99 | ||||
-rw-r--r-- | gtk-recordmydesktop/setup.py | 15 |
17 files changed, 0 insertions, 1835 deletions
diff --git a/gtk-recordmydesktop/AUTHORS b/gtk-recordmydesktop/AUTHORS deleted file mode 100644 index 2c14f26..0000000 --- a/gtk-recordmydesktop/AUTHORS +++ /dev/null @@ -1,14 +0,0 @@ -gtk-recordMyDesktop is written by - -John Varouhakis(johnvarouhakis@gmail.com) - -Portions of the code are taken from Istanbul -version 0.2.1, available at http://live.gnome.org/Istanbul -which is written by - -Zaheer Abbas Merali -John N. Laliberte - -and publiced under the GNU GPL Version 2. - - diff --git a/gtk-recordmydesktop/COPYING b/gtk-recordmydesktop/COPYING deleted file mode 100644 index d60c31a..0000000 --- a/gtk-recordmydesktop/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. - - <signature of Ty Coon>, 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/gtk-recordmydesktop/ChangeLog b/gtk-recordmydesktop/ChangeLog deleted file mode 100644 index a63c968..0000000 --- a/gtk-recordmydesktop/ChangeLog +++ /dev/null @@ -1,31 +0,0 @@ -/*VERSION 0.1*/ -First Version - -/*VERSION 0.2*/ -*Separated functionality in tabs. -*synced options to recordMyDesktop-0.2.5. -*Right click oin tray icon now has a menu. -*Added 'About' dialog. -*New option to select the area over which the -next recording will take place. -*Exit status notification. -*Abnormal termination notification. -*New Options: -i) Startup delay. -ii) sound device,channels and frequency. -iii) video and audio encoding quality. -iv) Display to connect to. -v) Disable/Enable Shared memory extension. -vi) Drop frames(theora encoder option). -vii) Threshold for conditional use of MIT-Shm. -viii) Quick-subsampling. - - -/*VERSION 0.2.1*/ -*Changed the UI. -*A basic window now appears on launch, -while non-visible options are can be -accessed through an 'advanced' button. -*The window contains a preview of the recording area, -and the selected region is outlined. -*Selection of the area can happen directly on the preview image. diff --git a/gtk-recordmydesktop/INSTALL b/gtk-recordmydesktop/INSTALL deleted file mode 100644 index 8c6356c..0000000 --- a/gtk-recordmydesktop/INSTALL +++ /dev/null @@ -1,67 +0,0 @@ -NOTICE: -gtk-recordMyDesktop is ONLY A FRONTEND to recordMyDesktop. You have to obtain and -install that first. - -DEPENDENCIES: - -PyGTK >= 2.4 -Gnome Python Extras >= 2.11.3 -recordMyDesktop 2.5 - - -INSTALLING recordMyDesktop(the backend): - -First step is of course to obtain it. If you haven't done so already -you can get the source code here: - -http://recordmydesktop.sourceforge.net - - -To compile the program you have to go through the regular drill: - -~$ gzip -d recordmydesktop-x.y.z.tar.gz -~$ tar -x recordmydesktop-x.y.z.tar -~$ cd recordmydesktop-x.y.z -~$ ./configure -~$ make -~$ sudo make install - - -You will need the development headers for the following: -alsa (libasound) -X -libXext -libXdamage -libXfixes -libogg -libvorbis -libtheora - -As well the regular headers, plus the ones for pthreads -(both of which you should have if you have compiled anything else before). - -Of the above, the most likely to be missing are probably those of libXdamage and libtheora -but any recent linux distribution should offer an easy way to get them. - - - - -Compiling on *BSD or other *nix flavors is not going to work(because of the alsa dependency) -but it shouldn't be too much of a hassle to change that(at least by disabling sound capture). -Future versions might include support for OSS-based sound capture. - - -INSTALLING gtk-recordMyDesktop(the frontend): - -~$ gzip -d gtk-recordMyDesktop-x.y.z.tar.gz -~$ tar -x gtk-recordMyDesktop-x.y.z.tar -~$ cd gtk-recordMyDesktop-x.y.z -~$ sudo python setup.py install - - -After this you should get a menu entry under multimedia. -If you don't get one even after a logout/login from your WM -you can launch the program from a terminal like this: - -~$ gtk-recordMyDesktop - diff --git a/gtk-recordmydesktop/MANIFEST.in b/gtk-recordmydesktop/MANIFEST.in deleted file mode 100644 index 0015de1..0000000 --- a/gtk-recordmydesktop/MANIFEST.in +++ /dev/null @@ -1,9 +0,0 @@ -include README -include AUTHORS -include COPYING -include ChangeLog -include INSTALL -include gtk-recordmydesktop.desktop -include gtk-recordmydesktop.png - - diff --git a/gtk-recordmydesktop/README b/gtk-recordmydesktop/README deleted file mode 100644 index caf8ebb..0000000 --- a/gtk-recordmydesktop/README +++ /dev/null @@ -1,8 +0,0 @@ -NOTICE: -gtk-recordMyDesktop is ONLY A FRONTEND to recordMyDesktop. You have to obtain and -install that first. - -For installation instructions and dependencies see the INSTALL file. - - - diff --git a/gtk-recordmydesktop/__init__.py b/gtk-recordmydesktop/__init__.py deleted file mode 100644 index 370620b..0000000 --- a/gtk-recordmydesktop/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -#file exists -#only for distribution -#purposes diff --git a/gtk-recordmydesktop/gtk-recordMyDesktop b/gtk-recordmydesktop/gtk-recordMyDesktop deleted file mode 100755 index 69e309f..0000000 --- a/gtk-recordmydesktop/gtk-recordMyDesktop +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/python - - -#/********************************************************************************* -#* gtk-recordMyDesktop * -#********************************************************************************** -#* * -#* Copyright (C) 2006 John Varouhakis * -#* * -#* * -#* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#* * -#* * -#* * -#* For further information contact me at johnvarouhakis@gmail.com * -#**********************************************************************************/ - -import rmdSimple - -def main(): - tr=rmdSimple.simpleWidget() - - -main() - - - - - - - diff --git a/gtk-recordmydesktop/gtk-recordmydesktop.desktop b/gtk-recordmydesktop/gtk-recordmydesktop.desktop deleted file mode 100644 index 3d6a4a7..0000000 --- a/gtk-recordmydesktop/gtk-recordmydesktop.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=gtk-recordMyDesktop -Comment=Frontend for recordMyDesktop -Exec=gtk-recordMyDesktop -Terminal=false -Type=Application -Icon=gtk-recordmydesktop.png -Categories=GNOME;KDE;Application;AudioVideo; -StartupNotify=false diff --git a/gtk-recordmydesktop/gtk-recordmydesktop.png b/gtk-recordmydesktop/gtk-recordmydesktop.png Binary files differdeleted file mode 100644 index bc50b04..0000000 --- a/gtk-recordmydesktop/gtk-recordmydesktop.png +++ /dev/null diff --git a/gtk-recordmydesktop/rmdPrefsWidget.py b/gtk-recordmydesktop/rmdPrefsWidget.py deleted file mode 100644 index 772d952..0000000 --- a/gtk-recordmydesktop/rmdPrefsWidget.py +++ /dev/null @@ -1,281 +0,0 @@ -#/********************************************************************************* -#* gtk-recordMyDesktop * -#********************************************************************************** -#* * -#* Copyright (C) 2006 John Varouhakis * -#* * -#* * -#* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#* * -#* * -#* * -#* For further information contact me at johnvarouhakis@gmail.com * -#**********************************************************************************/ - - -import pygtk -pygtk.require('2.0') -import gtk -import locale, gettext -_ = gettext.gettext -import os - - - - -class prefsWidget(object): - labelStrings=[_('Frames Per Second'),_(''),_('Startup Delay(secs)'), - _('Channels'),_('Frequency'),_('Device'),_('Video Quality'),_('Sound Quality'), - _('Display'),_('Mouse Cursor'),_('Full shots at every frame'),_('MIT-Shm extension'), - _('Drop Frames(encoder)'),_('Shared Threshold'),_('Quick Subsampling')] - mouseStrings=[_('Normal'),_('White'),_('Black'),_('None')] - stateStrings=[_('Enabled'),_('Disabled')] - tabStrings=[_('Basic'),_('Sound'),_('Advanced')] - - def destroy(self,Event=None): - self.values[0]=self.fpsSpinButton.get_value_as_int() - self.values[1]=self.mouseComboBox.get_active() - #self.values[2]=self.soundComboBox.get_active() - self.values[3]=self.fullComboBox.get_active() - #self.values[4]=self.pathEntry.get_text() - #self.values[5]=self.are - self.values[6]=self.delaySpinButton.get_value_as_int() - self.values[7]=self.channelsSpinButton.get_value_as_int() - self.values[8]=self.freqSpinButton.get_value_as_int() - self.values[9]=self.deviceEntry.get_text().replace(' ','') - #self.values[10]=self.vidqSpinButton.get_value_as_int() - #self.values[11]=self.soundqSpinButton.get_value_as_int() - self.values[12]=self.displayEntry.get_text().replace(' ','') - self.values[13]=self.sharedComboBox.get_active() - self.values[14]=self.frdropComboBox.get_active() - self.values[15]=self.thresSpinButton.get_value_as_int() - self.values[16]=self.quickComboBox.get_active() - - self.window.destroy() - self.optionsOpen[0]=0 - - def __exit__(self,Event=None): - gtk.main_quit() - self.values[0]=-1 - self.optionsOpen[0]=0 - self.window.destroy() - - - - def __subWidgets__(self): - self.labels={} - self.boxes={} - self.labelbox={} - #self.labelbox[0]=gtk.VBox(homogeneous=False, spacing=20) - for i in range(3): - self.labelbox[i]=gtk.VBox(homogeneous=False, spacing=20) - self.notebook = gtk.Notebook() - -#basic page - self.fpsAdjustment=gtk.Adjustment(value=self.values[0], lower=1, upper=50, step_incr=1, page_incr=5, page_size=0) - self.fpsSpinButton= gtk.SpinButton(self.fpsAdjustment, climb_rate=0.5, digits=0) - - - #self.soundComboBox = gtk.combo_box_new_text() - #for i in range(2): - #self.soundComboBox.append_text(self.stateStrings[i]) - #self.soundComboBox.set_active(self.values[2]) - - self.delayAdjustment=gtk.Adjustment(value=self.values[6], lower=0,upper=10000, step_incr=1, page_incr=5, page_size=0) - self.delaySpinButton= gtk.SpinButton(self.delayAdjustment, climb_rate=0.5, digits=0) - - #self.pathEntry= gtk.Entry(max=0) - #self.pathEntry.set_text(self.values[4]) - #self.pathButton = gtk.Button(None,gtk.STOCK_SAVE_AS) - - self.okButton=gtk.Button(None,gtk.STOCK_CLOSE) - - for i in xrange(0,3,2): - self.labels[i]=gtk.Label(self.labelStrings[i]) - self.labels[i].set_justify(gtk.JUSTIFY_LEFT) - self.boxes[i]=gtk.HBox(homogeneous=False, spacing=0) - self.boxes[i].pack_start(self.labels[i],expand=False,fill=False) - self.labels[i].show() - self.labelbox[0].pack_start(self.boxes[i],expand=False,fill=False) - - self.boxes[3]=gtk.HBox(homogeneous=False, spacing=20) - self.labelbox[0].pack_start(self.boxes[3],expand=False,fill=False) - placeholder2=gtk.Label("\n\n\n\n\n\n") - placeholder2.show() - self.labelbox[0].pack_start(placeholder2,True,True) - self.boxes[4]=gtk.HBox(homogeneous=False, spacing=0) - self.labelbox[0].pack_end(self.boxes[4]) - - self.fpsSpinButton.show() - self.boxes[0].pack_end(self.fpsSpinButton,expand=False,fill=False) - #self.soundComboBox.show() - #self.boxes[1].pack_end(self.soundComboBox,expand=False,fill=False) - self.delaySpinButton.show() - self.boxes[2].pack_end(self.delaySpinButton,expand=False,fill=False) - #self.pathEntry.show() - #self.boxes[3].pack_start(self.pathEntry,expand=False,fill=False) - #self.pathButton.show() - #self.boxes[3].pack_end(self.pathButton,expand=False,fill=False) - self.okButton.show() - self.boxes[4].pack_end(self.okButton,expand=False,fill=False) - for i in range(5): - if i!=1: - self.boxes[i].show() -#sound page - for i in xrange(3,6): - self.labels[i]=gtk.Label(self.labelStrings[i]) - self.labels[i].set_justify(gtk.JUSTIFY_LEFT) - self.boxes[i+5]=gtk.HBox(homogeneous=False, spacing=0) - self.boxes[i+5].pack_start(self.labels[i],expand=False,fill=False) - self.labels[i].show() - #self.boxes[i+5].show() - self.labelbox[1].pack_start(self.boxes[i+5],expand=False,fill=False) - self.channelsAdjustment=gtk.Adjustment(value=self.values[7], lower=1,upper=2, step_incr=1, page_incr=1, page_size=1) - self.channelsSpinButton= gtk.SpinButton(self.channelsAdjustment, climb_rate=0.5, digits=0) - self.boxes[8].pack_end(self.channelsSpinButton,expand=False,fill=False) - self.channelsSpinButton.show() - self.boxes[8].show() - - self.freqAdjustment=gtk.Adjustment(value=self.values[8], lower=0,upper=44100, step_incr=1, page_incr=100, page_size=0) - self.freqSpinButton= gtk.SpinButton(self.freqAdjustment, climb_rate=0.5, digits=0) - self.boxes[9].pack_end(self.freqSpinButton,expand=False,fill=False) - self.freqSpinButton.show() - self.boxes[9].show() - - self.deviceEntry= gtk.Entry(max=0) - self.deviceEntry.set_text(self.values[9]) - self.boxes[10].pack_end(self.deviceEntry,expand=False,fill=False) - self.deviceEntry.show() - self.boxes[10].show() - - -#encoding page - #for i in xrange(6,8): - #self.labels[i]=gtk.Label(self.labelStrings[i]) - #self.labels[i].set_justify(gtk.JUSTIFY_LEFT) - #self.boxes[i+5]=gtk.HBox(homogeneous=False, spacing=0) - #self.boxes[i+5].pack_start(self.labels[i],expand=False,fill=False) - #self.labels[i].show() - ##self.boxes[i+5].show() - #self.labelbox[2].pack_start(self.boxes[i+5],expand=False,fill=False) - #self.vidqAdjustment=gtk.Adjustment(value=self.values[10], lower=0,upper=63, step_incr=1, page_incr=1, page_size=1) - #self.vidqSpinButton= gtk.SpinButton(self.vidqAdjustment, climb_rate=0.5, digits=0) - #self.boxes[11].pack_end(self.vidqSpinButton,expand=False,fill=False) - #self.vidqSpinButton.show() - #self.boxes[11].show() - #self.soundqAdjustment=gtk.Adjustment(value=self.values[11], lower=-1,upper=10, step_incr=1, page_incr=1, page_size=1) - #self.soundqSpinButton= gtk.SpinButton(self.soundqAdjustment, climb_rate=0.5, digits=0) - #self.boxes[12].pack_end(self.soundqSpinButton,expand=False,fill=False) - #self.soundqSpinButton.show() - #self.boxes[12].show() - -#misc page - for i in xrange(8,15): - self.labels[i]=gtk.Label(self.labelStrings[i]) - self.labels[i].set_justify(gtk.JUSTIFY_LEFT) - self.boxes[i+5]=gtk.HBox(homogeneous=False, spacing=0) - self.boxes[i+5].pack_start(self.labels[i],expand=False,fill=False) - self.labels[i].show() - #self.boxes[i+5].show() - self.labelbox[2].pack_start(self.boxes[i+5],expand=False,fill=False) - self.displayEntry= gtk.Entry(max=0) - self.displayEntry.set_text(self.values[12]) - self.boxes[13].pack_end(self.displayEntry,expand=False,fill=False) - self.displayEntry.show() - self.boxes[13].show() - - self.mouseComboBox = gtk.combo_box_new_text() - for i in range(4): - self.mouseComboBox.append_text(self.mouseStrings[i]) - self.mouseComboBox.set_active(self.values[1]) - self.boxes[14].pack_end(self.mouseComboBox,expand=False,fill=False) - self.mouseComboBox.show() - self.boxes[14].show() - - self.fullComboBox = gtk.combo_box_new_text() - for i in range(2): - self.fullComboBox.append_text(self.stateStrings[i]) - self.fullComboBox.set_active(self.values[3]) - self.boxes[15].pack_end(self.fullComboBox,expand=False,fill=False) - self.fullComboBox.show() - self.boxes[15].show() - - self.sharedComboBox = gtk.combo_box_new_text() - for i in range(2): - self.sharedComboBox.append_text(self.stateStrings[i]) - self.sharedComboBox.set_active(self.values[13]) - self.boxes[16].pack_end(self.sharedComboBox,expand=False,fill=False) - self.sharedComboBox.show() - self.boxes[16].show() - - - self.frdropComboBox = gtk.combo_box_new_text() - for i in range(2): - self.frdropComboBox.append_text(self.stateStrings[i]) - self.frdropComboBox.set_active(self.values[14]) - self.boxes[17].pack_end(self.frdropComboBox,expand=False,fill=False) - self.frdropComboBox.show() - self.boxes[17].show() - - self.thresAdjustment=gtk.Adjustment(value=self.values[15], lower=0,upper=100, step_incr=1, page_incr=5, page_size=1) - self.thresSpinButton= gtk.SpinButton(self.thresAdjustment, climb_rate=0.5, digits=0) - self.boxes[18].pack_end(self.thresSpinButton,expand=False,fill=False) - self.thresSpinButton.show() - self.boxes[18].show() - - self.quickComboBox = gtk.combo_box_new_text() - for i in range(2): - self.quickComboBox.append_text(self.stateStrings[i]) - self.quickComboBox.set_active(self.values[16]) - self.boxes[19].pack_end(self.quickComboBox,expand=False,fill=False) - self.quickComboBox.show() - self.boxes[19].show() - -#append and show - for i in range(3): - self.notebook.append_page(self.labelbox[i],gtk.Label(self.tabStrings[i])) - self.window.add(self.notebook) - for i in range(3): - self.labelbox[i].show() - self.notebook.show() - - def __makeCons__(self): - #self.pathButton.connect("clicked",self.__fileSelect__) - self.okButton.connect("clicked",self.destroy) - - def __init__(self,values,optionsOpen): - self.values=values - self.optionsOpen=optionsOpen - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.window.connect("destroy", self.destroy) - self.window.set_border_width(10) - self.window.set_title("recordMyDesktop") - self.__subWidgets__() - self.__makeCons__() - - - self.window.set_size_request(350,-1) - self.window.show() - - def main(self): - gtk.main() - - - - - - - - diff --git a/gtk-recordmydesktop/rmdSelect.py b/gtk-recordmydesktop/rmdSelect.py deleted file mode 100644 index cf03403..0000000 --- a/gtk-recordmydesktop/rmdSelect.py +++ /dev/null @@ -1,139 +0,0 @@ -# -*- Mode: Python -*- -# vi:si:et:sw=4:sts=4:ts=4 -# -# Istanbul - a desktop session recorder -# Copyright (C) 2005 Zaheer Abbas Merali (zaheerabbas at merali dot org) -# All rights reserved. - -# This file may be distributed and/or modified under the terms of -# the GNU General Public License version 2 as published by -# the Free Software Foundation. -# This file is distributed without any warranty; without even the implied -# warranty of merchantability or fitness for a particular purpose. -# See "LICENSE.GPL" in the source distribution for more information. - -# Headers in this file shall remain intact. - -#This file has been modified to be used in gtk-recordMyDesktop -#by John Varouhakis -#area_return list has been added to retrieve the values -#original file name is select.py in Istanbul-0.2.1 -import gtk -import gtk.gdk - -class GtkAreaSelector(gtk.Window): - def __init__(self,area_return): - self.area_return=area_return - gtk.Window.__init__(self) - self.set_app_paintable(True) - self.fullscreen() - self.connect("expose-event", self.expose_cb) - self.connect("button-press-event", self.button_press_cb) - self.connect("button-release-event", self.button_release_cb) - self.connect("motion-notify-event", self.motion_notify_cb) - self.connect("delete-event", self.delete_cb) - self.connect("realize", self.realize_cb) - root = gtk.gdk.get_default_root_window() - (width, height) = root.get_size() - self.root = root.get_image(0, 0, width, height) - self.x1 = self.y1 = -1 - self.x2 = self.y2 = 0 - self.show_all() - - def realize_cb(self, widget): - gdkwindow = self.window - gdkwindow.set_events(gdkwindow.get_events() | - gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | - gtk.gdk.POINTER_MOTION_MASK); - cursor = gtk.gdk.Cursor(gtk.gdk.CROSSHAIR) - gdkwindow.set_cursor(cursor) - gdkwindow.set_back_pixmap(None, False) - - def expose_cb(self, widget, event): - dashes = [ 1.0, 2.0 ] - cr = self.window.cairo_create() - cr.rectangle(event.area.x, event.area.y, event.area.width, - event.area.height) - cr.clip() - self.window.draw_image(self.style.black_gc, self.root, event.area.x, - event.area.y, event.area.x, event.area.y, event.area.width, - event.area.height) - cr.set_line_width(1.0) - cr.set_source_rgba (1.0, 0.0, 0.0, 1.0) - cr.set_dash (dashes, 0.0) - cr.move_to (self.x1 - 0.5, 0.0) - cr.line_to (self.x1 - 0.5, event.area.y + event.area.height) - cr.move_to (0.0, self.y1 - 0.5) - cr.line_to (event.area.x + event.area.width, self.y1 - 0.5) - cr.stroke () - - if self.x1 >= 0: - x = min(self.x1, self.x2) - y = min(self.y1, self.y2) - w = max(self.x1, self.x2) - x - h = max(self.y1, self.y2) - y - cr.set_dash ([], 0.0) - cr.rectangle ( x, y, w, h) - cr.fill() - cr.set_source_rgba (0.0, 0.0, 0.5, 0.5) - cr.rectangle (x + 0.5, y + 0.5, w - 1, h - 1) - cr.stroke() - - return False - - def motion_notify_cb(self, widget, event): - self.queue_draw() - - if self.x1 >= 0: - rect = gtk.gdk.Rectangle() - rect.x = min(self.x1, min(self.x2, event.x + 1)) - rect.width = max(self.x1, max(self.x2, event.x + 1)) - rect.x - rect.y = min(self.y1, min(self.y2, event.y + 1)) - rect.height = max(self.y1, max(self.y2, event.y + 1)) - rect.y - self.queue_draw_area(rect.x, rect.y, rect.width, rect.height) - - self.x2 = event.x + 1 - self.y2 = event.y + 1 - - return True - - def button_release_cb(self, widget, event): - if event.button == 1 and self.x1 >= 0: - self.x2 = event.x + 1 - self.y2 = event.y + 1 - # stop - self.area_return[0]=min(int(self.x1),int(self.x2)) - self.area_return[1]=min(int(self.y1),int(self.y2)) - self.area_return[2]=max(int(self.x1),int(self.x2)) - self.area_return[3]=max(int(self.y1),int(self.y2)) - self.hide() - self.destroy() - - return True - - def button_press_cb(self, widget, event): - if event.button != 1: - self.x1 = self.y1 = -1 - # stop - #print "(%d, %d) - (%d, %d)" % (self.x1, self.y1, self.x2, self.y2) - #self.area_return[0]=self.x1 - #self.area_return[1]=self.y1 - #self.area_return[2]=self.x2 - #self.area_return[3]=self.y2 - #print self.area_return - self.destroy() - return True - self.x1 = event.x - self.y1 = event.y - self.queue_draw() - return True - - def delete_cb(self, widget,Event=None): - pass - -if __name__ == "__main__": - w = GtkAreaSelector() - w.show() - gtk.main() - - diff --git a/gtk-recordmydesktop/rmdSelectThumb.py b/gtk-recordmydesktop/rmdSelectThumb.py deleted file mode 100755 index 6130b26..0000000 --- a/gtk-recordmydesktop/rmdSelectThumb.py +++ /dev/null @@ -1,217 +0,0 @@ -# -*- Mode: Python -*- -# vi:si:et:sw=4:sts=4:ts=4 -# -# Istanbul - a desktop session recorder -# Copyright (C) 2005 Zaheer Abbas Merali (zaheerabbas at merali dot org) -# All rights reserved. - -# This file may be distributed and/or modified under the terms of -# the GNU General Public License version 2 as published by -# the Free Software Foundation. -# This file is distributed without any warranty; without even the implied -# warranty of merchantability or fitness for a particular purpose. -# See "LICENSE.GPL" in the source distribution for more information. - -# Headers in this file shall remain intact. - -#This file has been modified to be used in gtk-recordMyDesktop -#by John Varouhakis - -#Base class is DrawingArea instead of Window to allow insertion. -#new methods: -# update_image to keep the screenshot current. -# __subsample__ to scale the screenshot -# __draw_lines__ to highlight the selected area. -#Calls to destroy have been removed, since this widget is meant to -#live for an indefinite amount of time. -#Click behavior has been changed. Selection now happens by left-click and dragging, -#while right click resets the selection. - - -#original file name is select.py in Istanbul-0.2.1 - - -import gtk -import gtk.gdk -#from rmdSelect import * -import gobject -import gc - -class GtkThumbSelector(gtk.DrawingArea): - def __init__(self,area_return,hidden,update_interval=2000): - self.hidden=hidden - self.area_return=area_return - self.selecting=0 - gtk.DrawingArea.__init__(self) - self.set_app_paintable(True) - #self.fullscreen() - self.connect("expose-event", self.expose_cb) - self.connect("button-press-event", self.button_press_cb) - self.connect("button-release-event", self.button_release_cb) - self.connect("motion-notify-event", self.motion_notify_cb) - #self.connect("delete-event", self.delete_cb) - self.connect("realize", self.realize_cb) - #root = gtk.gdk.get_default_root_window() - self.wroot = gtk.gdk.get_default_root_window() - (self.wwidth, self.wheight) = self.wroot.get_size() - ############################################################### - - self.factor=1; - twidth=self.wwidth - while twidth>320 or self.factor<4: - twidth/=2 - self.factor*=2 - self.root=gtk.gdk.Image(gtk.gdk.IMAGE_NORMAL,self.wroot.get_visual(),self.wwidth/self.factor,self.wheight/self.factor) - #(width, height) = root.get_size() - sroot = self.wroot.get_image(0, 0, self.wwidth, self.wheight) - self.__subsample__(sroot,self.wwidth,self.wheight,self.root,self.factor) - #self.root = root.get_image(0, 0, width, height) - self.x1 = self.y1 = -1 - self.x2 = self.y2 = -1 - self.set_size_request(self.wwidth/self.factor,self.wheight/self.factor) - self.timed_id=gobject.timeout_add(update_interval,self.update_image) - - def __subsample__(self,im1,w,h,im2,stride,x=0,y=0): - for i in xrange(y,h,stride): - for k in xrange(x,w,stride): - im2.put_pixel(k/stride,i/stride,im1.get_pixel(k,i)) - def button_release_cb(self, widget, event): - if event.button == 1 and self.x1 >= 0 and widget==self: - self.selecting=0 - self.x2 = event.x + 1 - self.y2 = event.y + 1 - # stop - if self.x1 <0: self.x1=0 - if self.x2 <0: self.x2=0 - if self.y1 <0: self.y1=0 - if self.y2 <0: self.y2=0 - if self.x1 >self.wwidth/self.factor: self.x1=self.wwidth/self.factor - if self.x2 >self.wwidth/self.factor: self.x2=self.wwidth/self.factor - if self.y1 >self.wheight/self.factor: self.y1=self.wheight/self.factor - if self.y2 >self.wheight/self.factor: self.y2=self.wheight/self.factor - - - self.area_return[0]=min(int(self.x1),int(self.x2))*self.factor - self.area_return[1]=min(int(self.y1),int(self.y2))*self.factor - self.area_return[2]=max(int(self.x1),int(self.x2))*self.factor - self.area_return[3]=max(int(self.y1),int(self.y2))*self.factor - self.x1=self.y1=self.x2=self.y2=-1 - #print self.area_return - self.update_image() - - def button_press_cb(self, widget, event): - if widget==self: - if event.button == 1: - self.selecting=1 - self.update_image() - self.x1 = event.x - self.y1 = event.y - else: - self.x1 = self.y1=self.x2=self.y2=-1 - self.area_return[0]=self.area_return[1]=0 - self.area_return[2]=self.wwidth - self.area_return[3]=self.wheight - self.update_image() - - def realize_cb(self, widget): - if widget == self: - gdkwindow = self.window - gdkwindow.set_events(gdkwindow.get_events() | - gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | - gtk.gdk.POINTER_MOTION_MASK); - cursor = gtk.gdk.Cursor(gtk.gdk.CROSSHAIR) - gdkwindow.set_cursor(cursor) - gdkwindow.set_back_pixmap(None, False) - - def expose_cb(self, widget, event): - if widget==self: - dashes = [ 1.0, 2.0 ] - cr = self.window.cairo_create() - cr.rectangle(event.area.x, event.area.y, event.area.width, - event.area.height) - cr.clip() - self.window.draw_image(self.style.black_gc, self.root, event.area.x, - event.area.y, event.area.x, event.area.y, event.area.width, - event.area.height) - cr.set_line_width(1.0) - cr.set_source_rgba (1.0, 0.0, 0.0, 1.0) - cr.set_dash (dashes, 0.0) - cr.move_to (self.x1 - 0.5, 0.0) - cr.line_to (self.x1 - 0.5, event.area.y + event.area.height) - cr.move_to (0.0, self.y1 - 0.5) - cr.line_to (event.area.x + event.area.width, self.y1 - 0.5) - cr.stroke () - - if self.x1 >= 0: - x = min(self.x1, self.x2) - y = min(self.y1, self.y2) - w = max(self.x1, self.x2) - x - h = max(self.y1, self.y2) - y - cr.set_dash ([], 0.0) - cr.rectangle ( x, y, w, h) - cr.fill() - cr.set_source_rgba (0.0, 0.0, 0.5, 0.5) - cr.rectangle (x + 0.5, y + 0.5, w - 1, h - 1) - cr.stroke() - - return False - - def motion_notify_cb(self, widget, event): - if widget ==self: - self.queue_draw() - - if self.x1 >= 0 : - rect = gtk.gdk.Rectangle() - rect.x = min(self.x1, min(self.x2, event.x + 1)) - rect.width = max(self.x1, max(self.x2, event.x + 1)) - rect.x - rect.y = min(self.y1, min(self.y2, event.y + 1)) - rect.height = max(self.y1, max(self.y2, event.y + 1)) - rect.y - self.queue_draw_area(rect.x, rect.y, rect.width, rect.height) - - self.x2 = event.x + 1 - self.y2 = event.y + 1 - - return True - - def update_image(self): - #self.root.destroy() - self.queue_draw() - if self.hidden[0]==0 : - gc.collect() - sroot = self.wroot.get_image(0,0,self.wwidth,self.wheight) - self.__subsample__(sroot,self.wwidth,self.wheight,self.root,self.factor) - vals=[0,0, self.wwidth, self.wheight] - if self.area_return[0]>=0: - vals[0]=self.area_return[0] - if self.area_return[1]>=0: - vals[1]=self.area_return[1] - if self.area_return[2]>=0: - vals[2]=self.area_return[2]-self.area_return[0] - if self.area_return[3]>=0: - vals[3]=self.area_return[3]-self.area_return[1] - if vals[0] >0 or vals[1] >0 or vals[2] <self.wwidth or vals[3] <self.wheight: - if self.selecting==0: - self.__draw_lines__(self.root,vals,self.factor) - return True - def __draw_lines__(self,img,vals,factor): - for i in xrange(vals[0]/factor,vals[0]/factor+vals[2]/factor): - for k in range(2): - img.put_pixel(i,vals[1]/factor+k,0xff0000) - img.put_pixel(i,(vals[1]+vals[3]/2-k)/factor,0xff0000) - img.put_pixel(i,(vals[1]+vals[3]-1-k)/factor,0xff0000) - for i in xrange(vals[1]/factor,vals[1]/factor+vals[3]/factor): - for k in range(2): - img.put_pixel(vals[0]/factor+k,i,0xff0000) - img.put_pixel((vals[0]+vals[2]/2-k)/factor,i,0xff0000) - img.put_pixel((vals[0]+vals[2]-1-k)/factor,i,0xff0000) - -#area_return=[-1,-1,-1,-1] - -#w=GtkThumbSelector(area_return,0) -#w.show() -#gtk.main() -#print area_return - - - - diff --git a/gtk-recordmydesktop/rmdSimple.py b/gtk-recordmydesktop/rmdSimple.py deleted file mode 100644 index f4f1b43..0000000 --- a/gtk-recordmydesktop/rmdSimple.py +++ /dev/null @@ -1,283 +0,0 @@ -#/********************************************************************************* -#* gtk-recordMyDesktop * -#********************************************************************************** -#* * -#* Copyright (C) 2006 John Varouhakis * -#* * -#* * -#* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#* * -#* * -#* * -#* For further information contact me at johnvarouhakis@gmail.com * -#**********************************************************************************/ - - -import pygtk -pygtk.require('2.0') -import gtk -import locale, gettext -_ = gettext.gettext -import os -from rmdPrefsWidget import * -from rmdTrayIcon import * -import gtk.gdk -import gobject -import gc -import re -import rmdPrefsWidget as pW -import rmdSelectThumb as sT - -class simpleWidget(object): - hidden=[0] - labelStrings=[_('Video Quality'),_('Sound Quality')] - buttonStrings=[_('Advanced'),_('Select Window')] - tooltipLabels=[_('Click here to select a window to record'), - _('Click to start the recording.\nThis window will hide itself.'), - _('Click to choose a filename and location.\nDefault is out.ogg in your home folder.\nEXISTING FILES WILL BE OVER-WRITTEN WITHOUT WARNING!'), - _('Click to exit the program.'), - _('Select the video quality of your recording.\n(Lower quality will require more proccessing power.)'), - _('Enable/Disable sound recording.'), - _('Select the audio quality of your recording.'), - _('Click here to access more options.')] - tipLabelStrings=[_('\nLeft click and drag, on the preview image,\nto select an area for recording.\nRight click on it, to reset the area.')] - - options=None - optionsOpen=[0] - def __subWidgets__(self): - self.labelbox=gtk.VBox(homogeneous=False, spacing=20) - #self.labelbox.set_size_request(400,272) - self.NBox=gtk.HBox(homogeneous=False, spacing=20) - self.NEBox=gtk.VBox(homogeneous=False, spacing=0) - self.NEVQBox=gtk.HBox(homogeneous=False, spacing=10) - self.NESQBox=gtk.HBox(homogeneous=False, spacing=10) - self.NETABox=gtk.VBox(homogeneous=False, spacing=10) - self.NWBox=gtk.VBox(homogeneous=False, spacing=0) - - - - self.NBox.pack_start(self.NWBox,expand=False,fill=False) - self.NBox.pack_start(self.NEBox,expand=True,fill=True) - self.NEBox.pack_start(self.NEVQBox,expand=False,fill=False) - self.NEBox.pack_start(self.NESQBox,expand=False,fill=False) - self.NEBox.pack_start(self.NETABox,expand=False,fill=False) - - self.SBox=gtk.HBox(homogeneous=True, spacing=0) - self.SEBox=gtk.HBox(homogeneous=False, spacing=10) - self.SWBox=gtk.HBox(homogeneous=False, spacing=10) - self.SBox.pack_start(self.SWBox,expand=True,fill=True) - self.SBox.pack_start(self.SEBox,expand=True,fill=True) - - self.labelbox.pack_start(self.NBox,expand=False,fill=False) - self.labelbox.pack_end(self.SBox,expand=False,fill=False) - - self.wroot = gtk.gdk.get_default_root_window() - (self.wwidth, self.wheight) = self.wroot.get_size() - - self.factor=1; - twidth=self.wwidth - while twidth>320 or self.factor<4: - twidth/=2 - self.factor*=2 - self.image=sT.GtkThumbSelector(self.values[5],self.hidden,2000) - self.image.show() - - self.NWBox.pack_start(self.image,False,False) - #quality - self.v_adj=gtk.Adjustment(value=(self.values[10]*100)/63, lower=0, upper=100, step_incr=1, page_incr=10, page_size=0) - self.v_quality=gtk.HScale(self.v_adj) - self.v_quality.set_value_pos(gtk.POS_LEFT) - self.v_quality.set_digits(0) - self.s_button= gtk.CheckButton(label=None) - self.s_adj=gtk.Adjustment(value=(self.values[11]*10), lower=0, upper=100, step_incr=1, page_incr=10, page_size=0) - #print (self.values[11]*10) - self.s_quality=gtk.HScale(self.s_adj) - self.s_quality.set_value_pos(gtk.POS_LEFT) - self.s_quality.set_digits(0) - self.v_label=gtk.Label(" "+self.labelStrings[0]) - self.s_label=gtk.Label(self.labelStrings[1]) - - self.advanced_button=gtk.Button(self.buttonStrings[0]) - self.tipLabel=gtk.Label(self.tipLabelStrings[0]) - self.NEVQBox.pack_start(self.v_label,expand=False,fill=False) - self.NEVQBox.pack_start(self.v_quality,expand=True,fill=True) - self.NESQBox.pack_start(self.s_button,expand=False,fill=False) - self.NESQBox.pack_start(self.s_label,expand=False,fill=False) - self.NESQBox.pack_start(self.s_quality,expand=True,fill=True) - self.NETABox.pack_start(self.advanced_button,expand=False,fill=False) - self.NETABox.pack_start(self.tipLabel,expand=False,fill=False) - - self.win_button=gtk.Button(self.buttonStrings[1]) - self.start_button=gtk.Button(None,gtk.STOCK_MEDIA_RECORD) - self.file_button=gtk.Button(None,gtk.STOCK_SAVE_AS) - self.quit_button=gtk.Button(None,gtk.STOCK_QUIT) - self.SWBox.pack_start(self.win_button,False,False) - self.SWBox.pack_start(self.start_button,False,False) - self.SEBox.pack_end(self.quit_button,False,False) - self.SEBox.pack_end(self.file_button,False,False) - - self.win_button.show() - self.start_button.show() - self.file_button.show() - self.quit_button.show() - - self.v_quality.show() - self.s_button.show() - self.s_quality.show() - self.v_label.show() - self.s_label.show() - self.tipLabel.show() - self.advanced_button.show() - self.NEVQBox.show() - self.NESQBox.show() - self.NETABox.show() - self.NEBox.show() - self.NWBox.show() - self.NBox.show() - self.SEBox.show() - self.SWBox.show() - self.SBox.show() - - self.labelbox.show() - self.window.add(self.labelbox) - def __tooltips__(self): - self.tooltips=gtk.Tooltips() - self.tooltips.set_tip(self.win_button,self.tooltipLabels[0]) - self.tooltips.set_tip(self.start_button,self.tooltipLabels[1]) - self.tooltips.set_tip(self.file_button,self.tooltipLabels[2]) - self.tooltips.set_tip(self.quit_button,self.tooltipLabels[3]) - self.tooltips.set_tip(self.v_quality,self.tooltipLabels[4]) - self.tooltips.set_tip(self.v_label,self.tooltipLabels[4]) - self.tooltips.set_tip(self.s_button,self.tooltipLabels[5]) - self.tooltips.set_tip(self.s_quality,self.tooltipLabels[6]) - self.tooltips.set_tip(self.s_label,self.tooltipLabels[6]) - self.tooltips.set_tip(self.advanced_button,self.tooltipLabels[7]) - - def __exit__(self,Event=None): - gtk.main_quit() - self.values[0]=-1 - self.optionsOpen[0]=0 - self.window.destroy() - def hide(self,Event=None): - self.window.hide() - self.hidden[0]=1 - def show(self,Event=None): - self.window.show() - self.hidden[0]=0 - def advanced(self,button=None): - if self.optionsOpen[0] ==0: - self.optionsOpen[0]=1 - self.options=pW.prefsWidget(self.values,self.optionsOpen) - #self.parent.show() - else: - if self.options != None: - self.options.window.destroy() - self.optionsOpen[0]=0 - - def __fileSelQuit__(self,Event=None): - self.fileSel.destroy() - - def __fileSelOk__(self,Event=None): - self.values[4]=self.fileSel.get_filename() - #self.pathEntry.set_text(self.fileSel.get_filename()) - self.fileSel.destroy() - - def __fileSelect__(self,Event=None): - self.fileSel = gtk.FileSelection(title=None) - self.fileSel.ok_button.connect("clicked", self.__fileSelOk__) - self.fileSel.cancel_button.connect("clicked", self.__fileSelQuit__) - self.fileSel.set_filename(self.values[4]) - self.fileSel.show() - def __select_window__(self,button): - (stdin,stdout,stderr)=os.popen3('xwininfo','t') - wid=stdout.readlines() - stdin.close() - stdout.close() - stderr.close() - x=y=width=height=None - for i in wid: - if i.lstrip().startswith('Absolute upper-left X:'): - x=int(i.split(' ')[len(i.split(' '))-1]) - elif i.lstrip().startswith('Absolute upper-left Y'): - y=int(i.split(' ')[len(i.split(' '))-1]) - elif i.lstrip().startswith('Width:'): - width=int(i.split(' ')[len(i.split(' '))-1]) - elif i.lstrip().startswith('Height:'): - height=int(i.split(' ')[len(i.split(' '))-1]) - if x<0: - width+=x - x=0 - if y<0: - height+=y - y=0 - if width+x>self.wwidth: width=self.wwidth-x - if height+y>self.wheight: height=self.wheight-y - self.values[5][0]=x - self.values[5][1]=y - self.values[5][2]=width+x - self.values[5][3]=height+y - self.image.update_image() - - def __makeCons__(self): - self.advanced_button.connect("clicked",self.advanced) - self.file_button.connect("clicked",self.__fileSelect__) - self.quit_button.connect("clicked",self.__exit__) - self.start_button.connect("clicked",self.trayIcon.record_ext) - self.s_button.connect("clicked",self.__sound_check__) - self.win_button.connect("clicked",self.__select_window__) - def __sound_check__(self,widget): - self.s_quality.set_sensitive(widget.get_active()) - self.values[2]=widget.get_active() - - def update(self) : - self.values[10]=int((self.v_quality.get_value()*63)/100) - self.values[11]=int(self.v_quality.get_value()/10) - - def __init__(self): - self.values= [15,0,True,1,os.path.join(os.getenv('HOME'),'out.ogg'),[-1,-1,-1,-1],0, - 1,22050,'hw:0,0',63,10,"$DISPLAY",0,1,75,1] - self.optionsOpen=[0] - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - self.window.connect("destroy", self.__exit__) - self.window.set_border_width(10) - self.window.set_title("recordMyDesktop") - self.__subWidgets__() - - #self.timed_id=gobject.timeout_add(2000,self.__update_image__) - #if resolution is low let it decide size on it's own - if self.wwidth>640: - self.window.set_size_request(int(self.wwidth/self.factor*2.3),-1) - self.window.set_resizable(False) - - self.trayIcon=trayIcon(self) - self.__makeCons__() - self.__tooltips__() - self.s_quality.set_sensitive(self.values[2]) - self.s_button.set_active(self.values[2]) - self.window.show() - wh=self.window.size_request() - self.window.set_size_request(wh[0],wh[1]) - gtk.main() - - - - - - - - - - - diff --git a/gtk-recordmydesktop/rmdTrayIcon.py b/gtk-recordmydesktop/rmdTrayIcon.py deleted file mode 100644 index 103dcdc..0000000 --- a/gtk-recordmydesktop/rmdTrayIcon.py +++ /dev/null @@ -1,276 +0,0 @@ -#/********************************************************************************* -#* gtk-recordMyDesktop * -#********************************************************************************** -#* * -#* Copyright (C) 2006 John Varouhakis * -#* * -#* * -#* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * -#* * -#* * -#* * -#* For further information contact me at johnvarouhakis@gmail.com * -#**********************************************************************************/ - - -import pygtk -pygtk.require('2.0') -import gtk,gobject - -import egg.trayicon -import rmdSelect as isel -import rmdTrayPopup as iTP -import os,signal - -#values struct: - -#0 fps -#1 mouse -#2 sound on/off -#3 full -#4 path -#5 area -#6 delay -#7 channels -#8 frequency -#9 device -#10 v_quality -#11 s_quality -#12 display -#13 shared memory -#14 drop-frames -#15 shared threshold -#16 quick subsampling - - -class trayIcon(object): - #values=[15,0,0,1,os.path.join(os.getenv('HOME'),'out.ogg'),[-1,-1,-1,-1],0, - #1,22050,'hw:0,0',63,10,"$DISPLAY",0,1,75,1] - exit_status={ - 0:'Success', - 1*256:'Error while parsing the arguments.', - 2*256:'Initializing the encoder failed(either vorbis or theora)', - 3*256:'Could not open/configure sound card.', - 4*256:'Xdamage extension not present.', - 5*256:'Shared memory extension not present.', - 6*256:'Xfixes extension not present.', - 7*256:'XInitThreads failed.', - 8*256:'No $DISPLAY environment variable and none specified as argument.', - 9*256:'Cannot connect to Xserver.', - 10*256:'Color depth is not 24bpp.', - 11*256:'Improper window specification.', - 12*256:'Cannot attach shared memory to proccess.', - 11:'Segmentation Fault' - } - - - state=0#0 stopped,1 recording,2 paused - rmdPid=None - optionsOpen=[1] - reopen=0 - timed_id=None - - def __buttonPress__(self,widget,event=None): - if event.button==1 : - if self.state == 0: - if self.optionsOpen[0]==1: - self.parent.hide() - self.optionsOpen[0]=0 - self.reopen=1 - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_STOP,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.state=1 - self.__execRMD__() - elif self.state== 1: - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_RECORD,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.state=0 - self.__stopRMD__() - elif self.state == 2 : - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_STOP,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.state=1 - self.__pauseRMD__() - - - elif event.button == 3: - if self.state == 0: - self.tray_popup.show() - elif self.state == 1: - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_PAUSE,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.state=2 - self.__pauseRMD__() - elif self.state ==2: - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_STOP,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.state=1 - self.__pauseRMD__() - def record_ext(self,button=None): - if self.state == 0: - if self.optionsOpen[0]==1: - self.parent.hide() - self.optionsOpen[0]=0 - self.reopen=1 - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_STOP,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.state=1 - self.__execRMD__() - - def __execRMD__(self): - self.parent.update() - execargs=["recordmydesktop","-o",'%s'%self.parent.values[4], - "-fps","%d"%self.parent.values[0]] - if self.parent.values[2]==False : - execargs.append("--nosound") - if self.parent.values[1] == 1: - execargs.append("-dummy-cursor") - execargs.append("white") - elif self.parent.values[1] == 2: - execargs.append("-dummy-cursor") - execargs.append("black") - elif self.parent.values[1] == 3: - execargs.append("--no-cursor") - - if self.parent.values[3] == 0: - execargs.append("--full-shots") - if self.parent.values[13] == 0: - execargs.append("--with-shared") - if self.parent.values[3] == 1 and self.parent.values[13] == 1 : - execargs.append("--no-cond-shared") - - if self.parent.values[5][0]>0 : - execargs.append('-x') - execargs.append('%d'%self.parent.values[5][0]) - if self.parent.values[5][1]>0: - execargs.append('-y') - execargs.append('%d'%self.parent.values[5][1]) - if self.parent.values[5][2]>0 and self.parent.values[5][3]>0: - execargs.append('-width') - execargs.append('%d'%(self.parent.values[5][2]-self.parent.values[5][0])) - execargs.append('-height') - execargs.append('%d'%(self.parent.values[5][3]-self.parent.values[5][1])) - for i in range(4): - self.parent.values[5][i]=-1 - if self.parent.values[6]>0: - execargs.append('-delay') - execargs.append('%d'%self.parent.values[6]) - execargs.append('-channels') - execargs.append('%d'%self.parent.values[7]) - execargs.append('-freq') - execargs.append('%d'%self.parent.values[8]) - execargs.append('-device') - execargs.append('%s'%self.parent.values[9]) - execargs.append('-v_quality') - execargs.append('%d'%self.parent.values[10]) - execargs.append('-s_quality') - execargs.append('%d'%self.parent.values[11]) - if self.parent.values[12] != "$DISPLAY": - execargs.append('-display') - execargs.append('%s'%self.parent.values[12]) - if self.parent.values[14] == 0: - execargs.append('--drop-frames') - execargs.append('-shared-threshold') - execargs.append('%d'%self.parent.values[15]) - if self.parent.values[16] == 0: - execargs.append('--quick-subsampling') - - - #print execargs - - self.rmdPid=os.fork() - - if self.rmdPid==0: - res=os.execvp("recordmydesktop",execargs) - else: - self.timed_id=gobject.timeout_add(1000,self.__check_status__) - - - def __exit_status_dialog(self,status): - dialog = gtk.Dialog(title=None, parent=None, flags=0, buttons=None) - label1=None - try: - label1 = gtk.Label("\t\tRecording is finished.\nrecordMyDesktop has exited with status %d\nDescription:%s\n"%(status,self.exit_status[int(status)])) - except: - label1 = gtk.Label("\t\tRecording is finished.\nrecordMyDesktop has exited with uknown\nerror code: %d \n"%(status)) - dialog.vbox.pack_start(label1, True, True, 0) - label1.show() - button = gtk.Button(label=None, stock=gtk.STOCK_OK) - dialog.vbox.pack_start(button, True, True, 0) - def __destroy(button): - dialog.destroy() - button.connect("clicked", __destroy) - button.show() - dialog.set_size_request(300,128) - dialog.show() - - def __pauseRMD__(self): - os.kill(self.rmdPid,signal.SIGUSR1) - - def __stopRMD__(self): - if self.timed_id!=None: - gobject.source_remove(self.timed_id) - self.timed_id=None - exit_ret=os.waitpid(self.rmdPid,os.WNOHANG) - if exit_ret[0] == 0: - os.kill(self.rmdPid,signal.SIGTERM) - exit_ret=os.waitpid(self.rmdPid,0) - #if exit_ret[0]==self.rmdPid: - #self.__exit_status_dialog(exit_ret[1]) - else: - self.__exit_status_dialog(exit_ret[1]) - self.rmdPid=None - if self.reopen==1: - self.parent.show() - self.optionsOpen[0]=1 - self.reopen=0 - - #print exit_ret - def __check_status__(self): - if self.rmdPid!=None: - exit_ret=os.waitpid(self.rmdPid,os.WNOHANG) - if exit_ret[0] != 0: - self.state=0 - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_RECORD,gtk.ICON_SIZE_SMALL_TOOLBAR) - self.__exit_status_dialog(exit_ret[1]) - self.rmdPid=None - if self.reopen==1: - self.parent.show() - self.optionsOpen[0]=1 - self.reopen=0 - return False - else: - return True - else: - return False - - - def __init__(self,parent): - self.parent=parent - #self.parent.values=values - self.event_box = gtk.EventBox() - self.trayIcon=gtk.Image() - self.trayIcon.set_from_stock(gtk.STOCK_MEDIA_RECORD, gtk.ICON_SIZE_SMALL_TOOLBAR) - self.event_box.add(self.trayIcon) - self.tray_container = egg.trayicon.TrayIcon("recordMyDesktop") - self.tray_container.add(self.event_box) - self.tray_popup=iTP.TrayPopupMenu(self.parent,self.parent.values,self.optionsOpen) - self.event_box.connect("button-press-event", self.__buttonPress__) - self.tray_container.show_all() - #gtk.main() - - - - - - - - - - diff --git a/gtk-recordmydesktop/rmdTrayPopup.py b/gtk-recordmydesktop/rmdTrayPopup.py deleted file mode 100644 index dbd1ede..0000000 --- a/gtk-recordmydesktop/rmdTrayPopup.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- Mode: Python -*- -# vi:si:et:sw=4:sts=4:ts=4 -# -# Istanbul - A desktop recorder -# Copyright (C) 2005 Zaheer Abbas Merali (zaheerabbas at merali dot org) -# Copyright (C) 2006 John N. Laliberte (allanonjl@gentoo.org) (jlaliberte@gmail.com) -# Portions Copyright (C) 2004,2005 Fluendo, S.L. (www.fluendo.com). -# All rights reserved. - - -# This file may be distributed and/or modified under the terms of -# the GNU General Public License version 2 as published by -# the Free Software Foundation. -# This file is distributed without any warranty; without even the implied -# warranty of merchantability or fitness for a particular purpose. -# See "COPYING" in the source distribution for more information. - -#gtk-recordMyDesktop - a graphical frontend for recordMyDesktop -#Copyright (C) 2006 John Varouhakis -#This file has been modified to be used in gtk-recordMyDesktop -#original file name is tray_popup.py in istanbul-0.2.1 - -import gtk -import locale, gettext -_ = gettext.gettext -import rmdSelect as iSel -import rmdPrefsWidget as pW - -class TrayPopupMenu: - options=None - def __init__(self,parent,values,optionsOpen): - self.parent=parent - self.optionsOpen=optionsOpen - self.values=values - self._setup_popup_menu() - self.selector = None - - def _setup_popup_menu(self): - self.popupmenu = gtk.Menu() - self._setup_about() - self._setup_prefs_widget() - self._setup_select_area() - self._setup_quit() - - def _prefs_widget(self,button): - if self.optionsOpen[0] ==0: - self.optionsOpen[0]=1 - #self.options=pW.prefsWidget(self.values,self.optionsOpen) - self.parent.show() - else: - #if self.options != None: - self.parent.hide() - self.optionsOpen[0]=0 - def _setup_prefs_widget(self): - self.popupmenu_prefs_widget = gtk.ImageMenuItem( - gtk.STOCK_PREFERENCES) - self.popupmenu_prefs_widget.connect('activate', self._prefs_widget) - self.popupmenu.add(self.popupmenu_prefs_widget) - - def _setup_about(self): - self.popupmenu_aboutitem = gtk.ImageMenuItem(gtk.STOCK_ABOUT) - self.popupmenu_aboutitem.connect('activate', self._about) - self.popupmenu.add(self.popupmenu_aboutitem) - - def _about(self, button): - aboutdialog = gtk.AboutDialog() - aboutdialog.set_name(_('gtk-recordMyDesktop')) - aboutdialog.set_version("0.2.1") - aboutdialog.set_comments(_('a graphical frontend for recordMyDesktop')) - aboutdialog.set_copyright(_('Copyright (C) John Varouhakis\nPortions Copyright (C) 2005-6 Zaheer Abbas Merali, John N. Laliberte\nPortions Copyright (C) Fluendo S.L.')) - aboutdialog.set_authors(['recordMyDesktop and gtk-recordMyDesktop\nis written by John Varouhakis','Portions of gtk-recordMyDesktop\nare taken from Istanbul\n(http://live.gnome.org/Istanbul)\nwritten by\nZaheer Abbas Merali and John N. Laliberte']) - aboutdialog.set_website('http://recordmydesktop.sourceforge.net') - aboutdialog.set_license('GPL-2') - aboutdialog.set_translator_credits(_('')) - aboutdialog.show_all() - - def _setup_select_area(self): - self.popupmenu_selectarea = gtk.ImageMenuItem( - _("_Select Area On Screen")) - self.popupmenu.add(self.popupmenu_selectarea) - self.popupmenu_selectarea.connect("activate", self._select_area_cb) - - def _select_area_cb(self, menuitem): - self.popupmenu.hide() - self.selector = iSel.GtkAreaSelector(self.values[5]) - self.selector.show() - - def _setup_quit(self): - self.popupmenu_quititem = gtk.ImageMenuItem(gtk.STOCK_QUIT) - self.popupmenu_quititem.connect('activate', self._quit) - self.popupmenu.add(self.popupmenu_quititem) - - def _quit(self, button): - gtk.main_quit() - - def show(self): - self.popupmenu.show_all() - self.popupmenu.popup(None, None, None, 3, gtk.get_current_event_time()) - diff --git a/gtk-recordmydesktop/setup.py b/gtk-recordmydesktop/setup.py deleted file mode 100644 index 3d32914..0000000 --- a/gtk-recordmydesktop/setup.py +++ /dev/null @@ -1,15 +0,0 @@ -from distutils.core import setup -import os,sys - -setup(author='John Varouhakis', -url='http://recordmydesktop.sourceforge.net', -author_email='johnvarouhakis@gmail.com', -description='A pyGTK frontend for recordMyDesktop', -license='GNU GENERAL PUBLIC LICENSE Version 2', -name='gtk-recordMyDesktop',version='0.2.1' , -py_modules=['rmdPrefsWidget','rmdTrayIcon','rmdSelect','rmdTrayPopup','rmdSelectThumb','rmdSimple'], -scripts=['gtk-recordMyDesktop'], -data_files=[('/usr/share/applications/',['gtk-recordmydesktop.desktop']), - ('/usr/share/pixmaps/',['gtk-recordmydesktop.png'])], -platforms='linux' ) - |