~helene-verhaeghe27/cairo-dock-core/bugfix

« back to all changes in this revision

Viewing changes to src/cairo-dock-menu.c

  • Committer: Fabrice Rey
  • Date: 2013-06-04 22:58:28 UTC
  • Revision ID: fabounet03@gmail.com-20130604225828-x8lg3mv9135jr114
updated various parts of the core to the new API (new icons type, 'delete' method, simplified functions, etc)

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
#include "cairo-dock-icon-facility.h"
37
37
#include "cairo-dock-callbacks.h"
38
38
#include "cairo-dock-applications-manager.h"
 
39
#include "cairo-dock-stack-icon-manager.h"
 
40
#include "cairo-dock-separator-manager.h"
 
41
#include "cairo-dock-applet-manager.h"
 
42
#include "cairo-dock-class-icon-manager.h"
39
43
#include "cairo-dock-application-facility.h"
40
 
#include "cairo-dock-desktop-file-factory.h"
41
44
#include "cairo-dock-launcher-manager.h"
42
45
#include "cairo-dock-module-manager.h"
43
46
#include "cairo-dock-module-instance-manager.h"
47
50
#include "cairo-dock-dialog-manager.h"
48
51
#include "cairo-dock-file-manager.h"  // cairo_dock_copy_file
49
52
#include "cairo-dock-log.h"
 
53
#include "cairo-dock-utils.h"  // cairo_dock_launch_command_sync
50
54
#include "cairo-dock-desklet-manager.h"
51
55
#include "cairo-dock-dock-manager.h"
52
56
#include "cairo-dock-class-manager.h"
112
116
        {
113
117
                cairo_dock_remove_icons_from_dock (pDock, NULL);
114
118
                
115
 
                gldi_object_unref (GLDI_OBJECT(pDock));
 
119
                gldi_object_delete (GLDI_OBJECT(pDock));
116
120
        }
117
121
}
118
122
static void _cairo_dock_delete_dock (G_GNUC_UNUSED GtkMenuItem *pMenuItem, CairoDock *pDock)
504
508
        return pItemSubMenu;
505
509
}
506
510
 
507
 
static void _cairo_dock_create_launcher (Icon *icon, CairoDock *pDock, CairoDockDesktopFileType iLauncherType)
 
511
 
 
512
static double _get_next_order (Icon *icon, CairoDock *pDock)
508
513
{
509
 
        //\___________________ On determine l'ordre d'insertion suivant l'endroit du clique.
510
514
        double fOrder;
511
515
        if (icon != NULL)
512
516
        {
523
527
        }
524
528
        else
525
529
                fOrder = CAIRO_DOCK_LAST_ORDER;
526
 
        
527
 
        //\___________________ On cree et on charge l'icone a partir d'un des templates.
528
 
        Icon *pNewIcon = cairo_dock_add_new_launcher_by_type (iLauncherType, pDock, fOrder);
529
 
        if (pNewIcon == NULL)
530
 
        {
531
 
                cd_warning ("Couldn't create create the icon.\nCheck that you have writing permissions on ~/.config/cairo-dock and its sub-folders");
532
 
                return ;
533
 
        }
534
 
        
535
 
        //\___________________ On ouvre automatiquement l'IHM pour permettre de modifier ses champs.
536
 
        if (iLauncherType != CAIRO_DOCK_DESKTOP_FILE_FOR_SEPARATOR)  // inutile pour un separateur.
537
 
                cairo_dock_show_items_gui (pNewIcon, NULL, NULL, -1);
 
530
        return fOrder;
538
531
}
539
532
 
540
533
static void cairo_dock_add_launcher (G_GNUC_UNUSED GtkMenuItem *pMenuItem, gpointer *data)
541
534
{
542
535
        Icon *icon = data[0];
543
536
        CairoDock *pDock = data[1];
544
 
        _cairo_dock_create_launcher (icon, pDock, CAIRO_DOCK_DESKTOP_FILE_FOR_LAUNCHER);
 
537
        double fOrder = _get_next_order (icon, pDock);
 
538
        Icon *pNewIcon = gldi_separator_icon_add_new (pDock, fOrder);
 
539
        if (pNewIcon == NULL)
 
540
                cd_warning ("Couldn't create create the icon.\nCheck that you have writing permissions on ~/.config/cairo-dock and its sub-folders");
 
541
        else
 
542
                cairo_dock_show_items_gui (pNewIcon, NULL, NULL, -1);  // open the config so that the user can complete its fields
545
543
}
546
544
 
