GTK+ Forums

Discussion forum for GTK+ and Programming. Ask questions, troubleshoot problems, view and post example code, or express your opinions.
It is currently Sat Dec 20, 2014 9:44 am

All times are UTC




Post new topic Reply to topic  [ 7 posts ] 
Author Message
 Post subject: Dialog after gtk_dialog_run can't be loaded from glade file
PostPosted: Wed Jun 04, 2008 10:52 am 
Offline
Familiar Face

Joined: Wed Jun 04, 2008 10:37 am
Posts: 16
Hi,

I am currently loading a glade file with a GtkDialog as one of the resources. I keep the GladeXML object as a global, then I get the dialog widget from the GladeXML object.

I then use gtk_dialog_run() to run the dialog, all is well in the GTK - world!

However as soon as I kill this dialog, and try to re-run the dialog I don't get a valid dialog widget from the GladeXML object anymore!

If I re-load the GladeXML every time, this is not an issue. It only seems that I should get a widget from the GladeXML every time without me re-loading the resource file every time. !?

I'm not well versed in GTK+ maybe this is intended, but I can't find documentation regarding this to confirm...

Thanks in Advance
:)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 04, 2008 4:01 pm 
Offline
Never Seen the Sunlight

Joined: Thu Jun 14, 2007 11:02 pm
Posts: 923
Location: Falun, WI USA
Your problem might be caused by calling gtk_widget_destroy on the dialog after you get the response from gtk_dialog_run.
It might be fixed by doing gtk_widget_hide instead:
Code:
gint response = gtk_dialog_run(GTK_DIALOG(dialog));
switch(response)
{
    /* handle responses */
}

/* hide the widget instead of destroying it */
gtk_widget_hide(dialog);


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 05, 2008 9:42 am 
Offline
Familiar Face

Joined: Wed Jun 04, 2008 10:37 am
Posts: 16
Appologies for the late reply...

Yes I actually removed the gtk_widget_destroy(), but it seems that gtk_dialog_run() itself my effect the initial instance of the dialog widget within the GladeXML object... Making it invalid!

Hmmm, a bit of a nuisance to be honest, this means I have to reload the glade file everytime, then query the dialog widget.

Thank you for your input any other ideas are appreciated, maybe we can resolve it, or maybe this is a bug, or like I said not sure if this is the intent of the designers of Glade/gtk ...

In any event I have started a testing application to simplify from my current architecture, a simple C app that allso keeps a global glade object, and add your suggested code as such and see if I hit jackpot ;)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 05, 2008 10:03 am 
Offline
Familiar Face

Joined: Wed Apr 02, 2008 10:53 pm
Posts: 28
Did you had a look at the doc?

[code=]Destroying the dialog during gtk_dialog_run() is a very bad idea, because your post-run code won't know whether the dialog was destroyed or not.

After gtk_dialog_run() returns, you are responsible for hiding or destroying the dialog if you wish to do so. [/code]

Did you follow the example to run your dialog:

Code:
  gint result = gtk_dialog_run (GTK_DIALOG (dialog));
  switch (result)
    {
      case GTK_RESPONSE_ACCEPT:
         do_application_specific_something ();
         break;
      default:
         do_nothing_since_dialog_was_cancelled ();
         break;
    }
  gtk_widget_destroy (dialog);



(also since you build your dialog from the glade file and not in the code, the hide option is probabli more appropriate than the destroy.)

If nothing work, you could try to build your dialog from your code and not from the gladefile. If the dialog is standard, it shouldn't be much work

Cheers

CofCof


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 05, 2008 12:26 pm 
Offline
Familiar Face

Joined: Wed Jun 04, 2008 10:37 am
Posts: 16
Thanks for the assist dudes !

Got the issue resolved.

After I wrote a small C app that does the scenario correctly.
I got down to some serious testing ;) and I found the following interesting results, if you guys are interested....

1) I did from the beginnig never use gtk_widget_destroy(), since this will destroy the actual resource instance of the widget. Both you guys have this head on, thanks ;)

2) However I never added gtk_widget_hide(), my assumption was this is not needed since the default architecture for dialog should do this. It did after a fashion, if I select the Close cross on the dialog frame the dialog did disappear, however it does destroy the dialog or sets a flag that forces it not to show again (assuming: need to write a test for this in the future maybe).

OK, so I added gtk_widget_hide() and all is well. My coding "fung-sway" is calibrated again, thanks dreblen ;)

If you wish to test yourself here's the source and glade file:


Code:
#include <stdlib.h>
#include <gtk/gtk.h>
#include <glade/glade.h>

/* I only want to load this once, not over and over, not good coding practice
   accessing filesystem unnecessarily... */
