Gtkdialog Development

Under development: PCMCIA, wireless, etc.
Message
Author
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

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#276 Post by BarryK »

Guys,
I'm pissed off. It is nice that gtkdialog is getting developed, but I was caught unawares.

Ok, there was the bug with password-entry box having invisible text, only two apps needed to be fixed. Although, I still don't see why the original syntax couldn't have continued to be supported.

I released Wary Puppy 5.1.4 a couple of days ago, then yesterday I discovered that Pfind is broken, as the directory-select dialog is broken. I informed zigbert, and he finds the bug and then informs me that this means Pburn, Pmirror and Pbackup are also broken.

Ok, I will bring out an emergency upgrade to Wary Puppy, but I'm not happy.

The 'common' repo currently has gtkdialog revision 224, and that's it. I'm not going to upgrade. If you bring out strict bugfixes for that, fine. Any further development should be in a separate development thread. All apps that are to be publicaly released should be tested to work on the reference gtkdialog as available in the 'common' repo at ibiblio.org.

I don't intend to upgrade gtkdialog again unless there is a very good reason to do so, nor will I upgrade any more apps that use gtkdialog unless they are tested against that version of gtkdialog.
[url]https://bkhome.org/news/[/url]

User avatar
frafa
Posts: 10
Joined: Thu 04 Aug 2011, 14:48
Location: MONTPELIER
Contact:

#277 Post by frafa »

@zigbert
Hi
in the example of Thunor only primary tabs are hidden

A simpler example hidden tabs

Code: Select all

#!/bin/bash
export MAIN_DIALOG='<vbox>
<notebook show_tabs="false" page="0" labels="One|Two|Three|Four">

<!-- Tab1 -->
<hbox>
<text label="This is page 0"></text>
</hbox>

<!-- Tab2 -->
<hbox>
<text label="This is page 1"></text>
</hbox>

<!-- Tab3 -->
<hbox>
<text label="This is page 2"></text>
</hbox>

<!-- Tab4 -->
<hbox>
<text label="This is page 3"></text>
</hbox>

<variable>tab_0</variable>
<input file>inputfile</input>
</notebook>

<hbox>
<vbox>
<button  image-position="0" tooltip-text="View tab 0">
<label>View tab 0</label>
<input file stock="gtk-connect"></input>
<action>echo 0 > inputfile</action>
<action>refresh:tab_0</action>
</button>

<button  image-position="0" tooltip-text="View tab 1">
<label>View tab 1</label>
<input file stock="gtk-connect"></input>
<action>echo 1 > inputfile</action>
<action>refresh:tab_0</action>
</button>

<button  image-position="0" tooltip-text="View tab 2">
<label>View tab 2</label>
<input file stock="gtk-connect"></input>
<action>echo 2 > inputfile</action>
<action>refresh:tab_0</action>
</button>

<button  image-position="0" tooltip-text="View tab 3">
<label>View tab 3</label>
<input file stock="gtk-connect"></input>
<action>echo 3 > inputfile</action>
<action>refresh:tab_0</action>
</button>
</vbox>


<vscale height_request="200" range-min="0" range-max="3" value-pos="0"  tooltip-text="vscale change d'\''onglet">
<variable>hsc0</variable>
<output file>inputfile</output>
<action>save:hsc0</action>
<action>refresh:tab_0</action>
</vscale>
</hbox>

</vbox>'
export MAIN_DIALOG="$(sed 's@<!--.*-->@@g' <<<"$MAIN_DIALOG")";
gtkdialog3 --program=MAIN_DIALOG
exit 0

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

#278 Post by zigbert »

BarryK wrote:Guys,
I'm pissed off.
You have no need to be. This is a development release, and you are the one to choose to include this code. I find it rather ambitious to include 'new' libs/backends in bugfix releases.

I have not used any new gtkdialog features in my scripts else of Pmusic 2 and the latest pprocess (because of much better performance). My intentions is to start using 0.7.21 at once it is released as stable.


Best wishes
Sigmund

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

