Gtkdialog Development

Under development: PCMCIA, wireless, etc.
Message
Author
User avatar
8-bit
Posts: 3406
Joined: Wed 04 Apr 2007, 03:37
Location: Oregon

#256 Post by 8-bit »

I did a bit to get this to work.
But It would need two functions to select the directory and the mask to use.

It may already have been done and no one has shown an example using the fileselect widget. When I get the functions competed, I may share it.

Code: Select all

#! /bin/sh
#This is how far I got creating a masked file list.
# If one adds an entry box to select the directory and another to select the mask with variables, they can be 
#passed to a function that writes a masked selection to /tmp/myfiles.txt
#This is only a start, and with a file mask widget, one would not have to jump through hoops to display
# a masked file list.




GTKDIALOG=gtkdialog
cd /root/examples #select the directory
ls t* >/tmp/myfiles.txt #pick mask to use with ls
window_width=300
icon_names=(echo $(</tmp/myfiles.txt))

lstCreate() {
      echo '<list>'
      for ((y = 0; y < 15; y++)); do
         i=$((x*15*2+y*2+1))
         echo '<item>"'${icon_names[$i]}'"</item>'
         
      done
      echo '</list>'
}

export lstCreate
export MAIN_DIALOG='
<window title="File MASK Test" width-request="'$window_width'"
   border-width="0" resizable="false">
   <hbox>
         '"$(lstCreate)"'
   </hbox>
</window>
'
gtkdialog3 -p MAIN_DIALOG

User avatar
01micko
Posts: 8741
Joined: Sat 11 Oct 2008, 13:39
Location: qld
Contact:

#257 Post by 01micko »

zigbert wrote: Mick, uhhhmmmm......... :lol:
You missed something important. The labels in your screenshot are limited to the gtk-stock labels. ie. Pmusic uses its own definition of 'Undo' --> 'Go back in playlist history'.

All this is of course fixed in Pmusic 2.0.1 :)


Sigmund
Doh! yes.. thickness disease.. :P

i got it now though.. this is a case where -ltr is useful ..
Attachments
got-it.png
(6.33 KiB) Downloaded 700 times
Puppy Linux Blog - contact me for access

jpeps
Posts: 3179
Joined: Sat 31 May 2008, 19:00

#258 Post by jpeps »

8-bit wrote: It may already have been done and no one has shown an example using the fileselect widget. When I get the functions competed, I may share it.
http://murga-linux.com/puppy/viewtopic. ... &start=214

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#259 Post by thunor »

01micko wrote:Doh! yes.. thickness disease.. :P

i got it now though.. this is a case where -ltr is useful ..
Mick

Can you show me the code for those two menuitems please. I'm just interested to know what you are doing with "-ltr".

Regards,
Thunor

User avatar
01micko
Posts: 8741
Joined: Sat 11 Oct 2008, 13:39
Location: qld
Contact:

#260 Post by 01micko »

Thunor.. you just caught me! (off to bed)

here is my hack: (due respect to Sigmund)

Code: Select all

<menuitem icon="gtk-undo-ltr" accel-key="0x07a" accel-mods="4">
  <label>'$LOC118'</label>
  <action>. '$APPDIR'/func -undo</action>
  <action>refresh:PLAYLIST</action>
 </menuitem>
 <menuitem icon="gtk-redo-ltr" accel-key="0x079" accel-mods="4">
  <label>'$LOC119'</label>
  <action>. '$APPDIR'/func -redo</action>
  <action>refresh:PLAYLIST</action>
 </menuitem>'
Make sense?

Cheers.. :)
Puppy Linux Blog - contact me for access

User avatar
8-bit
Posts: 3406
Joined: Wed 04 Apr 2007, 03:37
Location: Oregon

#261 Post by 8-bit »

In my case, "Severe case of thickness disease" :oops:
Or "My brain must have went on vacation." :oops:

But after looking closely at the code in the Fileselect example,
the light showed through and I got my brain back! :)

User avatar
zigbert
Posts: 6621
Joined: Wed 29 Mar 2006, 18:13
Location: Valåmoen, Norway
Contact:

#262 Post by zigbert »

The latest gtkdialog has changed the behavior of the fileselect function. Before I go through all my scripts, I will ensure that this is intended behavior or an issue for gtkdialog.

The following code used to work, but now it fails because of the line <action>refresh:SEARCHPATHS</action> which is not necessary, and leads to no action of the fileseletion.

Code: Select all

     <hbox>
      <entry accept="directory">
       <variable>SEARCHPATHS</variable>
       <input>echo '$SEARCHPATHS'</input>
      </entry>
      <button>
       <input file stock="gtk-open"></input>
       <action type="fileselect">SEARCHPATHS</action>
       <action>refresh:SEARCHPATHS</action>
      </button>
     </hbox>
Could this be solved in gtkdialog to keep backwards compatibility, or should I update my scripts?


Regards
Sigmund

btw, what exactly does the -ltr mean?

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#263 Post by thunor »

zigbert wrote:The latest gtkdialog has changed the behavior of the fileselect function.
...
btw, what exactly does the -ltr mean?
Investigating...