547
545
static void cairo_dock_add_sub_dock (G_GNUC_UNUSED GtkMenuItem *pMenuItem, gpointer *data)
548
546
{
549
547
        Icon *icon = data[0];
550
548
        CairoDock *pDock = data[1];
551
 
        _cairo_dock_create_launcher (icon, pDock, CAIRO_DOCK_DESKTOP_FILE_FOR_CONTAINER);
 
549
        double fOrder = _get_next_order (icon, pDock);
 
550
        Icon *pNewIcon = gldi_stack_icon_add_new (pDock, fOrder);
 
551
        if (pNewIcon == NULL)
 
552
                cd_warning ("Couldn't create create the icon.\nCheck that you have writing permissions on ~/.config/cairo-dock and its sub-folders");
552
553
}
553
554
 
554
555
static gboolean _show_new_dock_msg (gchar *cDockName)
562
563
static void cairo_dock_add_main_dock (G_GNUC_UNUSED GtkMenuItem *pMenuItem, G_GNUC_UNUSED gpointer *data)
563
564
{
564
565
        gchar *cDockName = gldi_dock_add_conf_file ();
565
 
        /**CairoDock *pDock = */gldi_dock_new (cDockName);
566
 
        ///gldi_dock_reload (pDock);
 
566
        gldi_dock_new (cDockName);
567
567
        
568
 
        cairo_dock_gui_trigger_reload_items ();  // pas de signal "new_dock"
 
568
        cairo_dock_gui_trigger_reload_items ();  // we could also connect to the signal "new-object" on docks...
569
569
        
570
570
        g_timeout_add_seconds (1, (GSourceFunc)_show_new_dock_msg, cDockName);  // delai, car sa fenetre n'est pas encore bien placee (0,0).
571
571
}
574
574
{
575
575
        Icon *icon = data[0];
576
576
        CairoDock *pDock = data[1];
577
 
        _cairo_dock_create_launcher (icon, pDock, CAIRO_DOCK_DESKTOP_FILE_FOR_SEPARATOR);
 
577
        double fOrder = _get_next_order (icon, pDock);
 
578
        Icon *pNewIcon = gldi_separator_icon_add_new (pDock, fOrder);
 
579
        if (pNewIcon == NULL)
 
580
                cd_warning ("Couldn't create create the icon.\nCheck that you have writing permissions on ~/.config/cairo-dock and its sub-folders");
578
581
}
579
582
 
580
583
static void cairo_dock_add_applet (G_GNUC_UNUSED GtkMenuItem *pMenuItem, G_GNUC_UNUSED gpointer *data)
683
686
        }
684
687
        
685
688
        //\_________________________ on met a jour le fichier de conf de l'icone.
686
 
        cairo_dock_write_container_name_in_conf_file (pIcon, cValidDockName);
 
689
        gldi_theme_icon_write_container_name_in_conf_file (pIcon, cValidDockName);
687
690
        
688
691
        //\_________________________ on recharge l'icone, ce qui va creer le dock.
689
692
        if ((CAIRO_DOCK_ICON_TYPE_IS_LAUNCHER (pIcon)
781
784
                        else
782
785
                                fOrder = pIcon->fOrder + 1;
783
786
                }
784
 
                cairo_dock_add_new_launcher_by_uri (cDesktopFilePath, g_pMainDock, fOrder);  // on l'ajoute dans le main dock.
 
787
                gldi_launcher_add_new (cDesktopFilePath, g_pMainDock, fOrder);  // add in the main dock
785
788
        }
786
789
        else
787
790
        {
821
824
{
822
825
        if (iClickedButton == 0 || iClickedButton == -1)  // ok button or Enter.
823
826
        {
824
 
                gldi_module_delete_instance (icon->pModuleInstance);
 
827
                gldi_object_delete (GLDI_OBJECT(icon->pModuleInstance));
825
828
        }
826
829
}
827
830
static void _cairo_dock_remove_module_instance (G_GNUC_UNUSED GtkMenuItem *pMenuItem, gpointer *data)
997
1000
        {
998
1001
                g_remove (cCustomIcon);
999
1002
                cairo_dock_reload_icon_image (icon, CAIRO_CONTAINER (pDock));
1000
 
                cairo_dock_redraw_icon (icon, CAIRO_CONTAINER (pDock));
 
1003
                cairo_dock_redraw_icon (icon);
1001
1004
        }
1002
1005
}
1003
1006