From: <dp...@gm...> - 2007-01-24 15:42:21
Attachments:
dpblnt.vcf
|
hi, i want to have some texts on screen, in a way that user can position them by dragging them with the mouse. i decided to use Gtk::Label-s on a Gtk::Layout. when i try to add drag-and-drop to it, it segfaults. require 'gtk2' Gtk.init @w = Gtk::Window.new @w.signal_connect('destroy'){Gtk.main_quit} @w.set_default_size(500, 500) lay=Gtk::Layout.new() l1=Gtk::Label.new("test") l1.signal_connect('drag-begin'){|me,context| print "drag-begin: ",context.inspect,"\n" } lay.put(l1,10,10) @w.add(lay) #Gtk::Drag.dest_set(lay,Gtk::Drag::DEST_DEFAULT_ALL,nil,Gdk::DragContext::ACTION_MOVE) Gtk::Drag.source_set(l1,Gdk::Window::SHIFT_MASK,nil,Gdk::DragContext::ACTION_MOVE) #@w.show_all #Gtk.main the #d lines probably don't didn't play part in the issue. i tried setting the window parameter of l1, didn't help. thanks, balint |
From: Kouhei S. <ko...@co...> - 2007-01-25 11:52:39
|
Hi, In <45B...@gm...> "[ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segmentat= ion fault" on Tue, 23 Jan 2007 15:31:56 +0200, Dobai-Pataky B=E1lint <dp...@gm...> wrote: > i want to have some texts on screen, in a way that user can position = > them by dragging them with the mouse. > i decided to use Gtk::Label-s on a Gtk::Layout. > when i try to add drag-and-drop to it, it segfaults. > #Gtk::Drag.dest_set(lay,Gtk::Drag::DEST_DEFAULT_ALL,nil,Gdk::DragCont= ext::ACTION_MOVE) > Gtk::Drag.source_set(l1,Gdk::Window::SHIFT_MASK,nil,Gdk::DragContext:= :ACTION_MOVE) You don't need to use Gtk::Drag for this. See sample/misc/drag-move.rb in Ruby/GTK2. Thanks, -- kou |
From: <dp...@gm...> - 2007-01-25 14:36:39
Attachments:
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> Kouhei Sutou wrote: <blockquote cite="mid...@co..." type="cite"> <pre wrap="">Hi, In <a class="moz-txt-link-rfc2396E" href="mailto:45B...@gm..."><45B...@gm...></a> "[ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segmentation fault" on Tue, 23 Jan 2007 15:31:56 +0200, Dobai-Pataky Bálint <a class="moz-txt-link-rfc2396E" href="mailto:dp...@gm..."><dp...@gm...></a> wrote: </pre> <blockquote type="cite"> <pre wrap="">i want to have some texts on screen, in a way that user can position them by dragging them with the mouse. i decided to use Gtk::Label-s on a Gtk::Layout. when i try to add drag-and-drop to it, it segfaults. </pre> </blockquote> <pre wrap=""><!----> </pre> <blockquote type="cite"> <pre wrap="">#Gtk::Drag.dest_set(lay,Gtk::Drag::DEST_DEFAULT_ALL,nil,Gdk::DragContext::ACTION_MOVE) Gtk::Drag.source_set(l1,Gdk::Window::SHIFT_MASK,nil,Gdk::DragContext::ACTION_MOVE) </pre> </blockquote> <pre wrap=""><!----> You don't need to use Gtk::Drag for this. See sample/misc/drag-move.rb in Ruby/GTK2. </pre> </blockquote> yeah, after i sent this mail, i have found the examples, and understood them.<br> but they are not the right solution for me, what i want to do is to have a fixed or a layout and some labels on it, and allow the user to move the labels with the mouse.<br> so i dropped the dnd, and tried another solution:<br> i have a layout<br> i put a label on it<br> i stay on label's MOTION_NOTIFY event like this:<br> signal_connect('event'){|me,event|<br> ..case of event type == MOTION_NOTIFY<br> parent.move(me,event.x,event.y)<br> }<br> <br> but this has the following problem:<br> when the first event occurs the first move is good, but that generates a new motion event, even the mouse hasn't moved, because the coordinates of the label are changed.<br> <br> for example if the label was put at 100,100<br> mouse button press at x=34.0 y=10.0<br> coo: 34.0,11.0<br> event x,y: 34.0,11.0<br> moving test text to 68.0 21.0<br> coo: 67.0,91.0<br> event x,y: 67.0,91.0<br> moving test text to 101.0 101.0<br> coo: 34.0,12.0<br> event x,y: 34.0,12.0<br> moving test text to 68.0 22.0<br> coo: 67.0,92.0<br> event x,y: 67.0,92.0<br> moving test text to 101.0 102.0<br> coo: 35.0,13.0<br> event x,y: 35.0,13.0<br> moving test text to 69.0 23.0<br> <br> and the resulting is a label <br> in every even case is around the mouse, <br> and in every odd case is somewhere at the edge of the layout.<br> <br> so unless anyone has a better idea, <br> i conclude to drop the idea of moving the label in 'realtime' <br> i rather hide the label and create a rectangle in it's place, <br> and move the rectangle , using the label's motion event (-if such thing is possible)<br> and on the button release i destroy the rectangle and show the label on the new position.<br> <br> thanks<br> balint<br> <br> <br> </body> </html> |
From: Kouhei S. <ko...@co...> - 2007-01-27 07:02:22
|
Hi, I suggest you that you show a sample script that describes what you want if you'll save our time to understand what you want. In <45B...@gm...> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segme= ntation fault" on Thu, 25 Jan 2007 16:36:29 +0200, Dobai-Pataky_B=E1lint <dp...@gm...> wrote: > You don't need to use Gtk::Drag for this. See > sample/misc/drag-move.rb in Ruby/GTK2. > = > yeah, after i sent this mail, i have found the examples, and understo= od them. > but they are not the right solution for me, what i want to do is to h= ave a > fixed or a layout and some labels on it, and allow the user to move t= he labels > with the mouse. I think the example shows a hint for what you want to do... Anyway, what about sample/misc/dnd.rb? Thanks, -- kou |
From: <dp...@gm...> - 2007-01-27 09:43:05
Attachments:
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> Kouhei Sutou wrote: <blockquote cite="mid...@co..." type="cite"> <pre wrap="">Hi, I suggest you that you show a sample script that describes what you want if you'll save our time to understand what you want. In <a class="moz-txt-link-rfc2396E" href="mailto:45B...@gm..."><45B...@gm...></a> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segmentation fault" on Thu, 25 Jan 2007 16:36:29 +0200, Dobai-Pataky_Bálint <a class="moz-txt-link-rfc2396E" href="mailto:dp...@gm..."><dp...@gm...></a> wrote: </pre> <blockquote type="cite"> <pre wrap=""> You don't need to use Gtk::Drag for this. See sample/misc/drag-move.rb in Ruby/GTK2. yeah, after i sent this mail, i have found the examples, and understood them. but they are not the right solution for me, what i want to do is to have a fixed or a layout and some labels on it, and allow the user to move the labels with the mouse. </pre> </blockquote> <pre wrap=""><!----> I think the example shows a hint for what you want to do... Anyway, what about sample/misc/dnd.rb? </pre> </blockquote> yup, i found that script, and inspected it, and it's great, but not what i wanted to do.<br> for some reasons: <br> * does not move the widget while dragging, only an icon for it - i need the object to be visible, since it's going to be sort of a wysiwyg print layout editor with mysql backend<br> * as far as i understood and item has to receive the drop - i got only 1 layout as source and destination<br> * i need exact pixel coordinates of the drop<br> <br> <br> the current state of my Layout class is:<br> * it has a subclass showing a Label<br> * the Label can be moved on the Layout by the following steps: <br> on click Label is replaced by a recrangle<br> on move the rectangle is redrawn in the new position<br> on release the rectangle is cleared and the label is positioned at the new coordinates and is shown<br> <br> <br> i currently have 2 problems with it:<br> * i clear the old rectangle in the move event by redrawing it with white(i wanted background, but could not acquire it), so the rectangle leaves it's white path on the theme'd gray background - i thought i should fill the Drawable with white, but haven't found the filling method yet.<br> <br> * i'll have to snap the rectangle in movement to a 10x10 pixel grid, so Labels may be easily positioned on a line<br> <br> <br> if you have any ideas regarding, please don't hold them back :)<br> <br> thanks<br> <br> balint<br> <br> <br> </body> </html> |
From: Kouhei S. <ko...@co...> - 2007-01-27 10:17:30
|
Hi, In <45B...@gm...> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segme= ntation fault" on Sat, 27 Jan 2007 11:42:39 +0200, Dobai-Pataky_B=E1lint <dp...@gm...> wrote: > Kouhei Sutou wrote: > = > Hi, > = > I suggest you that you show a sample script that describes > what you want if you'll save our time to understand what you > want. > = > In <45B...@gm...> > "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG]= Segmentation fault" on Thu, 25 Jan 2007 16:36:29 +0200, > Dobai-Pataky_B=E1lint <dp...@gm...> wrote: > = > You don't need to use Gtk::Drag for this. See > sample/misc/drag-move.rb in Ruby/GTK2. > = > yeah, after i sent this mail, i have found the examples, and = understood them. > but they are not the right solution for me, what i want to do= is to have a > fixed or a layout and some labels on it, and allow the user t= o move the labels > with the mouse. > = > I think the example shows a hint for what you want to do... > Anyway, what about sample/misc/dnd.rb? > = > yup, i found that script, and inspected it, and it's great, but not w= hat i > wanted to do. > for some reasons: > * does not move the widget while dragging, only an icon for it - i ne= ed the > object to be visible, since it's going to be sort of a wysiwyg print = layout > editor with mysql backend > * as far as i understood and item has to receive the drop - i got onl= y 1 layout > as source and destination > * i need exact pixel coordinates of the drop > = > the current state of my Layout class is: You should show us the Layout class if you want to get more help. > * it has a subclass showing a Label > * the Label can be moved on the Layout by the following steps: > on click Label is replaced by a recrangle > on move the rectangle is redrawn in the new position > on release the rectangle is cleared and the label is positioned a= t the new > coordinates and is shown > = > i currently have 2 problems with it: > * i clear the old rectangle in the move event by redrawing it with w= hite(i > wanted background, but could not acquire it), so the rectangle leaves= it's > white path on the theme'd gray background - i thought i should fill t= he > Drawable with white, but haven't found the filling method yet. > = > * i'll have to snap the rectangle in movement to a 10x10 pixel grid, = so Labels > may be easily positioned on a line > = > if you have any ideas regarding, please don't hold them back :) Thanks, -- kou |
From: <dp...@gm...> - 2007-01-27 10:48:01
Attachments:
layout.rb
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> <title></title> </head> <body bgcolor="#ffffff" text="#000000"> Kouhei Sutou wrote: <blockquote cite="mid...@co..." type="cite"> <pre wrap="">Hi, In <a class="moz-txt-link-rfc2396E" href="mailto:45B...@gm..."><45B...@gm...></a> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segmentation fault" on Sat, 27 Jan 2007 11:42:39 +0200, Dobai-Pataky_Bálint <a class="moz-txt-link-rfc2396E" href="mailto:dp...@gm..."><dp...@gm...></a> wrote: </pre> <blockquote type="cite"> <pre wrap="">Kouhei Sutou wrote: Hi, I suggest you that you show a sample script that describes what you want if you'll save our time to understand what you want. In <a class="moz-txt-link-rfc2396E" href="mailto:45B...@gm..."><45B...@gm...></a> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segmentation fault" on Thu, 25 Jan 2007 16:36:29 +0200, Dobai-Pataky_Bálint <a class="moz-txt-link-rfc2396E" href="mailto:dp...@gm..."><dp...@gm...></a> wrote: You don't need to use Gtk::Drag for this. See sample/misc/drag-move.rb in Ruby/GTK2. yeah, after i sent this mail, i have found the examples, and understood them. but they are not the right solution for me, what i want to do is to have a fixed or a layout and some labels on it, and allow the user to move the labels with the mouse. I think the example shows a hint for what you want to do... Anyway, what about sample/misc/dnd.rb? yup, i found that script, and inspected it, and it's great, but not what i wanted to do. for some reasons: * does not move the widget while dragging, only an icon for it - i need the object to be visible, since it's going to be sort of a wysiwyg print layout editor with mysql backend * as far as i understood and item has to receive the drop - i got only 1 layout as source and destination * i need exact pixel coordinates of the drop the current state of my Layout class is: </pre> </blockquote> <pre wrap=""><!----> You should show us the Layout class if you want to get more help. </pre> </blockquote> thought so :)<br> attaching<br> <br> thanks<br> balint<br> <br> </body> </html> |
From: Kouhei S. <ko...@co...> - 2007-01-27 11:57:06
|
Hi, > yup, i found that script, and inspected it, and it's great, but not what i > wanted to do. > for some reasons: > * does not move the widget while dragging, only an icon for it - i need the > object to be visible, since it's going to be sort of a wysiwyg print layout > editor with mysql backend > * as far as i understood and item has to receive the drop - i got only 1 layout > as source and destination > * i need exact pixel coordinates of the drop > > the current state of my Layout class is: > > You should show us the Layout class if you want to get more > help. > > thought so :) > attaching > signal_connect('event'){|me,event| > case event.event_type It's better that you connect each signal (button-press-event, motion-notify-event and button-release-event) instead of signal_connect('event") and case - when style. > when Gdk::Event::BUTTON_PRESS > # print "press\tx=#{event.x}\ty=#{event.y}\n" > @xshift=event.x > @yshift=event.y > @dragging=true > @myobject.hide > @w,@h=@myobject.child_requisition > parent.bin_window.draw_rectangle(parent.gc,false,@x-1,@y-1,@w+1,@h+1) > @lastx=@xshift > @lasty=@yshift > when Gdk::Event::MOTION_NOTIFY ... > when Gdk::Event::BUTTON_RELEASE ... It's better that you draw on "expose" signal not on "button-press-event", "motion-notify-event" and "button-release-event" signals. So, you just call parent.queue_draw_area on those signals and wait "expose" signal is emitted. Thanks, -- kou |
From: <dp...@gm...> - 2007-01-27 15:30:34
Attachments:
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> Kouhei Sutou wrote: <blockquote cite="mid...@co..." type="cite"> <pre wrap="">Hi, </pre> <blockquote type="cite"> <pre wrap=""> yup, i found that script, and inspected it, and it's great, but not what i wanted to do. for some reasons: * does not move the widget while dragging, only an icon for it - i need the object to be visible, since it's going to be sort of a wysiwyg print layout editor with mysql backend * as far as i understood and item has to receive the drop - i got only 1 layout as source and destination * i need exact pixel coordinates of the drop the current state of my Layout class is: You should show us the Layout class if you want to get more help. thought so :) attaching </pre> </blockquote> <pre wrap=""><!----> </pre> <blockquote type="cite"> <pre wrap=""> signal_connect('event'){|me,event| case event.event_type </pre> </blockquote> <pre wrap=""><!----> It's better that you connect each signal (button-press-event, motion-notify-event and button-release-event) instead of signal_connect('event") and case - when style. </pre> </blockquote> yes, i know, i was experimenting with events, i didn't know what to use, that's why i chose this for the first run.<br> <blockquote cite="mid...@co..." type="cite"> <pre wrap=""> </pre> <blockquote type="cite"> <pre wrap=""> when Gdk::Event::BUTTON_PRESS # print "press\tx=#{event.x}\ty=#{event.y}\n" @xshift=event.x @yshift=event.y @dragging=true @myobject.hide @w,@h=@myobject.child_requisition parent.bin_window.draw_rectangle(parent.gc,false,@x-1,@y-1,@w+1,@h+1) @lastx=@xshift @lasty=@yshift </pre> </blockquote> <pre wrap=""><!----> </pre> <blockquote type="cite"> <pre wrap=""> when Gdk::Event::MOTION_NOTIFY </pre> </blockquote> <pre wrap=""><!---->... </pre> <blockquote type="cite"> <pre wrap=""> when Gdk::Event::BUTTON_RELEASE </pre> </blockquote> <pre wrap=""><!---->... It's better that you draw on "expose" signal not on "button-press-event", "motion-notify-event" and "button-release-event" signals. So, you just call parent.queue_draw_area on those signals and wait "expose" signal is emitted. </pre> </blockquote> and why is that?<br> <br> <br> anyways, any ideas on the color issue?<br> <br> <br> thanks <br> balint<br> <br> </body> </html> |
From: Kouhei S. <ko...@co...> - 2007-01-28 00:56:59
|
Hi, In <45B...@gm...> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segme= ntation fault" on Sat, 27 Jan 2007 17:30:36 +0200, Dobai-Pataky_B=E1lint <dp...@gm...> wrote: > It's better that you draw on "expose" signal not on > "button-press-event", "motion-notify-event" and > "button-release-event" signals. So, you just call > parent.queue_draw_area on those signals and wait "expose" > signal is emitted. > = > and why is that? "expose" signal is for redrawing but other signal is not. > anyways, any ideas on the color issue? parent.queue_draw_area will solve the issue if you specify correct area. Please try! Thank, -- kou |
From: <dp...@gm...> - 2007-01-28 10:28:25
Attachments:
layout.rb
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> <title></title> </head> <body bgcolor="#ffffff" text="#000000"> Kouhei Sutou wrote: <blockquote cite="mid...@co..." type="cite"> <pre wrap=""> </pre> <blockquote type="cite"> <pre wrap=""> It's better that you draw on "expose" signal not on "button-press-event", "motion-notify-event" and "button-release-event" signals. So, you just call parent.queue_draw_area on those signals and wait "expose" signal is emitted. and why is that? </pre> </blockquote> <pre wrap=""><!----> "expose" signal is for redrawing but other signal is not. </pre> <blockquote type="cite"> <pre wrap="">anyways, any ideas on the color issue? </pre> </blockquote> <pre wrap=""><!----> parent.queue_draw_area will solve the issue if you specify correct area. </pre> </blockquote> okay, this one works, got another problem, my queue works only in a rectangle, dunno why.<br> can you please take a look at it?<br> <br> <br> thanks<br> balint<br> <br> </body> </html> |
From: Kouhei S. <ko...@co...> - 2007-01-28 12:50:11
|
Hi, In <45B...@gm...> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segme= ntation fault" on Sun, 28 Jan 2007 12:28:22 +0200, Dobai-Pataky_B=E1lint <dp...@gm...> wrote: > okay, this one works, got another problem, my queue works only in a r= ectangle, > dunno why. > can you please take a look at it? You need to move your EventBox to a queued area to receive an expose event. Thanks, -- kou |
From: <dp...@gm...> - 2007-01-28 13:55:35
Attachments:
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> <title></title> </head> <body bgcolor="#ffffff" text="#000000"> Kouhei Sutou wrote: <blockquote cite="mid...@co..." type="cite"> <pre wrap="">Hi, In <a class="moz-txt-link-rfc2396E" href="mailto:45B...@gm..."><45B...@gm...></a> "Re: [ruby-gnome2-devel-en] Gtk::Drag.source_set produces [BUG] Segmentation fault" on Sun, 28 Jan 2007 12:28:22 +0200, Dobai-Pataky_Bálint <a class="moz-txt-link-rfc2396E" href="mailto:dp...@gm..."><dp...@gm...></a> wrote: </pre> <blockquote type="cite"> <pre wrap="">okay, this one works, got another problem, my queue works only in a rectangle, dunno why. can you please take a look at it? </pre> </blockquote> <pre wrap=""><!----> You need to move your EventBox to a queued area to receive an expose event. </pre> </blockquote> yes, i thought about that, but then the new motion event coordinates have to be adjusted accordingly :(<br> and i'll get back to the previous problem: the move will generate a motion event.<br> <br> </body> </html> |
From: Detlef R. <det...@gm...> - 2007-01-28 14:18:56
|
Am Sonntag, den 28.01.2007, 15:55 +0200 schrieb Dobai-Pataky Bálint: Hi, cause it seems to be a bigger problem ;-) i changed your code a little bit. I don't want to sound harsh but i think, that you don't understand the Gdk concepts very well. I suggest to read the Xlib manuals from O'Reilly. Gdk is very close to the Xlib and so these are the best docs you can get. Cheers detlef #!/usr/bin/ruby require 'gtk2' class Lay < Gtk::Layout class LayLabel < Gtk::EventBox def initialize(text) @x=0 @y=0 @text=text @dragging=false @myobject=Gtk::Label.new(@text) super() add(@myobject) signal_connect('event'){|me,event| if @xorgc.nil? and self.realized? @xorgc = Gdk::GC.new parent.bin_window @xorgc.function = Gdk::GC::INVERT end case event.event_type when Gdk::Event::BUTTON_PRESS @xshift=event.x @yshift=event.y @dragging=true @w,@h=@myobject.child_requisition parent.bin_window.draw_rectangle(@xorgc,false,@x-1,@y-1,@w+1,@h+1) @lastx=@xshift @lasty=@yshift when Gdk::Event::MOTION_NOTIFY parent.bin_window.draw_rectangle(@xorgc,false,@x+@lastx-@xshift-1,@y +@lasty-@yshift-1,@w+1,@h+1) parent.bin_window.draw_rectangle(@xorgc,false,@x +event.x-@xshift-1,@y+event.y-@yshift-1,@w+1,@h+1) @lastx=event.x @lasty=event.y when Gdk::Event::BUTTON_RELEASE @dragging=false parent.bin_window.draw_rectangle(@xorgc,false,@x+@lastx-@xshift-1,@y +@lasty-@yshift-1,@w+1,@h+1) @x=event.x+@x-@xshift @y=event.y+@y-@yshift parent.move(self) end } end attr_accessor :x attr_accessor :y attr_accessor :text end def initialize super @mygc=nil @clearmygc=nil w,h=size end def put(gtk_type,x,y) case gtk_type when "text" l=LayLabel.new("test text") l.x=x l.y=y end super(l,x,y) end def move(ch,x=ch.x,y=ch.y) ch.x=x ch.y=y super end end lay=Lay.new lay.put("text",100,100) lay.put("text",200,200) lay.put("text",300,300) @w = Gtk::Window.new @w.signal_connect('destroy'){Gtk.main_quit} @w.set_default_size(500, 500) @w.add(lay) @w.show_all Gtk.main |
From: Detlef R. <det...@gm...> - 2007-01-28 16:35:31
|
Am Sonntag, den 28.01.2007, 18:12 +0200 schrieb Dobai-Pataky Bálint: > but please enlighten me, what was your invention besides inverting the > color of the rectangle and not drawing one with a defined color? would > you provide an example where the border is red please? If you want to use a special colour for drawing, you also have to specify the background colour of your drawable. Else if the user has a theme in use, where the background is red you wouldn't see your rectangle at all. > and please consider my previous script, not the one using the expose > event. i just tried that way, as Kou suggested. >From my point of view using queue_draw_area is unnecessary complicated for this case. You have to invalidate all the areas where your rectangle moves over while dragging. If you use a very complex layout with many widgets on them it may make sense. |
From: <dp...@gm...> - 2007-01-28 18:37:33
Attachments:
dpblnt.vcf
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content=3D"text/html;charset=3DUTF-8" http-equiv=3D"Content-Type"= > <title></title> </head> <body bgcolor=3D"#ffffff" text=3D"#000000"> Detlef Reichl wrote: <blockquote cite=3D"mid1170001418.22398.22.camel@datengrab" type=3D"cite"= > <pre wrap=3D"">Am Sonntag, den 28.01.2007, 18:12 +0200 schrieb Dobai-Pa= taky B=C3=A1lint: </pre> <blockquote type=3D"cite"> <pre wrap=3D"">but please enlighten me, what was your invention besid= es inverting the=20 color of the rectangle and not drawing one with a defined color? would=20 you provide an example where the border is red please? </pre> </blockquote> <pre wrap=3D""><!----> If you want to use a special colour for drawing, you also have to specify the background colour of your drawable. Else if the user has a theme in use, where the background is red you wouldn't see your rectangle at all. </pre> </blockquote> i can't imagine someone using a red background :)<br> but you're perfectly right<br> i asked the list how could i change the background color of the drawing, but got no answer, and decided not to paint it by lines.<br> i wanted to paint it to white, to emulate the paper.<br> <blockquote cite=3D"mid1170001418.22398.22.camel@datengrab" type=3D"cite"= > <pre wrap=3D""> </pre> <blockquote type=3D"cite"> <pre wrap=3D"">and please consider my previous script, not the one us= ing the expose=20 event. i just tried that way, as Kou suggested. </pre> </blockquote> <pre wrap=3D""><!----> >From my point of view using queue_draw_area is unnecessary complicate= d for this case. You have to invalidate all the areas where your rectangle moves over while dragging. If you use a very complex layout with many widgets on them it may make sense. </pre> </blockquote> agreed totally.<br> <br> <br> thanks for your answers<br> <br> regards<br> balint<br> <br> </body> </html> |
From: <dp...@gm...> - 2007-01-28 16:12:09
Attachments:
dpblnt.vcf
|
Detlef Reichl wrote: > Am Sonntag, den 28.01.2007, 15:55 +0200 schrieb Dobai-Pataky B=C3=A1lin= t: > > Hi, > > cause it seems to be a bigger problem ;-) i changed your code a little > bit. > =20 no problem > I don't want to sound harsh but i think, that you don't understand the > Gdk concepts very well. I suggest to read the Xlib manuals from > O'Reilly. Gdk is very close to the Xlib and so these are the best docs > you can get. > =20 that has to be true, all i used was the ruby-gtk2 hiki, and i'm learning=20 this gtk-gdk stuff. but please enlighten me, what was your invention besides inverting the=20 color of the rectangle and not drawing one with a defined color? would=20 you provide an example where the border is red please? and please consider my previous script, not the one using the expose=20 event. i just tried that way, as Kou suggested. > Cheers > detlef > > > > #!/usr/bin/ruby > > require 'gtk2' > > > class Lay < Gtk::Layout > class LayLabel < Gtk::EventBox > def initialize(text) > @x=3D0 > @y=3D0 > @text=3Dtext > @dragging=3Dfalse > @myobject=3DGtk::Label.new(@text) > super() > add(@myobject) > > signal_connect('event'){|me,event| > if @xorgc.nil? and self.realized? =20 > @xorgc =3D Gdk::GC.new parent.bin_window > @xorgc.function =3D Gdk::GC::INVERT > end > =09 > case event.event_type > > =20 > when Gdk::Event::BUTTON_PRESS > @xshift=3Devent.x > @yshift=3Devent.y > @dragging=3Dtrue > @w,@h=3D...@my...ild_requisition > parent.bin_window.draw_rectangle(@xorgc,false,@x-1,@y-1,@w+1,@h+1) > @lastx=3D@xshift > @lasty=3D@yshift > =20 > when Gdk::Event::MOTION_NOTIFY > parent.bin_window.draw_rectangle(@xorgc,false,@x+@lastx-@xshift-1,@= y > +@lasty-@yshift-1,@w+1,@h+1) > parent.bin_window.draw_rectangle(@xorgc,false,@x > +event.x-@xshift-1,@y+event.y-@yshift-1,@w+1,@h+1) > @lastx=3Devent.x > @lasty=3Devent.y > =20 > when Gdk::Event::BUTTON_RELEASE > @dragging=3Dfalse > parent.bin_window.draw_rectangle(@xorgc,false,@x+@lastx-@xshift-1,@= y > +@lasty-@yshift-1,@w+1,@h+1) > @x=3Devent.x+@x-@xshift > @y=3Devent.y+@y-@yshift > parent.move(self) > end > } > end > attr_accessor :x > attr_accessor :y > attr_accessor :text > end > =20 > def initialize > super > @mygc=3Dnil > @clearmygc=3Dnil > w,h=3Dsize > end > > > def put(gtk_type,x,y) > case gtk_type > when "text" > l=3DLayLabel.new("test text") > l.x=3Dx > l.y=3Dy > end > super(l,x,y) > end > def move(ch,x=3Dch.x,y=3Dch.y) > ch.x=3Dx > ch.y=3Dy > super > end > end > > lay=3DLay.new > lay.put("text",100,100) > lay.put("text",200,200) > lay.put("text",300,300) > > > @w =3D Gtk::Window.new > @w.signal_connect('destroy'){Gtk.main_quit} > @w.set_default_size(500, 500) > @w.add(lay) > @w.show_all > > Gtk.main > > =20 this one works. in the mean time i got a version working when Label follows the mouse,=20 not a rectangle. thanks balint |