~ubuntu-branches/ubuntu/quantal/openmotif/quantal

« back to all changes in this revision

Viewing changes to demos/programs/filemanager/convert.c

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Bauer
  • Date: 2010-06-23 12:12:31 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20100623121231-u89gxdp51sg9wjj2
Tags: 2.3.0-1
* New Maintainer (Closes: #379258) 
* Acknowledge NMU changes
* New upstream release (Closes: #494375)
* Get rid of security patches as they are already part of new upstream
  release (00-xpmvuln.openmotif.patch, 342092-CVE-2005-3964.patch)
* Bump Standards to 3.8.4
* Added {misc:Depends} to make the package lintian cleaner
* Fix weak-library-dev-dependency by adding ${binary:Version}) for the
  -dev Package of openmotif
* Let package depend on autotools-dev to use newer autotools-helper-files
* Work around an autoconf-bug (Gentoo-Bug #1475)
* Added Client-side anti-aliased fonts support via XFT
* Added UTF-8 and UTF8_STRING atom support
* Ability to show text and pixmaps in Label, LabelGadget and all
  derived widgets
* Support of PNG/JPEG image formats in the same way as XPM is supported
* Increase FILE_OFFSET_BITS to 64 to show files >2GB in file-selector
  Idea taken from Magne Oestlyngen (Closes: #288537)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $XConsortium: convert.c /main/5 1995/07/15 20:45:16 drk $ */
 
2
/*
 
3
 * @OPENGROUP_COPYRIGHT@
 
4
 * COPYRIGHT NOTICE
 
5
 * Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
 
6
 * Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
 
7
 * ALL RIGHTS RESERVED (MOTIF).  See the file named COPYRIGHT.MOTIF for
 
8
 * the full copyright text.
 
9
 * 
 
10
 * This software is subject to an open license. It may only be
 
11
 * used on, with or for operating systems which are themselves open
 
12
 * source systems. You must contact The Open Group for a license
 
13
 * allowing distribution and sublicensing of this software on, with,
 
14
 * or for operating systems which are not Open Source programs.
 
15
 * 
 
16
 * See http://www.opengroup.org/openmotif/license for full
 
17
 * details of the license agreement. Any use, reproduction, or
 
18
 * distribution of the program constitutes recipient's acceptance of
 
19
 * this agreement.
 
20
 * 
 
21
 * EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
 
22
 * PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 
23
 * KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
 
24
 * WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
 
25
 * OR FITNESS FOR A PARTICULAR PURPOSE
 
26
 * 
 
27
 * EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
 
28
 * NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
 
29
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
30
 * DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
 
31
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
32
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 
33
 * ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
 
34
 * EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
 
35
 * POSSIBILITY OF SUCH DAMAGES.
 
36
 * 
 
37
 */
 
38
/*
 
39
 * HISTORY
 
40
 */
 
41
 
 
42
#include <Xm/Xm.h>
 
43
#include <Xm/Container.h>
 
44
#include <Xm/Transfer.h>
 
45
#include "filemanager.h"
 
46
 
 
47
void 
 
48
targetConvertCallback(Widget wid, XtPointer ignore,
 
49
                      XmConvertCallbackStruct *cs)
 
50
{
 
51
  Atom XA_TARGETS = XInternAtom(XtDisplay(wid), XmSTARGETS, False);
 
52
  Atom XA_FILE = XInternAtom(XtDisplay(wid), XmSFILE, False);
 
53
  Atom XA_FILENAME = XInternAtom(XtDisplay(wid), XmSFILE_NAME, False);
 
54
  Atom XA_MOTIF_EXPORTS = 
 
55
    XInternAtom(XtDisplay(wid), XmS_MOTIF_EXPORT_TARGETS, False);
 
56
  Atom XA_MOTIF_REQUIRED = 
 
57
    XInternAtom(XtDisplay(wid), XmS_MOTIF_CLIPBOARD_TARGETS, False);
 
58
  Atom XA_MOTIF_DROP =
 
59
    XInternAtom(XtDisplay(wid), XmS_MOTIF_DROP, False);
 
60
 
 
61
  if (cs -> selection == XA_MOTIF_DROP &&
 
62
      (cs -> target == XA_TARGETS ||
 
63
       cs -> target == XA_MOTIF_EXPORTS ||
 
64
       cs -> target == XA_MOTIF_REQUIRED)) {
 
65
    Atom *targs;
 
66
    targs = (Atom *) XtMalloc(sizeof(Atom) * 2);
 
67
    targs[0] = XA_FILE;
 
68
    targs[1] = XA_FILENAME;
 
69
    cs -> value = (XtPointer) targs;
 
70
    cs -> length = 2;
 
71
    cs -> type = XA_ATOM;
 
72
    cs -> format = 32;
 
73
    cs -> status = XmCONVERT_MERGE;
 
74
  } else if (cs -> target == XA_FILE ||
 
75
             cs -> target == XA_FILENAME) {
 
76
    if (cs -> location_data == NULL) {
 
77
      WidgetList selected;
 
78
      Cardinal count;
 
79
      int i;
 
80
 
 
81
      /* First get list of selected items. */
 
82
      XtVaGetValues(fileviewer, 
 
83
                    XmNselectedObjects, &selected,
 
84
                    XmNselectedObjectCount, &count,
 
85
                    NULL, NULL);
 
86
 
 
87
      if (count > 0) {
 
88
        char *rval = NULL;
 
89
        int curpos = 0;
 
90
 
 
91
        for(i = 0; i < count; i++) {
 
92
          char *path;
 
93
          int pathlen;
 
94
 
 
95
          path = getPathFromIcon(selected[i]);
 
96
          pathlen = strlen(path) + 1;
 
97
          rval = XtRealloc(rval, curpos + pathlen);
 
98
          /* This will include the terminating NULL byte.  Important,
 
99
             do not remove this NULL byte,  it acts as a separator */
 
100
          strncpy(rval, path, pathlen);
 
101
          curpos += pathlen;
 
102
        }
 
103
        cs -> format = 8;
 
104
        cs -> length = curpos - 1;
 
105
        cs -> type = XA_STRING;
 
106
        cs -> status = XmCONVERT_DONE;
 
107
      } else {
 
108
        cs -> status = XmCONVERT_REFUSE;
 
109
      }
 
110
    } else {
 
111
      char *path;
 
112
 
 
113
      path = getPathFromIcon(cs -> location_data);
 
114
 
 
115
      cs -> value = path;
 
116
      if (path != NULL)
 
117
        cs -> length = strlen(path);
 
118
      else
 
119
        cs -> length = 0;
 
120
      cs -> format = 8;
 
121
      cs -> type = XA_STRING;
 
122
      cs -> status = XmCONVERT_DONE;
 
123
    }
 
124
  } 
 
125
}
 
126
 
 
127
void 
 
128
targetDestinationCallback(Widget w, XtPointer ignore,
 
129
                          XmDestinationCallbackStruct *cs)
 
130
{
 
131
  /* Later */
 
132
}