Esempio n. 1
0
> void tmouse_button<
		  sdl_button_down
		, sdl_button_up
		, button_down
		, button_up
		, button_click
		, button_double_click
>::signal_handler_sdl_button_up(
		  const event::tevent event
		, bool& handled
		, const tpoint& coordinate)
{
	if(signal_handler_sdl_button_up_entered_) {
		return;
	}
	tlock lock(signal_handler_sdl_button_up_entered_);

	DBG_GUI_E << LOG_HEADER << event << ".\n";

	if(!is_down_) {
		WRN_GUI_E << LOG_HEADER << event
				<< ". The mouse button is already up, we missed an event.\n";
		return;
	}
	is_down_ = false;

	if(focus_) {
		DBG_GUI_E << LOG_HEADER << "Firing: " << sdl_button_up << ".\n";
		if(!owner_.fire(sdl_button_up, *focus_, coordinate)) {
			DBG_GUI_E << LOG_HEADER << "Firing: " << button_up << ".\n";
			owner_.fire(button_up, *focus_);
		}
	}

	twidget* mouse_over = owner_.find_at(coordinate, true);
	if(mouse_captured_) {
		const unsigned mask =
				SDL_BUTTON_LMASK | SDL_BUTTON_MMASK | SDL_BUTTON_RMASK;

		if((SDL_GetMouseState(NULL, NULL) & mask ) == 0) {
			mouse_captured_ = false;
		}

		if(mouse_focus_ == mouse_over) {
			mouse_button_click(mouse_focus_);
		} else if(!mouse_captured_) {
			mouse_leave();

			if(mouse_over) {
				mouse_enter(mouse_over);
			}
		}
	} else if(focus_ && focus_ == mouse_over) {
		mouse_button_click(focus_);
	}

	focus_ = NULL;
	handled = true;
}
Esempio n. 2
0
void tmouse_motion::signal_handler_sdl_mouse_motion(
		  const event::tevent event
		, bool& handled
		, const tpoint& coordinate)
{
	if(signal_handler_sdl_mouse_motion_entered_) {
		return;
	}
	tlock lock(signal_handler_sdl_mouse_motion_entered_);

	DBG_GUI_E << LOG_HEADER << event << ".\n";

	if(mouse_captured_) {
		assert(mouse_focus_);
		if(!owner_.fire(event, *mouse_focus_, coordinate)) {
			mouse_motion(mouse_focus_, coordinate);
		}
	} else {
		twidget* mouse_over = owner_.find_at(coordinate, true);
		if(mouse_over) {
			DBG_GUI_E << LOG_HEADER << "Firing: " << event << ".\n";
			if(owner_.fire(event, *mouse_over, coordinate)) {
				return;
			}
		}

		if(!mouse_focus_ && mouse_over) {
			mouse_enter(mouse_over);
		} else if (mouse_focus_ && !mouse_over) {
			mouse_leave();
		} else if(mouse_focus_ && mouse_focus_ == mouse_over) {
			mouse_motion(mouse_over, coordinate);
		} else if(mouse_focus_ && mouse_over) {
			// moved from one widget to the next
			mouse_leave();
			mouse_enter(mouse_over);
		} else {
			assert(!mouse_focus_ && !mouse_over);
		}
	}
	handled = true;
}
Esempio n. 3
0
void Special_Label::enterEvent(QEvent *)
{
     emit mouse_enter();
}
Esempio n. 4
0
int main(int argc, char **argv)
{
   char imgpath[50];

    ///////////////////////////////////Get app Path///////////////////////////////////

      char path_save[PATH_MAX];
  char abs_exe_path[PATH_MAX];
  char *p;

  if(!(p = strrchr(argv[0], '/')))
    getcwd(abs_exe_path, sizeof(abs_exe_path));
  else
  {
    *p = '\0';
    getcwd(path_save, sizeof(path_save));
    chdir(argv[0]);
    getcwd(abs_exe_path, sizeof(abs_exe_path));
    chdir(path_save);
  }

  ////////////////////////////////////////////////////////////////////////////////

    printf("\n\n-*-*-*-*-* A piece of Gtk+ code by MAhezh -*-*-*-*-*-*\n\n");

    gtk_init(&argc, &argv);


    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 10, 10);
    gtk_window_set_title(GTK_WINDOW(window), "Win orb");
    g_signal_connect(G_OBJECT(window), "delete-event", gtk_main_quit, NULL);

    gtk_widget_set_app_paintable(window, TRUE);

    g_signal_connect(G_OBJECT(window), "draw", G_CALLBACK(draw), NULL);
    g_signal_connect(G_OBJECT(window), "screen-changed", G_CALLBACK(screen_changed), NULL);

    gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
    gtk_widget_add_events(window, GDK_BUTTON_PRESS_MASK);
      g_signal_connect(G_OBJECT(window), "button-press-event",
      G_CALLBACK(on_button_press), NULL);
    //g_signal_connect(G_OBJECT(window), "button-press-event", G_CALLBACK(clicked), NULL);

    GtkWidget* fixed_container = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed_container);

    sprintf(imgpath,"%s/img/metronew.png",abs_exe_path);

    GtkWidget *image = gtk_image_new_from_file(imgpath);
    gtk_container_add(GTK_CONTAINER(fixed_container), image);

    screen_changed(window, NULL, NULL);