Internationalisation: left-to-right and right-to-left writing.

Mick's menuitems are wrong as you're probably aware. I'll break the bad news to him when he wakes up ;)

Regards,
Thunor

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#264 Post by thunor »

Sigmund

Unfortuntely it's not a complete working example so I'll have to guess what you are doing.

I think that you are using the shell variable $SEARCHPATHS at XML construction time to initialise the entry widget with saved data from a previous session.

Then you press the button to select a file which will be auto-inserted into the entry widget and then you refresh the entry widget with whatever value was in the shell variable $SEARCHPATHS at XML construction time!

It does what is expected, but the unnecessary refresh is wiping out the filename from the fileselect function.

Regards,
Thunor

User avatar
8-bit
Posts: 3406
Joined: Wed 04 Apr 2007, 03:37
Location: Oregon

#265 Post by 8-bit »

thunor,
run this from a terminal with the updated gtkdialog3.
enter a directory path and after clicking open and then click cancel twice. You will see that $SEARCHPATHS returns a null string.
Then try it with the original gtkdialog3 and you will see $SEARCHPATHS has a string.

Code: Select all

#! /bin/bash
export MAIN_DIALOG='
     <hbox>
      <entry accept="directory">
       <variable>SEARCHPATHS</variable>
       <input>echo '$SEARCHPATHS'</input>
      </entry>
      <button>
       <input file stock="gtk-open"></input>
       <label>open</label>
       <action type="fileselect">SEARCHPATHS</action>
       <action>refresh:SEARCHPATHS</action>
      </button>
      <button cancel></button>
     </hbox>
'

gtkdialog3 --program=MAIN_DIALOG

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#266 Post by thunor »

Looking now...

User avatar
zigbert
Posts: 6621
Joined: Wed 29 Mar 2006, 18:13
Location: Valåmoen, Norway
Contact:

#267 Post by zigbert »

Thunor
Sorry that I didn't gave you an executable example. I'll put that in mind.

But you got it right, and I understand your explanation, - it's just that (as 8-bit shows) it used to work, but not anymore......

I'll start updating my scripts......


Thank you
Sigmund

User avatar
8-bit
Posts: 3406
Joined: Wed 04 Apr 2007, 03:37
Location: Oregon

#268 Post by 8-bit »

zigbert,
I may not have got everything right trying to create an executable script from your example, but I tried.
Anyway, since I kept a copy of the old gtkdialog3 and renamed it "old_gtkdialog3" in /usr/sbin all I had to do was change the gtkdialog3 at the end of the script to old_gtkdialog3 to check with the old version.

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#269 Post by thunor »

I now know why that worked, but I fixed it back r219.

