summaryrefslogtreecommitdiff
path: root/idl/gnome-desktop.idl
blob: 819edea26d43c0934ef8c58129ee6a4e38acb080 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// module Net is for IDL "standardized" among multiple projects

module Net {
// module Desktop contains interfaces for the desktop environment itself - not
// desktop applications
        
module Desktop {

        // This is a simple-to-implement least-common-denominator that
        // we might expect any desktop environment to implement.
        // Specific environments may provide more powerful interfaces.
        
        interface Desktop {
                enum BackgroundType {
                        ImageBackground,
                        GradientBackground,
                        SolidBackground
                };

                enum ImageType {
                        TiledImage,
                        CenteredImage,
                        ScaledAspectImage,
                        ScaledImage
                };

                enum GradientType {
                        VerticalGradient,
                        HorizontalGradient
                };

                // Note that this is not a union; if you change types
                // the settings for non-current types are not lost.
                struct BackgroundInfo {
                        BackgroundType type;

                        // Image settings
                        ImageType imagetype;
                        string filename;

                        // Gradient settings
                        GradientType gradienttype;
                        // colors are 24-bit RGB packed into an int
                        int northwest_color; // top or left color
                        int southeast_color; // bottom or right color

                        // Solid color settings
                        // 24-bit RGB packed into an int
                        int solid_color;
                };

                void get_background_info (out BackgroundInfo info);

                void set_background_info (in BackgroundInfo info);
        };
};
};

module GNOME {
  module Desktop {

    // We subclass Net::Desktop and add our GNOME-specific features
        
    interface Desktop : ::Net::Desktop {
      // Add an icon on the desktop for this URI
      // The URI can be anything gnome-vfs understands
      void add_link (in string uri);

                
    };
  
  };
};