Learning gtkDialog (pmenu project)
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Learning gtkDialog (pmenu project)
Continuing work on an updated pmenu...
pmenu-3.0.0.pet
The pet for 3.0.0 REQUIRES /usr/bin/switch2 from gtk-theme-switch-i386.pet.
Using the image preview technique developed by zigbert you can now see the icons for each menu item.
(Page 28 of the Gtkdialog - tips thread)
To edit the .desktop files the program now calls "defaulttexteditor" instead of "geany" directly.
I've also included the "Exec" path information as suggested by big_bass.
Next update will include a confirmation dialog for the Full, Empty, and Delete Item buttons. I think these are drastic actions and should require a confirmation.
I am also still planning the ability to directly edit the .desktop files from the program in the future, as long as it doesn't slow it down too much.
Also playing around with the idea of sorting the items by category instead of alphabetically...
Jeff
pmenu-3.0.0.pet
The pet for 3.0.0 REQUIRES /usr/bin/switch2 from gtk-theme-switch-i386.pet.
Using the image preview technique developed by zigbert you can now see the icons for each menu item.
(Page 28 of the Gtkdialog - tips thread)
To edit the .desktop files the program now calls "defaulttexteditor" instead of "geany" directly.
I've also included the "Exec" path information as suggested by big_bass.
Next update will include a confirmation dialog for the Full, Empty, and Delete Item buttons. I think these are drastic actions and should require a confirmation.
I am also still planning the ability to directly edit the .desktop files from the program in the future, as long as it doesn't slow it down too much.
Also playing around with the idea of sorting the items by category instead of alphabetically...
Jeff
Last edited by afishe2000 on Mon 20 Sep 2010, 08:08, edited 6 times in total.
Re: Learning gtkDialog (pmenu project)
afishe2000,
That looks quite nice. You may find that changing the occurrences of "EDITPATH = X" to "EDITPATH=X" (remove the spaces on either side of the "=" sign) would fix your problems.
Cheers,
s
That looks quite nice. You may find that changing the occurrences of "EDITPATH = X" to "EDITPATH=X" (remove the spaces on either side of the "=" sign) would fix your problems.
Cheers,
s
Hi afishe2000
I agree with seaside.. when defining a variable don't put spaces either side of the "=". Different story when testing the condition of that variable of course.
What I normally do, for most actions (depends on complexity) inside the gtkdialog, is define a function before the gtkdialog.
Here is an extremely simple example I made some time ago:
In this way, much more complex actions can be used.
Cheers
I agree with seaside.. when defining a variable don't put spaces either side of the "=". Different story when testing the condition of that variable of course.
What I normally do, for most actions (depends on complexity) inside the gtkdialog, is define a function before the gtkdialog.
Here is an extremely simple example I made some time ago:
Code: Select all
#!/bin/bash
#funtion to find and move clock skin
function INSTALL(){
CLOCK_PATH=`grep '*.png' $CLOCKSKIN | cut -d '/' -f2`
mv $CLOCKSKIN /usr/local/pwidgets/widgets/clock_skins/$CLOCK_PATH 2>/dev/null
}
export -f INSTALL
export CLOCK="
<window title=\"Clockskin Installer\">
<vbox>
<text><label>\"Drag a clockskin to the box\"</label></text>
<entry>
<variable>CLOCKSKIN</variable>
<action>echo $CLOCKSKIN</action>
</entry>
<hbox>
<button>
<input file stock=\"gtk-ok\"></input>
<label>\"OK\"</label>
<action>INSTALL</action>
<action>EXIT:ok</action>
</button>
</hbox>
</vbox>
</window>
"
gtkdialog3 -p CLOCK
unset CLOCK
Cheers
Puppy Linux Blog - contact me for access
Environment variables do not seem to work for some reason - at least I've never been able to get them to work.
Here is the lazy solution: disable the edit button for removed items.
Also, checkout LxShortcut for editing .desktop files. http://sourceforge.net/projects/lxde/files/
Here is the lazy solution: disable the edit button for removed items.
Also, checkout LxShortcut for editing .desktop files. http://sourceforge.net/projects/lxde/files/
Code: Select all
#!/bin/bash
#created trapster March 2009 for Puppy 4.00, GPL
#fix by Jemimah to not require GUI reloads april 2010
#edited by afishe200 to format side by side and include simple editing jul 2010
#finds all items currently listed in the menu...
/usr/local/pmenu/current_list.sh #writes to /usr/local/pmenu/current_list.txt
#finds all items removed from the menu
/usr/local/pmenu/removed_list.sh #writes to /usr/local/pmenu/removed
export PMENU="
<window title=\"Menu and Item Editor\" icon-name=\"gtk-about\">
<hbox>
<frame Current Menu Items>
<table>
<height>300</height>
<width>300</width>
<variable>TREE1</variable>
<input>cat /usr/local/pmenu/current_list.txt</input>
<action type=\"enable\">REMOVE1</action>
<action type=\"disable\">ADD1</action>
<action type=\"enable\">EDIT1</action>
<action>Clear:TREE2</action>
<action>Refresh:TREE2</action>
</table>
</frame>
<vbox>
<button sensitive=\"false\">
<label> Remove </label>
<variable>REMOVE1</variable>
<action>/usr/local/pmenu/remove_item.sh \$TREE1</action>
<action>/usr/local/pmenu/current_list.sh</action>
<action>/usr/local/pmenu/removed_list.sh</action>
<action>Clear:TREE1</action>
<action>Refresh:TREE1</action>
<action>Clear:TREE2</action>
<action>Refresh:TREE2</action>
</button>
<button sensitive=\"false\">
<label> Add </label>
<variable>ADD1</variable>
<action>/usr/local/pmenu/add_item.sh \$TREE2</action>
<action>/usr/local/pmenu/current_list.sh</action>
<action>/usr/local/pmenu/removed_list.sh</action>
<action>Clear:TREE1</action>
<action>Refresh:TREE1</action>
<action>Clear:TREE2</action>
<action>Refresh:TREE2</action>
</button>
<button sensitive=\"false\">
<label> Edit </label>
<variable>EDIT1</variable>
<action>lxshortcut -i /usr/share/applications/\$TREE1 -o /usr/share/applications/\$TREE1</action>
</button>
<button>
<label>Refresh Menu</label>
<action>fixmenus</action>
</button>
</vbox>
<frame Removed Menu Items>
<table>
<width>300</width>
<variable>TREE2</variable>
<variable>EDIT0</variable>
<input>cat /usr/local/pmenu/removed_list.txt</input>
<action type=\"disable\">REMOVE1</action>
<action type=\"enable\">ADD1</action>
<action type=\"disable\">EDIT1</action>
<action>Clear:TREE1</action>
<action>Refresh:TREE1</action>
</table>
</frame>
</hbox>
</window>
"
RETPARAMS="`gtkdialog3 --program=PMENU`"
#echo "$RETPARAMS"
exit
eval "$RETPARAMS"
###END###
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Cool. If you make any further improvements let me know as I'm going to put the new version into Puppeee.
If you're looking for a second project, it would be good to combine the Xorg Scaling Wizard, and the Xorg Panning Wizard into one wizard as discussed here: http://pupweb.org/cgi-bin/yabb2/YaBB.pl?num=1276937129. There's a lot of potential for usability improvements.
If you're looking for a second project, it would be good to combine the Xorg Scaling Wizard, and the Xorg Panning Wizard into one wizard as discussed here: http://pupweb.org/cgi-bin/yabb2/YaBB.pl?num=1276937129. There's a lot of potential for usability improvements.
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Creating global variables in gtkdialog (pass through a file)
In the middle of re-reading the gtkdialog-tips thread.
In gtkdialog global variables are really constants.
The only way to pass variables is through a file.
Example:
Lots to learn...
Jeff
In gtkdialog global variables are really constants.
The only way to pass variables is through a file.
Example:
Code: Select all
#!/bin/sh
add() {
N=$(cat /tmp/number)
let N=N+1
echo $N
echo $N >/tmp/number
}
export -f add
echo 0>/tmp/number
export MAIN_DIALOG='
<vbox width-request="160">
<text visible="true"><variable>TEXT</variable>
<input>add</input></text>
<button>
<label>Reset</label>
< action>refresh:TEXT</action>
</button>
<button>
<label>Reset</label>
<action>echo -1>/tmp/number</action>
<action>refresh:TEXT</action>
</button>
<button cancel></button>
</vbox>
'
gtkdialog3 -c -p MAIN_DIALOG
unset -f add
unset MAIN_DIALOG
Jeff
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Basic problem solved, you can now edit from either table.
I'll continue to work with it. I'd like to have a integrated editor.
I would also like the right table deselected if the left is selected and vice versa.
Odd thing with the IF statement:
- Tried \$switch_Position instead of \$(cat /tmp/switch) - didn't work
- Tried [ \$(cat /tmp/switch) ] instead of [ \$(cat /tmp/switch) = true ] - didn't work
Still lots to learn...
I'll continue to work with it. I'd like to have a integrated editor.
I would also like the right table deselected if the left is selected and vice versa.
Odd thing with the IF statement:
- Tried \$switch_Position instead of \$(cat /tmp/switch) - didn't work
- Tried [ \$(cat /tmp/switch) ] instead of [ \$(cat /tmp/switch) = true ] - didn't work
Still lots to learn...
Code: Select all
#!/bin/bash
#created trapster March 2009 for Puppy 4.00, GPL
#fix by Jemimah to not require GUI reloads april 2010
#edited by afishe200 to format side by side and include simple editing jul 2010
#finds all items currently listed in the menu...
/usr/local/pmenu/current_list.sh #writes to /usr/local/pmenu/current_list.txt
#finds all items removed from the menu
/usr/local/pmenu/removed_list.sh #writes to /usr/local/pmenu/removed
switch_Position() {
N=$(cat /tmp/switch)
echo $N
}
switch_On() {
echo true >/tmp/switch
}
switch_Off() {
echo false >/tmp/switch
}
export -f switch_Position
export -f switch_On
export -f switch_Off
export PMENU="
<window title=\"Puppy Menu and Item Editor\" icon-name=\"gtk-about\">
<hbox height-request=\"450\">
<frame Current Menu Items >
<table>
<variable>TREE_0</variable>
<input>cat /usr/local/pmenu/current_list.txt</input>
<action>switch_On</action>
<action type=\"enable\">REMOVE_BUTTON</action>
<action type=\"disable\">ADD_BUTTON</action>
<action type=\"enable\">EDIT_BUTTON</action>
</table>
</frame>
<vbox>
<hbox height-request=\"20\">
<text visible = \"false\">
</text>
</hbox>
<button sensitive=\"false\">
<label> Remove </label>
<variable>REMOVE_BUTTON</variable>
<action>/usr/local/pmenu/remove_item.sh \$TREE_0</action>
<action>/usr/local/pmenu/current_list.sh</action>
<action>/usr/local/pmenu/removed_list.sh</action>
<action>Clear:TREE_0</action>
<action>Refresh:TREE_0</action>
<action>Clear:TREE_1</action>
<action>Refresh:TREE_1</action>
</button>
<button sensitive=\"false\">
<label> Add </label>
<variable>ADD_BUTTON</variable>
<action>/usr/local/pmenu/add_item.sh \$TREE_1</action>
<action>/usr/local/pmenu/current_list.sh</action>
<action>/usr/local/pmenu/removed_list.sh</action>
<action>Clear:TREE_0</action>
<action>Refresh:TREE_0</action>
<action>Clear:TREE_1</action>
<action>Refresh:TREE_1</action>
</button>
<hbox height-request=\"20\">
<text visible = \"false\">
</text>
</hbox>
<button sensitive=\"false\">
<label> Edit </label>
<variable>EDIT_BUTTON</variable>
<action>if [ \$(cat /tmp/switch) = true ]; then geany /usr/share/applications/\$TREE_0; else geany /usr/local/pmenu/removed/\$TREE_1; fi</action>
</button>
<hbox height-request=\"20\">
<text visible = \"false\">
</text>
</hbox>
<button>
<label>Refresh Menu</label>
<action>fixmenus</action>
</button>
</vbox>
<frame Removed Menu Items >
<table>
<variable>TREE_1</variable>
<input>cat /usr/local/pmenu/removed_list.txt</input>
<action>switch_Off</action>
<action type=\"disable\">REMOVE_BUTTON</action>
<action type=\"enable\">ADD_BUTTON</action>
<action type=\"enable\">EDIT_BUTTON</action>
</table>
</frame>
</hbox>
</window>
"
gtkdialog3 -c --program=PMENU
unset PMENU
unset -f switch_On
unset -f switch_Off
unset -f switch_Position
rm /tmp/switch
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Continuing work and adding extra capabilities.
I've edited the first post to include a current screen shot and a download to the current program.
Jeff
I've edited the first post to include a current screen shot and a download to the current program.
Jeff
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
jemimah,
Easy to do, was brainstorming but separating makes much more sense.
I have a list of things that I modify to make puppeee look and work like I want it to. I'm just programming to make it easier to make all those modifications.
I'm always looking for hints and FAQs to make my computers work better for me.
Thanks again,
Jeff
Easy to do, was brainstorming but separating makes much more sense.
I have a list of things that I modify to make puppeee look and work like I want it to. I'm just programming to make it easier to make all those modifications.
I'm always looking for hints and FAQs to make my computers work better for me.
Thanks again,
Jeff
Modifications.txt
- You can edit /usr/share/icewm/toolbar to remove programs from the toolbar
//
prog "Eee-Control" netbook-pc eee-control
prog "Rover SpeedLaunch (Alt-Space)" emblem-system rover_run
//
- You can delete programs from /root/Startup that you don't want in the notification area
//
delete freememapplet_tray
delete network_tray
delete traytemp
delete zbluetooth-applet (NO BLUETOOTH ON MY 901)
//
- You can modify /etc/xdg/templates/_root_.icewm_menu to create a new menu system
- See /root/.icewm/menu for examples on how to add programs
//
prog "Chrome" "/opt/google/chrome/product_logo_48.png" /opt/google/chrome/google-chrome %U
separator
menu "Programs" x24 {
(OLD MENU GOES IN HERE...)
}
separator
prog "Lock" "lock48.png" /usr/local/apps/Xlock/AppRun
prog "Shutdown" "shutdown24.png" shutdown-gui
//
- You can modify /root/.icewm/preferences
--To remove Settings Menu change from 1 to 0
//
ShowSettingsMenu=0 # 0/1
//
--To change time format, reference (http://linux.die.net/man/3/strftime)
//
# Clock Time format (strftime format string)
TimeFormat="%e %b %y - %H:%M:%S"
//
--To change the MENU font
//
MenuFontNameXft="sans-serif:size=14"
//
--To change the clock font
//
ClockFontNameXft="sans-serif:size=12"
//
- You can modify application names and icons by editing .desktop files in /usr/share/applications/
- Applications that have been removed from the menu can be found in /usr/local/pmenu/removed/
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Program is moving along nicely...
I updated the first post with a new screen shot and a .pet file of the work done so far.
Currently when you click on a Menu Item it brings up the data from the .desktop file.
I've read just about every google return for gtkdialog pixmap, the gtkdialog-tips like 10 times, and tried everything under the sun but just can't get the icons file to dynamically load into a pixmap with the rest of the .desktop data...
Any help or suggestions would be very much appreciated.
Thanks,
I updated the first post with a new screen shot and a .pet file of the work done so far.
Currently when you click on a Menu Item it brings up the data from the .desktop file.
I've read just about every google return for gtkdialog pixmap, the gtkdialog-tips like 10 times, and tried everything under the sun but just can't get the icons file to dynamically load into a pixmap with the rest of the .desktop data...
Any help or suggestions would be very much appreciated.
Thanks,
afishe2000,afishe2000 wrote:Program is moving along nicely...
I've read just about every google return for gtkdialog pixmap, the gtkdialog-tips like 10 times, and tried everything under the sun but just can't get the icons file to dynamically load into a pixmap with the rest of the .desktop data...
Any help or suggestions would be very much appreciated.
Thanks,
Are you using "table"? Somewhere in the back of my mind is the idea that "tree" is necessary for pixmaps.
Hope that's it.
Cheers,
s
afishe2000,
I now see that you were not trying to put icons in the table, but next to the "Icon:" entry.
Check here
http://murga-linux.com/puppy/viewtopic. ... 928#437928
Cheers,
s
I now see that you were not trying to put icons in the table, but next to the "Icon:" entry.
Check here
http://murga-linux.com/puppy/viewtopic. ... 928#437928
Cheers,
s
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Updated the first post to pmenu-2.0.1.
Importing the icons into the edit area is killing me so integrated editing is still not complete.
You can view the .desktop properties and still edit the file using geany.
I've added the ability to run the selected program from within pmenu so you can get a better idea about the program then just the properties.
I also added the ability to delete the .desktop file if you find broken or duplicate links.
Still working on this project slowly...
Importing the icons into the edit area is killing me so integrated editing is still not complete.
You can view the .desktop properties and still edit the file using geany.
I've added the ability to run the selected program from within pmenu so you can get a better idea about the program then just the properties.
I also added the ability to delete the .desktop file if you find broken or duplicate links.
Still working on this project slowly...
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
-
- Posts: 37
- Joined: Fri 29 Jan 2010, 16:09
Refreshing a pixmap image using a button.
As I mentioned, the more I learn the less I seem to know.
I'm using to following code to try to have the pixmap change from speaker on image to the speaker off image by pushing the corresponding button.
The popup button then would open a new dialog and show that same image.
Obviously it isn't working as I'd envisioned.
Everyone has been so helpful, I feel like I just keep running into the wall every time I turn the corner...
I'm using to following code to try to have the pixmap change from speaker on image to the speaker off image by pushing the corresponding button.
The popup button then would open a new dialog and show that same image.
Obviously it isn't working as I'd envisioned.
Everyone has been so helpful, I feel like I just keep running into the wall every time I turn the corner...
Code: Select all
#!/bin/bash
echo 1 >/tmp/file_name
get_Pic() {
path="/usr/local/lib/X11/mini-icons/"
if [ $(cat /tmp/file_name) = 1 ]; then
file="mini-speaker.xpm";
else
file="mini-speaker-off.xpm";
fi
echo $path$file
}
export -f get_Pic
export NEW_DIALOG="
<vbox>
<pixmap>
<input file>$(get_Pic)</input>
</pixmap>
<text>
<input>get_Pic</input>
</text>
</vbox>
"
export MAIN_DIALOG="
<vbox>
<pixmap>
<variable>PIC</variable>
<input file>$(get_Pic)</input>
</pixmap>
<text>
<variable>NAME</variable>
<input>get_Pic</input>
</text>
<hbox>
<button>
<label>Pop-up</label>
<action type=\"launch\">NEW_DIALOG</action>
</button>
<button>
<input file>\"/usr/local/lib/X11/mini-icons/mini-speaker.xpm\"</input>
<action>\"echo 1 >/tmp/file_name\"</action>
<action>Refresh:NAME</action>
<action>Refresh:PIC</action>
</button>
<button>
<input file>\"/usr/local/lib/X11/mini-icons/mini-speaker-off.xpm\"</input>
<action>\"echo 2 >/tmp/file_name\"</action>
<action>Refresh:NAME</action>
<action>Refresh:PIC</action>
</button>
<button ok></button>
</hbox>
</vbox>
"
gtkdialog3 --program=MAIN_DIALOG
unset MAIN_DIALOG
unset NEW_DIALOG
unset get_Pic
rm /tmp/file_name
Re: Refreshing a pixmap image using a button.
afishe2000,afishe2000 wrote: I'm using to following code to try to have the pixmap change from speaker on image to the speaker off image by pushing the corresponding button.
You might be able to do something with "flip-flops" (see section 10 of the Gtkdialog Tips below)
http://murga-linux.com/puppy/viewtopic.php?t=38608
Perhaps something where the image is made invisible -
<button visible="false"> and is toggled on and off.
Cheers,
s
jemimah
well I did a chainsaw hack of afishe2000's pmenu2
I removed only the desktop editor and made it a stand alone app called
desktop_view_edit
so nothing gets touched in pmenu
*I didnt "package" it since I use TXZ format and this way anyone could test it
add the icon and desktop of your choice
@Hey afishe2000 great coding !
Joe
Personally, I think the startup item editor should be a separate program from pmenu. Otherwise I'm confused what to call it on the menu.
well I did a chainsaw hack of afishe2000's pmenu2
I removed only the desktop editor and made it a stand alone app called
desktop_view_edit
so nothing gets touched in pmenu
*I didnt "package" it since I use TXZ format and this way anyone could test it
add the icon and desktop of your choice
@Hey afishe2000 great coding !
Joe
- Attachments
-
- desktop_view_edit.tar.gz
- (1.75 KiB) Downloaded 542 times
-
- desktop_edit.png
- (40.55 KiB) Downloaded 1798 times