#279 Post by zigbert »

frafa wrote:@zigbert
Hi
in the example of Thunor only primary tabs are hidden
:oops: :oops: :oops:

Is stupidity a decease :lol:


Thank you for the eureka (and welcome to the forum)
Sigmund

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

#280 Post by zigbert »

BarryK wrote:yesterday I discovered that Pfind is broken, as the directory-select dialog is broken.
Very important. The directory-select dialog is not broken. In fact it is now working. My way of adding too much lines into the xml-code was ignored by gtkdialog-0.7.20. Now my dirty lines actually executes and *ucks up the result.

MY FAULT

I think we should encourage Thunors initiative... which could give Puppy a boost.



Sigmund

disciple
Posts: 6984
Joined: Sun 21 May 2006, 01:46
Location: Auckland, New Zealand

#281 Post by disciple »

Is there a list somewhere of the changes to gtkdialog which require existing code to be updated?
Do you know a good gtkdialog program? Please post a link here

Classic Puppy quotes

ROOT FOREVER
GTK2 FOREVER

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

#282 Post by 01micko »

Barry, Sigmund, Thunor (et al)

The way I see it is that Pere Laszlo's s original gtkdialog is quite buggy and we have been used to coding to suit the bugs. Thankfully we have someone with the ability to fix the bugs and provide us the correct syntax to improve and enhance gtkdialog.

Sure, there is a transitional period where some things may not work as expected. We have been assured that backward compatibility is not broken.. I believe this.. it's our bad ways that are broken :wink: .

It's our responsibility as coders to fix what's not right!

I think that it's really important for Puppy's future that gtkdiaog is fixed and further developed.

This is absolutely wonderful work... and who knows (Johnny?), what (Willy?), else (Matty?) might come of it? [subliminal message intended :P ]

Cheers :)
Puppy Linux Blog - contact me for access

User avatar
frafa
Posts: 10
Joined: Thu 04 Aug 2011, 14:48
Location: MONTPELIER
Contact:

#283 Post by frafa »

Hello,
Just a quick note to thank for all the work Thunor
that it is to debug and develop gtkdialog
Through his work we have a tool that will help make advanced interfaces

Miles thank you for all that work:)
and sorry for my broken English ...
François

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#284 Post by BarryK »

zigbert wrote:
BarryK wrote:yesterday I discovered that Pfind is broken, as the directory-select dialog is broken.
Very important. The directory-select dialog is not broken. In fact it is now working.
You are playing with words here. Pfind was broken, full stop. The fact that it relied on quirks in an earlier release of gtkdialog is a different matter.

From what I read awhile back, I think that thunor stated that existing scripts would be supported. So, in good faith I started to use the gtkdialog versions from SVN.

Then I got into some pressure to keep upgrading from SVN. It was not just your Pprocess, but also latest Pnethood and Wallpaper that use the new features of gtkdialog. Then I went to revision 224 when it was reported to have fixed a bug introduced in an earlier revision.

I really didn't have much choice but to use the "development version", given that app coders, not just yourself are embracing it.

Yes, I am keen to encourage thunor also, but we have so many scripts out there that use gtkdialog, and we don't know now which of them are now broken. We have only tested some apps. More changes are coming to gtkdialog at a rapid pace, so what else is going to get broken?
That is why I am stopping at revision 224.
[url]https://bkhome.org/news/[/url]

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

#285 Post by jpeps »

BarryK wrote:
zigbert wrote:Very important. The directory-select dialog is not broken. In fact it is now working.
You are playing with words here. Pfind was broken, full stop. The fact that it relied on quirks in an earlier release of gtkdialog is a different matter.
--tough bind for a developer! Recent improvements by Thunor are making gtkdialog FAR more useful in developing new apps. Hopefully it's not too difficult to update apps that relied on bugs.

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

#286 Post by zigbert »

BarryK wrote:You are playing with words here......
I am speechless.

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

#287 Post by 8-bit »