GladeXML *g_Resources = NULL;

static void popDialog(GtkWidget *wid, GtkWidget *win)
{
  GtkWidget *dialog = glade_xml_get_widget(g_Resources, "dialog_pop");

  if (!dialog)
    return;

  /* todo: need to set parent for the dialog here */

  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
  gtk_dialog_run (GTK_DIALOG (dialog));

   /* gtk_widget_destroy (dialog);        /* remove since i don't want resource destroyed ... */

  gtk_widget_hide(GTK_WIDGET(dialog));
}

int main (int argc, char *argv[])
{
  GtkWidget *button = NULL;
  GtkWidget *win = NULL;
  GtkWidget *vbox = NULL;

  /* Initialize GTK+ */
  gtk_init (&argc, &argv);

  g_Resources = glade_xml_new("myresources.glade", NULL, "res");

  if (!g_Resources)
    return 1;

  /* Create the main window */
  win = glade_xml_get_widget(g_Resources, "window_main");

  if (!win)
    return 2;

  gtk_window_set_title (GTK_WINDOW (win), "Dialog Tester");
  gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
  gtk_widget_realize (win);
  g_signal_connect (win, "destroy", gtk_main_quit, NULL);

  /* Connect our popup signal */
  button = glade_xml_get_widget (g_Resources, "button_pop_dialog");

  if (!button)
    return 3;

  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (popDialog), (gpointer) win);

  /* Enter the main loop */
  gtk_widget_show_all (win);
  gtk_main ();
  return 0;
}



The glade file is as such:

