示例#1
0
int gnoclMenuSeparatorCmd( ClientData data, Tcl_Interp *interp,
      int objc, Tcl_Obj * const objv[] )
{
   int        ret;
   GtkSeparatorMenuItem *separator;

   if( gnoclParseOptions( interp, objc - 1, objv + 1, separatorOptions ) 
         != TCL_OK )
   {
      gnoclClearOptions( separatorOptions );
      return TCL_ERROR;
   }

   separator = GTK_SEPARATOR_MENU_ITEM( gtk_separator_menu_item_new( ) );
   gtk_widget_show( GTK_WIDGET( separator ) );
   /* gtk_widget_set_sensitive( GTK_WIDGET( para->menuItem ), 0 ); */

   ret = gnoclSetOptions( interp, separatorOptions, G_OBJECT( separator ), -1 );
   gnoclClearOptions( separatorOptions );

   if( ret != TCL_OK )
   {
      gtk_widget_destroy( GTK_WIDGET( separator ) );
      return TCL_ERROR;
   }


   return gnoclRegisterWidget( interp, GTK_WIDGET( separator ), separatorFunc );
}
示例#2
0
static int separatorFunc( ClientData data, Tcl_Interp *interp,
      int objc, Tcl_Obj * const objv[] )
{
   static const char *cmds[] = { "delete", "configure", NULL };
   enum cmdIdx { DeleteIdx, ConfigureIdx };
   GtkSeparatorMenuItem *separator = GTK_SEPARATOR_MENU_ITEM( data ); 
   int idx;

  if( objc < 2 )
   {
      Tcl_WrongNumArgs( interp, 1, objv, "command" );
      return TCL_ERROR;
   }

   if( Tcl_GetIndexFromObj( interp, objv[1], cmds, "command", 
         TCL_EXACT, &idx ) != TCL_OK )
      return TCL_ERROR;

   switch( idx )
   {
      case DeleteIdx:
         return gnoclDelete( interp, GTK_WIDGET( separator ), objc, objv );
      case ConfigureIdx:
         {
            int ret = gnoclParseAndSetOptions( interp, objc - 1, objv + 1, 
                  separatorOptions, G_OBJECT( separator ) );
            gnoclClearOptions( separatorOptions );
            return ret;
         }
         break;
   }

   return TCL_OK;
}
示例#3
0
int main(int argc, char *argv[])
{
  QwertickleGUI* gui = g_new0(QwertickleGUI, 1);

  gst_init(NULL, NULL);
  gtk_init(&argc, &argv);

  gui->statusicon = gtk_status_icon_new_from_file(DATADIR"/qwertickle.png");
  gtk_status_icon_set_visible(gui->statusicon, TRUE);
  gui->mainmenu = GTK_MENU(gtk_menu_new());
  gui->play = GTK_MENU_ITEM(gtk_menu_item_new());
  gui->sep = GTK_SEPARATOR_MENU_ITEM(gtk_separator_menu_item_new());
  gui->quit =
    GTK_IMAGE_MENU_ITEM(gtk_image_menu_item_new_from_stock("gtk-quit", NULL));
  gui->about =
    GTK_IMAGE_MENU_ITEM(gtk_image_menu_item_new_from_stock("gtk-about", NULL));
  gui->enable =
    GTK_CHECK_MENU_ITEM(gtk_check_menu_item_new_with_label("Enable"));

  gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->enable));
  gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->about));
  gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->sep));
  gtk_menu_shell_append(GTK_MENU_SHELL(gui->mainmenu), GTK_WIDGET(gui->quit));

  /* initialize widgets */
  gtk_check_menu_item_set_active(gui->enable, TRUE);

  /* connect signals */
  g_signal_connect(gui->statusicon, "popup-menu", G_CALLBACK(on_menu_pop), gui);
  g_signal_connect(gui->enable, "toggled", G_CALLBACK(on_enable_toggled), gui);
  g_signal_connect(gui->quit, "activate", G_CALLBACK(on_quit_activate), gui);
  g_signal_connect(gui->about, "activate", G_CALLBACK(on_about_activate), gui);
  g_signal_connect(gui->play, "activate", G_CALLBACK(on_play_activate), NULL);

  gtk_widget_show_all(GTK_WIDGET(gui->mainmenu));

  /* Fix freezing bug? close stdout and stdin so Xorg won't have to process
   * the input to stdout when program exit*/
  close(0);
  close(1);

  pthread_create(&thread, NULL, intercept_key_thread, gui->play);
  gtk_main();

  return 0;
}