BK,
I am not speechless.
You just got carried away as did the rest of us excited by the updates to gtkdialog and the possibilities it presented.
Everyone knew when thunor started updating gtkdialog, that it could be classified as an alpha or beta version.
This normally means that testing is required.
It is also why Puppy builds normally do not include applications or utilities in their development phase.
It is also a reason why we have an older version of GTK+.
A later version from what I have heard, breaks things Puppy.

No one told you you had to use a version of gtkdialog that is under development or any of the applications that make use of the new features.

So do not jump all over everyone when something does not work right.
It is no different that posting a beta/test ISO and asking for bug feedback.
That is what is being done with gtkdialog and you also have to remember that the changes to it are not solely for Puppy's benefit as other linux OSes also use it.

I now have said my piece and will return you to the normal forum.

User avatar
BarryK
Puppy Master
Posts: 9392
Joined: Mon 09 May 2005, 09:23
Location: Perth, Western Australia
Contact:

#288 Post by BarryK »

Ok, I have implemented a solution. I certainly don't want to dampen thunor's enthusiasm. See blog post:

http://bkhome.org/blog/?viewDetailed=02455

It is easy enough for developers to call either 'gtkdialog', or test for 'gtkdialog4' and use that, so all the old scripts can carry on using 'gtkdialog3' and they will still work.
[url]https://bkhome.org/news/[/url]

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

#289 Post by 8-bit »

I have a problem with thunor's fileselect_widget example.
In the example, why can't I pass a selected directory from the folder entry to be used by the file entry?

I tried using the variable "ent3", but that did not work even though it contains the selected directory.

In other words, I am setting in /root/examples and I use directory to choose /root.
/root is now in the variable ent3.
But clicking on the file selection icon brings up the original directory /root/examples and not the selected one.

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

#290 Post by 8-bit »

This is the script I am using for insight into what I am trying to do.
In the original script "$HOME" works and is a global variable.
But replacing it with "$ent3" does not.
I think this goes along with Barry's comment of the latest gtkdialog breaking Pfind as passing the directory variable to the file button does not happen.

Evidently, what I am trying to do in this example of passing a variable from Fileselect-folder to Fileselect-File is not possible with the current gtk code it relies on. I have found information in searching the web that basically states that. So this one although no solved in it's present state is of no use and the app I was thinking about will have to be written from scratch.
EDIT: I need someone to show me what use Fileselect:directory is when I cannot pass the selected directory to either an internal variable or an outside file!
In other words, I need help understanding how this would work.

I am about to drop the whole thing as it currently is just an exercise to see if it can be done.

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.
# Modified thunor's script trying to pass the directory variable to
#  the file button so it opens in the selected directory
GTKDIALOG=gtkdialog3    ##Using latest build of gtkdialog

function funcbtnCreate() {
   echo '<button>
         <input file stock="gtk-'$2'"></input>
         <action>fileselect:ent'$1'</action>
      </button>'
}
export ent1 ent3
export MAIN_DIALOG='
<window title="Fileselect" resizable="false" width-request="500">
   <vbox>
      <vbox border-width="20" spacing="10">
         <hbox>
            <text label="folder" width-request="80"></text>
            <entry fs-title="Select an existing folder" fs-action="folder">
               <variable>ent3</variable>
            </entry>
            '"$(funcbtnCreate 3 open)"'
         </hbox>
         <hseparator></hseparator>
         <hbox>
            <text label="file" width-request="80"></text>
            <entry fs-folder="'$ent3'" fs-action="file"
               fs-filters="c*|t*"
               fs-title="Select an existing file">
               <variable>ent1</variable>
            </entry>
            '"$(funcbtnCreate 1 new)"'
         </hbox>
      </vbox>
      <hseparator></hseparator>
      <hbox homogeneous="true">
         <button ok></button>
      </hbox>
   </vbox>
   <action signal="hide">exit:Exit</action>
</window>
'

$GTKDIALOG --center --program=MAIN_DIALOG
Last edited by 8-bit on Sat 03 Sep 2011, 23:31, edited 2 times in total.

Post Reply