////////////////////////////////////// Window 2 //////////////////////////////////////////////


        GtkWidget *window2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window2), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window2), 10, 10);
    gtk_window_set_title(GTK_WINDOW(window2), "Win orb");
    gtk_window_set_opacity(GTK_WINDOW(window2),0.0);
    g_signal_connect(G_OBJECT(window2), "delete-event", gtk_main_quit, NULL);

    gtk_widget_set_app_paintable(window2, TRUE);

    g_signal_connect(G_OBJECT(window2), "draw", G_CALLBACK(draw), NULL);
    g_signal_connect(G_OBJECT(window2), "screen-changed", G_CALLBACK(screen_changed), NULL);

    gtk_window_set_decorated(GTK_WINDOW(window2), FALSE);
    gtk_widget_add_events(window2, GDK_BUTTON_PRESS_MASK);
//      g_signal_connect(G_OBJECT(window2), "button-press-event",
//      G_CALLBACK(on_button_press), NULL);
        g_signal_connect_swapped(G_OBJECT(window2), "button-press-event",
      G_CALLBACK(on_button_press), window2);


    //g_signal_connect(G_OBJECT(window2), "button-press-event", G_CALLBACK(clicked), NULL);

    GtkWidget* fixed_container2 = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window2), fixed_container2);

    sprintf(imgpath,"%s/img/metroglow.png",abs_exe_path);
    GtkWidget *image2 = gtk_image_new_from_file(imgpath);
    gtk_container_add(GTK_CONTAINER(fixed_container2), image2);

    screen_changed(window2, NULL, NULL);



////////////////////////////////////////////////////////////////////////////////////////////////


    gtk_widget_show_all(window);
    gtk_widget_show_all(window2);
    //window_2();

/////////////////////////////////////OPACITY///////////////////////////////////////////////////////


int timer;
float vl = 0.0;
int tnt;



gboolean mouse_enter()
{
    if(tnt==1)
    {
        timer = g_timeout_add ( 3, mouse_enter, NULL );
      vl = vl + 0.008;
      gtk_window_set_opacity(GTK_WINDOW(window2), vl);



        if (vl >= 1.0)
        {
        g_source_remove (timer);
        return FALSE;
        printf("Still running\n");
        //vl = 0;
        }
    }
}

gboolean mouse_leave() //function for timeouts must be a boolean
{
    if(tnt==0)
    {

      timer = g_timeout_add ( 3, mouse_leave, NULL );
      vl = vl - 0.008;
      gtk_window_set_opacity(GTK_WINDOW(window2), vl);


        if (vl <= 0.0)
        {
        g_source_remove (timer);
        return FALSE;
        //vl = 1.0;
        }

    }
}

int me()
{
    //g_source_remove (timer);
    tnt=1;
    printf("Entered %d\n", tnt);

    mouse_enter();

}