There are some fundamental functions that were bugged (they weren't reentrant) and this resulted in iterating through a list of actions being prematurely terminated. In your example using the old gtkdialog3 0.7.20 Patriot Edition, the refresh action wouldn't get executed because the fileselect function would terminate the action list.

Place "<action>echo This fails to execute</action>" below the fileselect action and you'll see that now it gets executed but before it wouldn't. Making the functions reentrant stopped the corruption of the action list.

Regards,
Thunor

User avatar
zigbert
Posts: 6621
Joined: Wed 29 Mar 2006, 18:13
Location: Valåmoen, Norway
Contact:

#270 Post by zigbert »

I have updated my scripts, so this should now be an unexisting issue.

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#271 Post by thunor »

Added tree widget support for inserting stock or theme icons from an input file

From issue 8.

Example:

Code: Select all

#!/bin/sh

# NOTE: This example requires at least gtkdialog-0.7.21 (please visit
# http://code.google.com/p/gtkdialog/). Additionally if you are using
# Puppy Linux then you may find that an historical version of gtkdialog
# already exists in /usr/sbin, and if that is the case then you should
# modify the shell variable below to point to the new gtkdialog binary.

GTKDIALOG=gtkdialog

inputfilestockCreate() {
   echo "gtk-dialog-authentication | | gtk-dialog-authentication | 2
		gtk-dialog-error | | gtk-dialog-error | 2
		gtk-dialog-info | | gtk-dialog-info | 2
		gtk-dialog-question | | gtk-dialog-question | 2
		gtk-dialog-warning | | gtk-dialog-warning | 2
		gtk-info | | gtk-info | 2
		gtk-new | | gtk-new | 2
		gtk-save | | gtk-save | 2
		gtk-undo | | gtk-undo | 2
		gtk-redo | | gtk-redo | 2
		gtk-open | | gtk-open | 2
		gtk-about | | gtk-about | 2
		gtk-add | | gtk-add | 2
		gtk-apply | | gtk-apply | 2
		gtk-bold | | gtk-bold | 2 " > inputfilestock
}

# NOTE: The following image names should hopefully represent physical
# files that exist upon your computer minus their paths and extensions,
# but if you find them to be missing then substitute them with something
# that you do have within /usr/share/icons or /usr/share/pixmaps.

inputfileiconCreate() {
	echo "gimp | | gimp | 2
		gnumeric | | gnumeric | 2
		geany | | geany | 2
		glade-3 | | glade-3 | 2
		uget-icon | | uget-icon | 2
		viewnior | | viewnior | 2
		xarchive | | xarchive | 2
		scribus | | scribus | 2
		inkscape | | inkscape | 2
		html | | html | 2
		gz | | gz | 2
		top | | top | 2
		midori | | midori | 2
		adblock | | adblock | 2
		abiword | | abiword | 2 " > inputfileicon
}

inputfilestockCreate
inputfileiconCreate

export MAIN_DIALOG='
<window title="tree widget icons from input files" resizable="false">
	<vbox>
		<hbox>
			<frame Stock icons from input file>
				<tree>
					<variable>tre0</variable>
					<label>0 | 1 | 2</label>
					<height>400</height><width>250</width>
					<input file stock_column="0">inputfilestock</input>
				</tree>
			</frame>
			<frame Theme icons from input file>
				<tree>
					<variable>tre1</variable>
					<label>0 | 1 | 2</label>
					<height>400</height><width>250</width>
					<input file icon_column="0">inputfileicon</input>
				</tree>
			</frame>
		</hbox>
		<hbox homogeneous="true">
			<button ok></button>
		</hbox>
	</vbox>
	<action signal="hide">exit:Exit</action>
</window>
'

$GTKDIALOG --program=MAIN_DIALOG
Regards,
Thunor
Last edited by thunor on Tue 30 Aug 2011, 21:13, edited 1 time in total.

User avatar
01micko
Posts: 8741
Joined: Sat 11 Oct 2008, 13:39
Location: qld
Contact:

#272 Post by 01micko »

thunor wrote:[snip]

Mick's menuitems are wrong as you're probably aware. I'll break the bad news to him when he wakes up ;)

Regards,
Thunor
Really? [ :lol: ]

Guess I'll see the right way when I get pmusic-2.0.1 :wink:

Cheers!
Puppy Linux Blog - contact me for access

User avatar
thunor
Posts: 350
Joined: Thu 14 Oct 2010, 15:24
Location: Minas Tirith, in the Pelennor Fields fighting the Easterlings
Contact:

#273 Post by thunor »

01micko wrote:Really? [ :lol: ]

Guess I'll see the right way when I get pmusic-2.0.1 :wink:
I'm not focusing primarily on you here OK, but I may as well illustrate how it is recommended to be implemented for the benefit of anyone and everyone.

This is your method:

Code: Select all

<menuitem icon="gtk-undo-ltr" accel-key="0x07a" accel-mods="4">
	<label>'$LOC118'</label>
	<action>. '$APPDIR'/func -undo</action>
	<action>refresh:PLAYLIST</action>
</menuitem>
<menuitem icon="gtk-redo-ltr" accel-key="0x079" accel-mods="4">
	<label>'$LOC119'</label>
	<action>. '$APPDIR'/func -redo</action>
	<action>refresh:PLAYLIST</action>
</menuitem>'
This is the more suitable method:

Code: Select all

<menuitem stock="gtk-undo" label="'$LOC118'" accel-key="0x07a" accel-mods="4">
	<action>. '$APPDIR'/func -undo</action>
	<action>refresh:PLAYLIST</action>
</menuitem>
<menuitem stock="gtk-redo" label="'$LOC119'" accel-key="0x079" accel-mods="4">
	<action>. '$APPDIR'/func -redo</action>
	<action>refresh:PLAYLIST</action>
</menuitem>'
Doing it this way makes GTK+ deal with the left-to-right and right-to-left internationalisation of the icons if applicable. You might be thinking that this isn't going to work because GTK+ will make a stock label "_Undo" and it will, but straight afterwards it will update the label with $LOC118 or $LOC119 and additionally because it was initially a stock label, "use-underline" is already true so you can use underscores in your custom text.

Actually I think that this qualifies as a Gtkdialog Tip :D

Regards,
Thunor
Attachments
01micko-menuitem-icon-issue.gif
I added underscores to demonstrate that &quot;use-underline&quot; is automatically true
(11.06 KiB) Downloaded 1457 times

User avatar
01micko
Posts: 8741
Joined: Sat 11 Oct 2008, 13:39
Location: qld
Contact:

#274 Post by 01micko »

I'm not focusing primarily on you here OK, but I may as well illustrate how it is recommended to be implemented for the benefit of anyone and everyone.
:) It's all good.. every bit I learn is great. ..and thanks for the explanation.

Cheers
Puppy Linux Blog - contact me for access

User avatar
zigbert
Posts: 6621
Joined: Wed 29 Mar 2006, 18:13
Location: Valåmoen, Norway
Contact:

#275 Post by zigbert »

I have updated some tricks (and removed some not needed anymore) in the tips thread. Also linked more to Thunors pages.

I tested the new notebook example which has this VERY interesting feature to control the tabs from external wigdets like buttons... With tabs hidden, it really looks like a dynamic gui.

Code: Select all

<notebook show-tabs="false" show-border="false"> 
But when running the example here, the tabs still shows up.

Image


Sigmund

Post Reply