Code:
<?xml version="1.0" standalone="no"?>
<InterGraph>
  <Version>1.0</Version>
  <Theme>
    <Name>Default</Name>
    <Version>1.0</Version>
  </Theme>
  <Window>
    <Height>0x0000016F</Height>
    <Width>0x0000023F</Width>
  </Window>
  <Controls>
    <Buttons>
      <Bitmap>defbt.bmp</Bitmap>
      <HoverBitmap>defbf.bmp</HoverBitmap>
      <TextColor>0xff000000</TextColor>
      <HoverTextColor>0xff000000</HoverTextColor>
    </Buttons>
  </Controls>
  <Font>
    <Name>Arial</Name>
    <Size>0x0000000a</Size>
    <Italic>0x00000000</Italic>
    <Bold>0x00000000</Bold>
    <Underline>0x00000000</Underline>
  </Font>
  <Charts>
    <LeftAxis>
      <Color>
        <Title>0xff000000</Title>
        <TitleBG>0xfffffffe</TitleBG>
        <Axis>0xfffffffe</Axis>
        <AxisBG>0xfffffffe</AxisBG>
      </Color>
      <Grid>0x00000001</Grid>
      <LogScale>0x00000001</LogScale>
    </LeftAxis>
    <RightAxis>
      <Color>
        <Title>0xff000000</Title>
        <TitleBG>0xfffffffe</TitleBG>
        <Axis>0xfffffffe</Axis>
        <AxisBG>0x00ffcece</AxisBG>
      </Color>
      <Grid>0x00000001</Grid>
      <LogScale>0x00000001</LogScale>
    </RightAxis>
    <HorzAxis>
      <Color>
        <Title>0xff000000</Title>
        <TitleBG>0xfffffffe</TitleBG>
        <Axis>0xfffffffe</Axis>
        <AxisBG>0xfffffffe</AxisBG>
      </Color>
      <Grid>0x00000001</Grid>
      <LogScale>0x00000001</LogScale>
    </HorzAxis>
    <Graph1>
      <Dataset1>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.0</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.0</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xecff4400</Color>
        <ColorBG>0xecff4400</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xecff5400</Color>
        <ColorBG>0xecff5400</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset4>
      <Dataset5>
        <Color>0xecff6400</Color>
        <ColorBG>0xecff6400</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset5>
      <Dataset6>
        <Color>0xecff7400</Color>
        <ColorBG>0xecff7400</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset6>
      <Dataset7>
        <Color>0xecff8400</Color>
        <ColorBG>0xecff8400</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset7>
      <Dataset8>
        <Color>0xec0044ff</Color>
        <ColorBG>0xec0044ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.8</Width>
      </Dataset8>
      <Dataset9>
        <Color>0xec0054ff</Color>
        <ColorBG>0xec0054ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.8</Width>
      </Dataset9>
      <Dataset10>
        <Color>0xec0064ff</Color>
        <ColorBG>0xec0064ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.8</Width>
      </Dataset10>
      <Dataset11>
        <Color>0xec0074ff</Color>
        <ColorBG>0xec0074ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.8</Width>
      </Dataset11>
      <Dataset12>
        <Color>0xec0084ff</Color>
        <ColorBG>0xec0084ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.8</Width>
      </Dataset12>
    </Graph1>
    <Graph2>
      <Dataset1>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff000000</Color>
        <ColorBG>0xff000000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.2</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset4>
      <Dataset5>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset5>
    </Graph2>
    <Graph3>
      <Dataset1>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff000000</Color>
        <ColorBG>0xff000000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.2</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset4>
      <Dataset5>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset5>
    </Graph3>
    <Graph4>
      <Dataset1>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff009400</Color>
        <ColorBG>0xff009400</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.2</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xe68c8c8c</Color>
        <ColorBG>0xe68c8c8c</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xff000000</Color>
        <ColorBG>0xff000000</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>1.0</Width>
      </Dataset4>
    </Graph4>
    <Graph5>
      <Dataset1>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff009400</Color>
        <ColorBG>0xff009400</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>1.2</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xe68c8c8c</Color>
        <ColorBG>0xe68c8c8c</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xff000000</Color>
        <ColorBG>0xff000000</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>1.0</Width>
      </Dataset4>
    </Graph5>
    <Graph6>
      <Dataset1>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.8</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset4>
    </Graph6>
    <Graph7>
      <Dataset1>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000000</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>0.9</Width>
      </Dataset4>
    </Graph7>
    <Graph8>
      <Dataset1>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset4>
    </Graph8>
    <Graph9>
      <Dataset1>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.8</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset4>
    </Graph9>
    <Graph10>
      <Dataset1>
        <Color>0xffff0000</Color>
        <ColorBG>0xffff0000</ColorBG>
        <Type>0x00000006</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000006</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000007</Line>
        <Width>1.0</Width>
      </Dataset4>
    </Graph10>
    <Graph11> <!-- Tick datasets -->
      <Dataset1>
        <Color>0xff000000</Color>
        <ColorBG>0xff000000</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.5</Width>
      </Dataset1>
      <Dataset2>
        <Color>0xff0000ff</Color>
        <ColorBG>0xff0000ff</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset2>
      <Dataset3>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset3>
      <Dataset4>
        <Color>0xff00ff00</Color>
        <ColorBG>0xff00ff00</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>1.5</Width>
      </Dataset4>
      <Dataset5>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset5>
      <Dataset6>
        <Color>0xffa0a0a0</Color>
        <ColorBG>0xffa0a0a0</ColorBG>
        <Type>0x00000002</Type>
        <Line>0x00000000</Line>
        <Width>0.9</Width>
      </Dataset6>
    </Graph11>
  </Charts>
  <OptionSetup>
    <Code>0x00000412</Code>
    <Grid>
      <Vert>true</Vert>
    </Grid>
    <Left>
      <Chart>0x000003FE</Chart>
      <MovAvg>0x00000411</MovAvg>
      <Studies>0x00000401</Studies>
      <Grid>
        <Horz>true</Horz>
      </Grid>
    </Left>
    <Right>
      <Chart>0x000003FE</Chart>
      <MovAvg>0x00000411</MovAvg>
      <Studies>0x00000401</Studies>
      <Grid>
        <Horz>true</Horz>
      </Grid>
    </Right>
  </OptionSetup>
  <Desktop>
    <Codes>
      <Left>
      </Left>
      <Right>
      </Right>
    </Codes>
    <Span>0x00000000</Span>
    <Interval>0x00000000</Interval>
    <Chart>
      <Type>0x00000000</Type>
      <TypeEx>0x00000000</TypeEx>
    </Chart>
    <Study>0x00000000</Study>
    <MovAvg>
      <Ma10>0x00000000</Ma10>
      <Ma25>0x00000000</Ma25>
      <Ma40>0x00000000</Ma40>
      <Ma100>0x00000000</Ma100>
      <Ma200>0x00000000</Ma200>
    </MovAvg>
  </Desktop>
</InterGraph>


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 06, 2008 12:07 am 
Offline
Familiar Face

Joined: Wed Apr 02, 2008 10:53 pm
Posts: 28
Oh yea if you close with the cross button, this will send the delete-event signal and destroy your window.

The solution is to catch the event and return TRUE:

Code:
gboolean
on_window1_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)
{
    //Let's suppose that you have a global reference to window1
    gtk_widget_hide(window1)
    return(TRUE);
}


This is very usefull for any of the windows you writing if you don't want to recreate it (and reconnect all the signals)

Cheers

Cofcof


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 06, 2008 9:31 am 
Offline
Familiar Face

Joined: Wed Jun 04, 2008 10:37 am
Posts: 16
Sound advice thanks mate ;)


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group