Compare commits
9 Commits
XMLTO_Docu
...
WIDGET_IDL
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bacf018470 | ||
|
|
661845527f | ||
|
|
2695f743d2 | ||
|
|
383ba86d8b | ||
|
|
8c455b008e | ||
|
|
e09c15621a | ||
|
|
6b3eface10 | ||
|
|
e815a771b0 | ||
|
|
0605f9fbfb |
@@ -1,135 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
|
||||
]>
|
||||
|
||||
|
||||
<!-- Coding standards for this document
|
||||
|
||||
* Other than the GFDL, please use the "section" tag instead of "sect1",
|
||||
"sect2", etc.
|
||||
* Use Entities to include files for new chapters in Bugzilla-Guide.xml.
|
||||
* Try to use Entities for frequently-used passages of text as well.
|
||||
* Ensure all documents compile cleanly to HTML after modification.
|
||||
The warning, "DTDDECL catalog types not supported" is normal.
|
||||
* Try to index important terms wherever possible.
|
||||
* Use "glossterm" whenever you introduce a new term.
|
||||
* Follow coding standards at http://www.tldp.org, and
|
||||
check out the KDE guidelines (they are nice, too)
|
||||
http://i18n.kde.org/doc/markup.html
|
||||
* All tags should be lowercase.
|
||||
* Please use sensible spacing. The comments at the very end of each
|
||||
file define reasonable defaults for PSGML mode in EMACS.
|
||||
* Double-indent tags, use double spacing whenever possible, and
|
||||
try to avoid clutter and feel free to waste space in the code to make it
|
||||
more readable.
|
||||
|
||||
-->
|
||||
|
||||
<book id="index">
|
||||
|
||||
<!-- Header -->
|
||||
|
||||
<bookinfo>
|
||||
<title>The Bugzilla Guide - &bz-ver;
|
||||
<!-- BZ-DEVEL -->Development <!-- /BZ-DEVEL -->
|
||||
Release</title>
|
||||
|
||||
<authorgroup>
|
||||
<corpauthor>The Bugzilla Team</corpauthor>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>&bz-date;</pubdate>
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
This is the documentation for Bugzilla, a
|
||||
bug-tracking system from mozilla.org.
|
||||
Bugzilla is an enterprise-class piece of software
|
||||
that tracks millions of bugs and issues for hundreds of
|
||||
organizations around the world.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The most current version of this document can always be found on the
|
||||
<ulink url="http://www.bugzilla.org/docs/">Bugzilla
|
||||
Documentation Page</ulink>.
|
||||
</para>
|
||||
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>Bugzilla</keyword>
|
||||
<keyword>Guide</keyword>
|
||||
<keyword>installation</keyword>
|
||||
<keyword>FAQ</keyword>
|
||||
<keyword>administration</keyword>
|
||||
<keyword>integration</keyword>
|
||||
<keyword>MySQL</keyword>
|
||||
<keyword>Mozilla</keyword>
|
||||
<keyword>webtools</keyword>
|
||||
</keywordset>
|
||||
</bookinfo>
|
||||
|
||||
<!-- About This Guide -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="about.xml" />
|
||||
|
||||
<!-- Installing Bugzilla -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="installation.xml" />
|
||||
|
||||
<!-- Administering Bugzilla -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="administration.xml" />
|
||||
|
||||
<!-- Securing Bugzilla -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security.xml" />
|
||||
|
||||
<!-- Customizing Bugzilla -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="customization.xml" />
|
||||
|
||||
<!-- Using Bugzilla -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="using.xml" />
|
||||
|
||||
<!-- Appendix: Troubleshooting -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="troubleshooting.xml" />
|
||||
|
||||
<!-- Appendix: Custom Patches -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="patches.xml" />
|
||||
|
||||
<!-- Appendix: Manually Installing Perl Modules -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="modules.xml" />
|
||||
|
||||
<!-- Appendix: GNU Free Documentation License -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gfdl.xml" />
|
||||
|
||||
<!-- Glossary -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="glossary.xml" />
|
||||
|
||||
<!-- Index -->
|
||||
<!--xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="index.xml" /-->
|
||||
|
||||
</book>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,246 +0,0 @@
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<!-- $Id: about.xml,v 1.26.4.1 2008-07-13 16:44:28 mozilla%colinogilvie.co.uk Exp $ -->
|
||||
|
||||
<chapter id="about">
|
||||
<title>About This Guide</title>
|
||||
|
||||
<section id="copyright">
|
||||
<title>Copyright Information</title>
|
||||
|
||||
<para>This document is copyright (c) 2000-¤t-year; by the various
|
||||
Bugzilla contributors who wrote it.</para>
|
||||
|
||||
<blockquote>
|
||||
<para>
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License, Version 1.1 or any later version published by the
|
||||
Free Software Foundation; with no Invariant Sections, no
|
||||
Front-Cover Texts, and with no Back-Cover Texts. A copy of
|
||||
the license is included in <xref linkend="gfdl"/>.
|
||||
</para>
|
||||
</blockquote>
|
||||
<para>
|
||||
If you have any questions regarding this document, its
|
||||
copyright, or publishing this document in non-electronic form,
|
||||
please contact the Bugzilla Team.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="disclaimer">
|
||||
<title>Disclaimer</title>
|
||||
<para>
|
||||
No liability for the contents of this document can be accepted.
|
||||
Follow the instructions herein at your own risk.
|
||||
This document may contain errors
|
||||
and inaccuracies that may damage your system, cause your partner
|
||||
to leave you, your boss to fire you, your cats to
|
||||
pee on your furniture and clothing, and global thermonuclear
|
||||
war. Proceed with caution.
|
||||
</para>
|
||||
<para>
|
||||
Naming of particular products or brands should not be seen as
|
||||
endorsements, with the exception of the term "GNU/Linux". We
|
||||
wholeheartedly endorse the use of GNU/Linux; it is an extremely
|
||||
versatile, stable,
|
||||
and robust operating system that offers an ideal operating
|
||||
environment for Bugzilla.
|
||||
</para>
|
||||
<para>
|
||||
Although the Bugzilla development team has taken great care to
|
||||
ensure that all exploitable bugs have been fixed, security holes surely
|
||||
exist in any piece of code. Great care should be taken both in
|
||||
the installation and usage of this software. The Bugzilla development
|
||||
team members assume no liability for your use of Bugzilla. You have
|
||||
the source code, and are responsible for auditing it yourself to ensure
|
||||
your security needs are met.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<!-- Section 2: New Versions -->
|
||||
|
||||
<section id="newversions">
|
||||
<title>New Versions</title>
|
||||
<para>
|
||||
This is the &bz-ver; version of The Bugzilla Guide. It is so named
|
||||
to match the current version of Bugzilla.
|
||||
<!-- BZ-DEVEL --> This version of the guide, like its associated Bugzilla version, is a
|
||||
development version.<!-- /BZ-DEVEL -->
|
||||
</para>
|
||||
<para>
|
||||
The latest version of this guide can always be found at <ulink
|
||||
url="http://www.bugzilla.org"/>, or checked out via CVS by
|
||||
following the <ulink url="http://www.mozilla.org/cvs.html">Mozilla
|
||||
CVS</ulink> instructions and check out the
|
||||
<filename>mozilla/webtools/bugzilla/docs/</filename>
|
||||
subtree. However, you should read the version
|
||||
which came with the Bugzilla release you are using.
|
||||
</para>
|
||||
<para>
|
||||
The Bugzilla Guide, or a section of it, is also available in
|
||||
the following languages:
|
||||
<ulink url="http://www.traduc.org/docs/guides/lecture/bugzilla/">French</ulink>,
|
||||
<ulink url="http://bugzilla-de.sourceforge.net/docs/html/">German</ulink>,
|
||||
<ulink url="http://www.bugzilla.jp/docs/2.18/">Japanese</ulink>.
|
||||
Note that these may be outdated or not up to date.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In addition, there are Bugzilla template localization projects in
|
||||
the following languages. They may have translated documentation
|
||||
available:
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-ar/">Arabic</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-be/">Belarusian</ulink>,
|
||||
<ulink url="http://openfmi.net/projects/mozilla-bg/">Bulgarian</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-br/">Brazilian Portuguese</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-cn/">Chinese</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-fr/">French</ulink>,
|
||||
<ulink url="http://germzilla.ganderbay.net/">German</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-it/">Italian</ulink>,
|
||||
<ulink url="http://www.bugzilla.jp/about/jp.html">Japanese</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-kr/">Korean</ulink>,
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-ru/">Russian</ulink> and
|
||||
<ulink url="http://sourceforge.net/projects/bugzilla-es/">Spanish</ulink>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If you would like to volunteer to translate the Guide into additional
|
||||
languages, please contact
|
||||
<ulink url="mailto:justdave@bugzilla.org">Dave Miller</ulink>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="credits">
|
||||
<title>Credits</title>
|
||||
<para>
|
||||
The people listed below have made enormous contributions to the
|
||||
creation of this Guide, through their writing, dedicated hacking efforts,
|
||||
numerous e-mail and IRC support sessions, and overall excellent
|
||||
contribution to the Bugzilla community:
|
||||
</para>
|
||||
|
||||
<!-- TODO: This is evil... there has to be a valid way to get this look -->
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Matthew P. Barnson <email>mbarnson@sisna.com</email></term>
|
||||
<listitem>
|
||||
<para>for the Herculean task of pulling together the Bugzilla Guide
|
||||
and shepherding it to 2.14.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Terry Weissman <email>terry@mozilla.org</email></term>
|
||||
<listitem>
|
||||
<para>for initially writing Bugzilla and creating the README upon
|
||||
which the UNIX installation documentation is largely based.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Tara Hernandez <email>tara@tequilarists.org</email></term>
|
||||
<listitem>
|
||||
<para>for keeping Bugzilla development going strong after Terry left
|
||||
mozilla.org and for running landfill.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Dave Lawrence <email>dkl@redhat.com</email></term>
|
||||
<listitem>
|
||||
<para>for providing insight into the key differences between Red
|
||||
Hat's customized Bugzilla.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Dawn Endico <email>endico@mozilla.org</email></term>
|
||||
<listitem>
|
||||
<para>for being a hacker extraordinaire and putting up with Matthew's
|
||||
incessant questions and arguments on irc.mozilla.org in #mozwebtools
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Jacob Steenhagen <email>jake@bugzilla.org</email></term>
|
||||
<listitem>
|
||||
<para>for taking over documentation during the 2.17 development
|
||||
period.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Dave Miller <email>justdave@bugzilla.org</email></term>
|
||||
<listitem>
|
||||
<para>for taking over as project lead when Tara stepped down and
|
||||
continually pushing for the documentation to be the best it can be.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
|
||||
<para>
|
||||
Thanks also go to the following people for significant contributions
|
||||
to this documentation:
|
||||
<simplelist type="inline">
|
||||
<member>Kevin Brannen</member>
|
||||
<member>Vlad Dascalu</member>
|
||||
<member>Ben FrantzDale</member>
|
||||
<member>Eric Hanson</member>
|
||||
<member>Zach Lipton</member>
|
||||
<member>Gervase Markham</member>
|
||||
<member>Andrew Pearson</member>
|
||||
<member>Joe Robins</member>
|
||||
<member>Spencer Smith</member>
|
||||
<member>Ron Teitelbaum</member>
|
||||
<member>Shane Travis</member>
|
||||
<member>Martin Wulffeld</member>
|
||||
</simplelist>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Also, thanks are due to the members of the
|
||||
<ulink url="news://news.mozilla.org/mozilla.support.bugzilla">
|
||||
mozilla.support.bugzilla</ulink>
|
||||
newsgroup (and its predecessor, netscape.public.mozilla.webtools).
|
||||
Without your discussions, insight, suggestions, and patches,
|
||||
this could never have happened.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<!-- conventions used here (didn't want to give it a chapter of its own) -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="conventions.xml" />
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End: -->
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,168 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<section id="conventions">
|
||||
<title>Document Conventions</title>
|
||||
|
||||
<indexterm zone="conventions">
|
||||
<primary>conventions</primary>
|
||||
</indexterm>
|
||||
|
||||
<para>This document uses the following conventions:</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Descriptions</entry>
|
||||
|
||||
<entry>Appearance</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>Caution</entry>
|
||||
|
||||
<entry>
|
||||
<caution>
|
||||
<para>Don't run with scissors!</para>
|
||||
</caution>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Hint or Tip</entry>
|
||||
|
||||
<entry>
|
||||
<tip>
|
||||
<para>For best results... </para>
|
||||
</tip>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Note</entry>
|
||||
|
||||
<entry>
|
||||
<note>
|
||||
<para>Dear John...</para>
|
||||
</note>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Warning</entry>
|
||||
|
||||
<entry>
|
||||
<warning>
|
||||
<para>Read this or the cat gets it.</para>
|
||||
</warning>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>File or directory name</entry>
|
||||
|
||||
<entry>
|
||||
<filename>filename</filename>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Command to be typed</entry>
|
||||
|
||||
<entry>
|
||||
<command>command</command>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Application name</entry>
|
||||
|
||||
<entry>
|
||||
<application>application</application>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>
|
||||
Normal user's prompt under bash shell</entry>
|
||||
|
||||
<entry>bash$</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>
|
||||
Root user's prompt under bash shell</entry>
|
||||
|
||||
<entry>bash#</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>
|
||||
Normal user's prompt under tcsh shell</entry>
|
||||
|
||||
<entry>tcsh$</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Environment variables</entry>
|
||||
|
||||
<entry>
|
||||
<envar>VARIABLE</envar>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Term found in the glossary</entry>
|
||||
|
||||
<entry>
|
||||
<glossterm linkend="gloss-bugzilla">Bugzilla</glossterm>
|
||||
</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Code example</entry>
|
||||
|
||||
<entry>
|
||||
<programlisting><sgmltag class="starttag">para</sgmltag>
|
||||
Beginning and end of paragraph
|
||||
<sgmltag class="endtag">para</sgmltag></programlisting>
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
<para>
|
||||
This documentation is maintained in DocBook 4.1.2 XML format.
|
||||
Changes are best submitted as plain text or XML diffs, attached
|
||||
to a bug filed in the &bzg-bugs; component.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,821 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<chapter id="customization">
|
||||
<title>Customizing Bugzilla</title>
|
||||
|
||||
<section id="cust-skins">
|
||||
<title>Custom Skins</title>
|
||||
|
||||
<para>
|
||||
Bugzilla allows you to have multiple skins. These are custom CSS and possibly
|
||||
also custom images for Bugzilla. To create a new custom skin, you have two
|
||||
choices:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Make a single CSS file, and put it in the
|
||||
<filename>skins/contrib</filename> directory.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Make a directory that contains all the same CSS file
|
||||
names as <filename>skins/standard/</filename>, and put
|
||||
your directory in <filename>skins/contrib/</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
After you put the file or the directory there, make sure to run checksetup.pl
|
||||
so that it can reset the file permissions correctly.
|
||||
</para>
|
||||
<para>
|
||||
After you have installed the new skin, it will show up as an option in the
|
||||
user's General Preferences. If you would like to force a particular skin on all
|
||||
users, just select it in the Default Preferences and then uncheck "Enabled" on
|
||||
the preference.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="cust-templates">
|
||||
<title>Template Customization</title>
|
||||
|
||||
<para>
|
||||
Administrators can configure the look and feel of Bugzilla without
|
||||
having to edit Perl files or face the nightmare of massive merge
|
||||
conflicts when they upgrade to a newer version in the future.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Templatization also makes localized versions of Bugzilla possible,
|
||||
for the first time. It's possible to have Bugzilla's UI language
|
||||
determined by the user's browser. More information is available in
|
||||
<xref linkend="template-http-accept"/>.
|
||||
</para>
|
||||
|
||||
<section id="template-directory">
|
||||
<title>Template Directory Structure</title>
|
||||
<para>
|
||||
The template directory structure starts with top level directory
|
||||
named <filename>template</filename>, which contains a directory
|
||||
for each installed localization. The next level defines the
|
||||
language used in the templates. Bugzilla comes with English
|
||||
templates, so the directory name is <filename>en</filename>,
|
||||
and we will discuss <filename>template/en</filename> throughout
|
||||
the documentation. Below <filename>template/en</filename> is the
|
||||
<filename>default</filename> directory, which contains all the
|
||||
standard templates shipped with Bugzilla.
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
A directory <filename>data/templates</filename> also exists;
|
||||
this is where Template Toolkit puts the compiled versions of
|
||||
the templates from either the default or custom directories.
|
||||
<emphasis>Do not</emphasis> directly edit the files in this
|
||||
directory, or all your changes will be lost the next time
|
||||
Template Toolkit recompiles the templates.
|
||||
</para>
|
||||
</warning>
|
||||
</section>
|
||||
|
||||
<section id="template-method">
|
||||
<title>Choosing a Customization Method</title>
|
||||
<para>
|
||||
If you want to edit Bugzilla's templates, the first decision
|
||||
you must make is how you want to go about doing so. There are two
|
||||
choices, and which you use depends mainly on the scope of your
|
||||
modifications, and the method you plan to use to upgrade Bugzilla.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The first method of making customizations is to directly edit the
|
||||
templates found in <filename>template/en/default</filename>.
|
||||
This is probably the best way to go about it if you are going to
|
||||
be upgrading Bugzilla through CVS, because if you then execute
|
||||
a <command>cvs update</command>, any changes you have made will
|
||||
be merged automagically with the updated versions.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
If you use this method, and CVS conflicts occur during an
|
||||
update, the conflicted templates (and possibly other parts
|
||||
of your installation) will not work until they are resolved.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
The second method is to copy the templates to be modified
|
||||
into a mirrored directory structure under
|
||||
<filename>template/en/custom</filename>. Templates in this
|
||||
directory structure automatically override any identically-named
|
||||
and identically-located templates in the
|
||||
<filename>default</filename> directory.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
The <filename>custom</filename> directory does not exist
|
||||
at first and must be created if you want to use it.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
The second method of customization should be used if you
|
||||
use the overwriting method of upgrade, because otherwise
|
||||
your changes will be lost. This method may also be better if
|
||||
you are using the CVS method of upgrading and are going to make major
|
||||
changes, because it is guaranteed that the contents of this directory
|
||||
will not be touched during an upgrade, and you can then decide whether
|
||||
to continue using your own templates, or make the effort to merge your
|
||||
changes into the new versions by hand.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Using this method, your installation may break if incompatible
|
||||
changes are made to the template interface. Such changes should
|
||||
be documented in the release notes, provided you are using a
|
||||
stable release of Bugzilla. If you use using unstable code, you will
|
||||
need to deal with this one yourself, although if possible the changes
|
||||
will be mentioned before they occur in the deprecations section of the
|
||||
previous stable release's release notes.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
Regardless of which method you choose, it is recommended that
|
||||
you run <command>./checksetup.pl</command> after creating or
|
||||
editing any templates in the <filename>template/en/default</filename>
|
||||
directory, and after editing any templates in the
|
||||
<filename>custom</filename> directory.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
It is <emphasis>required</emphasis> that you run
|
||||
<command>./checksetup.pl</command> after creating a new
|
||||
template in the <filename>custom</filename> directory. Failure
|
||||
to do so will raise an incomprehensible error message.
|
||||
</para>
|
||||
</warning>
|
||||
</section>
|
||||
|
||||
<section id="template-edit">
|
||||
<title>How To Edit Templates</title>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
If you are making template changes that you intend on submitting back
|
||||
for inclusion in standard Bugzilla, you should read the relevant
|
||||
sections of the
|
||||
<ulink url="http://www.bugzilla.org/docs/developer.html">Developers'
|
||||
Guide</ulink>.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
The syntax of the Template Toolkit language is beyond the scope of
|
||||
this guide. It's reasonably easy to pick up by looking at the current
|
||||
templates; or, you can read the manual, available on the
|
||||
<ulink url="http://www.template-toolkit.org">Template Toolkit home
|
||||
page</ulink>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
One thing you should take particular care about is the need
|
||||
to properly HTML filter data that has been passed into the template.
|
||||
This means that if the data can possibly contain special HTML characters
|
||||
such as <, and the data was not intended to be HTML, they need to be
|
||||
converted to entity form, i.e. &lt;. You use the 'html' filter in the
|
||||
Template Toolkit to do this. If you forget, you may open up
|
||||
your installation to cross-site scripting attacks.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Also note that Bugzilla adds a few filters of its own, that are not
|
||||
in standard Template Toolkit. In particular, the 'url_quote' filter
|
||||
can convert characters that are illegal or have special meaning in URLs,
|
||||
such as &, to the encoded form, i.e. %26. This actually encodes most
|
||||
characters (but not the common ones such as letters and numbers and so
|
||||
on), including the HTML-special characters, so there's never a need to
|
||||
HTML filter afterwards.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Editing templates is a good way of doing a <quote>poor man's custom
|
||||
fields</quote>.
|
||||
For example, if you don't use the Status Whiteboard, but want to have
|
||||
a free-form text entry box for <quote>Build Identifier</quote>,
|
||||
then you can just
|
||||
edit the templates to change the field labels. It's still be called
|
||||
status_whiteboard internally, but your users don't need to know that.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section id="template-formats">
|
||||
<title>Template Formats and Types</title>
|
||||
|
||||
<para>
|
||||
Some CGI's have the ability to use more than one template. For example,
|
||||
<filename>buglist.cgi</filename> can output itself as RDF, or as two
|
||||
formats of HTML (complex and simple). The mechanism that provides this
|
||||
feature is extensible.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Bugzilla can support different types of output, which again can have
|
||||
multiple formats. In order to request a certain type, you can append
|
||||
the &ctype=<contenttype> (such as rdf or html) to the
|
||||
<filename><cginame>.cgi</filename> URL. If you would like to
|
||||
retrieve a certain format, you can use the &format=<format>
|
||||
(such as simple or complex) in the URL.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To see if a CGI supports multiple output formats and types, grep the
|
||||
CGI for <quote>get_format</quote>. If it's not present, adding
|
||||
multiple format/type support isn't too hard - see how it's done in
|
||||
other CGIs, e.g. config.cgi.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To make a new format template for a CGI which supports this,
|
||||
open a current template for
|
||||
that CGI and take note of the INTERFACE comment (if present.) This
|
||||
comment defines what variables are passed into this template. If
|
||||
there isn't one, I'm afraid you'll have to read the template and
|
||||
the code to find out what information you get.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Write your template in whatever markup or text style is appropriate.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You now need to decide what content type you want your template
|
||||
served as. The content types are defined in the
|
||||
<filename>Bugzilla/Constants.pm</filename> file in the
|
||||
<filename>contenttypes</filename>
|
||||
constant. If your content type is not there, add it. Remember
|
||||
the three- or four-letter tag assigned to your content type.
|
||||
This tag will be part of the template filename.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
After adding or changing a content type, it's suitable to edit
|
||||
<filename>Bugzilla/Constants.pm</filename> in order to reflect
|
||||
the changes. Also, the file should be kept up to date after an
|
||||
upgrade if content types have been customized in the past.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
Save the template as <filename><stubname>-<formatname>.<contenttypetag>.tmpl</filename>.
|
||||
Try out the template by calling the CGI as
|
||||
<filename><cginame>.cgi?format=<formatname>&ctype=<type></filename> .
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
||||
<section id="template-specific">
|
||||
<title>Particular Templates</title>
|
||||
|
||||
<para>
|
||||
There are a few templates you may be particularly interested in
|
||||
customizing for your installation.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>index.html.tmpl</command>:
|
||||
This is the Bugzilla front page.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>global/header.html.tmpl</command>:
|
||||
This defines the header that goes on all Bugzilla pages.
|
||||
The header includes the banner, which is what appears to users
|
||||
and is probably what you want to edit instead. However the
|
||||
header also includes the HTML HEAD section, so you could for
|
||||
example add a stylesheet or META tag by editing the header.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>global/banner.html.tmpl</command>:
|
||||
This contains the <quote>banner</quote>, the part of the header
|
||||
that appears
|
||||
at the top of all Bugzilla pages. The default banner is reasonably
|
||||
barren, so you'll probably want to customize this to give your
|
||||
installation a distinctive look and feel. It is recommended you
|
||||
preserve the Bugzilla version number in some form so the version
|
||||
you are running can be determined, and users know what docs to read.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>global/footer.html.tmpl</command>:
|
||||
This defines the footer that goes on all Bugzilla pages. Editing
|
||||
this is another way to quickly get a distinctive look and feel for
|
||||
your Bugzilla installation.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>global/variables.none.tmpl</command>:
|
||||
This defines a list of terms that may be changed in order to
|
||||
<quote>brand</quote> the Bugzilla instance In this way, terms
|
||||
like <quote>bugs</quote> can be replaced with <quote>issues</quote>
|
||||
across the whole Bugzilla installation. The name
|
||||
<quote>Bugzilla</quote> and other words can be customized as well.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>list/table.html.tmpl</command>:
|
||||
This template controls the appearance of the bug lists created
|
||||
by Bugzilla. Editing this template allows per-column control of
|
||||
the width and title of a column, the maximum display length of
|
||||
each entry, and the wrap behaviour of long entries.
|
||||
For long bug lists, Bugzilla inserts a 'break' every 100 bugs by
|
||||
default; this behaviour is also controlled by this template, and
|
||||
that value can be modified here.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>bug/create/user-message.html.tmpl</command>:
|
||||
This is a message that appears near the top of the bug reporting page.
|
||||
By modifying this, you can tell your users how they should report
|
||||
bugs.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>bug/process/midair.html.tmpl</command>:
|
||||
This is the page used if two people submit simultaneous changes to the
|
||||
same bug. The second person to submit their changes will get this page
|
||||
to tell them what the first person did, and ask if they wish to
|
||||
overwrite those changes or go back and revisit the bug. The default
|
||||
title and header on this page read "Mid-air collision detected!" If
|
||||
you work in the aviation industry, or other environment where this
|
||||
might be found offensive (yes, we have true stories of this happening)
|
||||
you'll want to change this to something more appropriate for your
|
||||
environment.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>bug/create/create.html.tmpl</command> and
|
||||
<command>bug/create/comment.txt.tmpl</command>:
|
||||
You may not wish to go to the effort of creating custom fields in
|
||||
Bugzilla, yet you want to make sure that each bug report contains
|
||||
a number of pieces of important information for which there is not
|
||||
a special field. The bug entry system has been designed in an
|
||||
extensible fashion to enable you to add arbitrary HTML widgets,
|
||||
such as drop-down lists or textboxes, to the bug entry page
|
||||
and have their values appear formatted in the initial comment.
|
||||
A hidden field that indicates the format should be added inside
|
||||
the form in order to make the template functional. Its value should
|
||||
be the suffix of the template filename. For example, if the file
|
||||
is called <filename>create-cust.html.tmpl</filename>, then
|
||||
<programlisting><input type="hidden" name="format" value="cust"></programlisting>
|
||||
should be used inside the form.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
An example of this is the mozilla.org
|
||||
<ulink url="http://landfill.bugzilla.org/bugzilla-tip/enter_bug.cgi?product=WorldControl&format=guided">guided
|
||||
bug submission form</ulink>. The code for this comes with the Bugzilla
|
||||
distribution as an example for you to copy. It can be found in the
|
||||
files
|
||||
<filename>create-guided.html.tmpl</filename> and
|
||||
<filename>comment-guided.html.tmpl</filename>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
So to use this feature, create a custom template for
|
||||
<filename>enter_bug.cgi</filename>. The default template, on which you
|
||||
could base it, is
|
||||
<filename>custom/bug/create/create.html.tmpl</filename>.
|
||||
Call it <filename>create-<formatname>.html.tmpl</filename>, and
|
||||
in it, add widgets for each piece of information you'd like
|
||||
collected - such as a build number, or set of steps to reproduce.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Then, create a template like
|
||||
<filename>custom/bug/create/comment.txt.tmpl</filename>, and call it
|
||||
<filename>comment-<formatname>.txt.tmpl</filename>. This
|
||||
template should reference the form fields you have created using
|
||||
the syntax <filename>[% form.<fieldname> %]</filename>. When a
|
||||
bug report is
|
||||
submitted, the initial comment attached to the bug report will be
|
||||
formatted according to the layout of this template.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For example, if your custom enter_bug template had a field
|
||||
<programlisting><input type="text" name="buildid" size="30"></programlisting>
|
||||
and then your comment.txt.tmpl had
|
||||
<programlisting>BuildID: [% form.buildid %]</programlisting>
|
||||
then something like
|
||||
<programlisting>BuildID: 20020303</programlisting>
|
||||
would appear in the initial comment.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
||||
<section id="template-http-accept">
|
||||
<title>Configuring Bugzilla to Detect the User's Language</title>
|
||||
|
||||
<para>Bugzilla honours the user's Accept: HTTP header. You can install
|
||||
templates in other languages, and Bugzilla will pick the most appropriate
|
||||
according to a priority order defined by you. Many
|
||||
language templates can be obtained from <ulink
|
||||
url="http://www.bugzilla.org/download.html#localizations"/>. Instructions
|
||||
for submitting new languages are also available from that location.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="cust-hooks">
|
||||
<title>The Bugzilla Extension Mechanism</title>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
Note that the below paths are inconsistent and confusing. They will
|
||||
likely be changed in Bugzilla 4.0.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
Extensions are a way for extensions to Bugzilla to insert code
|
||||
into the standard Bugzilla templates and source files
|
||||
without modifying these files themselves. The extension mechanism
|
||||
defines a consistent API for extending the standard templates and source files
|
||||
in a way that cleanly separates standard code from extension code.
|
||||
Hooks reduce merge conflicts and make it easier to write extensions that work
|
||||
across multiple versions of Bugzilla, making upgrading a Bugzilla installation
|
||||
with installed extensions easier. Furthermore, they make it easy to install
|
||||
and remove extensions as each extension is nothing more than a
|
||||
simple directory structure.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There are two main types of hooks: code hooks and template hooks. Code
|
||||
hooks allow extensions to invoke code at specific points in various
|
||||
source files, while template hooks allow extensions to add elements to
|
||||
the Bugzilla user interface.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A hook is just a named place in a standard source or template file
|
||||
where extension source code or template files for that hook get processed.
|
||||
Each extension has a corresponding directory in the Bugzilla directory
|
||||
tree (<filename>BUGZILLA_ROOT/extensions/extension_name</filename>). Hooking
|
||||
an extension source file or template to a hook is as simple as putting
|
||||
the extension file into extension's template or code directory.
|
||||
When Bugzilla processes the source file or template and reaches the hook,
|
||||
it will process all extension files in the hook's directory.
|
||||
The hooks themselves can be added into any source file or standard template
|
||||
upon request by extension authors.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To use hooks to extend Bugzilla, first make sure there is
|
||||
a hook at the appropriate place within the source file or template you
|
||||
want to extend. The exact appearance of a hook depends on if the hook
|
||||
is a code hook or a template hook.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Code hooks appear in Bugzilla source files as a single method call
|
||||
in the format <literal role="code">Bugzilla::Hook->process("<varname>name</varname>");</literal>.
|
||||
For instance, <filename>enter_bug.cgi</filename> may invoke the hook
|
||||
"<varname>enter_bug-entrydefaultvars</varname>". Thus, a source file at
|
||||
<filename>BUGZILLA_ROOT/extensions/EXTENSION_NAME/code/enter_bug-entrydefaultvars.pl</filename>
|
||||
will be automatically invoked when the code hook is reached.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Template hooks appear in the standard Bugzilla templates as a
|
||||
single directive in the format
|
||||
<literal role="code">[% Hook.process("<varname>name</varname>") %]</literal>,
|
||||
where <varname>name</varname> is the unique name of the hook.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If you aren't sure what you want to extend or just want to browse the
|
||||
available hooks, either use your favorite multi-file search
|
||||
tool (e.g. <command>grep</command>) to search the standard templates
|
||||
for occurrences of <methodname>Hook.process</methodname> or the source
|
||||
files for occurrences of <methodname>Bugzilla::Hook::process</methodname>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If there is no hook at the appropriate place within the Bugzilla
|
||||
source file or template you want to extend,
|
||||
<ulink url="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=User%20Interface">file
|
||||
a bug requesting one</ulink>, specifying:
|
||||
</para>
|
||||
|
||||
<simplelist>
|
||||
<member>the source or template file for which you are
|
||||
requesting a hook;</member>
|
||||
<member>
|
||||
where in the file you would like the hook to be placed
|
||||
(line number/position for latest version of the file in CVS
|
||||
or description of location);
|
||||
</member>
|
||||
<member>the purpose of the hook;</member>
|
||||
<member>a link to information about your extension, if any.</member>
|
||||
</simplelist>
|
||||
|
||||
<para>
|
||||
The Bugzilla reviewers will promptly review each hook request,
|
||||
name the hook, add it to the template or source file, and check
|
||||
the new version of the template into CVS.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You may optionally attach a patch to the bug which implements the hook
|
||||
and check it in yourself after receiving approval from a Bugzilla
|
||||
reviewer. The developers may suggest changes to the location of the
|
||||
hook based on their analysis of your needs or so the hook can satisfy
|
||||
the needs of multiple extensions, but the process of getting hooks
|
||||
approved and checked in is not as stringent as the process for general
|
||||
changes to Bugzilla, and any extension, whether released or still in
|
||||
development, can have hooks added to meet their needs.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
After making sure the hook you need exists (or getting it added if not),
|
||||
add your extension to the directory within the Bugzilla
|
||||
extensions tree corresponding to the hook.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
That's it! Now, when the source file or template containing the hook
|
||||
is processed, your extension file will be processed at the point
|
||||
where the hook appears.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For example, let's say you have an extension named Projman that adds
|
||||
project management capabilities to Bugzilla. Projman has an
|
||||
administration interface <filename>edit-projects.cgi</filename>,
|
||||
and you want to add a link to it into the navigation bar at the bottom
|
||||
of every Bugzilla page for those users who are authorized
|
||||
to administer projects.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The navigation bar is generated by the template file
|
||||
<filename>useful-links.html.tmpl</filename>, which is located in
|
||||
the <filename>global/</filename> subdirectory on the standard Bugzilla
|
||||
template path
|
||||
<filename>BUGZILLA_ROOT/template/en/default/</filename>.
|
||||
Looking in <filename>useful-links.html.tmpl</filename>, you find
|
||||
the following hook at the end of the list of standard Bugzilla
|
||||
administration links:
|
||||
</para>
|
||||
|
||||
<programlisting><![CDATA[...
|
||||
[% ', <a href="editkeywords.cgi">keywords</a>'
|
||||
IF user.groups.editkeywords %]
|
||||
[% Hook.process("edit") %]
|
||||
...]]></programlisting>
|
||||
|
||||
<para>
|
||||
The corresponding extension file for this hook is
|
||||
<filename>BUGZILLA_ROOT/extensions/projman/template/en/global/useful-links-edit.html.tmpl</filename>.
|
||||
You then create that template file and add the following constant:
|
||||
</para>
|
||||
|
||||
<programlisting><![CDATA[...[% ', <a href="edit-projects.cgi">projects</a>' IF user.groups.projman_admins %]]]></programlisting>
|
||||
|
||||
<para>
|
||||
Voila! The link now appears after the other administration links in the
|
||||
navigation bar for users in the <literal>projman_admins</literal> group.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Now, let us say your extension adds a custom "project_manager" field
|
||||
to enter_bug.cgi. You want to modify the CGI script to set the default
|
||||
project manager to be productname@company.com. Looking at
|
||||
<filename>enter_bug.cgi</filename>, you see the enter_bug-entrydefaultvars
|
||||
hook near the bottom of the file before the default form values are set.
|
||||
The corresponding extension source file for this hook is located at
|
||||
<filename>BUGZILLA_ROOT/extensions/projman/code/enter_bug-entrydefaultvars.pl</filename>.
|
||||
You then create that file and add the following:
|
||||
</para>
|
||||
|
||||
<programlisting>$default{'project_manager'} = $product.'@company.com';</programlisting>
|
||||
|
||||
<para>
|
||||
This code will be invoked whenever enter_bug.cgi is executed.
|
||||
Assuming that the rest of the customization was completed (e.g. the
|
||||
custom field was added to the enter_bug template and the required hooks
|
||||
were used in process_bug.cgi), the new field will now have this
|
||||
default value.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Notes:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
If your extension includes entirely new templates in addition to
|
||||
extensions of standard templates, it should store those new
|
||||
templates in its
|
||||
<filename>BUGZILLA_ROOT/extensions/template/en/</filename>
|
||||
directory. Extension template directories, like the
|
||||
<filename>default/</filename> and <filename>custom/</filename>
|
||||
directories, are part of the template search path, so putting templates
|
||||
there enables them to be found by the template processor.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The template processor looks for templates first in the
|
||||
<filename>custom/</filename> directory (i.e. templates added by the
|
||||
specific installation), then in the <filename>extensions/</filename>
|
||||
directory (i.e. templates added by extensions), and finally in the
|
||||
<filename>default/</filename> directory (i.e. the standard Bugzilla
|
||||
templates). Thus, installation-specific templates override both
|
||||
default and extension templates.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
If you are looking to customize Bugzilla, you can also take advantage
|
||||
of template hooks. To do so, create a directory in
|
||||
<filename>BUGZILLA_ROOT/template/en/custom/hook/</filename>
|
||||
that corresponds to the hook you wish to use, then place your
|
||||
customization templates into those directories. For example,
|
||||
if you wanted to use the hook "end" in
|
||||
<filename>global/useful-links.html.tmpl</filename>, you would
|
||||
create the directory <filename>BUGZILLA_ROOT/template/en/custom/hook/
|
||||
global/useful-links.html.tmpl/end/</filename> and add your customization
|
||||
template to this directory.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Obviously this method of customizing Bugzilla only lets you add code
|
||||
to the standard source files and templates; you cannot change the
|
||||
existing code. Nevertheless, for those customizations that only add
|
||||
code, this method can reduce conflicts when merging changes,
|
||||
making upgrading your customized Bugzilla installation easier.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
<section id="cust-change-permissions">
|
||||
<title>Customizing Who Can Change What</title>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
This feature should be considered experimental; the Bugzilla code you
|
||||
will be changing is not stable, and could change or move between
|
||||
versions. Be aware that if you make modifications as outlined here,
|
||||
you may have
|
||||
to re-make them or port them if Bugzilla changes internally between
|
||||
versions, and you upgrade.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
Companies often have rules about which employees, or classes of employees,
|
||||
are allowed to change certain things in the bug system. For example,
|
||||
only the bug's designated QA Contact may be allowed to VERIFY the bug.
|
||||
Bugzilla has been
|
||||
designed to make it easy for you to write your own custom rules to define
|
||||
who is allowed to make what sorts of value transition.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
By default, assignees, QA owners and users
|
||||
with <emphasis>editbugs</emphasis> privileges can edit all fields of bugs,
|
||||
except group restrictions (unless they are members of the groups they
|
||||
are trying to change). Bug reporters also have the ability to edit some
|
||||
fields, but in a more restrictive manner. Other users, without
|
||||
<emphasis>editbugs</emphasis> privileges, can not edit
|
||||
bugs, except to comment and add themselves to the CC list.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For maximum flexibility, customizing this means editing Bugzilla's Perl
|
||||
code. This gives the administrator complete control over exactly who is
|
||||
allowed to do what. The relevant method is called
|
||||
<filename>check_can_change_field()</filename>,
|
||||
and is found in <filename>Bug.pm</filename> in your
|
||||
Bugzilla/ directory. If you open that file and search for
|
||||
<quote>sub check_can_change_field</quote>, you'll find it.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This function has been carefully commented to allow you to see exactly
|
||||
how it works, and give you an idea of how to make changes to it.
|
||||
Certain marked sections should not be changed - these are
|
||||
the <quote>plumbing</quote> which makes the rest of the function work.
|
||||
In between those sections, you'll find snippets of code like:
|
||||
<programlisting> # Allow the assignee to change anything.
|
||||
if ($ownerid eq $whoid) {
|
||||
return 1;
|
||||
}</programlisting>
|
||||
It's fairly obvious what this piece of code does.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
So, how does one go about changing this function? Well, simple changes
|
||||
can be made just by removing pieces - for example, if you wanted to
|
||||
prevent any user adding a comment to a bug, just remove the lines marked
|
||||
<quote>Allow anyone to change comments.</quote> If you don't want the
|
||||
Reporter to have any special rights on bugs they have filed, just
|
||||
remove the entire section that deals with the Reporter.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
More complex customizations are not much harder. Basically, you add
|
||||
a check in the right place in the function, i.e. after all the variables
|
||||
you are using have been set up. So, don't look at $ownerid before
|
||||
$ownerid has been obtained from the database. You can either add a
|
||||
positive check, which returns 1 (allow) if certain conditions are true,
|
||||
or a negative check, which returns 0 (deny.) E.g.:
|
||||
<programlisting> if ($field eq "qacontact") {
|
||||
if (Bugzilla->user->groups("quality_assurance")) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}</programlisting>
|
||||
This says that only users in the group "quality_assurance" can change
|
||||
the QA Contact field of a bug.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Getting more weird:
|
||||
<programlisting><![CDATA[ if (($field eq "priority") &&
|
||||
(Bugzilla->user->email =~ /.*\@example\.com$/))
|
||||
{
|
||||
if ($oldvalue eq "P1") {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}]]></programlisting>
|
||||
This says that if the user is trying to change the priority field,
|
||||
and their email address is @example.com, they can only do so if the
|
||||
old value of the field was "P1". Not very useful, but illustrative.
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
If you are modifying <filename>process_bug.cgi</filename> in any
|
||||
way, do not change the code that is bounded by DO_NOT_CHANGE blocks.
|
||||
Doing so could compromise security, or cause your installation to
|
||||
stop working entirely.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
For a list of possible field names, look at the bugs table in the
|
||||
database. If you need help writing custom rules for your organization,
|
||||
ask in the newsgroup.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<!-- Integrating Bugzilla with Third-Party Tools -->
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="integration.xml" />
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,449 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<appendix id="gfdl">
|
||||
<title>GNU Free Documentation License</title>
|
||||
|
||||
<!-- - GNU Project - Free Software Foundation (FSF) -->
|
||||
<!-- LINK REV="made" HREF="mailto:webmasters@gnu.org" -->
|
||||
<!-- section>
|
||||
<title>GNU Free Documentation License</title -->
|
||||
<para>Version 1.1, March 2000</para>
|
||||
|
||||
<blockquote>
|
||||
<para>Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place,
|
||||
Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and
|
||||
distribute verbatim copies of this license document, but changing it is
|
||||
not allowed.</para>
|
||||
</blockquote>
|
||||
|
||||
<section label="0" id="gfdl-0">
|
||||
<title>Preamble</title>
|
||||
|
||||
<para>The purpose of this License is to make a manual, textbook, or other
|
||||
written document "free" in the sense of freedom: to assure everyone the
|
||||
effective freedom to copy and redistribute it, with or without modifying
|
||||
it, either commercially or noncommercially. Secondarily, this License
|
||||
preserves for the author and publisher a way to get credit for their
|
||||
work, while not being considered responsible for modifications made by
|
||||
others.</para>
|
||||
|
||||
<para>This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft license
|
||||
designed for free software.</para>
|
||||
|
||||
<para>We have designed this License in order to use it for manuals for
|
||||
free software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals; it
|
||||
can be used for any textual work, regardless of subject matter or whether
|
||||
it is published as a printed book. We recommend this License principally
|
||||
for works whose purpose is instruction or reference.</para>
|
||||
</section>
|
||||
|
||||
<section label="1" id="gfdl-1">
|
||||
<title>Applicability and Definition</title>
|
||||
|
||||
<para>This License applies to any manual or other work that contains a
|
||||
notice placed by the copyright holder saying it can be distributed under
|
||||
the terms of this License. The "Document", below, refers to any such
|
||||
manual or work. Any member of the public is a licensee, and is addressed
|
||||
as "you".</para>
|
||||
|
||||
<para>A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.</para>
|
||||
|
||||
<para>A "Secondary Section" is a named appendix or a front-matter section
|
||||
of the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (For example, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical connection
|
||||
with the subject or with related matters, or of legal, commercial,
|
||||
philosophical, ethical or political position regarding them.</para>
|
||||
|
||||
<para>The "Invariant Sections" are certain Secondary Sections whose
|
||||
titles are designated, as being those of Invariant Sections, in the
|
||||
notice that says that the Document is released under this License.</para>
|
||||
|
||||
<para>The "Cover Texts" are certain short passages of text that are
|
||||
listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says
|
||||
that the Document is released under this License.</para>
|
||||
|
||||
<para>A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the general
|
||||
public, whose contents can be viewed and edited directly and
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or for
|
||||
automatic translation to a variety of formats suitable for input to text
|
||||
formatters. A copy made in an otherwise Transparent file format whose
|
||||
markup has been designed to thwart or discourage subsequent modification
|
||||
by readers is not Transparent. A copy that is not "Transparent" is called
|
||||
"Opaque".</para>
|
||||
|
||||
<para>Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML or
|
||||
XML using a publicly available DTD, and standard-conforming simple HTML
|
||||
designed for human modification. Opaque formats include PostScript, PDF,
|
||||
proprietary formats that can be read and edited only by proprietary word
|
||||
processors, SGML or XML for which the DTD and/or processing tools are not
|
||||
generally available, and the machine-generated HTML produced by some word
|
||||
processors for output purposes only.</para>
|
||||
|
||||
<para>The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in formats
|
||||
which do not have any title page as such, "Title Page" means the text
|
||||
near the most prominent appearance of the work's title, preceding the
|
||||
beginning of the body of the text.</para>
|
||||
</section>
|
||||
|
||||
<section label="2" id="gfdl-2">
|
||||
<title>Verbatim Copying</title>
|
||||
|
||||
<para>You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies to
|
||||
the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use technical
|
||||
measures to obstruct or control the reading or further copying of the
|
||||
copies you make or distribute. However, you may accept compensation in
|
||||
exchange for copies. If you distribute a large enough number of copies
|
||||
you must also follow the conditions in section 3.</para>
|
||||
|
||||
<para>You may also lend copies, under the same conditions stated above,
|
||||
and you may publicly display copies.</para>
|
||||
</section>
|
||||
|
||||
<section label="3" id="gfdl-3">
|
||||
<title>Copying in Quantity</title>
|
||||
|
||||
<para>If you publish printed copies of the Document numbering more than
|
||||
100, and the Document's license notice requires Cover Texts, you must
|
||||
enclose the copies in covers that carry, clearly and legibly, all these
|
||||
Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts
|
||||
on the back cover. Both covers must also clearly and legibly identify you
|
||||
as the publisher of these copies. The front cover must present the full
|
||||
title with all words of the title equally prominent and visible. You may
|
||||
add other material on the covers in addition. Copying with changes
|
||||
limited to the covers, as long as they preserve the title of the Document
|
||||
and satisfy these conditions, can be treated as verbatim copying in other
|
||||
respects.</para>
|
||||
|
||||
<para>If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit reasonably)
|
||||
on the actual cover, and continue the rest onto adjacent pages.</para>
|
||||
|
||||
<para>If you publish or distribute Opaque copies of the Document
|
||||
numbering more than 100, you must either include a machine-readable
|
||||
Transparent copy along with each Opaque copy, or state in or with each
|
||||
Opaque copy a publicly-accessible computer-network location containing a
|
||||
complete Transparent copy of the Document, free of added material, which
|
||||
the general network-using public has access to download anonymously at no
|
||||
charge using public-standard network protocols. If you use the latter
|
||||
option, you must take reasonably prudent steps, when you begin
|
||||
distribution of Opaque copies in quantity, to ensure that this
|
||||
Transparent copy will remain thus accessible at the stated location until
|
||||
at least one year after the last time you distribute an Opaque copy
|
||||
(directly or through your agents or retailers) of that edition to the
|
||||
public.</para>
|
||||
|
||||
<para>It is requested, but not required, that you contact the authors of
|
||||
the Document well before redistributing any large number of copies, to
|
||||
give them a chance to provide you with an updated version of the
|
||||
Document.</para>
|
||||
</section>
|
||||
|
||||
<section label="4" id="gfdl-4">
|
||||
<title>Modifications</title>
|
||||
|
||||
<para>You may copy and distribute a Modified Version of the Document
|
||||
under the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution and
|
||||
modification of the Modified Version to whoever possesses a copy of it.
|
||||
In addition, you must do these things in the Modified Version:</para>
|
||||
|
||||
<orderedlist numeration="upperalpha">
|
||||
<listitem>
|
||||
<para>Use in the Title Page (and on the covers, if any) a title
|
||||
distinct from that of the Document, and from those of previous
|
||||
versions (which should, if there were any, be listed in the History
|
||||
section of the Document). You may use the same title as a previous
|
||||
version if the original publisher of that version gives
|
||||
permission.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>List on the Title Page, as authors, one or more persons or
|
||||
entities responsible for authorship of the modifications in the
|
||||
Modified Version, together with at least five of the principal
|
||||
authors of the Document (all of its principal authors, if it has less
|
||||
than five).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Preserve all the copyright notices of the Document.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Include, immediately after the copyright notices, a license
|
||||
notice giving the public permission to use the Modified Version under
|
||||
the terms of this License, in the form shown in the Addendum
|
||||
below.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Preserve in that license notice the full lists of Invariant
|
||||
Sections and required Cover Texts given in the Document's license
|
||||
notice.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Include an unaltered copy of this License.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Preserve the section entitled "History", and its title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Preserve the network location, if any, given in the Document
|
||||
for public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions it
|
||||
was based on. These may be placed in the "History" section. You may
|
||||
omit a network location for a work that was published at least four
|
||||
years before the Document itself, or if the original publisher of the
|
||||
version it refers to gives permission.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>In any section entitled "Acknowledgements" or "Dedications",
|
||||
preserve the section's title, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements and/or
|
||||
dedications given therein.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Preserve all the Invariant Sections of the Document, unaltered
|
||||
in their text and in their titles. Section numbers or the equivalent
|
||||
are not considered part of the section titles.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Delete any section entitled "Endorsements". Such a section may
|
||||
not be included in the Modified Version.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Do not retitle any existing section as "Endorsements" or to
|
||||
conflict in title with any Invariant Section.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all of
|
||||
these sections as invariant. To do this, add their titles to the list of
|
||||
Invariant Sections in the Modified Version's license notice. These titles
|
||||
must be distinct from any other section titles.</para>
|
||||
|
||||
<para>You may add a section entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various parties--for
|
||||
example, statements of peer review or that the text has been approved by
|
||||
an organization as the authoritative definition of a standard.</para>
|
||||
|
||||
<para>You may add a passage of up to five words as a Front-Cover Text,
|
||||
and a passage of up to 25 words as a Back-Cover Text, to the end of the
|
||||
list of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or through
|
||||
arrangements made by) any one entity. If the Document already includes a
|
||||
cover text for the same cover, previously added by you or by arrangement
|
||||
made by the same entity you are acting on behalf of, you may not add
|
||||
another; but you may replace the old one, on explicit permission from the
|
||||
previous publisher that added the old one.</para>
|
||||
|
||||
<para>The author(s) and publisher(s) of the Document do not by this
|
||||
License give permission to use their names for publicity for or to assert
|
||||
or imply endorsement of any Modified Version.</para>
|
||||
</section>
|
||||
|
||||
<section label="5" id="gfdl-5">
|
||||
<title>Combining Documents</title>
|
||||
|
||||
<para>You may combine the Document with other documents released under
|
||||
this License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and list
|
||||
them all as Invariant Sections of your combined work in its license
|
||||
notice.</para>
|
||||
|
||||
<para>The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single copy.
|
||||
If there are multiple Invariant Sections with the same name but different
|
||||
contents, make the title of each such section unique by adding at the end
|
||||
of it, in parentheses, the name of the original author or publisher of
|
||||
that section if known, or else a unique number. Make the same adjustment
|
||||
to the section titles in the list of Invariant Sections in the license
|
||||
notice of the combined work.</para>
|
||||
|
||||
<para>In the combination, you must combine any sections entitled
|
||||
"History" in the various original documents, forming one section entitled
|
||||
"History"; likewise combine any sections entitled "Acknowledgements", and
|
||||
any sections entitled "Dedications". You must delete all sections
|
||||
entitled "Endorsements."</para>
|
||||
</section>
|
||||
|
||||
<section label="6" id="gfdl-6">
|
||||
<title>Collections of Documents</title>
|
||||
|
||||
<para>You may make a collection consisting of the Document and other
|
||||
documents released under this License, and replace the individual copies
|
||||
of this License in the various documents with a single copy that is
|
||||
included in the collection, provided that you follow the rules of this
|
||||
License for verbatim copying of each of the documents in all other
|
||||
respects.</para>
|
||||
|
||||
<para>You may extract a single document from such a collection, and
|
||||
distribute it individually under this License, provided you insert a copy
|
||||
of this License into the extracted document, and follow this License in
|
||||
all other respects regarding verbatim copying of that document.</para>
|
||||
</section>
|
||||
|
||||
<section label="7" id="gfdl-7">
|
||||
<title>Aggregation with Independent Works</title>
|
||||
|
||||
<para>A compilation of the Document or its derivatives with other
|
||||
separate and independent documents or works, in or on a volume of a
|
||||
storage or distribution medium, does not as a whole count as a Modified
|
||||
Version of the Document, provided no compilation copyright is claimed for
|
||||
the compilation. Such a compilation is called an "aggregate", and this
|
||||
License does not apply to the other self-contained works thus compiled
|
||||
with the Document, on account of their being thus compiled, if they are
|
||||
not themselves derivative works of the Document.</para>
|
||||
|
||||
<para>If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one quarter of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on covers
|
||||
that surround only the Document within the aggregate. Otherwise they must
|
||||
appear on covers around the whole aggregate.</para>
|
||||
</section>
|
||||
|
||||
<section label="8" id="gfdl-8">
|
||||
<title>Translation</title>
|
||||
|
||||
<para>Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include translations
|
||||
of some or all Invariant Sections in addition to the original versions of
|
||||
these Invariant Sections. You may include a translation of this License
|
||||
provided that you also include the original English version of this
|
||||
License. In case of a disagreement between the translation and the
|
||||
original English version of this License, the original English version
|
||||
will prevail.</para>
|
||||
</section>
|
||||
|
||||
<section label="9" id="gfdl-9">
|
||||
<title>Termination</title>
|
||||
|
||||
<para>You may not copy, modify, sublicense, or distribute the Document
|
||||
except as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However, parties
|
||||
who have received copies, or rights, from you under this License will not
|
||||
have their licenses terminated so long as such parties remain in full
|
||||
compliance.</para>
|
||||
</section>
|
||||
|
||||
<section label="10" id="gfdl-10">
|
||||
<title>Future Revisions of this License</title>
|
||||
|
||||
<para>The Free Software Foundation may publish new, revised versions of
|
||||
the GNU Free Documentation License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in
|
||||
detail to address new problems or concerns. See
|
||||
<ulink url="http://www.gnu.org/copyleft/"/>.</para>
|
||||
|
||||
<para>Each version of the License is given a distinguishing version
|
||||
number. If the Document specifies that a particular numbered version of
|
||||
this License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or of
|
||||
any later version that has been published (not as a draft) by the Free
|
||||
Software Foundation. If the Document does not specify a version number of
|
||||
this License, you may choose any version ever published (not as a draft)
|
||||
by the Free Software Foundation.</para>
|
||||
</section>
|
||||
|
||||
<section label="" id="gfdl-howto">
|
||||
<title>How to use this License for your documents</title>
|
||||
|
||||
<para>To use this License in a document you have written, include a copy
|
||||
of the License in the document and put the following copyright and
|
||||
license notices just after the title page:</para>
|
||||
|
||||
<blockquote>
|
||||
<para>Copyright (c) YEAR YOUR NAME. Permission is granted to copy,
|
||||
distribute and/or modify this document under the terms of the GNU Free
|
||||
Documentation License, Version 1.1 or any later version published by
|
||||
the Free Software Foundation; with the Invariant Sections being LIST
|
||||
THEIR TITLES, with the Front-Cover Texts being LIST, and with the
|
||||
Back-Cover Texts being LIST. A copy of the license is included in the
|
||||
section entitled "GNU Free Documentation License".</para>
|
||||
</blockquote>
|
||||
|
||||
<para>If you have no Invariant Sections, write "with no Invariant
|
||||
Sections" instead of saying which ones are invariant. If you have no
|
||||
Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover
|
||||
Texts being LIST"; likewise for Back-Cover Texts.</para>
|
||||
|
||||
<para>If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of free
|
||||
software license, such as the GNU General Public License, to permit their
|
||||
use in free software.</para>
|
||||
</section>
|
||||
</appendix>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,555 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<glossary id="glossary">
|
||||
<glossdiv>
|
||||
<title>0-9, high ascii</title>
|
||||
|
||||
<glossentry id="gloss-htaccess">
|
||||
<glossterm>.htaccess</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>Apache web server, and other NCSA-compliant web servers,
|
||||
observe the convention of using files in directories called
|
||||
<filename>.htaccess</filename>
|
||||
|
||||
to restrict access to certain files. In Bugzilla, they are used
|
||||
to keep secret files which would otherwise
|
||||
compromise your installation - e.g. the
|
||||
<filename>localconfig</filename>
|
||||
file contains the password to your database.
|
||||
curious.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-a">
|
||||
<title>A</title>
|
||||
|
||||
<glossentry id="gloss-apache">
|
||||
<glossterm>Apache</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>In this context, Apache is the web server most commonly used
|
||||
for serving up Bugzilla
|
||||
pages. Contrary to popular belief, the apache web server has nothing
|
||||
to do with the ancient and noble Native American tribe, but instead
|
||||
derived its name from the fact that it was
|
||||
<quote>a patchy</quote>
|
||||
version of the original
|
||||
<acronym>NCSA</acronym>
|
||||
world-wide-web server.</para>
|
||||
|
||||
<variablelist>
|
||||
<title>Useful Directives when configuring Bugzilla</title>
|
||||
|
||||
<varlistentry>
|
||||
<term><computeroutput><ulink url="http://httpd.apache.org/docs-2.0/mod/core.html#addhandler">AddHandler</ulink></computeroutput></term>
|
||||
<listitem>
|
||||
<para>Tell Apache that it's OK to run CGI scripts.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><computeroutput><ulink url="http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride">AllowOverride</ulink></computeroutput></term>
|
||||
<term><computeroutput><ulink url="http://httpd.apache.org/docs-2.0/mod/core.html#options">Options</ulink></computeroutput></term>
|
||||
<listitem>
|
||||
<para>These directives are used to tell Apache many things about
|
||||
the directory they apply to. For Bugzilla's purposes, we need
|
||||
them to allow script execution and <filename>.htaccess</filename>
|
||||
overrides.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><computeroutput><ulink url="http://httpd.apache.org/docs-2.0/mod/mod_dir.html#directoryindex">DirectoryIndex</ulink></computeroutput></term>
|
||||
<listitem>
|
||||
<para>Used to tell Apache what files are indexes. If you can
|
||||
not add <filename>index.cgi</filename> to the list of valid files,
|
||||
you'll need to set <computeroutput>$index_html</computeroutput> to
|
||||
1 in <filename>localconfig</filename> so
|
||||
<command>./checksetup.pl</command> will create an
|
||||
<filename>index.html</filename> that redirects to
|
||||
<filename>index.cgi</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><computeroutput><ulink url="http://httpd.apache.org/docs-2.0/mod/core.html#scriptinterpretersource">ScriptInterpreterSource</ulink></computeroutput></term>
|
||||
<listitem>
|
||||
<para>Used when running Apache on windows so the shebang line
|
||||
doesn't have to be changed in every Bugzilla script.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>For more information about how to configure Apache for Bugzilla,
|
||||
see <xref linkend="http-apache"/>.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-b">
|
||||
<title>B</title>
|
||||
|
||||
<glossentry>
|
||||
<glossterm>Bug</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>A
|
||||
<quote>bug</quote>
|
||||
|
||||
in Bugzilla refers to an issue entered into the database which has an
|
||||
associated number, assignments, comments, etc. Some also refer to a
|
||||
<quote>tickets</quote>
|
||||
or
|
||||
<quote>issues</quote>;
|
||||
in the context of Bugzilla, they are synonymous.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry>
|
||||
<glossterm>Bug Number</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>Each Bugzilla bug is assigned a number that uniquely identifies
|
||||
that bug. The bug associated with a bug number can be pulled up via a
|
||||
query, or easily from the very front page by typing the number in the
|
||||
"Find" box.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-bugzilla">
|
||||
<glossterm>Bugzilla</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>Bugzilla is the world-leading free software bug tracking system.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-c">
|
||||
<title>C</title>
|
||||
|
||||
<glossentry id="gloss-cgi">
|
||||
<glossterm>Common Gateway Interface</glossterm>
|
||||
<acronym>CGI</acronym>
|
||||
<glossdef>
|
||||
<para><acronym>CGI</acronym> is an acronym for Common Gateway Interface. This is
|
||||
a standard for interfacing an external application with a web server. Bugzilla
|
||||
is an example of a <acronym>CGI</acronym> application.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-component">
|
||||
<glossterm>Component</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>A Component is a subsection of a Product. It should be a narrow
|
||||
category, tailored to your organization. All Products must contain at
|
||||
least one Component (and, as a matter of fact, creating a Product
|
||||
with no Components will create an error in Bugzilla).</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-cpan">
|
||||
<glossterm>Comprehensive Perl Archive Network</glossterm>
|
||||
<acronym>CPAN</acronym>
|
||||
|
||||
<!-- TODO: Rewrite def for CPAN -->
|
||||
<glossdef>
|
||||
<para>
|
||||
<acronym>CPAN</acronym>
|
||||
|
||||
stands for the
|
||||
<quote>Comprehensive Perl Archive Network</quote>.
|
||||
CPAN maintains a large number of extremely useful
|
||||
<glossterm>Perl</glossterm>
|
||||
modules - encapsulated chunks of code for performing a
|
||||
particular task.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-contrib">
|
||||
<glossterm><filename class="directory">contrib</filename></glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>The <filename class="directory">contrib</filename> directory is
|
||||
a location to put scripts that have been contributed to Bugzilla but
|
||||
are not a part of the official distribution. These scripts are written
|
||||
by third parties and may be in languages other than perl. For those
|
||||
that are in perl, there may be additional modules or other requirements
|
||||
than those of the official distribution.
|
||||
<note>
|
||||
<para>Scripts in the <filename class="directory">contrib</filename>
|
||||
directory are not officially supported by the Bugzilla team and may
|
||||
break in between versions.
|
||||
</para>
|
||||
</note>
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-d">
|
||||
<title>D</title>
|
||||
|
||||
<glossentry id="gloss-daemon">
|
||||
<glossterm>daemon</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>A daemon is a computer program which runs in the background. In
|
||||
general, most daemons are started at boot time via System V init
|
||||
scripts, or through RC scripts on BSD-based systems.
|
||||
<glossterm>mysqld</glossterm>,
|
||||
the MySQL server, and
|
||||
<glossterm>apache</glossterm>,
|
||||
a web server, are generally run as daemons.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-dos">
|
||||
<glossterm>DOS Attack</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>A DOS, or Denial of Service attack, is when a user attempts to
|
||||
deny access to a web server by repeatedly accessing a page or sending
|
||||
malformed requests to a webserver. A D-DOS, or
|
||||
Distributed Denial of Service attack, is when these requests come
|
||||
from multiple sources at the same time. Unfortunately, these are much
|
||||
more difficult to defend against.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-g">
|
||||
<title>G</title>
|
||||
|
||||
<glossentry id="gloss-groups">
|
||||
<glossterm>Groups</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>The word
|
||||
<quote>Groups</quote>
|
||||
|
||||
has a very special meaning to Bugzilla. Bugzilla's main security
|
||||
mechanism comes by placing users in groups, and assigning those
|
||||
groups certain privileges to view bugs in particular
|
||||
<glossterm>Products</glossterm>
|
||||
in the
|
||||
<glossterm>Bugzilla</glossterm>
|
||||
database.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-j">
|
||||
<title>J</title>
|
||||
|
||||
<glossentry id="gloss-javascript">
|
||||
<glossterm>JavaScript</glossterm>
|
||||
<glossdef>
|
||||
<para>JavaScript is cool, we should talk about it.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-m">
|
||||
<title>M</title>
|
||||
|
||||
<glossentry id="gloss-mta">
|
||||
<glossterm>Message Transport Agent</glossterm>
|
||||
<acronym>MTA</acronym>
|
||||
|
||||
<glossdef>
|
||||
<para>A Message Transport Agent is used to control the flow of email on a system.
|
||||
The <ulink url="http://search.cpan.org/dist/Email-Send/lib/Email/Send.pm">Email::Send</ulink>
|
||||
Perl module, which Bugzilla uses to send email, can be configured to
|
||||
use many different underlying implementations for actually sending the
|
||||
mail using the <option>mail_delivery_method</option> parameter.
|
||||
Implementations other than <literal>sendmail</literal> require that the
|
||||
<option>sendmailnow</option> param be set to <literal>on</literal>.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-mysql">
|
||||
<glossterm>MySQL</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>MySQL is currently the required
|
||||
<glossterm linkend="gloss-rdbms">RDBMS</glossterm> for Bugzilla. MySQL
|
||||
can be downloaded from <ulink url="http://www.mysql.com"/>. While you
|
||||
should familiarize yourself with all of the documentation, some high
|
||||
points are:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><ulink url="http://www.mysql.com/doc/en/Backup.html">Backup</ulink></term>
|
||||
<listitem>
|
||||
<para>Methods for backing up your Bugzilla database.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><ulink url="http://www.mysql.com/doc/en/Option_files.html">Option Files</ulink></term>
|
||||
<listitem>
|
||||
<para>Information about how to configure MySQL using
|
||||
<filename>my.cnf</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><ulink url="http://www.mysql.com/doc/en/Privilege_system.html">Privilege System</ulink></term>
|
||||
<listitem>
|
||||
<para>Much more detailed information about the suggestions in
|
||||
<xref linkend="security-mysql"/>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-p">
|
||||
<title>P</title>
|
||||
|
||||
<glossentry id="gloss-ppm">
|
||||
<glossterm>Perl Package Manager</glossterm>
|
||||
<acronym>PPM</acronym>
|
||||
|
||||
<glossdef>
|
||||
<para><ulink url="http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/"/>
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry>
|
||||
<glossterm id="gloss-product">Product</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>A Product is a broad category of types of bugs, normally
|
||||
representing a single piece of software or entity. In general,
|
||||
there are several Components to a Product. A Product may define a
|
||||
group (used for security) for all bugs entered into
|
||||
its Components.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry>
|
||||
<glossterm>Perl</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>First written by Larry Wall, Perl is a remarkable program
|
||||
language. It has the benefits of the flexibility of an interpreted
|
||||
scripting language (such as shell script), combined with the speed
|
||||
and power of a compiled language, such as C.
|
||||
<glossterm>Bugzilla</glossterm>
|
||||
|
||||
is maintained in Perl.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-q">
|
||||
<title>Q</title>
|
||||
|
||||
<glossentry>
|
||||
<glossterm>QA</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>
|
||||
<quote>QA</quote>,
|
||||
<quote>Q/A</quote>, and
|
||||
<quote>Q.A.</quote>
|
||||
are short for
|
||||
<quote>Quality Assurance</quote>.
|
||||
In most large software development organizations, there is a team
|
||||
devoted to ensuring the product meets minimum standards before
|
||||
shipping. This team will also generally want to track the progress of
|
||||
bugs over their life cycle, thus the need for the
|
||||
<quote>QA Contact</quote>
|
||||
|
||||
field in a bug.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-r">
|
||||
<title>R</title>
|
||||
|
||||
<glossentry id="gloss-rdbms">
|
||||
<glossterm>Relational DataBase Management System</glossterm>
|
||||
<acronym>RDBMS</acronym>
|
||||
|
||||
<glossdef>
|
||||
<para>A relational database management system is a database system
|
||||
that stores information in tables that are related to each other.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-regexp">
|
||||
<glossterm>Regular Expression</glossterm>
|
||||
<acronym>regexp</acronym>
|
||||
|
||||
<glossdef>
|
||||
<para>A regular expression is an expression used for pattern matching.
|
||||
<ulink url="http://perldoc.com/perl5.6/pod/perlre.html#Regular-Expressions">Documentation</ulink>
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-s">
|
||||
<title>S</title>
|
||||
|
||||
<glossentry id="gloss-service">
|
||||
<glossterm>Service</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>In Windows NT environment, a boot-time background application
|
||||
is referred to as a service. These are generally managed through the
|
||||
control panel while logged in as an account with
|
||||
<quote>Administrator</quote> level capabilities. For more
|
||||
information, consult your Windows manual or the MSKB.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry>
|
||||
<glossterm>
|
||||
<acronym>SGML</acronym>
|
||||
</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>
|
||||
<acronym>SGML</acronym>
|
||||
|
||||
stands for
|
||||
<quote>Standard Generalized Markup Language</quote>.
|
||||
Created in the 1980's to provide an extensible means to maintain
|
||||
documentation based upon content instead of presentation,
|
||||
<acronym>SGML</acronym>
|
||||
|
||||
has withstood the test of time as a robust, powerful language.
|
||||
<glossterm>
|
||||
<acronym>XML</acronym>
|
||||
</glossterm>
|
||||
|
||||
is the
|
||||
<quote>baby brother</quote>
|
||||
|
||||
of SGML; any valid
|
||||
<acronym>XML</acronym>
|
||||
|
||||
document it, by definition, a valid
|
||||
<acronym>SGML</acronym>
|
||||
|
||||
document. The document you are reading is written and maintained in
|
||||
<acronym>SGML</acronym>,
|
||||
and is also valid
|
||||
<acronym>XML</acronym>
|
||||
|
||||
if you modify the Document Type Definition.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-t">
|
||||
<title>T</title>
|
||||
|
||||
<glossentry id="gloss-target-milestone" xreflabel="Target Milestone">
|
||||
<glossterm>Target Milestone</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>Target Milestones are Product goals. They are configurable on a
|
||||
per-Product basis. Most software development houses have a concept of
|
||||
|
||||
<quote>milestones</quote>
|
||||
|
||||
where the people funding a project expect certain functionality on
|
||||
certain dates. Bugzilla facilitates meeting these milestones by
|
||||
giving you the ability to declare by which milestone a bug will be
|
||||
fixed, or an enhancement will be implemented.</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
<glossentry id="gloss-tcl">
|
||||
<glossterm>Tool Command Language</glossterm>
|
||||
<acronym>TCL</acronym>
|
||||
<glossdef>
|
||||
<para>TCL is an open source scripting language available for Windows,
|
||||
Macintosh, and Unix based systems. Bugzilla 1.0 was written in TCL but
|
||||
never released. The first release of Bugzilla was 2.0, which was when
|
||||
it was ported to perl.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
|
||||
<glossdiv id="gloss-z">
|
||||
<title>Z</title>
|
||||
|
||||
<glossentry id="gloss-zarro">
|
||||
<glossterm>Zarro Boogs Found</glossterm>
|
||||
|
||||
<glossdef>
|
||||
<para>This is just a goofy way of saying that there were no bugs
|
||||
found matching your query. When asked to explain this message,
|
||||
Terry had the following to say:
|
||||
</para>
|
||||
|
||||
<blockquote>
|
||||
<attribution>Terry Weissman</attribution>
|
||||
<para>I've been asked to explain this ... way back when, when
|
||||
Netscape released version 4.0 of its browser, we had a release
|
||||
party. Naturally, there had been a big push to try and fix every
|
||||
known bug before the release. Naturally, that hadn't actually
|
||||
happened. (This is not unique to Netscape or to 4.0; the same thing
|
||||
has happened with every software project I've ever seen.) Anyway,
|
||||
at the release party, T-shirts were handed out that said something
|
||||
like "Netscape 4.0: Zarro Boogs". Just like the software, the
|
||||
T-shirt had no known bugs. Uh-huh.
|
||||
</para>
|
||||
|
||||
<para>So, when you query for a list of bugs, and it gets no results,
|
||||
you can think of this as a friendly reminder. Of *course* there are
|
||||
bugs matching your query, they just aren't in the bugsystem yet...
|
||||
</para>
|
||||
</blockquote>
|
||||
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
</glossdiv>
|
||||
</glossary>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
@@ -1,21 +0,0 @@
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,124 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<!-- Keep these tools listings in alphabetical order please. -MPB -->
|
||||
<section id="integration">
|
||||
<title>Integrating Bugzilla with Third-Party Tools</title>
|
||||
|
||||
<section id="bonsai"
|
||||
xreflabel="Bonsai, the Mozilla automated CVS management system">
|
||||
<title>Bonsai</title>
|
||||
|
||||
<para>Bonsai is a web-based tool for managing
|
||||
<xref linkend="cvs" />
|
||||
|
||||
. Using Bonsai, administrators can control open/closed status of trees,
|
||||
query a fast relational database back-end for change, branch, and comment
|
||||
information, and view changes made since the last time the tree was
|
||||
closed. Bonsai
|
||||
also integrates with
|
||||
<xref linkend="tinderbox" />.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="cvs" xreflabel="CVS, the Concurrent Versioning System">
|
||||
<title>CVS</title>
|
||||
|
||||
<para>CVS integration is best accomplished, at this point, using the
|
||||
Bugzilla Email Gateway.</para>
|
||||
|
||||
<para>Follow the instructions in this Guide for enabling Bugzilla e-mail
|
||||
integration. Ensure that your check-in script sends an email to your
|
||||
Bugzilla e-mail gateway with the subject of
|
||||
<quote>[Bug XXXX]</quote>,
|
||||
and you can have CVS check-in comments append to your Bugzilla bug. If
|
||||
you want to have the bug be closed automatically, you'll have to modify
|
||||
the <filename>contrib/bugzilla_email_append.pl</filename> script.
|
||||
</para>
|
||||
|
||||
<para>There is also a CVSZilla project, based upon somewhat dated
|
||||
Bugzilla code, to integrate CVS and Bugzilla through CVS' ability to
|
||||
email. Check it out at: <ulink url="http://www.cvszilla.org/"/>.
|
||||
</para>
|
||||
|
||||
<para>Another system capable of CVS integration with Bugzilla is
|
||||
Scmbug. This system provides generic integration of Source code
|
||||
Configuration Management with Bugtracking. Check it out at: <ulink
|
||||
url="http://freshmeat.net/projects/scmbug/"/>.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="scm"
|
||||
xreflabel="Perforce SCM (Fast Software Configuration Management System, a powerful commercial alternative to CVS">
|
||||
|
||||
<title>Perforce SCM</title>
|
||||
|
||||
<para>You can find the project page for Bugzilla and Teamtrack Perforce
|
||||
integration (p4dti) at:
|
||||
<ulink url="http://www.ravenbrook.com/project/p4dti/"/>
|
||||
|
||||
.
|
||||
<quote>p4dti</quote>
|
||||
|
||||
is now an officially supported product from Perforce, and you can find
|
||||
the "Perforce Public Depot" p4dti page at
|
||||
<ulink url="http://public.perforce.com/public/perforce/p4dti/index.html"/>
|
||||
|
||||
.</para>
|
||||
|
||||
<para>Integration of Perforce with Bugzilla, once patches are applied, is
|
||||
seamless. Perforce replication information will appear below the comments
|
||||
of each bug. Be certain you have a matching set of patches for the
|
||||
Bugzilla version you are installing. p4dti is designed to support
|
||||
multiple defect trackers, and maintains its own documentation for it.
|
||||
Please consult the pages linked above for further information.</para>
|
||||
</section>
|
||||
|
||||
<section id="svn"
|
||||
xreflabel="Subversion, a compelling replacement for CVS">
|
||||
<title>Subversion</title>
|
||||
<para>Subversion is a free/open-source version control system,
|
||||
designed to overcome various limitations of CVS. Integration of
|
||||
Subversion with Bugzilla is possible using Scmbug, a system
|
||||
providing generic integration of Source Code Configuration
|
||||
Management with Bugtracking. Scmbug is available at <ulink
|
||||
url="http://freshmeat.net/projects/scmbug/"/>.</para>
|
||||
</section>
|
||||
|
||||
<section id="tinderbox"
|
||||
xreflabel="Tinderbox, the Mozilla automated build management system">
|
||||
<title>Tinderbox/Tinderbox2</title>
|
||||
|
||||
<para>Tinderbox is a continuous-build system which can integrate with
|
||||
Bugzilla - see
|
||||
<ulink url="http://www.mozilla.org/projects/tinderbox"/> for details
|
||||
of Tinderbox, and
|
||||
<ulink url="http://tinderbox.mozilla.org/showbuilds.cgi"/> to see it
|
||||
in action.</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<section id="what-is-bugzilla">
|
||||
<title>What is Bugzilla?</title>
|
||||
|
||||
<para>
|
||||
Bugzilla is a bug- or issue-tracking system. Bug-tracking
|
||||
systems allow individual or groups of developers effectively to keep track
|
||||
of outstanding problems with their products.
|
||||
</para>
|
||||
|
||||
<para><emphasis>Do we need more here?</emphasis></para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="why-tracking">
|
||||
<title>Why use a bug-tracking system?</title>
|
||||
|
||||
<para>Those who do not use a bug-tracking system tend to rely on
|
||||
shared lists, email, spreadsheets and/or Post-It notes to monitor the
|
||||
status of defects. This procedure
|
||||
is usually error-prone and tends to cause those bugs judged least
|
||||
significant by developers to be dropped or ignored.</para>
|
||||
|
||||
<para>Integrated defect-tracking systems make sure that nothing gets
|
||||
swept under the carpet; they provide a method of creating, storing,
|
||||
arranging and processing defect reports and enhancement requests.</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="why-bugzilla">
|
||||
<title>Why use Bugzilla?</title>
|
||||
|
||||
<para>Bugzilla is the leading open-source/free software bug tracking
|
||||
system. It boasts many advanced features, including:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Powerful searching</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>User-configurable email notifications of bug changes</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Full change history</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Inter-bug dependency tracking and graphing</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Excellent attachment management</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Integrated, product-based, granular security schema</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Fully security-audited, and runs under Perl's taint mode</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>A robust, stable RDBMS back-end</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Completely customizable and/or localizable web user
|
||||
interface</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Additional XML, email and console interfaces</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Extensive configurability</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Smooth upgrade pathway between versions</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>Bugzilla is very adaptable to various situations. Known uses
|
||||
currently include IT support queues, Systems Administration deployment
|
||||
management, chip design and development problem tracking (both
|
||||
pre-and-post fabrication), and software and hardware bug tracking for
|
||||
luminaries such as Redhat, NASA, Linux-Mandrake, and VA Systems.
|
||||
Combined with systems such as
|
||||
<ulink url="http://www.cvshome.org">CVS</ulink>,
|
||||
<ulink url="http://www.mozilla.org/bonsai.html">Bonsai</ulink>, or
|
||||
<ulink url="http://www.perforce.com">Perforce SCM</ulink>, Bugzilla
|
||||
provides a powerful, easy-to-use configuration management solution.</para>
|
||||
</section>
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
@@ -1,197 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<appendix id="install-perlmodules-manual">
|
||||
<title>Manual Installation of Perl Modules</title>
|
||||
|
||||
<section id="modules-manual-instructions">
|
||||
<title>Instructions</title>
|
||||
<para>
|
||||
If you need to install Perl modules manually, here's how it's done.
|
||||
Download the module using the link given in the next section, and then
|
||||
apply this magic incantation, as root:
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<screen><prompt>bash#</prompt> tar -xzvf <module>.tar.gz
|
||||
<prompt>bash#</prompt> cd <module>
|
||||
<prompt>bash#</prompt> perl Makefile.PL
|
||||
<prompt>bash#</prompt> make
|
||||
<prompt>bash#</prompt> make test
|
||||
<prompt>bash#</prompt> make install</screen>
|
||||
</para>
|
||||
<note>
|
||||
<para>
|
||||
In order to compile source code under Windows you will need to obtain
|
||||
a 'make' utility. The <command>nmake</command> utility provided with
|
||||
Microsoft Visual C++ may be used. As an alternative, there is a
|
||||
utility called <command>dmake</command> available from CPAN which is
|
||||
written entirely in Perl.
|
||||
</para>
|
||||
<para>
|
||||
As described in <xref linkend="modules-manual-download" />, however, most
|
||||
packages already exist and are available from ActiveState or theory58S.
|
||||
We highly recommend that you install them using the ppm GUI available with
|
||||
ActiveState and to add the theory58S repository to your list of repositories.
|
||||
</para>
|
||||
</note>
|
||||
</section>
|
||||
|
||||
<section id="modules-manual-download">
|
||||
<title>Download Locations</title>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
Running Bugzilla on Windows requires the use of ActiveState
|
||||
Perl 5.8.1 or higher. Many modules already exist in the core
|
||||
distribution of ActiveState Perl. Additional modules can be downloaded
|
||||
from <ulink url="http://theoryx5.uwinnipeg.ca/ppms/" /> if you use
|
||||
Perl 5.8.x or from <ulink url="http://cpan.uwinnipeg.ca/PPMPackages/10xx/" />
|
||||
if you use Perl 5.10.x.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
CGI:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/CGI.pm/"/>
|
||||
Documentation: <ulink url="http://perldoc.perl.org/CGI.html"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Data-Dumper:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/Data-Dumper/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/Data-Dumper/Dumper.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Date::Format (part of TimeDate):
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/TimeDate/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/TimeDate/lib/Date/Format.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
DBI:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/DBI/"/>
|
||||
Documentation: <ulink url="http://dbi.perl.org/docs/"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
DBD::mysql:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/DBD-mysql/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
DBD::Pg:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/DBD-Pg/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/DBD-Pg/Pg.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
File::Spec:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/File-Spec/"/>
|
||||
Documentation: <ulink url="http://perldoc.perl.org/File/Spec.html"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Template-Toolkit:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/Template-Toolkit/"/>
|
||||
Documentation: <ulink url="http://www.template-toolkit.org/docs.html"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GD:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/GD/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/GD/GD.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Template::Plugin::GD:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/Template-GD/" />
|
||||
Documentation: <ulink url="http://www.template-toolkit.org/docs/aqua/Modules/index.html" />
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
MIME::Parser (part of MIME-tools):
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/MIME-tools/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="modules-manual-optional">
|
||||
<title>Optional Modules</title>
|
||||
|
||||
<para>
|
||||
Chart::Base:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/Chart/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/Chart/Chart.pod"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GD::Graph:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/GDGraph/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/GDGraph/Graph.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
GD::Text::Align (part of GD::Text::Util):
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/GDTextUtil/"/>
|
||||
Documentation: <ulink url="http://search.cpan.org/dist/GDTextUtil/Text/Align.pm"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
XML::Twig:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/XML-Twig/"/>
|
||||
Documentation: <ulink url="http://standards.ieee.org/resources/spasystem/twig/twig_stable.html"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
PatchReader:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/author/JKEISER/PatchReader/"/>
|
||||
Documentation: <ulink url="http://www.johnkeiser.com/mozilla/Patch_Viewer.html"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Image::Magick:
|
||||
<literallayout>
|
||||
CPAN Download Page: <ulink url="http://search.cpan.org/dist/PerlMagick/"/>
|
||||
Documentation: <ulink url="http://www.imagemagick.org/script/resources.php"/>
|
||||
</literallayout>
|
||||
</para>
|
||||
</section>
|
||||
</appendix>
|
||||
@@ -1,135 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<appendix id="patches" xreflabel="Useful Patches and Utilities for Bugzilla">
|
||||
<title>Contrib</title>
|
||||
|
||||
<para>
|
||||
There are a number of unofficial Bugzilla add-ons in the
|
||||
<filename class="directory">$BUGZILLA_ROOT/contrib/</filename>
|
||||
directory. This section documents them.
|
||||
</para>
|
||||
|
||||
<section id="cmdline">
|
||||
<title>Command-line Search Interface</title>
|
||||
|
||||
<para>
|
||||
There are a suite of Unix utilities for searching Bugzilla from the
|
||||
command line. They live in the
|
||||
<filename class="directory">contrib/cmdline</filename> directory.
|
||||
There are three files - <filename>query.conf</filename>,
|
||||
<filename>buglist</filename> and <filename>bugs</filename>.
|
||||
</para>
|
||||
|
||||
<warning>
|
||||
<para>
|
||||
These files pre-date the templatization work done as part of the
|
||||
2.16 release, and have not been updated.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
<filename>query.conf</filename> contains the mapping from
|
||||
options to field names and comparison types. Quoted option names
|
||||
are <quote>grepped</quote> for, so it should be easy to edit this
|
||||
file. Comments (#) have no effect; you must make sure these lines
|
||||
do not contain any quoted <quote>option</quote>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<filename>buglist</filename> is a shell script that submits a
|
||||
Bugzilla query and writes the resulting HTML page to stdout.
|
||||
It supports both short options, (such as <quote>-Afoo</quote>
|
||||
or <quote>-Rbar</quote>) and long options (such
|
||||
as <quote>--assignedto=foo</quote> or <quote>--reporter=bar</quote>).
|
||||
If the first character of an option is not <quote>-</quote>, it is
|
||||
treated as if it were prefixed with <quote>--default=</quote>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The column list is taken from the COLUMNLIST environment variable.
|
||||
This is equivalent to the <quote>Change Columns</quote> option
|
||||
that is available when you list bugs in buglist.cgi. If you have
|
||||
already used Bugzilla, grep for COLUMNLIST in your cookies file
|
||||
to see your current COLUMNLIST setting.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<filename>bugs</filename> is a simple shell script which calls
|
||||
<filename>buglist</filename> and extracts the
|
||||
bug numbers from the output. Adding the prefix
|
||||
<quote>http://bugzilla.mozilla.org/buglist.cgi?bug_id=</quote>
|
||||
turns the bug list into a working link if any bugs are found.
|
||||
Counting bugs is easy. Pipe the results through
|
||||
<command>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</command>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Akkana Peck says she has good results piping
|
||||
<filename>buglist</filename> output through
|
||||
<command>w3m -T text/html -dump</command>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="cmdline-bugmail">
|
||||
<title>Command-line 'Send Unsent Bug-mail' tool</title>
|
||||
|
||||
<para>
|
||||
Within the <filename class="directory">contrib</filename> directory
|
||||
exists a utility with the descriptive (if compact) name
|
||||
of <filename>sendunsentbugmail.pl</filename>. The purpose of this
|
||||
script is, simply, to send out any bug-related mail that should
|
||||
have been sent by now, but for one reason or another has not.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To accomplish this task, <filename>sendunsentbugmail.pl</filename> uses
|
||||
the same mechanism as the <filename>sanitycheck.cgi</filename> script;
|
||||
it scans through the entire database looking for bugs with changes that
|
||||
were made more than 30 minutes ago, but where there is no record of
|
||||
anyone related to that bug having been sent mail. Having compiled a list,
|
||||
it then uses the standard rules to determine who gets mail, and sends it
|
||||
out.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
As the script runs, it indicates the bug for which it is currently
|
||||
sending mail; when it has finished, it gives a numerical count of how
|
||||
many mails were sent and how many people were excluded. (Individual
|
||||
user names are not recorded or displayed.) If the script produces
|
||||
no output, that means no unsent mail was detected.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<emphasis>Usage</emphasis>: move the sendunsentbugmail.pl script
|
||||
up into the main directory, ensure it has execute permission, and run it
|
||||
from the command line (or from a cron job) with no parameters.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</appendix>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
<!-- <!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> -->
|
||||
<appendix id="downloadlinks">
|
||||
<title>Software Download Links</title>
|
||||
|
||||
<para>All of these sites are current as of April, 2001. Hopefully they'll
|
||||
stay current for a while.</para>
|
||||
|
||||
<para>Apache Web Server:
|
||||
<ulink url="http://www.apache.org/"/>
|
||||
|
||||
Optional web server for Bugzilla, but recommended because of broad user
|
||||
base and support.</para>
|
||||
|
||||
<para>Bugzilla:
|
||||
<ulink url="http://www.bugzilla.org/"/>
|
||||
</para>
|
||||
|
||||
<para>MySQL:
|
||||
<ulink url="http://www.mysql.com/"/>
|
||||
</para>
|
||||
|
||||
<para>Perl:
|
||||
<ulink url="http://www.perl.org/"/>
|
||||
</para>
|
||||
|
||||
<para>CPAN:
|
||||
<ulink url="http://www.cpan.org/"/>
|
||||
</para>
|
||||
|
||||
<para>DBI Perl module:
|
||||
<ulink url="http://www.cpan.org/modules/by-module/DBI/"/>
|
||||
</para>
|
||||
|
||||
<para>MySQL related Perl modules:
|
||||
<ulink url="http://www.cpan.org/modules/by-module/Mysql/"/>
|
||||
</para>
|
||||
|
||||
<para>TimeDate Perl module collection:
|
||||
<ulink url="http://www.cpan.org/modules/by-module/Date/"/>
|
||||
</para>
|
||||
|
||||
<para>GD Perl module:
|
||||
<ulink url="http://www.cpan.org/modules/by-module/GD/"/>
|
||||
|
||||
Alternately, you should be able to find the latest version of GD at
|
||||
<ulink url="http://www.boutell.com/gd/"/>
|
||||
</para>
|
||||
|
||||
<para>Chart::Base module:
|
||||
<ulink url="http://www.cpan.org/modules/by-module/Chart/"/>
|
||||
</para>
|
||||
|
||||
<para>(But remember, Bundle::Bugzilla will install all the modules for you.)
|
||||
</para>
|
||||
</appendix>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End:
|
||||
-->
|
||||
|
||||
@@ -1,364 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<!-- $Id: security.xml,v 1.19.2.1 2008-07-13 16:44:28 mozilla%colinogilvie.co.uk Exp $ -->
|
||||
|
||||
<chapter id="security">
|
||||
<title>Bugzilla Security</title>
|
||||
|
||||
<para>While some of the items in this chapter are related to the operating
|
||||
system Bugzilla is running on or some of the support software required to
|
||||
run Bugzilla, it is all related to protecting your data. This is not
|
||||
intended to be a comprehensive guide to securing Linux, Apache, MySQL, or
|
||||
any other piece of software mentioned. There is no substitute for active
|
||||
administration and monitoring of a machine. The key to good security is
|
||||
actually right in the middle of the word: <emphasis>U R It</emphasis>.
|
||||
</para>
|
||||
|
||||
<para>While programmers in general always strive to write secure code,
|
||||
accidents can and do happen. The best approach to security is to always
|
||||
assume that the program you are working with isn't 100% secure and restrict
|
||||
its access to other parts of your machine as much as possible.
|
||||
</para>
|
||||
|
||||
<section id="security-os">
|
||||
<title>Operating System</title>
|
||||
|
||||
<section id="security-os-ports">
|
||||
<title>TCP/IP Ports</title>
|
||||
|
||||
<!-- TODO: Get exact number of ports -->
|
||||
<para>The TCP/IP standard defines more than 65,000 ports for sending
|
||||
and receiving traffic. Of those, Bugzilla needs exactly one to operate
|
||||
(different configurations and options may require up to 3). You should
|
||||
audit your server and make sure that you aren't listening on any ports
|
||||
you don't need to be. It's also highly recommended that the server
|
||||
Bugzilla resides on, along with any other machines you administer, be
|
||||
placed behind some kind of firewall.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="security-os-accounts">
|
||||
<title>System User Accounts</title>
|
||||
|
||||
<para>Many <glossterm linkend="gloss-daemon">daemons</glossterm>, such
|
||||
as Apache's <filename>httpd</filename> or MySQL's
|
||||
<filename>mysqld</filename>, run as either <quote>root</quote> or
|
||||
<quote>nobody</quote>. This is even worse on Windows machines where the
|
||||
majority of <glossterm linkend="gloss-service">services</glossterm>
|
||||
run as <quote>SYSTEM</quote>. While running as <quote>root</quote> or
|
||||
<quote>SYSTEM</quote> introduces obvious security concerns, the
|
||||
problems introduced by running everything as <quote>nobody</quote> may
|
||||
not be so obvious. Basically, if you run every daemon as
|
||||
<quote>nobody</quote> and one of them gets compromised it can
|
||||
compromise every other daemon running as <quote>nobody</quote> on your
|
||||
machine. For this reason, it is recommended that you create a user
|
||||
account for each daemon.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>You will need to set the <option>webservergroup</option> option
|
||||
in <filename>localconfig</filename> to the group your web server runs
|
||||
as. This will allow <filename>./checksetup.pl</filename> to set file
|
||||
permissions on Unix systems so that nothing is world-writable.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="security-os-chroot">
|
||||
<title>The <filename>chroot</filename> Jail</title>
|
||||
|
||||
<para>
|
||||
If your system supports it, you may wish to consider running
|
||||
Bugzilla inside of a <filename>chroot</filename> jail. This option
|
||||
provides unprecedented security by restricting anything running
|
||||
inside the jail from accessing any information outside of it. If you
|
||||
wish to use this option, please consult the documentation that came
|
||||
with your system.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section id="security-mysql">
|
||||
<title>MySQL</title>
|
||||
|
||||
<section id="security-mysql-account">
|
||||
<title>The MySQL System Account</title>
|
||||
|
||||
<para>As mentioned in <xref linkend="security-os-accounts"/>, the MySQL
|
||||
daemon should run as a non-privileged, unique user. Be sure to consult
|
||||
the MySQL documentation or the documentation that came with your system
|
||||
for instructions.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="security-mysql-root">
|
||||
<title>The MySQL <quote>root</quote> and <quote>anonymous</quote> Users</title>
|
||||
|
||||
<para>By default, MySQL comes with a <quote>root</quote> user with a
|
||||
blank password and an <quote>anonymous</quote> user, also with a blank
|
||||
password. In order to protect your data, the <quote>root</quote> user
|
||||
should be given a password and the anonymous user should be disabled.
|
||||
</para>
|
||||
|
||||
<example id="security-mysql-account-root">
|
||||
<title>Assigning the MySQL <quote>root</quote> User a Password</title>
|
||||
|
||||
<screen>
|
||||
<prompt>bash$</prompt> mysql mysql
|
||||
<prompt>mysql></prompt> UPDATE user SET password = password('<replaceable>new_password</replaceable>') WHERE user = 'root';
|
||||
<prompt>mysql></prompt> FLUSH PRIVILEGES;
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
<example id="security-mysql-account-anonymous">
|
||||
<title>Disabling the MySQL <quote>anonymous</quote> User</title>
|
||||
<screen>
|
||||
<prompt>bash$</prompt> mysql -u root -p mysql <co id="security-mysql-account-anonymous-mysql"/>
|
||||
<prompt>Enter Password:</prompt> <replaceable>new_password</replaceable>
|
||||
<prompt>mysql></prompt> DELETE FROM user WHERE user = '';
|
||||
<prompt>mysql></prompt> FLUSH PRIVILEGES;
|
||||
</screen>
|
||||
<calloutlist>
|
||||
<callout arearefs="security-mysql-account-anonymous-mysql">
|
||||
<para>This command assumes that you have already completed
|
||||
<xref linkend="security-mysql-account-root"/>.
|
||||
</para>
|
||||
</callout>
|
||||
</calloutlist>
|
||||
</example>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="security-mysql-network">
|
||||
<title>Network Access</title>
|
||||
|
||||
<para>If MySQL and your web server both run on the same machine and you
|
||||
have no other reason to access MySQL remotely, then you should disable
|
||||
the network access. This, along with the suggestion in
|
||||
<xref linkend="security-os-ports"/>, will help protect your system from
|
||||
any remote vulnerabilities in MySQL.
|
||||
</para>
|
||||
|
||||
<example id="security-mysql-network-ex">
|
||||
<title>Disabling Networking in MySQL</title>
|
||||
|
||||
<para>Simply enter the following in <filename>/etc/my.cnf</filename>:
|
||||
<screen>
|
||||
[mysqld]
|
||||
# Prevent network access to MySQL.
|
||||
skip-networking
|
||||
</screen>
|
||||
</para>
|
||||
</example>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<!-- For possible addition in the future: How to better control the bugs user
|
||||
<section id="security-mysql-bugs">
|
||||
<title>The bugs User</title>
|
||||
|
||||
</section>
|
||||
-->
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section id="security-webserver">
|
||||
<title>Web server</title>
|
||||
|
||||
<section id="security-webserver-access">
|
||||
<title>Disabling Remote Access to Bugzilla Configuration Files</title>
|
||||
|
||||
<para>
|
||||
There are many files that are placed in the Bugzilla directory
|
||||
area that should not be accessible from the web server. Because of the way
|
||||
Bugzilla is currently layed out, the list of what should and should not
|
||||
be accessible is rather complicated. A quick way is to run
|
||||
<filename>testserver.pl</filename> to check if your web server serves
|
||||
Bugzilla files as expected. If not, you may want to follow the few
|
||||
steps below.
|
||||
</para>
|
||||
|
||||
<tip>
|
||||
<para>Bugzilla ships with the ability to create
|
||||
<glossterm linkend="gloss-htaccess"><filename>.htaccess</filename></glossterm>
|
||||
files that enforce these rules. Instructions for enabling these
|
||||
directives in Apache can be found in <xref linkend="http-apache"/>
|
||||
</para>
|
||||
</tip>
|
||||
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>In the main Bugzilla directory, you should:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block:
|
||||
<simplelist type="inline">
|
||||
<member><filename>*.pl</filename></member>
|
||||
<member><filename>*localconfig*</filename></member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>In <filename class="directory">data</filename>:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block everything</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>In <filename class="directory">data/webdot</filename>:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>If you use a remote webdot server:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block everything</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>But allow
|
||||
<simplelist type="inline">
|
||||
<member><filename>*.dot</filename></member>
|
||||
</simplelist>
|
||||
only for the remote webdot server</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Otherwise, if you use a local GraphViz:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block everything</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>But allow:
|
||||
<simplelist type="inline">
|
||||
<member><filename>*.png</filename></member>
|
||||
<member><filename>*.gif</filename></member>
|
||||
<member><filename>*.jpg</filename></member>
|
||||
<member><filename>*.map</filename></member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>And if you don't use any dot:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block everything</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>In <filename class="directory">Bugzilla</filename>:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block everything</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>In <filename class="directory">template</filename>:</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>Block everything</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Be sure to test that data that should not be accessed remotely is
|
||||
properly blocked. Of particular interest is the localconfig file which
|
||||
contains your database password. Also, be aware that many editors
|
||||
create temporary and backup files in the working directory and that
|
||||
those should also not be accessible. For more information, see
|
||||
<ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=186383">bug 186383</ulink>
|
||||
or
|
||||
<ulink url="http://online.securityfocus.com/bid/6501">Bugtraq ID 6501</ulink>.
|
||||
To test, simply run <filename>testserver.pl</filename>, as said above.
|
||||
</para>
|
||||
|
||||
<tip>
|
||||
<para>Be sure to check <xref linkend="http"/> for instructions
|
||||
specific to the web server you use.
|
||||
</para>
|
||||
</tip>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section id="security-bugzilla">
|
||||
<title>Bugzilla</title>
|
||||
|
||||
<section id="security-bugzilla-charset">
|
||||
<title>Prevent users injecting malicious Javascript</title>
|
||||
|
||||
<para>If you installed Bugzilla version 2.22 or later from scratch,
|
||||
then the <emphasis>utf8</emphasis> parameter is switched on by default.
|
||||
This makes Bugzilla explicitly set the character encoding, following
|
||||
<ulink
|
||||
url="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3">a
|
||||
CERT advisory</ulink> recommending exactly this.
|
||||
The following therefore does not apply to you; just keep
|
||||
<emphasis>utf8</emphasis> turned on.
|
||||
</para>
|
||||
|
||||
<para>If you've upgraded from an older version, then it may be possible
|
||||
for a Bugzilla user to take advantage of character set encoding
|
||||
ambiguities to inject HTML into Bugzilla comments.
|
||||
This could include malicious scripts.
|
||||
This is because due to internationalization concerns, we are unable to
|
||||
turn the <emphasis>utf8</emphasis> parameter on by default for upgraded
|
||||
installations.
|
||||
Turning it on manually will prevent this problem.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End: -->
|
||||
|
||||
@@ -1,311 +0,0 @@
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
<!ENTITY % myents SYSTEM "bugzilla.ent">
|
||||
%myents;
|
||||
]>
|
||||
<!-- $Id: troubleshooting.xml,v 1.13.4.1 2008-07-13 16:44:28 mozilla%colinogilvie.co.uk Exp $ -->
|
||||
|
||||
<appendix id="troubleshooting">
|
||||
<title>Troubleshooting</title>
|
||||
|
||||
<para>This section gives solutions to common Bugzilla installation
|
||||
problems. If none of the section headings seems to match your
|
||||
problem, read the general advice.
|
||||
</para>
|
||||
|
||||
<section id="general-advice">
|
||||
<title>General Advice</title>
|
||||
<para>If you can't get <filename>checksetup.pl</filename> to run to
|
||||
completion, it normally explains what's wrong and how to fix it.
|
||||
If you can't work it out, or if it's being uncommunicative, post
|
||||
the errors in the
|
||||
<ulink url="news://news.mozilla.org/mozilla.support.bugzilla">mozilla.support.bugzilla</ulink>
|
||||
newsgroup.
|
||||
</para>
|
||||
|
||||
<para>If you have made it all the way through
|
||||
<xref linkend="installation"/> (Installation) and
|
||||
<xref linkend="configuration"/> (Configuration) but accessing the Bugzilla
|
||||
URL doesn't work, the first thing to do is to check your web server error
|
||||
log. For Apache, this is often located at
|
||||
<filename>/etc/logs/httpd/error_log</filename>. The error messages
|
||||
you see may be self-explanatory enough to enable you to diagnose and
|
||||
fix the problem. If not, see below for some commonly-encountered
|
||||
errors. If that doesn't help, post the errors to the newsgroup.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Bugzilla can also log all user-based errors (and many code-based errors)
|
||||
that occur, without polluting the web server's error log. To enable
|
||||
Bugzilla error logging, create a file that Bugzilla can write to, named
|
||||
<filename>errorlog</filename>, in the Bugzilla <filename>data</filename>
|
||||
directory. Errors will be logged as they occur, and will include the type
|
||||
of the error, the IP address and username (if available) of the user who
|
||||
triggered the error, and the values of all environment variables; if a
|
||||
form was being submitted, the data in the form will also be included.
|
||||
To disable error logging, delete or rename the
|
||||
<filename>errorlog</filename> file.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="trbl-testserver">
|
||||
<title>The Apache web server is not serving Bugzilla pages</title>
|
||||
<para>After you have run <command>checksetup.pl</command> twice,
|
||||
run <command>testserver.pl http://yoursite.yourdomain/yoururl</command>
|
||||
to confirm that your web server is configured properly for
|
||||
Bugzilla.
|
||||
</para>
|
||||
<programlisting>
|
||||
<prompt>bash$</prompt> ./testserver.pl http://landfill.bugzilla.org/bugzilla-tip
|
||||
TEST-OK Webserver is running under group id in $webservergroup.
|
||||
TEST-OK Got ant picture.
|
||||
TEST-OK Webserver is executing CGIs.
|
||||
TEST-OK Webserver is preventing fetch of http://landfill.bugzilla.org/bugzilla-tip/localconfig.
|
||||
</programlisting>
|
||||
</section>
|
||||
|
||||
<section id="trbl-perlmodule">
|
||||
<title>I installed a Perl module, but
|
||||
<filename>checksetup.pl</filename> claims it's not installed!</title>
|
||||
|
||||
<para>This could be caused by one of two things:</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>You have two versions of Perl on your machine. You are installing
|
||||
modules into one, and Bugzilla is using the other. Rerun the CPAN
|
||||
commands (or manual compile) using the full path to Perl from the
|
||||
top of <filename>checksetup.pl</filename>. This will make sure you
|
||||
are installing the modules in the right place.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The permissions on your library directories are set incorrectly.
|
||||
They must, at the very least, be readable by the web server user or
|
||||
group. It is recommended that they be world readable.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</section>
|
||||
|
||||
<section id="trbl-dbdSponge">
|
||||
<title>DBD::Sponge::db prepare failed</title>
|
||||
|
||||
<para>The following error message may appear due to a bug in DBD::mysql
|
||||
(over which the Bugzilla team have no control):
|
||||
</para>
|
||||
|
||||
<programlisting><![CDATA[ DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
|
||||
SV = NULL(0x0) at 0x20fc444
|
||||
REFCNT = 1
|
||||
FLAGS = (PADBUSY,PADMY)
|
||||
]]></programlisting>
|
||||
|
||||
<para>To fix this, go to
|
||||
<filename><path-to-perl>/lib/DBD/sponge.pm</filename>
|
||||
in your Perl installation and replace
|
||||
</para>
|
||||
|
||||
<programlisting><![CDATA[ my $numFields;
|
||||
if ($attribs->{'NUM_OF_FIELDS'}) {
|
||||
$numFields = $attribs->{'NUM_OF_FIELDS'};
|
||||
} elsif ($attribs->{'NAME'}) {
|
||||
$numFields = @{$attribs->{NAME}};
|
||||
]]></programlisting>
|
||||
|
||||
<para>with</para>
|
||||
|
||||
<programlisting><![CDATA[ my $numFields;
|
||||
if ($attribs->{'NUM_OF_FIELDS'}) {
|
||||
$numFields = $attribs->{'NUM_OF_FIELDS'};
|
||||
} elsif ($attribs->{'NAMES'}) {
|
||||
$numFields = @{$attribs->{NAMES}};
|
||||
]]></programlisting>
|
||||
|
||||
<para>(note the S added to NAME.)</para>
|
||||
</section>
|
||||
|
||||
<section id="paranoid-security">
|
||||
<title>cannot chdir(/var/spool/mqueue)</title>
|
||||
|
||||
<para>If you are installing Bugzilla on SuSE Linux, or some other
|
||||
distributions with <quote>paranoid</quote> security options, it is
|
||||
possible that the checksetup.pl script may fail with the error:
|
||||
<programlisting><![CDATA[cannot chdir(/var/spool/mqueue): Permission denied
|
||||
]]></programlisting>
|
||||
</para>
|
||||
|
||||
<para>This is because your <filename>/var/spool/mqueue</filename>
|
||||
directory has a mode of <computeroutput>drwx------</computeroutput>.
|
||||
Type <command>chmod 755 <filename>/var/spool/mqueue</filename></command>
|
||||
as root to fix this problem. This will allow any process running on your
|
||||
machine the ability to <emphasis>read</emphasis> the
|
||||
<filename>/var/spool/mqueue</filename> directory.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="trbl-relogin-everyone">
|
||||
<title>Everybody is constantly being forced to relogin</title>
|
||||
|
||||
<para>The most-likely cause is that the <quote>cookiepath</quote> parameter
|
||||
is not set correctly in the Bugzilla configuration. You can change this (if
|
||||
you're a Bugzilla administrator) from the editparams.cgi page via the web interface.
|
||||
</para>
|
||||
|
||||
<para>The value of the cookiepath parameter should be the actual directory
|
||||
containing your Bugzilla installation, <emphasis>as seen by the end-user's
|
||||
web browser</emphasis>. Leading and trailing slashes are mandatory. You can
|
||||
also set the cookiepath to any directory which is a parent of the Bugzilla
|
||||
directory (such as '/', the root directory). But you can't put something
|
||||
that isn't at least a partial match or it won't work. What you're actually
|
||||
doing is restricting the end-user's browser to sending the cookies back only
|
||||
to that directory.
|
||||
</para>
|
||||
|
||||
<para>How do you know if you want your specific Bugzilla directory or the
|
||||
whole site?
|
||||
</para>
|
||||
|
||||
<para>If you have only one Bugzilla running on the server, and you don't
|
||||
mind having other applications on the same server with it being able to see
|
||||
the cookies (you might be doing this on purpose if you have other things on
|
||||
your site that share authentication with Bugzilla), then you'll want to have
|
||||
the cookiepath set to "/", or to a sufficiently-high enough directory that
|
||||
all of the involved apps can see the cookies.
|
||||
</para>
|
||||
|
||||
<example id="trbl-relogin-everyone-share">
|
||||
<title>Examples of urlbase/cookiepath pairs for sharing login cookies</title>
|
||||
|
||||
<blockquote>
|
||||
<literallayout>
|
||||
urlbase is <ulink url="http://bugzilla.mozilla.org/"/>
|
||||
cookiepath is /
|
||||
|
||||
urlbase is <ulink url="http://tools.mysite.tld/bugzilla/"/>
|
||||
but you have http://tools.mysite.tld/someotherapp/ which shares
|
||||
authentication with your Bugzilla
|
||||
cookiepath is /
|
||||
</literallayout>
|
||||
</blockquote>
|
||||
</example>
|
||||
|
||||
<para>On the other hand, if you have more than one Bugzilla running on the
|
||||
server (some people do - we do on landfill) then you need to have the
|
||||
cookiepath restricted enough so that the different Bugzillas don't
|
||||
confuse their cookies with one another.
|
||||
</para>
|
||||
|
||||
|
||||
<example id="trbl-relogin-everyone-restrict">
|
||||
<title>Examples of urlbase/cookiepath pairs to restrict the login cookie</title>
|
||||
<blockquote>
|
||||
<literallayout>
|
||||
urlbase is <ulink url="http://landfill.bugzilla.org/bugzilla-tip/"/>
|
||||
cookiepath is /bugzilla-tip/
|
||||
|
||||
urlbase is <ulink url="http://landfill.bugzilla.org/bugzilla-2.16-branch/"/>
|
||||
cookiepath is /bugzilla-2.16-branch/
|
||||
</literallayout>
|
||||
</blockquote>
|
||||
</example>
|
||||
|
||||
<para>If you had cookiepath set to <quote>/</quote> at any point in the
|
||||
past and need to set it to something more restrictive
|
||||
(i.e. <quote>/bugzilla/</quote>), you can safely do this without
|
||||
requiring users to delete their Bugzilla-related cookies in their
|
||||
browser (this is true starting with Bugzilla 2.18 and Bugzilla 2.16.5).
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section id="trbl-relogin-some">
|
||||
<title>Some users are constantly being forced to relogin</title>
|
||||
|
||||
<para>First, make sure cookies are enabled in the user's browser.
|
||||
</para>
|
||||
|
||||
<para>If that doesn't fix the problem, it may be that the user's ISP
|
||||
implements a rotating proxy server. This causes the user's effective IP
|
||||
address (the address which the Bugzilla server perceives him coming from)
|
||||
to change periodically. Since Bugzilla cookies are tied to a specific IP
|
||||
address, each time the effective address changes, the user will have to
|
||||
log in again.
|
||||
</para>
|
||||
|
||||
<para>If you are using 2.18 (or later), there is a
|
||||
parameter called <quote>loginnetmask</quote>, which you can use to set
|
||||
the number of bits of the user's IP address to require to be matched when
|
||||
authenticating the cookies. If you set this to something less than 32,
|
||||
then the user will be given a checkbox for <quote>Restrict this login to
|
||||
my IP address</quote> on the login screen, which defaults to checked. If
|
||||
they leave the box checked, Bugzilla will behave the same as it did
|
||||
before, requiring an exact match on their IP address to remain logged in.
|
||||
If they uncheck the box, then only the left side of their IP address (up
|
||||
to the number of bits you specified in the parameter) has to match to
|
||||
remain logged in.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="trbl-index">
|
||||
<title><filename>index.cgi</filename> doesn't show up unless specified in the URL</title>
|
||||
<para>
|
||||
You probably need to set up your web server in such a way that it
|
||||
will serve the index.cgi page as an index page.
|
||||
</para>
|
||||
<para>
|
||||
If you are using Apache, you can do this by adding
|
||||
<filename>index.cgi</filename> to the end of the
|
||||
<computeroutput>DirectoryIndex</computeroutput> line
|
||||
as mentioned in <xref linkend="http-apache"/>.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="trbl-passwd-encryption">
|
||||
<title>
|
||||
checksetup.pl reports "Client does not support authentication protocol
|
||||
requested by server..."
|
||||
</title>
|
||||
|
||||
<para>
|
||||
This error is occurring because you are using the new password
|
||||
encryption that comes with MySQL 4.1, while your
|
||||
<filename>DBD::mysql</filename> module was compiled against an
|
||||
older version of MySQL. If you recompile <filename>DBD::mysql</filename>
|
||||
against the current MySQL libraries (or just obtain a newer version
|
||||
of this module) then the error may go away.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If that does not fix the problem, or if you cannot recompile the
|
||||
existing module (e.g. you're running Windows) and/or don't want to
|
||||
replace it (e.g. you want to keep using a packaged version), then a
|
||||
workaround is available from the MySQL docs:
|
||||
<ulink url="http://dev.mysql.com/doc/mysql/en/Old_client.html"/>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</appendix>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-auto-insert-required-elements:t
|
||||
sgml-balanced-tag-edit:t
|
||||
sgml-exposed-tags:nil
|
||||
sgml-general-insert-case:lower
|
||||
sgml-indent-data:t
|
||||
sgml-indent-step:2
|
||||
sgml-local-catalogs:nil
|
||||
sgml-local-ecat-files:nil
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-namecase-general:t
|
||||
sgml-omittag:t
|
||||
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
|
||||
sgml-shorttag:t
|
||||
sgml-tag-region-if-active:t
|
||||
End: -->
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,217 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is the Bugzilla Bug Tracking System.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape Communications
|
||||
# Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s): Matthew Tuck <matty@chariot.net.au>
|
||||
# Jacob Steenhagen <jake@bugzilla.org>
|
||||
# Colin Ogilvie <colin.ogilvie@gmail.com>
|
||||
# Max Kanat-Alexander <mkanat@bugzilla.org>
|
||||
|
||||
# This script compiles all the documentation.
|
||||
|
||||
use strict;
|
||||
use Cwd;
|
||||
|
||||
# We need to be in this directory to use our libraries.
|
||||
BEGIN {
|
||||
require File::Basename;
|
||||
import File::Basename qw(dirname);
|
||||
chdir dirname($0);
|
||||
}
|
||||
|
||||
use lib qw(.. ../lib lib);
|
||||
|
||||
# We only compile our POD if Pod::Simple is installed. We do the checks
|
||||
# this way so that if there's a compile error in Pod::Simple::HTML::Bugzilla,
|
||||
# makedocs doesn't just silently fail, but instead actually tells us there's
|
||||
# a compile error.
|
||||
my $pod_simple;
|
||||
if (eval { require Pod::Simple }) {
|
||||
require Pod::Simple::HTMLBatch::Bugzilla;
|
||||
require Pod::Simple::HTML::Bugzilla;
|
||||
$pod_simple = 1;
|
||||
};
|
||||
|
||||
use Bugzilla::Install::Requirements
|
||||
qw(REQUIRED_MODULES OPTIONAL_MODULES);
|
||||
use Bugzilla::Constants qw(DB_MODULE BUGZILLA_VERSION);
|
||||
|
||||
###############################################################################
|
||||
# Generate minimum version list
|
||||
###############################################################################
|
||||
|
||||
my $modules = REQUIRED_MODULES;
|
||||
my $opt_modules = OPTIONAL_MODULES;
|
||||
|
||||
open(ENTITIES, '>', 'bugzilla.ent') or die('Could not open bugzilla.ent: ' . $!);
|
||||
print ENTITIES <<END_ENTITIES;
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<!ENTITY bz-ver "3.3">
|
||||
<!ENTITY bz-nextver "4.0">
|
||||
<!ENTITY bz-date "2008-05-20">
|
||||
<!ENTITY current-year "2008">
|
||||
|
||||
<!ENTITY landfillbase "http://landfill.bugzilla.org/bugzilla-tip/">
|
||||
<!ENTITY bz "http://www.bugzilla.org/">
|
||||
<!ENTITY bzg-bugs "<ulink url='https://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=Documentation'>Bugzilla Documentation</ulink>">
|
||||
<!ENTITY mysql "http://www.mysql.com/">
|
||||
|
||||
<!ENTITY min-perl-ver "5.8.1">
|
||||
|
||||
|
||||
<!-- Module Versions -->
|
||||
END_ENTITIES
|
||||
foreach my $module (@$modules, @$opt_modules)
|
||||
{
|
||||
my $name = $module->{'module'};
|
||||
$name =~ s/::/-/g;
|
||||
$name = lc($name);
|
||||
#This needs to be a string comparison, due to the modules having
|
||||
#version numbers like 0.9.4
|
||||
my $version = $module->{'version'} eq 0 ? 'any' : $module->{'version'};
|
||||
print ENTITIES '<!ENTITY min-' . $name . '-ver "'.$version.'">' . "\n";
|
||||
}
|
||||
|
||||
# CGI is a special case, because for Perl versions below 5.10, it has an
|
||||
# optional version *and* a required version.
|
||||
# We check @opt_modules first, then @modules, and pick the first we get.
|
||||
# We'll get the optional one then, if it is given, otherwise the required one.
|
||||
my ($cgi_opt) = grep($_->{module} eq 'CGI', @$opt_modules, @$modules);
|
||||
print ENTITIES '<!ENTITY min-mp-cgi-ver "' . $cgi_opt->{version} . '">' . "\n";
|
||||
|
||||
print ENTITIES "\n <!-- Database Versions --> \n";
|
||||
|
||||
my $db_modules = DB_MODULE;
|
||||
foreach my $db (keys %$db_modules) {
|
||||
my $dbd = $db_modules->{$db}->{dbd};
|
||||
my $name = $dbd->{module};
|
||||
$name =~ s/::/-/g;
|
||||
$name = lc($name);
|
||||
my $version = $dbd->{version} || 'any';
|
||||
my $db_version = $db_modules->{$db}->{'db_version'};
|
||||
print ENTITIES '<!ENTITY min-' . $name . '-ver "'.$version.'">' . "\n";
|
||||
print ENTITIES '<!ENTITY min-' . lc($db) . '-ver "'.$db_version.'">' . "\n";
|
||||
}
|
||||
close(ENTITIES);
|
||||
|
||||
###############################################################################
|
||||
# Subs
|
||||
###############################################################################
|
||||
|
||||
sub MakeDocs {
|
||||
|
||||
my ($name, $cmdline) = @_;
|
||||
|
||||
print "Creating $name documentation ...\n" if defined $name;
|
||||
print "$cmdline\n\n";
|
||||
system $cmdline;
|
||||
print "\n";
|
||||
|
||||
}
|
||||
|
||||
sub make_pod {
|
||||
|
||||
print "Creating API documentation...\n";
|
||||
|
||||
my $converter = Pod::Simple::HTMLBatch::Bugzilla->new;
|
||||
# Don't output progress information.
|
||||
$converter->verbose(0);
|
||||
$converter->html_render_class('Pod::Simple::HTML::Bugzilla');
|
||||
|
||||
my $doctype = Pod::Simple::HTML::Bugzilla->DOCTYPE;
|
||||
my $content_type = Pod::Simple::HTML::Bugzilla->META_CT;
|
||||
my $bz_version = BUGZILLA_VERSION;
|
||||
|
||||
my $contents_start = <<END_HTML;
|
||||
$doctype
|
||||
<html>
|
||||
<head>
|
||||
$content_type
|
||||
<title>Bugzilla $bz_version API Documentation</title>
|
||||
</head>
|
||||
<body class="contentspage">
|
||||
<h1>Bugzilla $bz_version API Documentation</h1>
|
||||
END_HTML
|
||||
|
||||
$converter->contents_page_start($contents_start);
|
||||
$converter->contents_page_end("</body></html>");
|
||||
$converter->add_css('./../../../style.css');
|
||||
$converter->javascript_flurry(0);
|
||||
$converter->css_flurry(0);
|
||||
$converter->batch_convert(['../../'], 'html/api/');
|
||||
|
||||
print "\n";
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Make the docs ...
|
||||
###############################################################################
|
||||
|
||||
my @langs;
|
||||
# search for sub directories which have a 'xml' sub-directory
|
||||
opendir(LANGS, './');
|
||||
foreach my $dir (readdir(LANGS)) {
|
||||
next if (($dir eq '.') || ($dir eq '..') || (! -d $dir));
|
||||
if (-d "$dir/xml") {
|
||||
push(@langs, $dir);
|
||||
}
|
||||
}
|
||||
closedir(LANGS);
|
||||
|
||||
my $docparent = getcwd();
|
||||
foreach my $lang (@langs) {
|
||||
chdir "$docparent/$lang";
|
||||
MakeDocs(undef, 'cp ../bugzilla.ent ./xml/');
|
||||
|
||||
if (!-d 'txt') {
|
||||
unlink 'txt';
|
||||
mkdir 'txt', 0755;
|
||||
}
|
||||
if (!-d 'pdf') {
|
||||
unlink 'pdf';
|
||||
mkdir 'pdf', 0755;
|
||||
}
|
||||
if (!-d 'html') {
|
||||
unlink 'html';
|
||||
mkdir 'html', 0755;
|
||||
}
|
||||
if (!-d 'html/api') {
|
||||
unlink 'html/api';
|
||||
mkdir 'html/api', 0755;
|
||||
}
|
||||
|
||||
MakeDocs(undef, 'cp ../style.css html/api/');
|
||||
|
||||
make_pod() if $pod_simple;
|
||||
|
||||
MakeDocs('separate HTML', 'xmlto -m ../xsl/chunks.xsl -o html html ' .
|
||||
'xml/Bugzilla-Guide.xml');
|
||||
MakeDocs('big HTML', 'xmlto -m ../xsl/nochunks.xsl -o html html-nochunks ' .
|
||||
'xml/Bugzilla-Guide.xml');
|
||||
MakeDocs('big text', "lynx -dump -justify=off -nolist html/Bugzilla-Guide.html " .
|
||||
"> txt/Bugzilla-Guide.txt");
|
||||
|
||||
if (! grep($_ eq "--with-pdf", @ARGV)) {
|
||||
next;
|
||||
}
|
||||
|
||||
MakeDocs('PDF', 'xmlto -m ../xsl/pdf.xsl -o pdf pdf xml/Bugzilla-Guide.xml');
|
||||
}
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
/* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Bugzilla Bug Tracking System.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Everything Solved.
|
||||
* Portions created by Everything Solved are Copyright (C) 2006
|
||||
* Everything Solved. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
|
||||
*/
|
||||
|
||||
body {
|
||||
background: white;
|
||||
color: #111;
|
||||
padding: 0 1em;
|
||||
margin: 0;
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
td, th {
|
||||
font-family: Verdana, Arial, sans-serif;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
a:link, a:active { color: #36415c; }
|
||||
a:visited { color: #666; }
|
||||
a:hover { color: #888; }
|
||||
|
||||
h1 {
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
border-bottom: 2px solid #ccc;
|
||||
}
|
||||
h2 {
|
||||
font-size: 125%;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #ccc;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
h3 {
|
||||
font-size: 115%;
|
||||
font-weight: bold;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
/* This makes Description/Params/Returns look nice. */
|
||||
dd { margin-top: .2em; }
|
||||
dd p { margin-top: 0; }
|
||||
dl { margin-bottom: 1em; }
|
||||
|
||||
/* This makes the names of functions slightly larger, in Gecko. */
|
||||
body > dl > dt code { font-size: 1.35em; }
|
||||
|
||||
#pod h1 a, #pod h2 a, #pod h3 a {
|
||||
color: #36415c;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre, code, tt, kbd, samp {
|
||||
/* Unfortunately, the default monospace fonts on most browsers
|
||||
look odd with relative sizing. */
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.code {
|
||||
background: #eed;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
pre.code {
|
||||
margin-left: 10px;
|
||||
width: 90%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* Special styles for the Contents page */
|
||||
|
||||
.contentspage dt {
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.pod_desc_table {
|
||||
border-collapse: collapse;
|
||||
table-layout: auto;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.pod_desc_table th {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.pod_desc_table td, .pod_desc_table th {
|
||||
padding: .25em;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.pod_desc_table .odd th, .pod_desc_table .odd td {
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.pod_desc_table
|
||||
@@ -1,102 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
|
||||
<!-- Nicer Filenames -->
|
||||
<xsl:param name="use.id.as.filename" select="1"/>
|
||||
|
||||
<!-- Label sections if they aren't automatically labeled -->
|
||||
<xsl:param name="section.autolabel" select="1"/>
|
||||
|
||||
<!-- Table of Contents Depth -->
|
||||
<xsl:param name="toc.section.depth">1</xsl:param>
|
||||
|
||||
<!-- Set chunk parameters -->
|
||||
<xsl:param name="chunk.section.depth" select="1"/>
|
||||
<xsl:param name="chunk.first.sections" select="1"/>
|
||||
<xsl:param name="chunker.output.encoding" select="UTF-8"/>
|
||||
|
||||
<!-- Show titles of next/previous page -->
|
||||
<xsl:param name="navig.showtitles">1</xsl:param>
|
||||
|
||||
<!-- Tidy up the HTML a bit... -->
|
||||
<xsl:param name="html.cleanup" select="1"/>
|
||||
<xsl:param name="make.valid.html" select="1"/>
|
||||
<xsl:param name="html.stylesheet">api/style.css</xsl:param>
|
||||
<!-- make links nicer... -->
|
||||
<xsl:param name="refentry.generate.title" select="1"/>
|
||||
<xsl:param name="refentry.generate.name" select="0"/>
|
||||
|
||||
<!-- Use Graphics, specify their Path and Extension -->
|
||||
<xsl:param name="admon.graphics" select="1"/>
|
||||
<xsl:param name="admon.graphics.path">../images/</xsl:param>
|
||||
<xsl:param name="admon.graphics.extension">.gif</xsl:param>
|
||||
|
||||
<xsl:param name="qanda.inherit.numeration" select="0" />
|
||||
|
||||
<!--
|
||||
****
|
||||
CODE BELOW HERE IS EXTRACTED AND EDITED FROM THE DOCBOOK XSL SOURCES
|
||||
****
|
||||
-->
|
||||
|
||||
<xsl:template match="simplelist[@type='inline']/member">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
To generate valid HTML, we need to redefine this section... Code extracted from
|
||||
http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/html/qandaset.xsl?rev=1.19&view=log
|
||||
|
||||
and modified below. Basic change: Remove the colspan attribute of the tr tags - no
|
||||
other changes have been made to the document.
|
||||
-->
|
||||
|
||||
<xsl:template match="qandadiv">
|
||||
<xsl:variable name="preamble" select="*[name(.) != 'title'
|
||||
and name(.) != 'titleabbrev'
|
||||
and name(.) != 'qandadiv'
|
||||
and name(.) != 'qandaentry']"/>
|
||||
|
||||
<xsl:if test="blockinfo/title|title">
|
||||
<tr class="qandadiv">
|
||||
<td align="left" valign="top" colspan="2">
|
||||
<xsl:call-template name="anchor">
|
||||
<xsl:with-param name="conditional" select="0"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates select="(blockinfo/title|title)[1]"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:variable name="toc">
|
||||
<xsl:call-template name="dbhtml-attribute">
|
||||
<xsl:with-param name="pis"
|
||||
select="processing-instruction('dbhtml')"/>
|
||||
<xsl:with-param name="attribute" select="'toc'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="toc.params">
|
||||
<xsl:call-template name="find.path.params">
|
||||
<xsl:with-param name="table" select="normalize-space($generate.toc)"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:if test="(contains($toc.params, 'toc') and $toc != '0') or $toc = '1'">
|
||||
<tr class="toc">
|
||||
<td align="left" valign="top" colspan="2">
|
||||
<xsl:call-template name="process.qanda.toc"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:if test="$preamble">
|
||||
<tr class="toc" >
|
||||
<td align="left" valign="top" colspan="2">
|
||||
<xsl:apply-templates select="$preamble"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="qandadiv|qandaentry"/>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Include default bugzilla XSL -->
|
||||
<xsl:include href="bugzilla-docs.xsl"/>
|
||||
<!-- Set Chunk Specific XSL Params -->
|
||||
<xsl:param name="chunker.output.doctype-public">-//W3C//DTD HTML 4.01 Transitional//EN</xsl:param>
|
||||
<xsl:param name="chunker.output.doctype-system">http://www.w3.org/TR/html4/loose.dtd</xsl:param>
|
||||
<xsl:param name="chunk.section.depth" select="1"/>
|
||||
<xsl:param name="chunk.first.sections" select="1"/>
|
||||
<!-- Don't output filename list - mimic old behaviour-->
|
||||
<xsl:param name="chunk.quietly" select="0" />
|
||||
</xsl:stylesheet>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<!-- Include default bugzilla XSL -->
|
||||
<xsl:include href="bugzilla-docs.xsl"/>
|
||||
<!-- No other params necessary -->
|
||||
</xsl:stylesheet>
|
||||
@@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
|
||||
<!-- Enable passivetex extensions -->
|
||||
<xsl:param name="passivetex.extensions" select="1"/>
|
||||
<xsl:param name="tablecolumns.extensions" select="1"/>
|
||||
|
||||
<!-- Show <ulink>s as footnotes -->
|
||||
<xsl:param name="ulink.footnotes" select="1" />
|
||||
<xsl:param name="ulink.show" select="1" />
|
||||
|
||||
<!-- Don't use Graphics -->
|
||||
<xsl:param name="admon.graphics" select="0"/>
|
||||
<xsl:param name="callout.graphics" select="'0'"/>
|
||||
|
||||
<xsl:template match="simplelist[@type='inline']/member">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
28
mozilla/widget/Makefile.in
Normal file
28
mozilla/widget/Makefile.in
Normal file
@@ -0,0 +1,28 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DEPTH = ..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = public src
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
21
mozilla/widget/build.bat
Executable file
21
mozilla/widget/build.bat
Executable file
@@ -0,0 +1,21 @@
|
||||
rem -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
rem
|
||||
rem The contents of this file are subject to the Netscape Public License
|
||||
rem Version 1.0 (the "NPL"); you may not use this file except in
|
||||
rem compliance with the NPL. You may obtain a copy of the NPL at
|
||||
rem http://www.mozilla.org/NPL/
|
||||
rem
|
||||
rem Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
rem WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
rem for the specific language governing rights and limitations under the
|
||||
rem NPL.
|
||||
rem
|
||||
rem The Initial Developer of this code under the NPL is Netscape
|
||||
rem Communications Corporation. Portions created by Netscape are
|
||||
rem Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
rem Reserved.
|
||||
rem
|
||||
|
||||
del s:\ns\raptor\ui\src\windows\win32_d.obj\%1.obj
|
||||
del s:\ns\raptor\ui\tests\windows\win32_d.obj\winmain.obj
|
||||
nmake -f makefile.win
|
||||
11
mozilla/widget/macbuild/Widget.prefix
Normal file
11
mozilla/widget/macbuild/Widget.prefix
Normal file
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// Widget.Prefix
|
||||
//
|
||||
// Global prefix file for the Widget project.
|
||||
//
|
||||
|
||||
#include "MacPrefix.h"
|
||||
|
||||
#include <Quickdraw.h>
|
||||
#include <Events.h>
|
||||
#include <MacWindows.h>
|
||||
11
mozilla/widget/macbuild/WidgetDebug.prefix
Normal file
11
mozilla/widget/macbuild/WidgetDebug.prefix
Normal file
@@ -0,0 +1,11 @@
|
||||
//
|
||||
// WidgetDebug.Prefix
|
||||
//
|
||||
// Global prefix file for the debug Widget project.
|
||||
//
|
||||
|
||||
#include "MacPrefix_debug.h"
|
||||
|
||||
#include <Quickdraw.h>
|
||||
#include <Events.h>
|
||||
#include <MacWindows.h>
|
||||
22
mozilla/widget/macbuild/WidgetSharedDebugPrefix.h
Normal file
22
mozilla/widget/macbuild/WidgetSharedDebugPrefix.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#define MAC_SHARED 1
|
||||
#define _IMPL_NS_WIDGET 1
|
||||
|
||||
#include "WidgetDebug.prefix"
|
||||
22
mozilla/widget/macbuild/WidgetSharedPrefix.h
Normal file
22
mozilla/widget/macbuild/WidgetSharedPrefix.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#define MAC_SHARED 1
|
||||
#define _IMPL_NS_WIDGET 1
|
||||
|
||||
#include "Widget.prefix"
|
||||
21
mozilla/widget/macbuild/WidgetStaticDebugPrefix.h
Normal file
21
mozilla/widget/macbuild/WidgetStaticDebugPrefix.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#define MAC_STATIC 1
|
||||
|
||||
#include "WidgetDebug.prefix"
|
||||
21
mozilla/widget/macbuild/WidgetStaticPrefix.h
Normal file
21
mozilla/widget/macbuild/WidgetStaticPrefix.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#define MAC_STATIC 1
|
||||
|
||||
#include "Widget.prefix"
|
||||
BIN
mozilla/widget/macbuild/widget.mcp
Normal file
BIN
mozilla/widget/macbuild/widget.mcp
Normal file
Binary file not shown.
35
mozilla/widget/macbuild/widget.toc
Normal file
35
mozilla/widget/macbuild/widget.toc
Normal file
@@ -0,0 +1,35 @@
|
||||
# target: widgetDebug.shlb
|
||||
mozilla/widget/src/mac/nsAppShell.cpp
|
||||
mozilla/widget/src/mac/nsButton.cpp
|
||||
mozilla/widget/src/mac/nsCheckButton.cpp
|
||||
mozilla/widget/src/mac/nsFileWidget.cpp
|
||||
mozilla/widget/src/mac/nsLookAndFeel.cpp
|
||||
mozilla/widget/src/mac/nsMacControl.cpp
|
||||
mozilla/widget/src/mac/nsMacEventHandler.cpp
|
||||
mozilla/widget/src/mac/nsMacMessagePump.cpp
|
||||
mozilla/widget/src/mac/nsMacMessageSink.cpp
|
||||
mozilla/widget/src/mac/nsMacWindow.cpp
|
||||
mozilla/widget/src/mac/nsMenu.cpp
|
||||
mozilla/widget/src/mac/nsMenuBar.cpp
|
||||
mozilla/widget/src/mac/nsMenuItem.cpp
|
||||
mozilla/widget/src/mac/nsRadioButton.cpp
|
||||
mozilla/widget/src/mac/nsScrollbar.cpp
|
||||
mozilla/widget/src/mac/nsTextAreaWidget.cpp
|
||||
mozilla/widget/src/mac/nsTextWidget.cpp
|
||||
mozilla/widget/src/mac/nsToolkit.cpp
|
||||
mozilla/widget/src/mac/nsWidgetFactory.cpp
|
||||
mozilla/widget/src/mac/nsWidgetSupport.cpp
|
||||
mozilla/widget/src/mac/nsWindow.cpp
|
||||
mozilla/widget/src/xpwidgets/nsBaseWidget.cpp
|
||||
mozilla/widget/src/xpwidgets/nsHTColumn.cpp
|
||||
mozilla/widget/src/xpwidgets/nsHTControlStripItem.cpp
|
||||
mozilla/widget/src/xpwidgets/nsHTDataModel.cpp
|
||||
mozilla/widget/src/xpwidgets/nsHTItem.cpp
|
||||
mozilla/widget/src/xpwidgets/nsHTTreeDataModel.cpp
|
||||
mozilla/widget/src/xpwidgets/nsHTTreeItem.cpp
|
||||
mozilla/widget/src/xpwidgets/nsImageButton.cpp
|
||||
mozilla/widget/src/xpwidgets/nsMenuButton.cpp
|
||||
mozilla/widget/src/xpwidgets/nsToolbar.cpp
|
||||
mozilla/widget/src/xpwidgets/nsToolbarItemHolder.cpp
|
||||
mozilla/widget/src/xpwidgets/nsToolbarManager.cpp
|
||||
mozilla/widget/src/xpwidgets/nsTreeView.cpp
|
||||
BIN
mozilla/widget/macbuild/widgetIDL.mcp
Normal file
BIN
mozilla/widget/macbuild/widgetIDL.mcp
Normal file
Binary file not shown.
23
mozilla/widget/makefile.win
Normal file
23
mozilla/widget/makefile.win
Normal file
@@ -0,0 +1,23 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
|
||||
DEPTH=..
|
||||
|
||||
|
||||
DIRS=public timer src
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
33
mozilla/widget/public/MANIFEST
Normal file
33
mozilla/widget/public/MANIFEST
Normal file
@@ -0,0 +1,33 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist:widget directory
|
||||
#
|
||||
|
||||
nsIDragSessionMac.h
|
||||
nsIWidget.h
|
||||
nsIKBStateControl.h
|
||||
nsIButton.h
|
||||
nsICheckButton.h
|
||||
nsIListWidget.h
|
||||
nsIComboBox.h
|
||||
nsITextWidget.h
|
||||
nsITextAreaWidget.h
|
||||
nsIComboBox.h
|
||||
nsIListBox.h
|
||||
nsIScrollbar.h
|
||||
nsGUIEvent.h
|
||||
nsIRadioButton.h
|
||||
nsIMouseListener.h
|
||||
nsIEventListener.h
|
||||
nsIFileWidget.h
|
||||
nsIMenuListener.h
|
||||
nsWidgetsCID.h
|
||||
nsILabel.h
|
||||
nsILookAndFeel.h
|
||||
nsWidgetSupport.h
|
||||
nsIMenu.h
|
||||
nsIMenuBar.h
|
||||
nsIMenuItem.h
|
||||
nsIPopUpMenu.h
|
||||
nsIKeyBindMgr.h
|
||||
nsStringUtil.h
|
||||
nsIContextMenu.h
|
||||
16
mozilla/widget/public/MANIFEST_IDL
Normal file
16
mozilla/widget/public/MANIFEST_IDL
Normal file
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# This is a list of local files which get copied to the mozilla:dist:idl directory
|
||||
#
|
||||
|
||||
nsIAppShell.idl
|
||||
nsIFilePicker.idl
|
||||
nsIFileSpecWithUI.idl
|
||||
nsISound.idl
|
||||
nsIToolkit.idl
|
||||
nsITransferable.idl
|
||||
nsIDragSession.idl
|
||||
nsIDragService.idl
|
||||
nsIFormatConverter.idl
|
||||
nsIClipboard.idl
|
||||
nsIClipboardOwner.idl
|
||||
nsIRollupListener.idl
|
||||
92
mozilla/widget/public/Makefile.in
Normal file
92
mozilla/widget/public/Makefile.in
Normal file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = raptor
|
||||
XPIDL_MODULE = widget
|
||||
|
||||
EXPORTS = \
|
||||
nsIFontSizeIterator.h \
|
||||
nsIFontNameIterator.h \
|
||||
nsIFontRetrieverService.h \
|
||||
nsIMenuBar.h \
|
||||
nsIMenu.h \
|
||||
nsIMenuItem.h \
|
||||
nsIPopUpMenu.h \
|
||||
nsIFileWidget.h \
|
||||
nsStringUtil.h \
|
||||
nsIKBStateControl.h \
|
||||
nsIButton.h \
|
||||
nsICheckButton.h \
|
||||
nsIListWidget.h \
|
||||
nsIComboBox.h \
|
||||
nsITextWidget.h \
|
||||
nsITextAreaWidget.h \
|
||||
nsIComboBox.h \
|
||||
nsIListBox.h \
|
||||
nsIScrollbar.h \
|
||||
nsGUIEvent.h \
|
||||
nsIRadioButton.h \
|
||||
nsIMouseListener.h \
|
||||
nsIEventListener.h \
|
||||
nsIMenuListener.h \
|
||||
nsWidgetsCID.h \
|
||||
nsILookAndFeel.h \
|
||||
nsILabel.h \
|
||||
nsIMenuBar.h \
|
||||
nsIMenu.h \
|
||||
nsIMenuItem.h \
|
||||
nsIPopUpMenu.h \
|
||||
nsIFontNameIterator.h \
|
||||
nsIFontSizeIterator.h \
|
||||
nsIFontRetrieverService.h \
|
||||
nsIContextMenu.h \
|
||||
$(NULL)
|
||||
|
||||
XPIDLSRCS = \
|
||||
nsIAppShell.idl \
|
||||
nsIFilePicker.idl \
|
||||
nsIFileSpecWithUI.idl \
|
||||
nsIToolkit.idl \
|
||||
nsISound.idl \
|
||||
nsITransferable.idl \
|
||||
nsIDragSession.idl \
|
||||
nsIDragService.idl \
|
||||
nsIFormatConverter.idl \
|
||||
nsIClipboard.idl \
|
||||
nsIClipboardOwner.idl \
|
||||
nsIRollupListener.idl \
|
||||
nsIWidget.idl \
|
||||
nsIWindow.idl \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_UI
|
||||
|
||||
78
mozilla/widget/public/makefile.win
Normal file
78
mozilla/widget/public/makefile.win
Normal file
@@ -0,0 +1,78 @@
|
||||
#!nmake
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
# Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
|
||||
DEPTH=..\..
|
||||
|
||||
|
||||
DEFINES=-D_IMPL_NS_UI
|
||||
MODULE=raptor
|
||||
XPIDL_MODULE=widget
|
||||
|
||||
XPIDLSRCS = \
|
||||
.\nsIAppShell.idl \
|
||||
.\nsIFilePicker.idl \
|
||||
.\nsIFileSpecWithUI.idl \
|
||||
.\nsISound.idl \
|
||||
.\nsIToolkit.idl \
|
||||
.\nsITransferable.idl \
|
||||
.\nsIDragSession.idl \
|
||||
.\nsIDragService.idl \
|
||||
.\nsIFormatConverter.idl \
|
||||
.\nsIClipboard.idl \
|
||||
.\nsIClipboardOwner.idl \
|
||||
.\nsIRollupListener.idl \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS=\
|
||||
nsIFontSizeIterator.h \
|
||||
nsIFontNameIterator.h \
|
||||
nsIFontRetrieverService.h \
|
||||
nsIFileWidget.h \
|
||||
nsIWidget.h \
|
||||
nsIKBStateControl.h \
|
||||
nsIButton.h \
|
||||
nsICheckButton.h \
|
||||
nsIListWidget.h \
|
||||
nsIComboBox.h \
|
||||
nsITextWidget.h \
|
||||
nsITextAreaWidget.h \
|
||||
nsIComboBox.h \
|
||||
nsIListBox.h \
|
||||
nsIScrollbar.h \
|
||||
nsGUIEvent.h \
|
||||
nsIRadioButton.h \
|
||||
nsIMouseListener.h \
|
||||
nsIEventListener.h \
|
||||
nsIMenuListener.h \
|
||||
nsWidgetsCID.h \
|
||||
nsStringUtil.h \
|
||||
nsILookAndFeel.h \
|
||||
nsILabel.h \
|
||||
nsIMenuBar.h \
|
||||
nsIMenu.h \
|
||||
nsIMenuItem.h \
|
||||
nsIContextMenu.h \
|
||||
nsIPopUpMenu.h \
|
||||
$(NULL)
|
||||
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
509
mozilla/widget/public/nsGUIEvent.h
Normal file
509
mozilla/widget/public/nsGUIEvent.h
Normal file
@@ -0,0 +1,509 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsGUIEvent_h__
|
||||
#define nsGUIEvent_h__
|
||||
|
||||
#include "nsPoint.h"
|
||||
#include "nsRect.h"
|
||||
|
||||
class nsIRenderingContext;
|
||||
class nsIRegion;
|
||||
class nsIWidget;
|
||||
class nsIMenuItem;
|
||||
|
||||
/**
|
||||
* Return status for event processors.
|
||||
*/
|
||||
|
||||
enum nsEventStatus {
|
||||
/// The event is ignored, do default processing
|
||||
nsEventStatus_eIgnore,
|
||||
/// The event is consumed, don't do default processing
|
||||
nsEventStatus_eConsumeNoDefault,
|
||||
/// The event is consumed, but do default processing
|
||||
nsEventStatus_eConsumeDoDefault
|
||||
};
|
||||
|
||||
/**
|
||||
* General event
|
||||
*/
|
||||
|
||||
struct nsEvent {
|
||||
/// See event struct types
|
||||
PRUint8 eventStructType;
|
||||
/// See GUI MESSAGES,
|
||||
PRUint32 message;
|
||||
/// in widget relative coordinates, modified to be relative to current view in layout.
|
||||
nsPoint point;
|
||||
// in widget relative coordinates, not modified by layout code.
|
||||
nsPoint refPoint;
|
||||
/// elapsed time, in milliseconds, from the time the system was started to the time the message was created
|
||||
PRUint32 time;
|
||||
// flags to hold event flow stage and capture/bubble cancellation status
|
||||
PRUint32 flags;
|
||||
};
|
||||
|
||||
/**
|
||||
* General graphic user interface event
|
||||
*/
|
||||
|
||||
struct nsGUIEvent : public nsEvent {
|
||||
/// Originator of the event
|
||||
nsIWidget* widget;
|
||||
/// Internal platform specific message.
|
||||
void* nativeMsg;
|
||||
};
|
||||
|
||||
/**
|
||||
* Window resize event
|
||||
*/
|
||||
|
||||
struct nsSizeEvent : public nsGUIEvent {
|
||||
/// x,y width, height in pixels (client area)
|
||||
nsRect *windowSize;
|
||||
/// width of entire window (in pixels)
|
||||
PRInt32 mWinWidth;
|
||||
/// height of entire window (in pixels)
|
||||
PRInt32 mWinHeight;
|
||||
};
|
||||
|
||||
/**
|
||||
* Window repaint event
|
||||
*/
|
||||
|
||||
struct nsPaintEvent : public nsGUIEvent {
|
||||
/// Context to paint in.
|
||||
nsIRenderingContext *renderingContext;
|
||||
/// area to paint (should be used instead of rect)
|
||||
nsIRegion *region;
|
||||
/// x,y, width, height in pixels of area to paint
|
||||
nsRect *rect;
|
||||
};
|
||||
|
||||
/**
|
||||
* Scrollbar event
|
||||
*/
|
||||
|
||||
struct nsScrollbarEvent : public nsGUIEvent {
|
||||
/// ranges between scrollbar 0 and (maxRange - thumbSize). See nsIScrollbar
|
||||
PRUint32 position;
|
||||
};
|
||||
|
||||
|
||||
struct nsInputEvent : public nsGUIEvent {
|
||||
/// PR_TRUE indicates the shift key is down
|
||||
PRBool isShift;
|
||||
/// PR_TRUE indicates the control key is down
|
||||
PRBool isControl;
|
||||
/// PR_TRUE indicates the alt key is down
|
||||
PRBool isAlt;
|
||||
/// PR_TRUE indicates the meta key is down
|
||||
/// (or, on Mac, the Command key)
|
||||
PRBool isMeta;
|
||||
};
|
||||
|
||||
/**
|
||||
* Mouse event
|
||||
*/
|
||||
|
||||
struct nsMouseEvent : public nsInputEvent {
|
||||
/// The number of mouse clicks
|
||||
PRUint32 clickCount;
|
||||
/// Special return code for MOUSE_ACTIVATE to signal
|
||||
/// if the target accepts activation (1), or denies it (0)
|
||||
PRBool acceptActivation;
|
||||
};
|
||||
|
||||
/**
|
||||
* Keyboard event
|
||||
*/
|
||||
|
||||
struct nsKeyEvent : public nsInputEvent {
|
||||
/// see NS_VK codes
|
||||
PRUint32 keyCode;
|
||||
/// OS translated Unicode char
|
||||
PRUint32 charCode;
|
||||
// indicates whether the event signifies a printable character
|
||||
PRBool isChar;
|
||||
};
|
||||
|
||||
/**
|
||||
* IME Related Events
|
||||
*/
|
||||
struct nsTextRange {
|
||||
PRUint32 mStartOffset;
|
||||
PRUint32 mEndOffset;
|
||||
PRUint32 mRangeType;
|
||||
};
|
||||
|
||||
typedef struct nsTextRange nsTextRange;
|
||||
typedef nsTextRange* nsTextRangeArray;
|
||||
|
||||
struct nsTextEventReply {
|
||||
nsPoint mCursorPosition;
|
||||
PRBool mCursorIsCollapsed;
|
||||
};
|
||||
|
||||
typedef struct nsTextEventReply nsTextEventReply;
|
||||
|
||||
struct nsTextEvent : public nsInputEvent {
|
||||
PRUnichar* theText;
|
||||
nsTextEventReply theReply;
|
||||
PRUint32 rangeCount;
|
||||
nsTextRangeArray rangeArray;
|
||||
PRBool isChar;
|
||||
};
|
||||
|
||||
struct nsCompositionEvent : public nsInputEvent {
|
||||
PRUint32 compositionMessage;
|
||||
nsTextEventReply theReply;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tooltip event
|
||||
*/
|
||||
struct nsTooltipEvent : public nsGUIEvent {
|
||||
/// Index of tooltip area which generated the event. @see SetTooltips in nsIWidget
|
||||
PRUint32 tipIndex;
|
||||
};
|
||||
|
||||
/**
|
||||
* MenuItem event
|
||||
*
|
||||
* When this event occurs the widget field in nsGUIEvent holds the "target"
|
||||
* for the event
|
||||
*/
|
||||
|
||||
struct nsMenuEvent : public nsGUIEvent {
|
||||
nsIMenuItem * mMenuItem;
|
||||
PRUint32 mCommand;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Event status for D&D Event
|
||||
*/
|
||||
enum nsDragDropEventStatus {
|
||||
/// The event is a enter
|
||||
nsDragDropEventStatus_eDragEntered,
|
||||
/// The event is exit
|
||||
nsDragDropEventStatus_eDragExited,
|
||||
/// The event is drop
|
||||
nsDragDropEventStatus_eDrop
|
||||
};
|
||||
|
||||
/**
|
||||
* Event Struct Types
|
||||
*/
|
||||
#define NS_EVENT 1
|
||||
#define NS_GUI_EVENT 2
|
||||
#define NS_SIZE_EVENT 3
|
||||
#define NS_PAINT_EVENT 4
|
||||
#define NS_SCROLLBAR_EVENT 5
|
||||
#define NS_INPUT_EVENT 6
|
||||
#define NS_KEY_EVENT 7
|
||||
#define NS_MOUSE_EVENT 8
|
||||
|
||||
#define NS_MENU_EVENT 10
|
||||
#define NS_DRAGDROP_EVENT 11
|
||||
#define NS_TEXT_EVENT 12
|
||||
#define NS_COMPOSITION_START 13
|
||||
#define NS_COMPOSITION_END 14
|
||||
|
||||
/**
|
||||
* GUI MESSAGES
|
||||
*/
|
||||
//@{
|
||||
|
||||
#define NS_WINDOW_START 100
|
||||
|
||||
// Widget is being created
|
||||
#define NS_CREATE (NS_WINDOW_START)
|
||||
// Widget is being destroyed
|
||||
#define NS_DESTROY (NS_WINDOW_START + 1)
|
||||
// Widget was resized
|
||||
#define NS_SIZE (NS_WINDOW_START + 2)
|
||||
// Widget gained focus
|
||||
#define NS_GOTFOCUS (NS_WINDOW_START + 3)
|
||||
// Widget lost focus
|
||||
#define NS_LOSTFOCUS (NS_WINDOW_START + 4)
|
||||
// Widget got activated
|
||||
#define NS_ACTIVATE (NS_WINDOW_START + 5)
|
||||
// Widget got deactivated
|
||||
#define NS_DEACTIVATE (NS_WINDOW_START + 6)
|
||||
// Widget needs to be repainted
|
||||
#define NS_PAINT (NS_WINDOW_START + 30)
|
||||
// Key is pressed within a window
|
||||
#define NS_KEY_PRESS (NS_WINDOW_START + 31)
|
||||
// Key is released within a window
|
||||
#define NS_KEY_UP (NS_WINDOW_START + 32)
|
||||
// Key is pressed within a window
|
||||
#define NS_KEY_DOWN (NS_WINDOW_START + 33)
|
||||
// Window has been moved to a new location.
|
||||
// The events point contains the x, y location in screen coordinates
|
||||
#define NS_MOVE (NS_WINDOW_START + 34)
|
||||
|
||||
// Tab control's selected tab has changed
|
||||
#define NS_TABCHANGE (NS_WINDOW_START + 35)
|
||||
|
||||
|
||||
|
||||
// Menu item selected
|
||||
#define NS_MENU_SELECTED (NS_WINDOW_START + 38)
|
||||
|
||||
// Form control changed: currently == combo box selection changed
|
||||
// but could be expanded to mean textbox, checkbox changed, etc.
|
||||
// This is a GUI specific event that does not necessarily correspond
|
||||
// directly to a mouse click or a key press.
|
||||
#define NS_CONTROL_CHANGE (NS_WINDOW_START + 39)
|
||||
|
||||
// Indicates the display has changed depth
|
||||
#define NS_DISPLAYCHANGED (NS_WINDOW_START + 40)
|
||||
|
||||
|
||||
#define NS_MOUSE_MESSAGE_START 300
|
||||
#define NS_MOUSE_MOVE (NS_MOUSE_MESSAGE_START)
|
||||
#define NS_MOUSE_LEFT_BUTTON_UP (NS_MOUSE_MESSAGE_START + 1)
|
||||
#define NS_MOUSE_LEFT_BUTTON_DOWN (NS_MOUSE_MESSAGE_START + 2)
|
||||
#define NS_MOUSE_MIDDLE_BUTTON_UP (NS_MOUSE_MESSAGE_START + 10)
|
||||
#define NS_MOUSE_MIDDLE_BUTTON_DOWN (NS_MOUSE_MESSAGE_START + 11)
|
||||
#define NS_MOUSE_RIGHT_BUTTON_UP (NS_MOUSE_MESSAGE_START + 20)
|
||||
#define NS_MOUSE_RIGHT_BUTTON_DOWN (NS_MOUSE_MESSAGE_START + 21)
|
||||
#define NS_MOUSE_ENTER (NS_MOUSE_MESSAGE_START + 22)
|
||||
#define NS_MOUSE_EXIT (NS_MOUSE_MESSAGE_START + 23)
|
||||
#define NS_MOUSE_LEFT_DOUBLECLICK (NS_MOUSE_MESSAGE_START + 24)
|
||||
#define NS_MOUSE_MIDDLE_DOUBLECLICK (NS_MOUSE_MESSAGE_START + 25)
|
||||
#define NS_MOUSE_RIGHT_DOUBLECLICK (NS_MOUSE_MESSAGE_START + 26)
|
||||
#define NS_MOUSE_LEFT_CLICK (NS_MOUSE_MESSAGE_START + 27)
|
||||
#define NS_MOUSE_MIDDLE_CLICK (NS_MOUSE_MESSAGE_START + 28)
|
||||
#define NS_MOUSE_RIGHT_CLICK (NS_MOUSE_MESSAGE_START + 29)
|
||||
#define NS_MOUSE_ACTIVATE (NS_MOUSE_MESSAGE_START + 30)
|
||||
|
||||
#define NS_SCROLLBAR_MESSAGE_START 1000
|
||||
#define NS_SCROLLBAR_POS (NS_SCROLLBAR_MESSAGE_START)
|
||||
#define NS_SCROLLBAR_PAGE_NEXT (NS_SCROLLBAR_MESSAGE_START + 1)
|
||||
#define NS_SCROLLBAR_PAGE_PREV (NS_SCROLLBAR_MESSAGE_START + 2)
|
||||
#define NS_SCROLLBAR_LINE_NEXT (NS_SCROLLBAR_MESSAGE_START + 3)
|
||||
#define NS_SCROLLBAR_LINE_PREV (NS_SCROLLBAR_MESSAGE_START + 4)
|
||||
|
||||
#define NS_STREAM_EVENT_START 1100
|
||||
#define NS_PAGE_LOAD (NS_STREAM_EVENT_START)
|
||||
#define NS_PAGE_UNLOAD (NS_STREAM_EVENT_START + 1)
|
||||
#define NS_IMAGE_LOAD (NS_STREAM_EVENT_START + 2)
|
||||
#define NS_IMAGE_ABORT (NS_STREAM_EVENT_START + 3)
|
||||
#define NS_IMAGE_ERROR (NS_STREAM_EVENT_START + 4)
|
||||
|
||||
#define NS_FORM_EVENT_START 1200
|
||||
#define NS_FORM_SUBMIT (NS_FORM_EVENT_START)
|
||||
#define NS_FORM_RESET (NS_FORM_EVENT_START + 1)
|
||||
#define NS_FORM_CHANGE (NS_FORM_EVENT_START + 2)
|
||||
#define NS_FORM_SELECTED (NS_FORM_EVENT_START + 3)
|
||||
#define NS_FORM_INPUT (NS_FORM_EVENT_START + 4)
|
||||
|
||||
//Need separate focus/blur notifications for non-native widgets
|
||||
#define NS_FOCUS_EVENT_START 1300
|
||||
#define NS_FOCUS_CONTENT (NS_FOCUS_EVENT_START)
|
||||
#define NS_BLUR_CONTENT (NS_FOCUS_EVENT_START + 1)
|
||||
|
||||
|
||||
#define NS_DRAGDROP_EVENT_START 1400
|
||||
#define NS_DRAGDROP_ENTER (NS_DRAGDROP_EVENT_START)
|
||||
#define NS_DRAGDROP_OVER (NS_DRAGDROP_EVENT_START + 1)
|
||||
#define NS_DRAGDROP_EXIT (NS_DRAGDROP_EVENT_START + 2)
|
||||
#define NS_DRAGDROP_DROP (NS_DRAGDROP_EVENT_START + 3)
|
||||
#define NS_DRAGDROP_GESTURE (NS_DRAGDROP_EVENT_START + 4)
|
||||
|
||||
// Events for popups
|
||||
#define NS_MENU_EVENT_START 1500
|
||||
#define NS_MENU_CREATE (NS_MENU_EVENT_START)
|
||||
#define NS_MENU_DESTROY (NS_MENU_EVENT_START+1)
|
||||
#define NS_MENU_ACTION (NS_MENU_EVENT_START+2)
|
||||
#define NS_XUL_BROADCAST (NS_MENU_EVENT_START+3)
|
||||
#define NS_XUL_COMMAND_UPDATE (NS_MENU_EVENT_START+4)
|
||||
//@}
|
||||
|
||||
|
||||
#define NS_IS_MOUSE_EVENT(evnt) \
|
||||
(((evnt)->message == NS_MOUSE_LEFT_BUTTON_DOWN) || \
|
||||
((evnt)->message == NS_MOUSE_LEFT_BUTTON_UP) || \
|
||||
((evnt)->message == NS_MOUSE_LEFT_CLICK) || \
|
||||
((evnt)->message == NS_MOUSE_LEFT_DOUBLECLICK) || \
|
||||
((evnt)->message == NS_MOUSE_MIDDLE_BUTTON_DOWN) || \
|
||||
((evnt)->message == NS_MOUSE_MIDDLE_BUTTON_UP) || \
|
||||
((evnt)->message == NS_MOUSE_MIDDLE_CLICK) || \
|
||||
((evnt)->message == NS_MOUSE_MIDDLE_DOUBLECLICK) || \
|
||||
((evnt)->message == NS_MOUSE_RIGHT_BUTTON_DOWN) || \
|
||||
((evnt)->message == NS_MOUSE_RIGHT_BUTTON_UP) || \
|
||||
((evnt)->message == NS_MOUSE_RIGHT_CLICK) || \
|
||||
((evnt)->message == NS_MOUSE_RIGHT_DOUBLECLICK) || \
|
||||
((evnt)->message == NS_MOUSE_ENTER) || \
|
||||
((evnt)->message == NS_MOUSE_EXIT) || \
|
||||
((evnt)->message == NS_MOUSE_MOVE))
|
||||
|
||||
#define NS_IS_KEY_EVENT(evnt) \
|
||||
(((evnt)->message == NS_KEY_DOWN) || \
|
||||
((evnt)->message == NS_KEY_PRESS) || \
|
||||
((evnt)->message == NS_KEY_UP))
|
||||
|
||||
/*
|
||||
* Virtual key bindings for keyboard events
|
||||
* NOTE: These are repeated in nsIDOMEvent.h and must be kept in sync
|
||||
*/
|
||||
|
||||
#define NS_VK_CANCEL 0x03
|
||||
#define NS_VK_BACK 0x08
|
||||
#define NS_VK_TAB 0x09
|
||||
#define NS_VK_CLEAR 0x0C
|
||||
#define NS_VK_RETURN 0x0D
|
||||
#define NS_VK_ENTER 0x0E
|
||||
#define NS_VK_SHIFT 0x10
|
||||
#define NS_VK_CONTROL 0x11
|
||||
#define NS_VK_ALT 0x12
|
||||
#define NS_VK_PAUSE 0x13
|
||||
#define NS_VK_CAPS_LOCK 0x14
|
||||
#define NS_VK_ESCAPE 0x1B
|
||||
#define NS_VK_SPACE 0x20
|
||||
#define NS_VK_PAGE_UP 0x21
|
||||
#define NS_VK_PAGE_DOWN 0x22
|
||||
#define NS_VK_END 0x23
|
||||
#define NS_VK_HOME 0x24
|
||||
#define NS_VK_LEFT 0x25
|
||||
#define NS_VK_UP 0x26
|
||||
#define NS_VK_RIGHT 0x27
|
||||
#define NS_VK_DOWN 0x28
|
||||
#define NS_VK_PRINTSCREEN 0x2C
|
||||
#define NS_VK_INSERT 0x2D
|
||||
#define NS_VK_DELETE 0x2E
|
||||
|
||||
// NS_VK_0 - NS_VK_9 match their ascii values
|
||||
#define NS_VK_0 0x30
|
||||
#define NS_VK_1 0x31
|
||||
#define NS_VK_2 0x32
|
||||
#define NS_VK_3 0x33
|
||||
#define NS_VK_4 0x34
|
||||
#define NS_VK_5 0x35
|
||||
#define NS_VK_6 0x36
|
||||
#define NS_VK_7 0x37
|
||||
#define NS_VK_8 0x38
|
||||
#define NS_VK_9 0x39
|
||||
|
||||
#define NS_VK_SEMICOLON 0x3B
|
||||
#define NS_VK_EQUALS 0x3D
|
||||
|
||||
// NS_VK_A - NS_VK_Z match their ascii values
|
||||
#define NS_VK_A 0x41
|
||||
#define NS_VK_B 0x42
|
||||
#define NS_VK_C 0x43
|
||||
#define NS_VK_D 0x44
|
||||
#define NS_VK_E 0x45
|
||||
#define NS_VK_F 0x46
|
||||
#define NS_VK_G 0x47
|
||||
#define NS_VK_H 0x48
|
||||
#define NS_VK_I 0x49
|
||||
#define NS_VK_J 0x4A
|
||||
#define NS_VK_K 0x4B
|
||||
#define NS_VK_L 0x4C
|
||||
#define NS_VK_M 0x4D
|
||||
#define NS_VK_N 0x4E
|
||||
#define NS_VK_O 0x4F
|
||||
#define NS_VK_P 0x50
|
||||
#define NS_VK_Q 0x51
|
||||
#define NS_VK_R 0x52
|
||||
#define NS_VK_S 0x53
|
||||
#define NS_VK_T 0x54
|
||||
#define NS_VK_U 0x55
|
||||
#define NS_VK_V 0x56
|
||||
#define NS_VK_W 0x57
|
||||
#define NS_VK_X 0x58
|
||||
#define NS_VK_Y 0x59
|
||||
#define NS_VK_Z 0x5A
|
||||
|
||||
#define NS_VK_NUMPAD0 0x60
|
||||
#define NS_VK_NUMPAD1 0x61
|
||||
#define NS_VK_NUMPAD2 0x62
|
||||
#define NS_VK_NUMPAD3 0x63
|
||||
#define NS_VK_NUMPAD4 0x64
|
||||
#define NS_VK_NUMPAD5 0x65
|
||||
#define NS_VK_NUMPAD6 0x66
|
||||
#define NS_VK_NUMPAD7 0x67
|
||||
#define NS_VK_NUMPAD8 0x68
|
||||
#define NS_VK_NUMPAD9 0x69
|
||||
#define NS_VK_MULTIPLY 0x6A
|
||||
#define NS_VK_ADD 0x6B
|
||||
#define NS_VK_SEPARATOR 0x6C
|
||||
#define NS_VK_SUBTRACT 0x6D
|
||||
#define NS_VK_DECIMAL 0x6E
|
||||
#define NS_VK_DIVIDE 0x6F
|
||||
#define NS_VK_F1 0x70
|
||||
#define NS_VK_F2 0x71
|
||||
#define NS_VK_F3 0x72
|
||||
#define NS_VK_F4 0x73
|
||||
#define NS_VK_F5 0x74
|
||||
#define NS_VK_F6 0x75
|
||||
#define NS_VK_F7 0x76
|
||||
#define NS_VK_F8 0x77
|
||||
#define NS_VK_F9 0x78
|
||||
#define NS_VK_F10 0x79
|
||||
#define NS_VK_F11 0x7A
|
||||
#define NS_VK_F12 0x7B
|
||||
#define NS_VK_F13 0x7C
|
||||
#define NS_VK_F14 0x7D
|
||||
#define NS_VK_F15 0x7E
|
||||
#define NS_VK_F16 0x7F
|
||||
#define NS_VK_F17 0x80
|
||||
#define NS_VK_F18 0x81
|
||||
#define NS_VK_F19 0x82
|
||||
#define NS_VK_F20 0x83
|
||||
#define NS_VK_F21 0x84
|
||||
#define NS_VK_F22 0x85
|
||||
#define NS_VK_F23 0x86
|
||||
#define NS_VK_F24 0x87
|
||||
|
||||
#define NS_VK_NUM_LOCK 0x90
|
||||
#define NS_VK_SCROLL_LOCK 0x91
|
||||
|
||||
#define NS_VK_COMMA 0xBC
|
||||
#define NS_VK_PERIOD 0xBE
|
||||
#define NS_VK_SLASH 0xBF
|
||||
#define NS_VK_BACK_QUOTE 0xC0
|
||||
#define NS_VK_OPEN_BRACKET 0xDB
|
||||
#define NS_VK_BACK_SLASH 0xDC
|
||||
#define NS_VK_CLOSE_BRACKET 0xDD
|
||||
#define NS_VK_QUOTE 0xDE
|
||||
|
||||
#define NS_EVENT_FLAG_NONE 0x0000
|
||||
#define NS_EVENT_FLAG_INIT 0x0001
|
||||
#define NS_EVENT_FLAG_BUBBLE 0x0002
|
||||
#define NS_EVENT_FLAG_CAPTURE 0x0004
|
||||
#define NS_EVENT_FLAG_STOP_DISPATCH 0x0008
|
||||
#define NS_EVENT_FLAG_NO_DEFAULT 0x0010
|
||||
|
||||
// IME Constants -- keep in synch with nsIDOMTextRange.h
|
||||
#define NS_TEXTRANGE_CARETPOSITION 0x01
|
||||
#define NS_TEXTRANGE_RAWINPUT 0X02
|
||||
#define NS_TEXTRANGE_SELECTEDRAWTEXT 0x03
|
||||
#define NS_TEXTRANGE_CONVERTEDTEXT 0x04
|
||||
#define NS_TEXTRANGE_SELECTEDCONVERTEDTEXT 0x05
|
||||
|
||||
#endif // nsGUIEvent_h__
|
||||
|
||||
122
mozilla/widget/public/nsIAppShell.idl
Normal file
122
mozilla/widget/public/nsIAppShell.idl
Normal file
@@ -0,0 +1,122 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Stuart Parmenter <pavlov@netscape.com>
|
||||
*/
|
||||
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
native int(int);
|
||||
[ptr] native nsDispatchListener(nsDispatchListener);
|
||||
[ptr] native nsIEventQueue(nsIEventQueue);
|
||||
[ptr] native UndefinednsIWidget(nsIWidget);
|
||||
[ref] native PRBoolRef(PRBool);
|
||||
[ref] native voidStarRef(void *);
|
||||
|
||||
%{ C++
|
||||
#include "nsIEventQueue.h"
|
||||
|
||||
/**
|
||||
* Flags for the getNativeData function.
|
||||
* See GetNativeData()
|
||||
*/
|
||||
#define NS_NATIVE_SHELL 0
|
||||
|
||||
/**
|
||||
* During the nsIAppShell Run method notify this listener
|
||||
* after each message dispatch.
|
||||
* @see SetDispatchListener member function of nsIAppShell
|
||||
*/
|
||||
class nsDispatchListener {
|
||||
public:
|
||||
virtual void AfterDispatch() = 0;
|
||||
};
|
||||
|
||||
class nsIWidget;
|
||||
%}
|
||||
|
||||
|
||||
[uuid(a0757c31-eeac-11d1-9ec1-00aa002fb821)]
|
||||
interface nsIAppShell : nsISupports
|
||||
{
|
||||
/**
|
||||
* Creates an application shell
|
||||
*/
|
||||
|
||||
void Create(inout int argc, inout string argv);
|
||||
|
||||
/**
|
||||
* Enter an event loop.
|
||||
* Don't leave until application exits.
|
||||
*/
|
||||
|
||||
void Run();
|
||||
|
||||
/**
|
||||
* Prepare to process events.
|
||||
*/
|
||||
|
||||
void Spinup();
|
||||
|
||||
/**
|
||||
* Prepare to stop processing events.
|
||||
*/
|
||||
|
||||
void Spindown();
|
||||
|
||||
/**
|
||||
* An event queue has been created or destroyed. Hook or unhook it from
|
||||
* your system, as necessary.
|
||||
* @param aQueue the queue in question
|
||||
* @param aListen PR_TRUE for a new queue wanting hooking up. PR_FALSE
|
||||
* for a queue wanting to be unhooked.
|
||||
*/
|
||||
void ListenToEventQueue(in nsIEventQueue aQueue, in PRBool aListen);
|
||||
|
||||
/**
|
||||
* After event dispatch execute app specific code
|
||||
*/
|
||||
|
||||
void GetNativeEvent(in PRBoolRef aRealEvent, in voidStarRef aEvent);
|
||||
|
||||
/**
|
||||
* After event dispatch execute app specific code
|
||||
*/
|
||||
|
||||
void DispatchNativeEvent(in PRBool aRealEvent, in voidStar aEvent);
|
||||
|
||||
/**
|
||||
* After event dispatch execute app specific code
|
||||
*/
|
||||
|
||||
void SetDispatchListener(in nsDispatchListener aDispatchListener);
|
||||
|
||||
/**
|
||||
* Exit the handle event loop
|
||||
*/
|
||||
|
||||
void Exit();
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIAppShell_h__
|
||||
|
||||
|
||||
63
mozilla/widget/public/nsIButton.h
Normal file
63
mozilla/widget/public/nsIButton.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIButton_h__
|
||||
#define nsIButton_h__
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {18032AD0-B265-11d1-AA2A-000000000000}
|
||||
#define NS_IBUTTON_IID \
|
||||
{ 0x18032ad0, 0xb265, 0x11d1, \
|
||||
{ 0xaa, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
|
||||
|
||||
/**
|
||||
* Push button widget.
|
||||
* Automatically shows itself as depressed when clicked on.
|
||||
*/
|
||||
class nsIButton : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IBUTTON_IID)
|
||||
|
||||
/**
|
||||
* Set the label
|
||||
*
|
||||
* @param Set the label to aText
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetLabel(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the button label
|
||||
*
|
||||
* @param aBuffer contains label upon return
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetLabel(nsString &aBuffer) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
81
mozilla/widget/public/nsICheckButton.h
Normal file
81
mozilla/widget/public/nsICheckButton.h
Normal file
@@ -0,0 +1,81 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsICheckButton_h__
|
||||
#define nsICheckButton_h__
|
||||
|
||||
// {961085F5-BD28-11d1-97EF-00609703C14E}
|
||||
#define NS_ICHECKBUTTON_IID \
|
||||
{ 0x961085f5, 0xbd28, 0x11d1, { 0x97, 0xef, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsIWidget.h"
|
||||
|
||||
|
||||
/**
|
||||
* Checkbox widget.
|
||||
* Can show itself in a checked or unchecked state.
|
||||
* The checkbox widget does not automatically show itself checked or unchecked when clicked on.
|
||||
*/
|
||||
class nsICheckButton : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICHECKBUTTON_IID)
|
||||
|
||||
/**
|
||||
* Set the button label
|
||||
*
|
||||
* @param aText button label
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetLabel(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the button label
|
||||
*
|
||||
* @param aBuffer contains label upon return
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetLabel(nsString &aBuffer) = 0;
|
||||
|
||||
/**
|
||||
* Set the check state.
|
||||
* @param aState PR_TRUE show as checked. PR_FALSE show unchecked.
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetState(const PRBool aState) = 0;
|
||||
|
||||
/**
|
||||
* Get the check state.
|
||||
* @param aState PR_TRUE if checked. PR_FALSE if unchecked.
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetState(PRBool& aState) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsICheckButton_h__
|
||||
|
||||
88
mozilla/widget/public/nsIClipboard.idl
Normal file
88
mozilla/widget/public/nsIClipboard.idl
Normal file
@@ -0,0 +1,88 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISupportsArray.idl"
|
||||
#include "nsITransferable.idl"
|
||||
#include "nsIClipboardOwner.idl"
|
||||
|
||||
|
||||
[scriptable, uuid(8B5314BA-DB01-11d2-96CE-0060B0FB9956)]
|
||||
interface nsIClipboard : nsISupports
|
||||
{
|
||||
/**
|
||||
* Given a transferable, set the data on the native clipboard
|
||||
*
|
||||
* @param aTransferable The transferable
|
||||
* @param anOwner The owner of the transferable
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
void setData ( in nsITransferable aTransferable, in nsIClipboardOwner anOwner) ;
|
||||
|
||||
/**
|
||||
* Given a transferable, get the clipboard data.
|
||||
*
|
||||
* @param aTransferable The transferable
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
void getData ( in nsITransferable aTransferable ) ;
|
||||
|
||||
/**
|
||||
* This empties the clipboard and notifies the clipboard owner.
|
||||
* This empties the "logical" clipboard. It does not clear the native clipboard.
|
||||
*
|
||||
* @result NS_OK if successful.
|
||||
*/
|
||||
|
||||
void emptyClipboard ( ) ;
|
||||
|
||||
/**
|
||||
* Some platforms support deferred notification for putting data on the clipboard
|
||||
* This method forces the data onto the clipboard in its various formats
|
||||
* This may be used if the application going away.
|
||||
*
|
||||
* @result NS_OK if successful.
|
||||
*/
|
||||
|
||||
void forceDataToClipboard ( ) ;
|
||||
|
||||
/**
|
||||
* This provides a way to give correct UI feedback about, for instance, a paste
|
||||
* should be allowed. It does _NOT_ actually retreive the data and should be a very
|
||||
* inexpensive call. All it does is check if there is data on the clipboard matching
|
||||
* any of the flavors in the given list.
|
||||
*
|
||||
* @aFlavorList - nsISupportsString's in a nsISupportsArray (for JavaScript).
|
||||
* @outResult - if data is present matching one of
|
||||
* @result NS_OK if successful.
|
||||
*/
|
||||
boolean hasDataMatchingFlavors ( in nsISupportsArray aFlavorList ) ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
%}
|
||||
45
mozilla/widget/public/nsIClipboardOwner.idl
Normal file
45
mozilla/widget/public/nsIClipboardOwner.idl
Normal file
@@ -0,0 +1,45 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsITransferable.idl"
|
||||
|
||||
|
||||
[scriptable, uuid(5A31C7A1-E122-11d2-9A57-000064657374)]
|
||||
interface nsIClipboardOwner : nsISupports
|
||||
{
|
||||
/**
|
||||
* Notifies the owner of the clipboard transferable that the
|
||||
* transferable is being removed from the clipboard
|
||||
*
|
||||
* @param aTransferable The transferable
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
void LosingOwnership ( in nsITransferable aTransferable ) ;
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
%}
|
||||
141
mozilla/widget/public/nsIComboBox.h
Normal file
141
mozilla/widget/public/nsIComboBox.h
Normal file
@@ -0,0 +1,141 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIComboBox_h__
|
||||
#define nsIComboBox_h__
|
||||
|
||||
#include "nsIListWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {961085F6-BD28-11d1-97EF-00609703C14E}
|
||||
#define NS_ICOMBOBOX_IID \
|
||||
{ 0x961085f6, 0xbd28, 0x11d1, { 0x97, 0xef, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
|
||||
/**
|
||||
* Initialize combobox data
|
||||
*/
|
||||
|
||||
struct nsComboBoxInitData : public nsWidgetInitData {
|
||||
nsComboBoxInitData()
|
||||
: mDropDownHeight(0)
|
||||
{
|
||||
}
|
||||
|
||||
PRUint32 mDropDownHeight; // in pixels
|
||||
};
|
||||
|
||||
/**
|
||||
* Single selection drop down list. See nsIListWidget for capabilities
|
||||
*/
|
||||
|
||||
class nsIComboBox : public nsISupports {
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICOMBOBOX_IID);
|
||||
|
||||
/**
|
||||
* Set an item at the specific position
|
||||
*
|
||||
* @param aItem the item name. The item has to be null terminated
|
||||
* @param aPosition the position the item should be inserted at
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*/
|
||||
NS_IMETHOD AddItemAt(nsString &aItem, PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Finds the first occurrence of the specified item
|
||||
*
|
||||
* @param aItem the string to be filled
|
||||
* @param aStartPos the starting position (index)
|
||||
* @return PR_TRUE if successful, PR_FALSE otherwise
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 FindItem(nsString &aItem, PRInt32 aStartPos) = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of items in the list
|
||||
*
|
||||
* @return the number of items
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetItemCount() = 0;
|
||||
|
||||
/**
|
||||
* Remove the first occurrence of the specified item
|
||||
*
|
||||
* @param aPosition the item position
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*
|
||||
* @return PR_TRUE if successful, PR_FALSE otherwise
|
||||
*
|
||||
*/
|
||||
virtual PRBool RemoveItemAt(PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Gets an item at a specific location
|
||||
*
|
||||
* @param anItem on return contains the string of the item at that position
|
||||
* @param aPosition the Position of the item
|
||||
*
|
||||
*/
|
||||
virtual PRBool GetItemAt(nsString& anItem, PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Gets the selected item for a single selection list
|
||||
*
|
||||
* @param aItem on return contains the string of the selected item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetSelectedItem(nsString &aItem) = 0;
|
||||
|
||||
/**
|
||||
* Returns with the index of the selected item
|
||||
*
|
||||
* @return PRInt32, index of selected item
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetSelectedIndex() = 0;
|
||||
|
||||
/**
|
||||
* Select the item at the specified position
|
||||
*
|
||||
* @param PRInt32, the item position
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SelectItem(PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Deselects all the items in the list
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Deselect() = 0;
|
||||
};
|
||||
|
||||
|
||||
#endif // nsIComboBox_h__
|
||||
|
||||
|
||||
|
||||
148
mozilla/widget/public/nsIContextMenu.h
Normal file
148
mozilla/widget/public/nsIContextMenu.h
Normal file
@@ -0,0 +1,148 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIContextMenu_h__
|
||||
#define nsIContextMenu_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIWebShell.h"
|
||||
|
||||
class nsIMenuBar;
|
||||
class nsIMenu;
|
||||
class nsIMenuItem;
|
||||
class nsIMenuListener;
|
||||
|
||||
//Generate this!
|
||||
// {35A3DEC1-4992-11d2-8DBA-00609703C14E}
|
||||
#define NS_ICONTEXTMENU_IID \
|
||||
{ 0x35a3dec1, 0x4992, 0x11d2, \
|
||||
{ 0x8d, 0xba, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/**
|
||||
* Menu widget
|
||||
*/
|
||||
class nsIContextMenu : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ICONTEXTMENU_IID)
|
||||
|
||||
/**
|
||||
* Creates the context menu
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsISupports * aParent, const nsString& anAlignment, const nsString& anAnchorAlignment) = 0;
|
||||
|
||||
/**
|
||||
* Get the context menu's Parent
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetParent(nsISupports *&aParent) = 0;
|
||||
|
||||
/**
|
||||
* Adds a context menu Item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddItem(nsISupports* aItem) = 0;
|
||||
|
||||
/**
|
||||
* Adds a separator
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddSeparator() = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of context menu items
|
||||
* This does count separators as items
|
||||
*/
|
||||
NS_IMETHOD GetItemCount(PRUint32 &aCount) = 0;
|
||||
|
||||
/**
|
||||
* Returns a Menu or Menu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetItemAt(const PRUint32 aPos, nsISupports *& aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Inserts a Menu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD InsertItemAt(const PRUint32 aPos, nsISupports * aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Removes an Menu Item from a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveItem(const PRUint32 aPos) = 0;
|
||||
|
||||
/**
|
||||
* Removes all the Menu Items
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveAll() = 0;
|
||||
|
||||
/**
|
||||
* Gets Native MenuHandle
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetNativeData(void** aData) = 0;
|
||||
|
||||
/**
|
||||
* Adds menu listener for dynamic construction
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddMenuListener(nsIMenuListener * aMenuListener) = 0;
|
||||
|
||||
/**
|
||||
* Removes menu listener for dynamic construction
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveMenuListener(nsIMenuListener * aMenuListener) = 0;
|
||||
|
||||
/**
|
||||
* Set location
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetLocation(PRInt32 aX, PRInt32 aY) = 0;
|
||||
|
||||
/**
|
||||
* Set DOMNode
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetDOMNode(nsIDOMNode * aMenuNode) = 0;
|
||||
|
||||
/**
|
||||
* Set DOMElement
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetDOMElement(nsIDOMElement * aMenuElement) = 0;
|
||||
|
||||
/**
|
||||
* Set WebShell
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetWebShell(nsIWebShell * aWebShell) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
70
mozilla/widget/public/nsIDragService.idl
Normal file
70
mozilla/widget/public/nsIDragService.idl
Normal file
@@ -0,0 +1,70 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISupportsArray.idl"
|
||||
#include "nsIDragSession.idl"
|
||||
#include "nsIScriptableRegion.idl"
|
||||
|
||||
|
||||
[scriptable, uuid(8B5314BB-DB01-11d2-96CE-0060B0FB9956)]
|
||||
interface nsIDragService : nsISupports
|
||||
{
|
||||
const long DRAGDROP_ACTION_NONE = 0;
|
||||
const long DRAGDROP_ACTION_COPY = 1;
|
||||
const long DRAGDROP_ACTION_MOVE = 2;
|
||||
const long DRAGDROP_ACTION_LINK = 4;
|
||||
|
||||
/**
|
||||
* Starts a modal drag session with an array of transaferables
|
||||
*
|
||||
* @param aTransferables - an array of transferables to be dragged
|
||||
* @param aRegion - a region containing rectangles for cursor feedback,
|
||||
* in window coordinates.
|
||||
* @param aActionType - specified which of copy/move/link are allowed
|
||||
*/
|
||||
void invokeDragSession ( in nsISupportsArray aTransferables,
|
||||
in nsIScriptableRegion aRegion, in unsigned long aActionType );
|
||||
|
||||
/**
|
||||
* Returns the current Drag Session
|
||||
*/
|
||||
nsIDragSession getCurrentSession ( ) ;
|
||||
|
||||
/**
|
||||
* Tells the Drag Service to start a drag session. This is called when
|
||||
* an external drag occurs
|
||||
*/
|
||||
void startDragSession ( ) ;
|
||||
|
||||
/**
|
||||
* Tells the Drag Service to end a drag session. This is called when
|
||||
* an external drag occurs
|
||||
*/
|
||||
void endDragSession ( ) ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
%}
|
||||
80
mozilla/widget/public/nsIDragSession.idl
Normal file
80
mozilla/widget/public/nsIDragSession.idl
Normal file
@@ -0,0 +1,80 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISupportsArray.idl"
|
||||
#include "nsITransferable.idl"
|
||||
|
||||
%{ C++
|
||||
#include "nsSize.h"
|
||||
%}
|
||||
|
||||
native nsSize (nsSize);
|
||||
|
||||
|
||||
[scriptable, uuid(CBA22C53-FCCE-11d2-96D4-0060B0FB9956)]
|
||||
interface nsIDragSession : nsISupports
|
||||
{
|
||||
/**
|
||||
* Set the current state of the drag whether it can be dropped or not.
|
||||
* usually the target "frame" sets this so the native system can render the correct feedback
|
||||
*/
|
||||
attribute boolean canDrop;
|
||||
|
||||
/**
|
||||
* Sets the action (copy, move, link, et.c) for the current drag
|
||||
*/
|
||||
attribute unsigned long dragAction;
|
||||
|
||||
/**
|
||||
* Sets the current width and height if the drag target area.
|
||||
* It will contain the current size of the Frame that the drag is currently in
|
||||
*/
|
||||
attribute nsSize targetSize;
|
||||
|
||||
/**
|
||||
* Get the number items that were dropped
|
||||
*/
|
||||
readonly attribute unsigned long numDropItems;
|
||||
|
||||
/**
|
||||
* Get data from a Drag&Drop. Can be called while the drag is in process
|
||||
* or after the drop has completed.
|
||||
*
|
||||
* @param aTransferable the transferable for the data to be put into
|
||||
* @param aItemIndex which of multiple drag items, zero-based
|
||||
*/
|
||||
void getData ( in nsITransferable aTransferable, in unsigned long aItemIndex ) ;
|
||||
|
||||
/**
|
||||
* Check to set if ant of the native data on the clipboard matches this data flavor
|
||||
*
|
||||
* @result NS_OK if if the data flavor is supported and, NS_ERROR_FAILURE is it is not
|
||||
*/
|
||||
boolean isDataFlavorSupported ( in string aDataFlavor ) ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
%}
|
||||
51
mozilla/widget/public/nsIDragSessionMac.h
Normal file
51
mozilla/widget/public/nsIDragSessionMac.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIDragSessionMac_h__
|
||||
#define nsIDragSessionMac_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include <Drag.h>
|
||||
|
||||
|
||||
#define NS_IDRAGSESSIONMAC_IID \
|
||||
{ 0x36c4c380, 0x09e2, 0x11d3, { 0xb0, 0x33, 0xa4, 0x20, 0xf4, 0x2c, 0xfd, 0x7c } };
|
||||
|
||||
|
||||
class nsIDragSessionMac : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IDRAGSESSIONMAC_IID)
|
||||
|
||||
/**
|
||||
* Since the drag may originate in an external application, we need some way of
|
||||
* communicating the DragManager's DragRef to the session so it can use it
|
||||
* when filling in data requests.
|
||||
*
|
||||
* @param aDragRef the MacOS DragManager's ref number for the current drag
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetDragReference ( DragReference aDragRef ) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
52
mozilla/widget/public/nsIEventListener.h
Normal file
52
mozilla/widget/public/nsIEventListener.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIEventListener_h__
|
||||
#define nsIEventListener_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsGUIEvent.h"
|
||||
|
||||
/**
|
||||
* Event listener interface.
|
||||
* Alternative to a callback for recieving events.
|
||||
*/
|
||||
|
||||
// {c83f6b80-d7ce-11d2-8360-c4c894c4917c}
|
||||
#define NS_IEVENTLISTENER_IID \
|
||||
{ 0xc83f6b80, 0xd7ce, 0x11d2, { 0x83, 0x60, 0xc4, 0xc8, 0x94, 0xc4, 0x91, 0x7c } }
|
||||
|
||||
class nsIEventListener : public nsISupports {
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IEVENTLISTENER_IID)
|
||||
|
||||
/**
|
||||
* Processes all events.
|
||||
* If a mouse listener is registered this method will not process mouse events.
|
||||
* @param anEvent the event to process. See nsGUIEvent.h for event types.
|
||||
*/
|
||||
|
||||
virtual nsEventStatus ProcessEvent(const nsGUIEvent & anEvent) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIEventListener_h__
|
||||
75
mozilla/widget/public/nsIFileDialogsMgr.h
Normal file
75
mozilla/widget/public/nsIFileDialogsMgr.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIFileDialogsMgr_h__
|
||||
#define nsIFileDialogsMgr_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
// {0ef98781-e34b-11d2-b345-00a0cc3c1cde}
|
||||
#define NS_IFILEDIALOGSMGR_IID \
|
||||
{ 0xef98781, 0xe34b, 0x11d2, { 0xb3, 0x45, 0x0, 0xa0, 0xcc, 0x3c, 0x1c, 0xde } }
|
||||
|
||||
#define NS_FILEDIALOGSMGR_CID \
|
||||
{ 0xef98784, 0xe34b, 0x11d2, { 0xb3, 0x45, 0x0, 0xa0, 0xcc, 0x3c, 0x1c, 0xde } }
|
||||
|
||||
enum nsFileDlgResults {
|
||||
nsFileDlgResults_Cancel, // User hit cancel, ignore selection
|
||||
nsFileDlgResults_OK, // User hit Ok, process selection
|
||||
nsFileDlgResults_Replace // User acknowledged file already exists so ok to replace, process selection
|
||||
};
|
||||
|
||||
/**
|
||||
* (native) File Dialogs utility.
|
||||
* Provides an XP wrapper to platform native file dialogs:
|
||||
* GetFile - Presents a file browser and returns an nsFileSpec for the selected file
|
||||
* GetFolder - Presents a folder/path selection dialog and returns an nsFileSpec
|
||||
* PutFile - Presents a file save dialog to the user and returns an nsFileSpec with
|
||||
* the name and path to save the file
|
||||
*
|
||||
*/
|
||||
|
||||
class nsIFileDialogsMgr : public nsISupports
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFILEDIALOGSMGR_IID)
|
||||
|
||||
NS_IMETHOD GetFile(
|
||||
nsFileSpec & theFileSpec, // Populate with initial path for file dialog
|
||||
nsFileDlgResults & theResult, // Result from the file selection dialog prompt
|
||||
const nsString * promptString, // Window title for file selection dialog
|
||||
void * filterList) = 0;
|
||||
|
||||
NS_IMETHOD GetFolder(
|
||||
nsFileSpec & theFileSpec, // Populate with initial path for file dialog
|
||||
nsFileDlgResults & theResult, // Result from the folder selection dialog prompt
|
||||
const nsString * promptString) = 0; // Window title for folder selection dialog
|
||||
|
||||
NS_IMETHOD PutFile(
|
||||
nsFileSpec & theFileSpec, // Populate with initial path for file dialog
|
||||
nsFileDlgResults & theResult, // Result from the file save dialog prompt
|
||||
const nsString * promptString) = 0; // Window title for file save dialog
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIFileDialogsMgr_h__
|
||||
96
mozilla/widget/public/nsIFilePicker.idl
Normal file
96
mozilla/widget/public/nsIFilePicker.idl
Normal file
@@ -0,0 +1,96 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Stuart Parmenter <pavlov@netscape.com>
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsIFileSpec.idl"
|
||||
|
||||
interface nsIDOMWindow;
|
||||
|
||||
[scriptable, uuid(c47de916-1dd1-11b2-8141-82507fa02b21)]
|
||||
interface nsIFilePicker : nsISupports
|
||||
{
|
||||
const short modeLoad = 0; // Load a file or directory
|
||||
const short modeSave = 1; // Save a file or directory
|
||||
const short modeGetFolder = 2; // Select a fodler/directory
|
||||
|
||||
const short returnOK = 0; // User hit cancel, ignore selection
|
||||
const short returnCancel = 1; // User hit Ok, process selection
|
||||
const short returnReplace = 2; // User acknowledged file already exists so ok to replace, process selection
|
||||
|
||||
/**
|
||||
* Create the file widget.
|
||||
*
|
||||
* @param parent nsIDOMWindow parent. This dialog should be dependant on this parent.
|
||||
* @param title The title for the file widget
|
||||
* @param mode load, save, or get folder
|
||||
*
|
||||
*/
|
||||
void create(in nsIDOMWindow parent, in wstring title, in short mode);
|
||||
|
||||
/**
|
||||
* Set the list of file filters
|
||||
*
|
||||
* @param titles array of filter titles
|
||||
* @param filters array of filters to associate with titles
|
||||
* @param numberOfFilters number of filters.
|
||||
*
|
||||
*/
|
||||
void setFilterList(in long numberOfFilters,
|
||||
[array, size_is(numberOfFilters)] in wstring titles,
|
||||
[array, size_is(numberOfFilters)] in wstring filters);
|
||||
|
||||
/**
|
||||
* Get the index into the filter list for the type of file the user wants to save
|
||||
*
|
||||
* @param selectedFilter the index of the selected item in the filter list
|
||||
*
|
||||
*/
|
||||
readonly attribute long selectedFilter;
|
||||
|
||||
/* what is this? */
|
||||
attribute wstring defaultString;
|
||||
|
||||
/**
|
||||
* Set the directory that the file open/save dialog initially displays
|
||||
*
|
||||
* @param displayDirectory the name of the directory
|
||||
*
|
||||
*/
|
||||
attribute nsIFileSpec displayDirectory;
|
||||
|
||||
|
||||
/**
|
||||
* Get the nsFileSpec for the file or directory.
|
||||
*
|
||||
* @return Returns the file currently selected
|
||||
*/
|
||||
readonly attribute nsIFileSpec file;
|
||||
|
||||
/**
|
||||
* Show File Dialog. The dialog is displayed modally.
|
||||
*
|
||||
* @return returnOK if the user selects OK, returnCancel if the user selects cancel
|
||||
*
|
||||
*/
|
||||
short show();
|
||||
};
|
||||
112
mozilla/widget/public/nsIFileSpecWithUI.idl
Normal file
112
mozilla/widget/public/nsIFileSpecWithUI.idl
Normal file
@@ -0,0 +1,112 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
// This is the only correct cross-platform way to specify a file.
|
||||
// Strings are not such a way. If you grew up on windows or unix, you
|
||||
// may think they are. Welcome to reality.
|
||||
|
||||
#include "nsIFileSpec.idl"
|
||||
|
||||
%{C++
|
||||
#include "nscore.h" // for NS_WIDGET
|
||||
#include "nsIComponentManager.h"
|
||||
%}
|
||||
native StandardFilterMask(nsIFileSpecWithUI::StandardFilterMask);
|
||||
|
||||
[scriptable, uuid(8ddf7681-139a-11d3-915f-dc1f8c138b7c)]
|
||||
interface nsIFileSpecWithUI : nsIFileSpec
|
||||
{
|
||||
%{C++
|
||||
//
|
||||
// The "choose" functions present the file picker UI in order to set the
|
||||
// value of the file spec.
|
||||
%}
|
||||
|
||||
%{C++
|
||||
// The mask for standard filters is given as follows:
|
||||
enum StandardFilterMask
|
||||
{
|
||||
eAllReadable = (1<<0)
|
||||
, eHTMLFiles = (1<<1)
|
||||
, eXMLFiles = (1<<2)
|
||||
, eImageFiles = (1<<3)
|
||||
, eMailFiles = (1<<4)
|
||||
, eTextFiles = (1<<5)
|
||||
, eAllFiles = (1<<6)
|
||||
|
||||
// Mask containing all the above default filters
|
||||
, eAllStandardFilters = (
|
||||
eAllReadable
|
||||
| eHTMLFiles
|
||||
| eXMLFiles
|
||||
| eImageFiles
|
||||
| eMailFiles
|
||||
| eTextFiles
|
||||
| eAllFiles)
|
||||
, eAllMailOutputFilters = (
|
||||
eHTMLFiles
|
||||
| eMailFiles
|
||||
| eTextFiles)
|
||||
|
||||
// The "extra filter" bit should be set if the "extra filter"
|
||||
// is passed in to chooseInputFile.
|
||||
, eExtraFilter = (1<<31)
|
||||
};
|
||||
enum { kNumStandardFilters = 7, kNumMailFilters = 3 };
|
||||
%}
|
||||
[noscript] void chooseInputFile(
|
||||
in string title
|
||||
, in StandardFilterMask standardFilterMask
|
||||
, in string extraFilterTitle
|
||||
, in string extraFilter
|
||||
);
|
||||
|
||||
[noscript] void chooseOutputFile(in string windowTitle,
|
||||
in string suggestedLeafName,
|
||||
in StandardFilterMask standardFilterMask);
|
||||
|
||||
string chooseFile(in string title);
|
||||
string chooseDirectory(in string title);
|
||||
};
|
||||
|
||||
%{C++
|
||||
// Define Progid and CID
|
||||
// {e3326a80-2816-11d3-a7e5-98cb48c74f3c}
|
||||
#define NS_FILESPECWITHUI_CID \
|
||||
{ 0xe3326a80, 0x2816, 0x11d3, { 0xa7, 0xe5, 0x98, 0xcb, 0x48, 0xc7, 0x4f, 0x3c } }
|
||||
|
||||
#define NS_FILESPECWITHUI_PROGID "component://netscape/filespecwithui"
|
||||
#define NS_FILESPECWITHUI_CLASSNAME "nsIFileSpecWithUI"
|
||||
|
||||
// Factory methods
|
||||
inline nsIFileSpecWithUI* NS_CreateFileSpecWithUI()
|
||||
{
|
||||
nsIFileSpecWithUI* spec = nsnull;
|
||||
nsresult rv = nsComponentManager::CreateInstance(
|
||||
(const char*)NS_FILESPECWITHUI_PROGID,
|
||||
(nsISupports*)nsnull,
|
||||
(const nsID&)nsIFileSpecWithUI::GetIID(),
|
||||
(void**)&spec);
|
||||
NS_ASSERTION(NS_SUCCEEDED(rv), "ERROR: Could not make a file spec.");
|
||||
return spec;
|
||||
}
|
||||
%}
|
||||
178
mozilla/widget/public/nsIFileWidget.h
Normal file
178
mozilla/widget/public/nsIFileWidget.h
Normal file
@@ -0,0 +1,178 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIFileWidget_h__
|
||||
#define nsIFileWidget_h__
|
||||
|
||||
#include "nsString.h"
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
class nsIWidget;
|
||||
class nsIDeviceContext;
|
||||
class nsIAppShell;
|
||||
class nsIToolkit;
|
||||
|
||||
// {F8030015-C342-11d1-97F0-00609703C14E}
|
||||
#define NS_IFILEWIDGET_IID \
|
||||
{ 0xf8030015, 0xc342, 0x11d1, { 0x97, 0xf0, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
|
||||
/**
|
||||
* File selector mode
|
||||
*/
|
||||
|
||||
enum nsFileDlgMode {
|
||||
/// Load a file or directory
|
||||
eMode_load,
|
||||
/// Save a file or directory
|
||||
eMode_save,
|
||||
/// Select a fodler/directory
|
||||
eMode_getfolder
|
||||
};
|
||||
|
||||
|
||||
enum nsFileDlgResults {
|
||||
nsFileDlgResults_Cancel, // User hit cancel, ignore selection
|
||||
nsFileDlgResults_OK, // User hit Ok, process selection
|
||||
nsFileDlgResults_Replace // User acknowledged file already exists so ok to replace, process selection
|
||||
};
|
||||
|
||||
/**
|
||||
* File selector widget.
|
||||
* Modally selects files for loading or saving from a list.
|
||||
*/
|
||||
|
||||
class nsIFileWidget : public nsISupports
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFILEWIDGET_IID)
|
||||
|
||||
/**
|
||||
* Create the file filter. This differs from the standard
|
||||
* widget Create method because it passes in the mode
|
||||
*
|
||||
* @param aParent the parent to place this widget into
|
||||
* @param aTitle The title for the file widget
|
||||
* @param aMode load or save
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsIWidget *aParent,
|
||||
const nsString& aTitle,
|
||||
nsFileDlgMode aMode,
|
||||
nsIDeviceContext *aContext = nsnull,
|
||||
nsIAppShell *aAppShell = nsnull,
|
||||
nsIToolkit *aToolkit = nsnull,
|
||||
void *aInitData = nsnull) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the list of file filters
|
||||
*
|
||||
* @param aNumberOfFilter number of filters.
|
||||
* @param aTitle array of filter titles
|
||||
* @param aFilter array of filters to associate with titles
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetFilterList(PRUint32 aNumberOfFilters,const nsString aTitles[],const nsString aFilters[]) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Get the index into the filter list for the type of file the user wants to save
|
||||
*
|
||||
* @param theType the index into the filter list
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetSelectedType(PRInt16& theType) = 0;
|
||||
|
||||
/**
|
||||
* Show File Dialog. The dialog is displayed modally.
|
||||
*
|
||||
* @return PR_TRUE if user selects OK, PR_FALSE if user selects CANCEL
|
||||
*
|
||||
*/
|
||||
|
||||
virtual PRBool Show() = 0;
|
||||
|
||||
/**
|
||||
* Get the nsFileSpec for the file or directory.
|
||||
*
|
||||
* @param aFile on exit it contains the file or directory selected
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetFile(nsFileSpec& aFile) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the default string that appears in file open/save dialog
|
||||
*
|
||||
* @param aString the name of the file
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetDefaultString(const nsString& aString) = 0;
|
||||
|
||||
/**
|
||||
* Set the directory that the file open/save dialog initially displays
|
||||
*
|
||||
* @param aDirectory the name of the directory
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetDisplayDirectory(const nsFileSpec& aDirectory) = 0;
|
||||
|
||||
/**
|
||||
* Get the directory that the file open/save dialog was last displaying
|
||||
*
|
||||
* @param aDirectory the name of the directory
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetDisplayDirectory(nsFileSpec& aDirectory) = 0;
|
||||
|
||||
|
||||
virtual nsFileDlgResults GetFile(
|
||||
nsIWidget * aParent,
|
||||
const nsString & promptString, // Window title for the dialog
|
||||
nsFileSpec & theFileSpec) = 0; // Populate with initial path for file dialog
|
||||
|
||||
virtual nsFileDlgResults GetFolder(
|
||||
nsIWidget * aParent,
|
||||
const nsString & promptString, // Window title for the dialog
|
||||
nsFileSpec & theFileSpec) = 0; // Populate with initial path for file dialog
|
||||
|
||||
virtual nsFileDlgResults PutFile(
|
||||
nsIWidget * aParent,
|
||||
const nsString & promptString, // Window title for the dialog
|
||||
nsFileSpec & theFileSpec) = 0; // Populate with initial path for file dialog
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIFileWidget_h__
|
||||
|
||||
51
mozilla/widget/public/nsIFontNameIterator.h
Normal file
51
mozilla/widget/public/nsIFontNameIterator.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIFontNameIterator_h__
|
||||
#define nsIFontNameIterator_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
class nsString;
|
||||
|
||||
// {CEEB39D1-0949-11d3-9A87-0050046CDA96}
|
||||
#define NS_IFONTNAMEITERATOR_IID \
|
||||
{ 0xceeb39d1, 0x949, 0x11d3, { 0x9a, 0x87, 0x0, 0x50, 0x4, 0x6c, 0xda, 0x96 } };
|
||||
|
||||
class nsIFontNameIterator : public nsISupports
|
||||
// Fonts are identified by strings, |Get| and |Advance| are distinct to facility wrapping
|
||||
// with C++ objects as standard iterators.
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFONTNAMEITERATOR_IID)
|
||||
|
||||
NS_IMETHOD Reset() = 0;
|
||||
// does not need to be called initially, returns iterator to initial state
|
||||
|
||||
NS_IMETHOD Get( nsString* aFontName ) = 0;
|
||||
// returns an error when no more names are available
|
||||
|
||||
NS_IMETHOD Advance() = 0;
|
||||
// returns an error when no more names are available
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
50
mozilla/widget/public/nsIFontRetrieverService.h
Normal file
50
mozilla/widget/public/nsIFontRetrieverService.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIFontRetrieverService_h__
|
||||
#define nsIFontRetrieverService_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
|
||||
class nsIFontNameIterator;
|
||||
class nsIFontSizeIterator;
|
||||
class nsString;
|
||||
|
||||
// {285EF9B2-094A-11d3-9A87-0050046CDA96}
|
||||
#define NS_IFONTRETRIEVERSERVICE_IID \
|
||||
{ 0x285ef9b2, 0x94a, 0x11d3, { 0x9a, 0x87, 0x0, 0x50, 0x4, 0x6c, 0xda, 0x96 } };
|
||||
|
||||
class nsIFontRetrieverService : public nsISupports
|
||||
// This (singleton) service exists soley as a factory to manufacture iterators
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFONTRETRIEVERSERVICE_IID)
|
||||
|
||||
NS_IMETHOD CreateFontNameIterator( nsIFontNameIterator** aIterator ) = 0;
|
||||
|
||||
NS_IMETHOD CreateFontSizeIterator( const nsString &aFontName, nsIFontSizeIterator** aIterator ) = 0;
|
||||
|
||||
NS_IMETHOD IsFontScalable( const nsString &aFontName, PRBool* aResult ) = 0;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
51
mozilla/widget/public/nsIFontSizeIterator.h
Normal file
51
mozilla/widget/public/nsIFontSizeIterator.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIFontSizeIterator_h__
|
||||
#define nsIFontSizeIterator_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
class nsString;
|
||||
|
||||
// {285EF9B1-094A-11d3-9A87-0050046CDA96}
|
||||
#define NS_IFONTSIZEITERATOR_IID \
|
||||
{ 0x285ef9b1, 0x94a, 0x11d3, { 0x9a, 0x87, 0x0, 0x50, 0x4, 0x6c, 0xda, 0x96 } };
|
||||
|
||||
class nsIFontSizeIterator : public nsISupports
|
||||
// Font sizes are identified with doubles (e.g., for the possibility of fractional sizes from MM, etc.).
|
||||
// |Get| and |Advance| are distinct to facility wrapping with C++ objects as standard iterators.
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IFONTSIZEITERATOR_IID)
|
||||
|
||||
NS_IMETHOD Reset() = 0;
|
||||
// does not need to be called initially, returns iterator to initial state
|
||||
|
||||
NS_IMETHOD Get( double* aFontSize ) = 0;
|
||||
// returns an error when no more sizes are available
|
||||
|
||||
NS_IMETHOD Advance() = 0;
|
||||
// returns an error when no more sizes are available
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
69
mozilla/widget/public/nsIFormatConverter.idl
Normal file
69
mozilla/widget/public/nsIFormatConverter.idl
Normal file
@@ -0,0 +1,69 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISupportsArray.idl"
|
||||
|
||||
|
||||
[scriptable, uuid(948A0023-E3A7-11d2-96CF-0060B0FB9956)]
|
||||
interface nsIFormatConverter : nsISupports
|
||||
{
|
||||
/**
|
||||
* Get the list of the "input" data flavors (mime types as nsISupportsString),
|
||||
* in otherwords, the flavors that this converter can convert "from" (the
|
||||
* incoming data to the converter).
|
||||
*/
|
||||
nsISupportsArray getInputDataFlavors ( ) ;
|
||||
|
||||
/**
|
||||
* Get the list of the "output" data flavors (mime types as nsISupportsString),
|
||||
* in otherwords, the flavors that this converter can convert "to" (the
|
||||
* outgoing data to the converter).
|
||||
*
|
||||
* @param aDataFlavorList fills list with supported flavors
|
||||
*/
|
||||
nsISupportsArray getOutputDataFlavors ( ) ;
|
||||
|
||||
/**
|
||||
* Determines whether a converion from one flavor to another is supported
|
||||
*
|
||||
* @param aFromFormatConverter flavor to convert from
|
||||
* @param aFromFormatConverter flavor to convert to
|
||||
*/
|
||||
boolean canConvert ( in string aFromDataFlavor, in string aToDataFlavor ) ;
|
||||
|
||||
/**
|
||||
* Converts from one flavor to another.
|
||||
*
|
||||
* @param aFromFormatConverter flavor to convert from
|
||||
* @param aFromFormatConverter flavor to convert to (destination own the memory)
|
||||
* @returns returns NS_OK if it was converted
|
||||
*/
|
||||
void convert ( in string aFromDataFlavor, in nsISupports aFromData, in unsigned long aDataLen,
|
||||
in string aToDataFlavor, out nsISupports aToData, out unsigned long aDataToLen ) ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
%}
|
||||
60
mozilla/widget/public/nsIKeyBindMgr.h
Normal file
60
mozilla/widget/public/nsIKeyBindMgr.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIKeyBindMgr_h__
|
||||
#define nsIKeyBindMgr_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsIWebShell.h"
|
||||
#include "nsIContent.h"
|
||||
|
||||
// {a91c0821-de58-11d2-b345-00a0cc3c1cde}
|
||||
#define NS_IKEYBINDMGR_IID \
|
||||
{ 0xa91c0821, 0xde58, 0x11d2, \
|
||||
{ 0xb3, 0x45, 0x0, 0xa0, 0xcc, 0x3c, 0x1c, 0xde } }
|
||||
|
||||
// {8B5314BD-DB01-11d2-96CE-0060B0FB9977}
|
||||
#define NS_KEYBINDMGR_CID \
|
||||
{ 0x8b5314bd, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x77 } }
|
||||
|
||||
/**
|
||||
* Keyboard Binding utility.
|
||||
* Given a key event and a DOM node to search executes any 'key' command
|
||||
* that matches the event
|
||||
*/
|
||||
|
||||
class nsIKeyBindMgr : public nsISupports
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IKEYBINDMGR_IID)
|
||||
|
||||
NS_IMETHOD ProcessKeyEvent(
|
||||
nsIDOMDocument * domDoc,
|
||||
const nsKeyEvent & theEvent,
|
||||
nsIWebShell * webShell,
|
||||
nsEventStatus & theStatus) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIKeyBindMgr_h__
|
||||
91
mozilla/widget/public/nsILabel.h
Normal file
91
mozilla/widget/public/nsILabel.h
Normal file
@@ -0,0 +1,91 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsILabel_h__
|
||||
#define nsILabel_h__
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
/* F3131891-3DC7-11d2-8DB8-00609703C14E */
|
||||
#define NS_ILABEL_IID \
|
||||
{ 0xf3131891, 0x3dc7, 0x11d2, \
|
||||
{ 0x8d, 0xb8, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/**
|
||||
* Label Alignments
|
||||
*/
|
||||
|
||||
enum nsLabelAlignment {
|
||||
eAlign_Right,
|
||||
eAlign_Left,
|
||||
eAlign_Center
|
||||
};
|
||||
|
||||
struct nsLabelInitData : public nsWidgetInitData {
|
||||
nsLabelInitData()
|
||||
: mAlignment(eAlign_Left)
|
||||
{
|
||||
}
|
||||
|
||||
nsLabelAlignment mAlignment;
|
||||
};
|
||||
|
||||
/**
|
||||
* Label widget.
|
||||
* Automatically shows itself as depressed when clicked on.
|
||||
*/
|
||||
class nsILabel : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ILABEL_IID)
|
||||
|
||||
/**
|
||||
* Set the label
|
||||
*
|
||||
* @param Set the label to aText
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetLabel(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the button label
|
||||
*
|
||||
* @param aBuffer contains label upon return
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetLabel(nsString &aBuffer) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the Label Alignemnt for creation
|
||||
*
|
||||
* @param aAlignment the alignment
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD SetAlignment(nsLabelAlignment aAlignment) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
183
mozilla/widget/public/nsIListBox.h
Normal file
183
mozilla/widget/public/nsIListBox.h
Normal file
@@ -0,0 +1,183 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIListBox_h__
|
||||
#define nsIListBox_h__
|
||||
|
||||
#include "nsIListWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {F8030014-C342-11d1-97F0-00609703C14E}
|
||||
#define NS_ILISTBOX_IID \
|
||||
{ 0xf8030014, 0xc342, 0x11d1, { 0x97, 0xf0, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
|
||||
/**
|
||||
* Initialize list box data
|
||||
*/
|
||||
|
||||
struct nsListBoxInitData : public nsWidgetInitData {
|
||||
nsListBoxInitData()
|
||||
: mMultiSelect(PR_FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
PRBool mMultiSelect;
|
||||
};
|
||||
|
||||
/**
|
||||
* Single or multi selection list of items.
|
||||
* Unlike a nsIWidget, The the list widget must automatically clear
|
||||
* itself to the background color when paint messages are generated.
|
||||
* The listbox always has a vertical scrollbar. It never has a
|
||||
* horizontal scrollbar.
|
||||
*/
|
||||
|
||||
class nsIListBox : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ILISTBOX_IID)
|
||||
|
||||
/**
|
||||
* Set an item at the specific position
|
||||
*
|
||||
* @param aItem the item name. The item has to be null terminated
|
||||
* @param aPosition the position the item should be inserted at
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*/
|
||||
NS_IMETHOD AddItemAt(nsString &aItem, PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Finds the first occurrence of the specified item
|
||||
*
|
||||
* @param aItem the string to be filled
|
||||
* @param aStartPos the starting position (index)
|
||||
* @return PR_TRUE if successful, PR_FALSE otherwise
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 FindItem(nsString &aItem, PRInt32 aStartPos) = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of items in the list
|
||||
*
|
||||
* @return the number of items
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetItemCount() = 0;
|
||||
|
||||
/**
|
||||
* Remove the first occurrence of the specified item
|
||||
*
|
||||
* @param aPosition the item position
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*
|
||||
* @return PR_TRUE if successful, PR_FALSE otherwise
|
||||
*
|
||||
*/
|
||||
virtual PRBool RemoveItemAt(PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Gets an item at a specific location
|
||||
*
|
||||
* @param anItem on return contains the string of the item at that position
|
||||
* @param aPosition the Position of the item
|
||||
*
|
||||
*/
|
||||
virtual PRBool GetItemAt(nsString& anItem, PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Gets the selected item for a single selection list
|
||||
*
|
||||
* @param aItem on return contains the string of the selected item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetSelectedItem(nsString &aItem) = 0;
|
||||
|
||||
/**
|
||||
* Returns with the index of the selected item
|
||||
*
|
||||
* @return PRInt32, index of selected item
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetSelectedIndex() = 0;
|
||||
|
||||
/**
|
||||
* Select the item at the specified position
|
||||
*
|
||||
* @param PRInt32, the item position
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SelectItem(PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Deselects all the items in the list
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Deselect() = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the listbox to be multi-select.
|
||||
* @param aMultiple PR_TRUE can have multiple selections. PR_FALSE single
|
||||
* selections only.
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetMultipleSelection(PRBool aMultipleSelections) = 0;
|
||||
|
||||
/**
|
||||
* Return the number of selected items. For single selection list box this
|
||||
* @return the number of selected items
|
||||
* can be 1 or 0.
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetSelectedCount() = 0;
|
||||
|
||||
/**
|
||||
* Retrieves the indices of the selected items.
|
||||
* @param aIndices Array to hold the selected items. Use GetSelectedCount to
|
||||
* determine how large the array needs to be.
|
||||
* @param aSize Size of the aIndices array
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetSelectedIndices(PRInt32 aIndices[], PRInt32 aSize) = 0;
|
||||
|
||||
/**
|
||||
* Sets the indices of the selected items.
|
||||
* @param aIndices Array to hold the selected items. Use GetSelectedCount to
|
||||
* determine how large the array needs to be.
|
||||
* @param aSize Size of the aIndices array
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetSelectedIndices(PRInt32 aIndices[], PRInt32 aSize) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIListBox_h__
|
||||
|
||||
|
||||
|
||||
130
mozilla/widget/public/nsIListWidget.h
Normal file
130
mozilla/widget/public/nsIListWidget.h
Normal file
@@ -0,0 +1,130 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIListWidget_h__
|
||||
#define nsIListWidget_h__
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {F8030013-C342-11d1-97F0-00609703C14E}
|
||||
#define NS_ILISTWIDGET_IID \
|
||||
{ 0xf8030013, 0xc342, 0x11d1, { 0x97, 0xf0, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/**
|
||||
*
|
||||
* Base class for nsIListBox and nsIComboBox
|
||||
*
|
||||
*/
|
||||
|
||||
class nsIListWidget : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ILISTWIDGET_IID)
|
||||
|
||||
/**
|
||||
* Set an item at the specific position
|
||||
*
|
||||
* @param aItem the item name. The item has to be null terminated
|
||||
* @param aPosition the position the item should be inserted at
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*/
|
||||
NS_IMETHOD AddItemAt(nsString &aItem, PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Finds the first occurrence of the specified item
|
||||
*
|
||||
* @param aItem the string to be filled
|
||||
* @param aStartPos the starting position (index)
|
||||
* @return PR_TRUE if successful, PR_FALSE otherwise
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 FindItem(nsString &aItem, PRInt32 aStartPos) = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of items in the list
|
||||
*
|
||||
* @return the number of items
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetItemCount() = 0;
|
||||
|
||||
/**
|
||||
* Remove the first occurrence of the specified item
|
||||
*
|
||||
* @param aPosition the item position
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*
|
||||
* @return PR_TRUE if successful, PR_FALSE otherwise
|
||||
*
|
||||
*/
|
||||
virtual PRBool RemoveItemAt(PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Gets an item at a specific location
|
||||
*
|
||||
* @param anItem on return contains the string of the item at that position
|
||||
* @param aPosition the Position of the item
|
||||
*
|
||||
*/
|
||||
virtual PRBool GetItemAt(nsString& anItem, PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Gets the selected item for a single selection list
|
||||
*
|
||||
* @param aItem on return contains the string of the selected item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetSelectedItem(nsString &aItem) = 0;
|
||||
|
||||
/**
|
||||
* Returns with the index of the selected item
|
||||
*
|
||||
* @return PRInt32, index of selected item
|
||||
*
|
||||
*/
|
||||
virtual PRInt32 GetSelectedIndex() = 0;
|
||||
|
||||
/**
|
||||
* Select the item at the specified position
|
||||
*
|
||||
* @param PRInt32, the item position
|
||||
* 0 is at the top of the list
|
||||
* -1 is at the end of the list
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SelectItem(PRInt32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Deselects all the items in the list
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Deselect() = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIListWidget_h__
|
||||
|
||||
|
||||
|
||||
161
mozilla/widget/public/nsILookAndFeel.h
Normal file
161
mozilla/widget/public/nsILookAndFeel.h
Normal file
@@ -0,0 +1,161 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef __nsILookAndFeel
|
||||
#define __nsILookAndFeel
|
||||
#include "nsISupports.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsFont.h"
|
||||
|
||||
#ifdef NS_DEBUG
|
||||
#include "nsSize.h"
|
||||
#endif
|
||||
|
||||
|
||||
// {21B51DE1-21A3-11d2-B6E0-00805F8A2676}
|
||||
#define NS_ILOOKANDFEEL_IID \
|
||||
{ 0x21b51de1, 0x21a3, 0x11d2, \
|
||||
{ 0xb6, 0xe0, 0x0, 0x80, 0x5f, 0x8a, 0x26, 0x76 } }
|
||||
|
||||
class nsILookAndFeel: public nsISupports {
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ILOOKANDFEEL_IID)
|
||||
|
||||
typedef enum {
|
||||
eColor_WindowBackground,
|
||||
eColor_WindowForeground,
|
||||
eColor_WidgetBackground,
|
||||
eColor_WidgetForeground,
|
||||
eColor_WidgetSelectBackground,
|
||||
eColor_WidgetSelectForeground,
|
||||
eColor_Widget3DHighlight,
|
||||
eColor_Widget3DShadow,
|
||||
eColor_TextBackground,
|
||||
eColor_TextForeground,
|
||||
eColor_TextSelectBackground,
|
||||
eColor_TextSelectForeground,
|
||||
|
||||
// New CSS 2 color definitions
|
||||
eColor_activeborder,
|
||||
eColor_activecaption,
|
||||
eColor_appworkspace,
|
||||
eColor_background,
|
||||
eColor_buttonface,
|
||||
eColor_buttonhighlight,
|
||||
eColor_buttonshadow,
|
||||
eColor_buttontext,
|
||||
eColor_captiontext,
|
||||
eColor_graytext,
|
||||
eColor_highlight,
|
||||
eColor_highlighttext,
|
||||
eColor_inactiveborder,
|
||||
eColor_inactivecaption,
|
||||
eColor_inactivecaptiontext,
|
||||
eColor_infobackground,
|
||||
eColor_infotext,
|
||||
eColor_menu,
|
||||
eColor_menutext,
|
||||
eColor_scrollbar,
|
||||
eColor_threeddarkshadow,
|
||||
eColor_threedface,
|
||||
eColor_threedhighlight,
|
||||
eColor_threedlightshadow,
|
||||
eColor_threedshadow,
|
||||
eColor_window,
|
||||
eColor_windowframe,
|
||||
eColor_windowtext
|
||||
|
||||
} nsColorID;
|
||||
|
||||
typedef enum {
|
||||
eMetric_WindowTitleHeight,
|
||||
eMetric_WindowBorderWidth,
|
||||
eMetric_WindowBorderHeight,
|
||||
eMetric_Widget3DBorder,
|
||||
eMetric_TextFieldBorder, // Native border size
|
||||
eMetric_TextFieldHeight,
|
||||
eMetric_TextVerticalInsidePadding, // needed only because of GTK
|
||||
eMetric_TextShouldUseVerticalInsidePadding, // needed only because of GTK
|
||||
eMetric_TextHorizontalInsideMinimumPadding,
|
||||
eMetric_TextShouldUseHorizontalInsideMinimumPadding, // needed only because of GTK
|
||||
eMetric_ButtonHorizontalInsidePaddingNavQuirks,
|
||||
eMetric_ButtonHorizontalInsidePaddingOffsetNavQuirks,
|
||||
eMetric_CheckboxSize,
|
||||
eMetric_RadioboxSize,
|
||||
|
||||
eMetric_ListShouldUseHorizontalInsideMinimumPadding, // needed only because of GTK
|
||||
eMetric_ListHorizontalInsideMinimumPadding,
|
||||
|
||||
eMetric_ListShouldUseVerticalInsidePadding, // needed only because of GTK
|
||||
eMetric_ListVerticalInsidePadding, // needed only because of GTK
|
||||
|
||||
eMetric_CaretBlinkTime, // default, may be overriden by OS
|
||||
eMetric_CaretWidthTwips
|
||||
} nsMetricID;
|
||||
|
||||
typedef enum {
|
||||
eMetricFloat_TextFieldVerticalInsidePadding,
|
||||
eMetricFloat_TextFieldHorizontalInsidePadding,
|
||||
eMetricFloat_TextAreaVerticalInsidePadding,
|
||||
eMetricFloat_TextAreaHorizontalInsidePadding,
|
||||
eMetricFloat_ListVerticalInsidePadding,
|
||||
eMetricFloat_ListHorizontalInsidePadding,
|
||||
eMetricFloat_ButtonVerticalInsidePadding,
|
||||
eMetricFloat_ButtonHorizontalInsidePadding
|
||||
} nsMetricFloatID;
|
||||
|
||||
|
||||
NS_IMETHOD GetColor(const nsColorID aID, nscolor &aColor) = 0;
|
||||
NS_IMETHOD GetMetric(const nsMetricID aID, PRInt32 & aMetric) = 0;
|
||||
NS_IMETHOD GetMetric(const nsMetricFloatID aID, float & aMetric) = 0;
|
||||
|
||||
|
||||
#ifdef NS_DEBUG
|
||||
typedef enum {
|
||||
eMetricSize_TextField = 0,
|
||||
eMetricSize_TextArea = 1,
|
||||
eMetricSize_ListBox = 2,
|
||||
eMetricSize_ComboBox = 3,
|
||||
eMetricSize_Radio = 4,
|
||||
eMetricSize_CheckBox = 5,
|
||||
eMetricSize_Button = 6
|
||||
} nsMetricNavWidgetID;
|
||||
|
||||
typedef enum {
|
||||
eMetricSize_Courier = 0,
|
||||
eMetricSize_SansSerif = 1
|
||||
} nsMetricNavFontID;
|
||||
|
||||
// This method returns the actual (or nearest estimate)
|
||||
// of the Navigator size for a given form control for a given font
|
||||
// and font size. This is used in NavQuirks mode to see how closely
|
||||
// we match its size
|
||||
NS_IMETHOD GetNavSize(const nsMetricNavWidgetID aWidgetID,
|
||||
const nsMetricNavFontID aFontID,
|
||||
const PRInt32 aFontSize,
|
||||
nsSize &aSize) = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define nsLAF nsILookAndFeel
|
||||
|
||||
#endif /* __nsILookAndFeel */
|
||||
190
mozilla/widget/public/nsIMenu.h
Normal file
190
mozilla/widget/public/nsIMenu.h
Normal file
@@ -0,0 +1,190 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIMenu_h__
|
||||
#define nsIMenu_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIDOMElement.h"
|
||||
#include "nsIWebShell.h"
|
||||
|
||||
class nsIMenuBar;
|
||||
class nsIMenu;
|
||||
class nsIMenuItem;
|
||||
class nsIMenuListener;
|
||||
|
||||
// {35A3DEC1-4992-11d2-8DBA-00609703C14E}
|
||||
#define NS_IMENU_IID \
|
||||
{ 0x35a3dec1, 0x4992, 0x11d2, \
|
||||
{ 0x8d, 0xba, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
|
||||
/**
|
||||
* Menu widget
|
||||
*/
|
||||
class nsIMenu : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMENU_IID)
|
||||
|
||||
/**
|
||||
* Creates the Menu
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsISupports * aParent, const nsString &aLabel) = 0;
|
||||
|
||||
/**
|
||||
* Get the Menu's Parent
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetParent(nsISupports *&aParent) = 0;
|
||||
|
||||
/**
|
||||
* Get the Menu label
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetLabel(nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Set the Menu label
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetLabel(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the Menu Access Key
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetAccessKey(nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Set the Menu Access Key
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetAccessKey(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Set the Menu enabled state
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetEnabled(PRBool aIsEnabled) = 0;
|
||||
|
||||
/**
|
||||
* Get the Menu enabled state
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetEnabled(PRBool* aIsEnabled) = 0;
|
||||
|
||||
/**
|
||||
* Query if this is the help menu. Mostly for MacOS voodoo.
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD IsHelpMenu(PRBool* aIsHelpMenu) = 0;
|
||||
|
||||
/**
|
||||
* Adds a Menu Item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddItem(nsISupports* aItem) = 0;
|
||||
|
||||
/**
|
||||
* Adds a separator
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddSeparator() = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of menu items
|
||||
* This does count separators as items
|
||||
*/
|
||||
NS_IMETHOD GetItemCount(PRUint32 &aCount) = 0;
|
||||
|
||||
/**
|
||||
* Returns a Menu or Menu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetItemAt(const PRUint32 aPos, nsISupports *& aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Inserts a Menu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD InsertItemAt(const PRUint32 aPos, nsISupports * aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Removes an Menu Item from a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveItem(const PRUint32 aPos) = 0;
|
||||
|
||||
/**
|
||||
* Removes all the Menu Items
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveAll() = 0;
|
||||
|
||||
/**
|
||||
* Gets Native MenuHandle
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetNativeData(void** aData) = 0;
|
||||
|
||||
/**
|
||||
* Sets Native MenuHandle
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetNativeData(void* aData) = 0;
|
||||
|
||||
/**
|
||||
* Adds menu listener for dynamic construction
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddMenuListener(nsIMenuListener * aMenuListener) = 0;
|
||||
|
||||
/**
|
||||
* Removes menu listener for dynamic construction
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveMenuListener(nsIMenuListener * aMenuListener) = 0;
|
||||
|
||||
/**
|
||||
* Set DOMNode
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetDOMNode(nsIDOMNode * aMenuNode) = 0;
|
||||
|
||||
/**
|
||||
* Set DOMElement
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetDOMElement(nsIDOMElement * aMenuElement) = 0;
|
||||
|
||||
/**
|
||||
* Set WebShell
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetWebShell(nsIWebShell * aWebShell) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
120
mozilla/widget/public/nsIMenuBar.h
Normal file
120
mozilla/widget/public/nsIMenuBar.h
Normal file
@@ -0,0 +1,120 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIMenuBar_h__
|
||||
#define nsIMenuBar_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIMenu.h"
|
||||
#include "nsIWebShell.h"
|
||||
|
||||
class nsIWidget;
|
||||
|
||||
// {BC658C81-4BEB-11d2-8DBB-00609703C14E}
|
||||
#define NS_IMENUBAR_IID \
|
||||
{ 0xbc658c81, 0x4beb, 0x11d2, \
|
||||
{ 0x8d, 0xbb, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/**
|
||||
* MenuBar widget
|
||||
*/
|
||||
class nsIMenuBar : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMENUBAR_IID)
|
||||
|
||||
/**
|
||||
* Creates the MenuBar
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsIWidget * aParent) = 0;
|
||||
|
||||
/**
|
||||
* Get the MenuBar's Parent
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetParent(nsIWidget *&aParent) = 0;
|
||||
|
||||
/**
|
||||
* Set the MenuBar's Parent
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetParent(nsIWidget *aParent) = 0;
|
||||
|
||||
/**
|
||||
* Adds the Menu
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddMenu(nsIMenu * aMenu) = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of menus
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetMenuCount(PRUint32 &aCount) = 0;
|
||||
|
||||
/**
|
||||
* Returns a Menu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetMenuAt(const PRUint32 aCount, nsIMenu *& aMenu) = 0;
|
||||
|
||||
/**
|
||||
* Inserts a Menu at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD InsertMenuAt(const PRUint32 aCount, nsIMenu *& aMenu) = 0;
|
||||
|
||||
/**
|
||||
* Removes an Menu from a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveMenu(const PRUint32 aCount) = 0;
|
||||
|
||||
/**
|
||||
* Removes all the Menus
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveAll() = 0;
|
||||
|
||||
/**
|
||||
* Gets Native MenuHandle
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetNativeData(void*& aData) = 0;
|
||||
|
||||
/**
|
||||
* Sets Native MenuHandle. Temporary hack for mac until
|
||||
* nsMenuBar does it's own construction
|
||||
*/
|
||||
NS_IMETHOD SetNativeData(void* aData) = 0;
|
||||
|
||||
/**
|
||||
* Draw the menubar
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Paint() = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
189
mozilla/widget/public/nsIMenuItem.h
Normal file
189
mozilla/widget/public/nsIMenuItem.h
Normal file
@@ -0,0 +1,189 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIMenuItem_h__
|
||||
#define nsIMenuItem_h__
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include "nsIWebShell.h"
|
||||
#include "nsIDOMElement.h"
|
||||
|
||||
// {7F045771-4BEB-11d2-8DBB-00609703C14E}
|
||||
#define NS_IMENUITEM_IID \
|
||||
{ 0x7f045771, 0x4beb, 0x11d2, \
|
||||
{ 0x8d, 0xbb, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
class nsIMenu;
|
||||
class nsIPopUpMenu;
|
||||
class nsIWidget;
|
||||
class nsIMenuListener;
|
||||
|
||||
enum {
|
||||
knsMenuItemNoModifier = 0,
|
||||
knsMenuItemShiftModifier = (1 << 0),
|
||||
knsMenuItemAltModifier = (1 << 1),
|
||||
knsMenuItemControlModifier = (1 << 2),
|
||||
knsMenuItemCommandModifier = (1 << 3)
|
||||
};
|
||||
|
||||
/**
|
||||
* MenuItem widget
|
||||
*/
|
||||
class nsIMenuItem : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMENUITEM_IID)
|
||||
|
||||
/**
|
||||
* Creates the MenuItem
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsISupports * aParent,
|
||||
const nsString & aLabel,
|
||||
PRBool isSeparator) = 0;
|
||||
|
||||
/**
|
||||
* Get the MenuItem label
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetLabel(nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the MenuItem label
|
||||
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetLabel(nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Set the Menu shortcut char
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetShortcutChar(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the Menu shortcut char
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetShortcutChar(nsString &aText) = 0;
|
||||
/**
|
||||
* Sets whether the item is enabled or disabled
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetEnabled(PRBool aIsEnabled) = 0;
|
||||
|
||||
/**
|
||||
* Gets whether the item is enabled or disabled
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetEnabled(PRBool *aIsEnabled) = 0;
|
||||
|
||||
/**
|
||||
* Sets whether the item is checked or not
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetChecked(PRBool aIsEnabled) = 0;
|
||||
|
||||
/**
|
||||
* Gets whether the item is checked or not
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetChecked(PRBool *aIsEnabled) = 0;
|
||||
|
||||
/**
|
||||
* Sets whether the item is a checkbox type
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetCheckboxType(PRBool aIsCheckbox) = 0;
|
||||
|
||||
/**
|
||||
* Gets whether the item is a checkbox type
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetCheckboxType(PRBool *aIsCheckbox) = 0;
|
||||
|
||||
/**
|
||||
* Gets the MenuItem Command identifier
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetCommand(PRUint32 & aCommand) = 0;
|
||||
|
||||
/**
|
||||
* Gets the target for MenuItem
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetTarget(nsIWidget *& aTarget) = 0;
|
||||
|
||||
/**
|
||||
* Gets Native Menu Handle
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetNativeData(void*& aData) = 0;
|
||||
|
||||
/**
|
||||
* Adds menu listener
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddMenuListener(nsIMenuListener * aMenuListener) = 0;
|
||||
|
||||
/**
|
||||
* Removes menu listener
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveMenuListener(nsIMenuListener * aMenuListener) = 0;
|
||||
|
||||
/**
|
||||
* Indicates whether it is a separator
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD IsSeparator(PRBool & aIsSep) = 0;
|
||||
|
||||
/**
|
||||
* Sets the JavaScript Command to be invoked when a "gui" event occurs on a source widget
|
||||
* @param aStrCmd the JS command to be cached for later execution
|
||||
* @return NS_OK
|
||||
*/
|
||||
NS_IMETHOD SetCommand(const nsString & aStrCmd) = 0;
|
||||
|
||||
/**
|
||||
* Executes the "cached" JavaScript Command
|
||||
* @return NS_OK if the command was executed properly, otherwise an error code
|
||||
*/
|
||||
NS_IMETHOD DoCommand() = 0;
|
||||
|
||||
NS_IMETHOD SetDOMNode(nsIDOMNode * aDOMNode) = 0;
|
||||
NS_IMETHOD GetDOMNode(nsIDOMNode ** aDOMNode) = 0;
|
||||
NS_IMETHOD SetDOMElement(nsIDOMElement * aDOMElement) = 0;
|
||||
NS_IMETHOD GetDOMElement(nsIDOMElement ** aDOMElement) = 0;
|
||||
NS_IMETHOD SetWebShell(nsIWebShell * aWebShell) = 0;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetModifiers(PRUint8 aModifiers) = 0;
|
||||
NS_IMETHOD GetModifiers(PRUint8 * aModifiers) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
85
mozilla/widget/public/nsIMenuListener.h
Normal file
85
mozilla/widget/public/nsIMenuListener.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIMenuListener_h__
|
||||
#define nsIMenuListener_h__
|
||||
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
// TODO: This needs to be generated!
|
||||
// {BC658C81-4BEB-11d2-8DBB-00609703C14E}
|
||||
#define NS_IMENULISTENER_IID \
|
||||
{ 0xbc658c81, 0x4beb, 0x11d2, \
|
||||
{ 0x8d, 0xbb, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x9e } }
|
||||
|
||||
static NS_DEFINE_IID(kIMenuListenerIID, NS_IMENULISTENER_IID);
|
||||
|
||||
/**
|
||||
*
|
||||
* Menu event listener
|
||||
* This interface should only be implemented by the menu manager
|
||||
* These are registered with nsWindows to recieve menu events
|
||||
*/
|
||||
|
||||
class nsIMenuListener : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMENULISTENER_IID)
|
||||
|
||||
/**
|
||||
* Processes a menu item selected event
|
||||
* @param aMenuEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*/
|
||||
virtual nsEventStatus MenuItemSelected(const nsMenuEvent & aMenuEvent) = 0;
|
||||
|
||||
/**
|
||||
* Processes a menu selected event
|
||||
* @param aMenuEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*/
|
||||
virtual nsEventStatus MenuSelected(const nsMenuEvent & aMenuEvent) = 0;
|
||||
|
||||
/**
|
||||
* Processes a menu deselect event
|
||||
* @param aMenuEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*/
|
||||
virtual nsEventStatus MenuDeselected(const nsMenuEvent & aMenuEvent) = 0;
|
||||
|
||||
virtual nsEventStatus MenuConstruct(
|
||||
|
||||
const nsMenuEvent & aMenuEvent,
|
||||
|
||||
nsIWidget * aParentWindow,
|
||||
|
||||
void * menubarNode,
|
||||
|
||||
void * aWebShell) = 0;
|
||||
|
||||
|
||||
|
||||
virtual nsEventStatus MenuDestruct(const nsMenuEvent & aMenuEvent) = 0;
|
||||
};
|
||||
|
||||
#endif // nsIMenuListener_h__
|
||||
75
mozilla/widget/public/nsIMouseListener.h
Normal file
75
mozilla/widget/public/nsIMouseListener.h
Normal file
@@ -0,0 +1,75 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
|
||||
#ifndef nsIMouseListener_h__
|
||||
#define nsIMouseListener_h__
|
||||
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsISupports.h"
|
||||
|
||||
/**
|
||||
*
|
||||
* Mouse up/down/move event listener
|
||||
*
|
||||
*/
|
||||
|
||||
// {c83f6b81-d7ce-11d2-8360-c4c894c4917c}
|
||||
#define NS_IMOUSELISTENER_IID \
|
||||
{ 0xc83f6b81, 0xd7ce, 0x11d2, { 0x83, 0x60, 0xc4, 0xc8, 0x94, 0xc4, 0x91, 0x7c } }
|
||||
|
||||
class nsIMouseListener : public nsISupports {
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IMOUSELISTENER_IID)
|
||||
|
||||
/**
|
||||
* Processes a mouse pressed event
|
||||
* @param aMouseEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*/
|
||||
virtual nsEventStatus MousePressed(const nsGUIEvent & aMouseEvent) = 0;
|
||||
|
||||
/**
|
||||
* Processes a mouse release event
|
||||
* @param aMouseEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*/
|
||||
virtual nsEventStatus MouseReleased(const nsGUIEvent & aMouseEvent) = 0;
|
||||
|
||||
/**
|
||||
* Processes a mouse clicked event
|
||||
* @param aMouseEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*
|
||||
*/
|
||||
virtual nsEventStatus MouseClicked(const nsGUIEvent & aMouseEvent) = 0;
|
||||
|
||||
/**
|
||||
* Processes a mouse moved event
|
||||
* @param aMouseEvent See nsGUIEvent.h
|
||||
* @return whether the event was consumed or ignored. See nsEventStatus
|
||||
*/
|
||||
virtual nsEventStatus MouseMoved(const nsGUIEvent & aMouseEvent) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIMouseListener_h__
|
||||
138
mozilla/widget/public/nsIPopUpMenu.h
Normal file
138
mozilla/widget/public/nsIPopUpMenu.h
Normal file
@@ -0,0 +1,138 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIPopUpMenu_h__
|
||||
#define nsIPopUpMenu_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsString.h"
|
||||
#include "nsIMenuItem.h"
|
||||
|
||||
class nsIMenu;
|
||||
class nsIWidget;
|
||||
|
||||
// {F6CD4F21-53AF-11d2-8DC4-00609703C14E}
|
||||
#define NS_IPOPUPMENU_IID \
|
||||
{ 0xf6cd4f21, 0x53af, 0x11d2, \
|
||||
{ 0x8d, 0xc4, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/**
|
||||
* PopUpMenu widget
|
||||
*/
|
||||
class nsIPopUpMenu : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IPOPUPMENU_IID)
|
||||
|
||||
/**
|
||||
* Creates the PopUpMenu
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsIWidget * aParent) = 0;
|
||||
|
||||
/**
|
||||
* Adds a PopUpMenu Item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddItem(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Adds a PopUpMenu Item
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddItem(nsIMenuItem * aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Adds a Cascading PopUpMenu
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddMenu(nsIMenu * aMenu) = 0;
|
||||
|
||||
/**
|
||||
* Adds Separator
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD AddSeparator() = 0;
|
||||
|
||||
/**
|
||||
* Returns the number of menu items
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetItemCount(PRUint32 &aCount) = 0;
|
||||
|
||||
/**
|
||||
* Returns a PopUpMenu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetItemAt(const PRUint32 aCount, nsIMenuItem *& aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Inserts a PopUpMenu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD InsertItemAt(const PRUint32 aCount, nsIMenuItem *& aMenuItem) = 0;
|
||||
|
||||
/**
|
||||
* Creates and inserts a PopUpMenu Item at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD InsertItemAt(const PRUint32 aCount, const nsString & aMenuItemName) = 0;
|
||||
|
||||
/**
|
||||
* Creates and inserts a Separator at a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD InsertSeparator(const PRUint32 aCount) = 0;
|
||||
|
||||
/**
|
||||
* Removes an PopUpMenu Item from a specified Index
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveItem(const PRUint32 aCount) = 0;
|
||||
|
||||
/**
|
||||
* Removes all the PopUpMenu Items
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD RemoveAll() = 0;
|
||||
|
||||
/**
|
||||
* Shows menu and waits for action
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD ShowMenu(PRInt32 aX, PRInt32 aY) = 0;
|
||||
|
||||
/**
|
||||
* Gets Native MenuHandle
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetNativeData(void*& aData) = 0;
|
||||
|
||||
/**
|
||||
* Gets parent widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetParent(nsIWidget *& aParent) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
80
mozilla/widget/public/nsIRadioButton.h
Normal file
80
mozilla/widget/public/nsIRadioButton.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIRadioButton_h__
|
||||
#define nsIRadioButton_h__
|
||||
|
||||
#include "nsIButton.h"
|
||||
|
||||
#define NS_IRADIOBUTTON_IID \
|
||||
{ 0x18032ad4, 0xb265, 0x11d2, \
|
||||
{ 0xaa, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
|
||||
|
||||
/**
|
||||
* RadioButton widget. Can show itself in a checked or unchecked state.
|
||||
* The RadioButton widget automatically shows itself checked or unchecked when clicked on.
|
||||
*/
|
||||
|
||||
class nsIRadioButton : public nsISupports {
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IRADIOBUTTON_IID)
|
||||
|
||||
/**
|
||||
* Set the button label
|
||||
*
|
||||
* @param aText button label
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetLabel(const nsString &aText) = 0;
|
||||
|
||||
/**
|
||||
* Get the button label
|
||||
*
|
||||
* @param aBuffer contains label upon return
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetLabel(nsString &aBuffer) = 0;
|
||||
|
||||
/**
|
||||
* Set the check state.
|
||||
* @param aState PR_TRUE show as checked. PR_FALSE show unchecked.
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetState(const PRBool aState) = 0;
|
||||
|
||||
/**
|
||||
* Get the check state.
|
||||
* @param aState PR_TRUE if checked. PR_FALSE if unchecked.
|
||||
* @result set to NS_OK if method successful
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetState(PRBool& aState) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIRadioButton_h__
|
||||
|
||||
|
||||
35
mozilla/widget/public/nsIRollupListener.idl
Normal file
35
mozilla/widget/public/nsIRollupListener.idl
Normal file
@@ -0,0 +1,35 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Rod Spears <rods@netscape.com>
|
||||
* Stuart Parmenter <pavlov@netscape.com>
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[uuid(23C2BA03-6C76-11d3-96ED-0060B0FB9956)]
|
||||
interface nsIRollupListener : nsISupports
|
||||
{
|
||||
/**
|
||||
* Notifies the object to rollup
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
void Rollup();
|
||||
};
|
||||
124
mozilla/widget/public/nsIScrollbar.h
Normal file
124
mozilla/widget/public/nsIScrollbar.h
Normal file
@@ -0,0 +1,124 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIScrollbar_h__
|
||||
#define nsIScrollbar_h__
|
||||
|
||||
#include "nsIWidget.h"
|
||||
|
||||
// {18032AD2-B265-11d1-AA2A-000000000000}
|
||||
#define NS_ISCROLLBAR_IID \
|
||||
{ 0x18032ad2, 0xb265, 0x11d1, \
|
||||
{ 0xaa, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Scrollbar, converts mouse input into values that can be used
|
||||
* to shift the contents of a window.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
class nsIScrollbar : public nsISupports
|
||||
{
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISCROLLBAR_IID)
|
||||
|
||||
/**
|
||||
* Set the scrollbar range
|
||||
* @param aEndRange set range for scrollbar from 0 to aEndRange
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetMaxRange(PRUint32 aEndRange) = 0;
|
||||
|
||||
/**
|
||||
* Get the scrollbar range
|
||||
* @return the upper end of the scrollbar range
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD GetMaxRange(PRUint32& aMaxRange) = 0;
|
||||
|
||||
/**
|
||||
* Set the thumb position.
|
||||
* @param aPos a value between (startRange) and (endRange - thumbSize)
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetPosition(PRUint32 aPos) = 0;
|
||||
|
||||
/**
|
||||
* Get the thumb position.
|
||||
* @return a value between (startRange) and (endRange - thumbSize)
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetPosition(PRUint32& aPos) = 0;
|
||||
|
||||
/**
|
||||
* Set the thumb size.
|
||||
* @param aSize size of the thumb. Must be a value between
|
||||
* startRange and endRange
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD SetThumbSize(PRUint32 aSize) = 0;
|
||||
|
||||
/**
|
||||
* Get the thumb size.
|
||||
* @return size of the thumb. The value is between
|
||||
* startRange and endRange
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD GetThumbSize(PRUint32& aSize) = 0;
|
||||
|
||||
/**
|
||||
* Set the line increment.
|
||||
* @param aSize size of the line increment. The value must
|
||||
* be between startRange and endRange
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD SetLineIncrement(PRUint32 aSize) = 0;
|
||||
|
||||
/**
|
||||
* Get the line increment.
|
||||
* @return size of the line increment. The value is
|
||||
* between startRange and endRange
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD GetLineIncrement(PRUint32& aSize) = 0;
|
||||
|
||||
/**
|
||||
* Set all scrollbar parameters at once
|
||||
* @param aMaxRange set range for scrollbar from 0 to aMaxRange
|
||||
* @param aThumbSize size of the thumb. Must be a value between
|
||||
* startRange and endRange
|
||||
* @param aPosition a value between (startRange) and (endRange - thumbSize)
|
||||
* @param aLineIncrement size of the line increment. The value must
|
||||
* be between startRange and endRange
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
NS_IMETHOD SetParameters(PRUint32 aMaxRange, PRUint32 aThumbSize,
|
||||
PRUint32 aPosition, PRUint32 aLineIncrement) = 0;
|
||||
};
|
||||
|
||||
#endif // nsIScrollbar_h__
|
||||
43
mozilla/widget/public/nsISound.idl
Normal file
43
mozilla/widget/public/nsISound.idl
Normal file
@@ -0,0 +1,43 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsIFileSpec.idl"
|
||||
|
||||
[scriptable, uuid(B148EED1-236D-11d3-B35C-00A0CC3C1CDE)]
|
||||
interface nsISound : nsISupports
|
||||
{
|
||||
void Init();
|
||||
|
||||
void Play(in nsIFileSpec filespec);
|
||||
// void Stop();
|
||||
|
||||
void Beep();
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
extern nsresult
|
||||
NS_NewSound(nsISound** aSound);
|
||||
|
||||
%}
|
||||
158
mozilla/widget/public/nsITextAreaWidget.h
Normal file
158
mozilla/widget/public/nsITextAreaWidget.h
Normal file
@@ -0,0 +1,158 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsITextAreaWidget_h__
|
||||
#define nsITextAreaWidget_h__
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsITextWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {F8030012-C342-11d1-97F0-00609703C14E}
|
||||
#define NS_ITEXTAREAWIDGET_IID \
|
||||
{ 0xf8030012, 0xc342, 0x11d1, { 0x97, 0xf0, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/**
|
||||
* Multi-line text editor.
|
||||
* See nsITextWidget for capabilities.
|
||||
* Displays a scrollbar when the text content exceeds the number of lines
|
||||
* displayed.
|
||||
* Unlike a nsIWidget, The textarea must automatically clear
|
||||
* itself to the background color when paint messages are generated.
|
||||
*/
|
||||
|
||||
class nsITextAreaWidget : public nsISupports
|
||||
{
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITEXTAREAWIDGET_IID)
|
||||
|
||||
/**
|
||||
* Get the text of this component.
|
||||
*
|
||||
* @param aTextBuffer on return contains the text of this component
|
||||
* @param aBufferSize the size of the buffer passed in
|
||||
* @param aActualSize the number of char copied
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetText(nsString &aTextBuffer, PRUint32 aBufferSize, PRUint32& aActualSize) = 0;
|
||||
|
||||
/**
|
||||
* Set the text of this component.
|
||||
*
|
||||
* @param aText -- an object containing a copy of the text
|
||||
* @return the number of chars in the text string
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetText(const nsString &aText, PRUint32& aActualSize) = 0;
|
||||
|
||||
/**
|
||||
* Insert text into this component.
|
||||
* When aStartPos and aEndPos are a valid range this function performs a replace.
|
||||
* When aStartPos and aEndPos are equal this function performs an insert.
|
||||
* When aStartPos and aEndPos are both -1 (0xFFFFFFFF) this function performs an append.
|
||||
* If aStartPos and aEndPos are out of range they are rounded to the closest end.
|
||||
*
|
||||
* @param aText the text to set
|
||||
* @param aStartPos starting position for inserting text
|
||||
* @param aEndPos ending position for inserting text
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD InsertText(const nsString &aText, PRUint32 aStartPos, PRUint32 aEndPos, PRUint32& aActualSize) = 0;
|
||||
|
||||
/**
|
||||
* Remove any content from this text widget
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD RemoveText(void) = 0;
|
||||
|
||||
/**
|
||||
* Sets the maximum number of characters the widget can hold
|
||||
*
|
||||
* @param aChars maximum number of characters for this widget. if 0 then there isn't any limit
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetMaxTextLength(PRUint32 aChars) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the text widget to be read-only
|
||||
*
|
||||
* @param aReadOnlyFlag PR_TRUE the widget is read-only,
|
||||
* PR_FALSE indicates the widget is writable.
|
||||
* @param PR_TRUE if it was read only. PR_FALSE if it was writable
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetReadOnly(PRBool aNewReadOnlyFlag, PRBool& aOldReadOnlyFlag) = 0;
|
||||
|
||||
/**
|
||||
* Select all of the contents
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SelectAll() = 0;
|
||||
|
||||
/**
|
||||
* Set the selection in this text component
|
||||
* @param aStartSel starting selection position in characters
|
||||
* @param aEndSel ending selection position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetSelection(PRUint32 aStartSel, PRUint32 aEndSel) = 0;
|
||||
|
||||
/**
|
||||
* Get the selection in this text component
|
||||
* @param aStartSel starting selection position in characters
|
||||
* @param aEndSel ending selection position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetSelection(PRUint32 *aStartSel, PRUint32 *aEndSel) = 0;
|
||||
|
||||
/**
|
||||
* Set the caret position
|
||||
* @param aPosition caret position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetCaretPosition(PRUint32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Get the caret position
|
||||
* @return caret position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetCaretPosition(PRUint32& aPosition) = 0;
|
||||
};
|
||||
|
||||
#endif // nsITextAreaWidget_h__
|
||||
|
||||
179
mozilla/widget/public/nsITextWidget.h
Normal file
179
mozilla/widget/public/nsITextWidget.h
Normal file
@@ -0,0 +1,179 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
#ifndef nsITextWidget_h__
|
||||
#define nsITextWidget_h__
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsString.h"
|
||||
|
||||
// {F8030011-C342-11d1-97F0-00609703C14E}
|
||||
#define NS_ITEXTWIDGET_IID \
|
||||
{ 0xf8030011, 0xc342, 0x11d1, { 0x97, 0xf0, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
|
||||
struct nsTextWidgetInitData : public nsWidgetInitData {
|
||||
nsTextWidgetInitData()
|
||||
: mIsPassword(PR_FALSE),
|
||||
mIsReadOnly(PR_FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
PRBool mIsPassword;
|
||||
PRBool mIsReadOnly;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Single line text editor.
|
||||
* Unlike a nsIWidget, The text editor must automatically clear
|
||||
* itself to the background color when paint messages are generated.
|
||||
*
|
||||
*/
|
||||
|
||||
class nsITextWidget : public nsISupports
|
||||
{
|
||||
|
||||
public:
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_ITEXTWIDGET_IID)
|
||||
|
||||
/**
|
||||
* Get the text of this component.
|
||||
*
|
||||
* @param aTextBuffer on return contains the text of this component
|
||||
* @param aBufferSize the size of the buffer passed in
|
||||
* @param aActualSize the number of char copied
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetText(nsString &aTextBuffer, PRUint32 aBufferSize, PRUint32& aActualSize) = 0;
|
||||
|
||||
/**
|
||||
* Set the text of this component.
|
||||
*
|
||||
* @param aText -- an object containing a copy of the text
|
||||
* @return the number of chars in the text string
|
||||
* @result NS_Ok if no errors
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetText(const nsString &aText, PRUint32& aActualSize) = 0;
|
||||
|
||||
/**
|
||||
* Insert text into this component.
|
||||
* When aStartPos and aEndPos are a valid range this function performs a replace.
|
||||
* When aStartPos and aEndPos are equal this function performs an insert.
|
||||
* When aStartPos and aEndPos are both -1 (0xFFFFFFFF) this function performs an append.
|
||||
* If aStartPos and aEndPos are out of range they are rounded to the closest end.
|
||||
*
|
||||
* @param aText the text to set
|
||||
* @param aStartPos starting position for inserting text
|
||||
* @param aEndPos ending position for inserting text
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD InsertText(const nsString &aText, PRUint32 aStartPos, PRUint32 aEndPos, PRUint32& aActualSize) = 0;
|
||||
|
||||
/**
|
||||
* Remove any content from this text widget
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD RemoveText(void) = 0;
|
||||
|
||||
/**
|
||||
* Indicates a password will be entered.
|
||||
*
|
||||
* @param aIsPassword PR_TRUE shows contents as asterisks. PR_FALSE shows
|
||||
* contents as normal text.
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetPassword(PRBool aIsPassword) = 0;
|
||||
|
||||
/**
|
||||
* Sets the maximum number of characters the widget can hold
|
||||
*
|
||||
* @param aChars maximum number of characters for this widget. if 0 then there isn't any limit
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetMaxTextLength(PRUint32 aChars) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Set the text widget to be read-only
|
||||
*
|
||||
* @param aReadOnlyFlag PR_TRUE the widget is read-only,
|
||||
* PR_FALSE indicates the widget is writable.
|
||||
* @param PR_TRUE if it was read only. PR_FALSE if it was writable
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetReadOnly(PRBool aNewReadOnlyFlag, PRBool& aOldReadOnlyFlag) = 0;
|
||||
|
||||
/**
|
||||
* Select all of the contents
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SelectAll() = 0;
|
||||
|
||||
/**
|
||||
* Set the selection in this text component
|
||||
* @param aStartSel starting selection position in characters
|
||||
* @param aEndSel ending selection position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetSelection(PRUint32 aStartSel, PRUint32 aEndSel) = 0;
|
||||
|
||||
/**
|
||||
* Get the selection in this text component
|
||||
* @param aStartSel starting selection position in characters
|
||||
* @param aEndSel ending selection position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetSelection(PRUint32 *aStartSel, PRUint32 *aEndSel) = 0;
|
||||
|
||||
/**
|
||||
* Set the caret position
|
||||
* @param aPosition caret position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetCaretPosition(PRUint32 aPosition) = 0;
|
||||
|
||||
/**
|
||||
* Get the caret position
|
||||
* @return caret position in characters
|
||||
* @result NS_Ok if no errors
|
||||
*/
|
||||
|
||||
NS_IMETHOD GetCaretPosition(PRUint32& aPosition) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsITextWidget_h__
|
||||
|
||||
50
mozilla/widget/public/nsIToolkit.idl
Normal file
50
mozilla/widget/public/nsIToolkit.idl
Normal file
@@ -0,0 +1,50 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Stuart Parmenter <pavlov@netscape.com>
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
%{ C++
|
||||
#include "prthread.h"
|
||||
%}
|
||||
|
||||
[ptr] native PRThread(PRThread);
|
||||
|
||||
|
||||
[uuid(18032BD0-B265-11d1-AA2A-000000000000)]
|
||||
interface nsIToolkit : nsISupports
|
||||
{
|
||||
/**
|
||||
* Initialize this toolkit with aThread.
|
||||
* @param aThread The thread passed in runs the message pump.
|
||||
* NULL can be passed in, in which case a new thread gets created
|
||||
* and a message pump will run in that thread
|
||||
*
|
||||
*/
|
||||
void Init(in PRThread aThread);
|
||||
|
||||
};
|
||||
|
||||
|
||||
%{ C++
|
||||
extern NS_METHOD NS_GetCurrentToolkit(nsIToolkit* *aResult);
|
||||
%}
|
||||
123
mozilla/widget/public/nsITransferable.idl
Normal file
123
mozilla/widget/public/nsITransferable.idl
Normal file
@@ -0,0 +1,123 @@
|
||||
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape Communications
|
||||
* Corp. Portions created by Netscape are Copyright (C) 1999 Netscape
|
||||
* Communications Corp. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Mike Pinkerton
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsISupportsArray.idl"
|
||||
#include "nsIFormatConverter.idl"
|
||||
|
||||
|
||||
%{ C++
|
||||
|
||||
// these probably shouldn't live here, but in some central repository shared
|
||||
// by the entire app.
|
||||
#define kTextMime "text/plain"
|
||||
#define kXIFMime "text/xif"
|
||||
#define kUnicodeMime "text/unicode"
|
||||
#define kHTMLMime "text/html"
|
||||
#define kAOLMailMime "AOLMAIL"
|
||||
#define kPNGImageMime "image/png"
|
||||
#define kJPEGImageMime "image/jpg"
|
||||
#define kGIFImageMime "image/gif"
|
||||
#define kDropFilesMime "text/dropfiles"
|
||||
|
||||
%}
|
||||
|
||||
|
||||
[scriptable, uuid(8B5314BC-DB01-11d2-96CE-0060B0FB9956)]
|
||||
interface nsITransferable : nsISupports
|
||||
{
|
||||
/**
|
||||
* Computes a list of flavors (mime types as nsISupportsString) that the transferable
|
||||
* can export, either through intrinsic knowledge or output data converters.
|
||||
*
|
||||
* @param aDataFlavorList fills list with supported flavors. This is a copy of
|
||||
* the internal list, so it may be edited w/out affecting the transferable.
|
||||
*/
|
||||
nsISupportsArray flavorsTransferableCanExport ( ) ;
|
||||
|
||||
/**
|
||||
* Given a flavor retrieve the data.
|
||||
*
|
||||
* @param aFlavor (in parameter) the flavor of data to retrieve
|
||||
* @param aData the data. Some variant of class in nsISupportsPrimitives.idl
|
||||
* @param aDataLen the length of the data
|
||||
*/
|
||||
void getTransferData ( in string aFlavor, out nsISupports aData, out unsigned long aDataLen ) ;
|
||||
|
||||
/**
|
||||
* Returns the best flavor in the transferable, given those that have
|
||||
* been added to it with |AddFlavor()|
|
||||
*
|
||||
* @param aFlavor (out parameter) the flavor of data that was retrieved
|
||||
* @param aData the data. Some variant of class in nsISupportsPrimitives.idl
|
||||
* @param aDataLen the length of the data
|
||||
*/
|
||||
void getAnyTransferData ( out string aFlavor, out nsISupports aData, out unsigned long aDataLen ) ;
|
||||
|
||||
/**
|
||||
* Returns true if the data is large.
|
||||
*/
|
||||
boolean isLargeDataSet ( ) ;
|
||||
|
||||
///////////////////////////////
|
||||
// Setter part of interface
|
||||
///////////////////////////////
|
||||
|
||||
/**
|
||||
* Computes a list of flavors (mime types as nsISupportsString) that the transferable can
|
||||
* accept into it, either through intrinsic knowledge or input data converters.
|
||||
*
|
||||
* @param outFlavorList fills list with supported flavors. This is a copy of
|
||||
* the internal list, so it may be edited w/out affecting the transferable.
|
||||
*/
|
||||
nsISupportsArray flavorsTransferableCanImport ( ) ;
|
||||
|
||||
/**
|
||||
* Sets the data in the transferable with the specified flavor. The transferable
|
||||
* will maintain its own copy the data, so it is not necessary to do that beforehand.
|
||||
*
|
||||
* @param aFlavor the flavor of data that is being set
|
||||
* @param aData the data, some variant of class in nsISupportsPrimitives.idl
|
||||
* @param aDataLen the length of the data
|
||||
*/
|
||||
void setTransferData ( in string aFlavor, in nsISupports aData, in unsigned long aDataLen ) ;
|
||||
|
||||
/**
|
||||
* Add the data flavor, indicating that this transferable
|
||||
* can receive this type of flavor
|
||||
*
|
||||
* @param aDataFlavor a new data flavor to handle
|
||||
*/
|
||||
void addDataFlavor ( in string aDataFlavor ) ;
|
||||
|
||||
/**
|
||||
* Removes the data flavor matching the given one (string compare) and the data
|
||||
* that goes along with it.
|
||||
*
|
||||
* @param aDataFlavor a data flavor to remove
|
||||
*/
|
||||
void removeDataFlavor ( in string aDataFlavor ) ;
|
||||
|
||||
attribute nsIFormatConverter converter;
|
||||
|
||||
};
|
||||
|
||||
725
mozilla/widget/public/nsIWidget.h
Normal file
725
mozilla/widget/public/nsIWidget.h
Normal file
@@ -0,0 +1,725 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsIWidget_h__
|
||||
#define nsIWidget_h__
|
||||
|
||||
#include "nsISupports.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsIMouseListener.h"
|
||||
#include "nsIMenuListener.h"
|
||||
#include "nsIImage.h"
|
||||
|
||||
#include "prthread.h"
|
||||
#include "nsGUIEvent.h"
|
||||
|
||||
// forward declarations
|
||||
class nsIAppShell;
|
||||
class nsIToolkit;
|
||||
class nsIFontMetrics;
|
||||
class nsIToolkit;
|
||||
class nsIRenderingContext;
|
||||
class nsIEnumerator;
|
||||
class nsIDeviceContext;
|
||||
struct nsRect;
|
||||
struct nsFont;
|
||||
class nsIMenuBar;
|
||||
class nsIEventListener;
|
||||
class nsIRollupListener;
|
||||
|
||||
/**
|
||||
* Callback function that processes events.
|
||||
* The argument is actually a subtype (subclass) of nsEvent which carries
|
||||
* platform specific information about the event. Platform specific code knows
|
||||
* how to deal with it.
|
||||
* The return value determines whether or not the default action should take place.
|
||||
*/
|
||||
|
||||
typedef nsEventStatus (*PR_CALLBACK EVENT_CALLBACK)(nsGUIEvent *event);
|
||||
|
||||
/**
|
||||
* Flags for the getNativeData function.
|
||||
* See getNativeData()
|
||||
*/
|
||||
#define NS_NATIVE_WINDOW 0
|
||||
#define NS_NATIVE_GRAPHIC 1
|
||||
#define NS_NATIVE_COLORMAP 2
|
||||
#define NS_NATIVE_WIDGET 3
|
||||
#define NS_NATIVE_DISPLAY 4
|
||||
#define NS_NATIVE_REGION 5
|
||||
#define NS_NATIVE_OFFSETX 6
|
||||
#define NS_NATIVE_OFFSETY 7
|
||||
#define NS_NATIVE_PLUGIN_PORT 8
|
||||
#define NS_NATIVE_SCREEN 9
|
||||
|
||||
// {18032AD5-B265-11d1-AA2A-000000000000}
|
||||
#define NS_IWIDGET_IID \
|
||||
{ 0x18032ad5, 0xb265, 0x11d1, \
|
||||
{ 0xaa, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
|
||||
|
||||
|
||||
// Hide the native window systems real window type so as to avoid
|
||||
// including native window system types and api's. This is necessary
|
||||
// to ensure cross-platform code.
|
||||
typedef void* nsNativeWidget;
|
||||
|
||||
/**
|
||||
* Border styles
|
||||
*/
|
||||
|
||||
enum nsWindowType {
|
||||
// default top level window
|
||||
eWindowType_toplevel,
|
||||
// top level window but usually handled differently by the OS
|
||||
eWindowType_dialog,
|
||||
// used for combo boxes, etc
|
||||
eWindowType_popup,
|
||||
// child windows (contained inside a window on the desktop (has no border))
|
||||
eWindowType_child
|
||||
};
|
||||
|
||||
|
||||
enum nsBorderStyle
|
||||
{
|
||||
// no border, titlebar, etc.. opposite of all
|
||||
eBorderStyle_none = 0,
|
||||
|
||||
// all window decorations
|
||||
eBorderStyle_all = 1 << 0,
|
||||
|
||||
// enables the border on the window. these are only for decoration and are not resize hadles
|
||||
eBorderStyle_border = 1 << 1,
|
||||
|
||||
// enables the resize handles for the window. if this is set, border is implied to also be set
|
||||
eBorderStyle_resizeh = 1 << 2,
|
||||
|
||||
// enables the titlebar for the window
|
||||
eBorderStyle_title = 1 << 3,
|
||||
|
||||
// enables the window menu button on the title bar. this being on should force the title bar to display
|
||||
eBorderStyle_menu = 1 << 4,
|
||||
|
||||
// enables the minimize button so the user can minimize the window.
|
||||
// turned off for tranient windows since they can not be minimized seperate from their parent
|
||||
eBorderStyle_minimize = 1 << 5,
|
||||
|
||||
// enables the maxmize button so the user can maximize the window
|
||||
eBorderStyle_maximize = 1 << 6,
|
||||
|
||||
// show the close button
|
||||
eBorderStyle_close = 1 << 7,
|
||||
|
||||
// whatever the OS wants... i.e. don't do anything
|
||||
eBorderStyle_default = -1
|
||||
};
|
||||
|
||||
/**
|
||||
* Cursor types.
|
||||
*/
|
||||
|
||||
enum nsCursor { ///(normal cursor, usually rendered as an arrow)
|
||||
eCursor_standard,
|
||||
///(system is busy, usually rendered as a hourglass or watch)
|
||||
eCursor_wait,
|
||||
///(Selecting something, usually rendered as an IBeam)
|
||||
eCursor_select,
|
||||
///(can hyper-link, usually rendered as a human hand)
|
||||
eCursor_hyperlink,
|
||||
///(west/east sizing, usually rendered as ->||<-)
|
||||
eCursor_sizeWE,
|
||||
///(north/south sizing, usually rendered as sizeWE rotated 90 degrees)
|
||||
eCursor_sizeNS,
|
||||
eCursor_arrow_north,
|
||||
eCursor_arrow_north_plus,
|
||||
eCursor_arrow_south,
|
||||
eCursor_arrow_south_plus,
|
||||
eCursor_arrow_west,
|
||||
eCursor_arrow_west_plus,
|
||||
eCursor_arrow_east,
|
||||
eCursor_arrow_east_plus,
|
||||
eCursor_crosshair,
|
||||
//Don't know what 'move' cursor should be. See CSS2.
|
||||
eCursor_move,
|
||||
eCursor_help
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Basic struct for widget initialization data.
|
||||
* @see Create member function of nsIWidget
|
||||
*/
|
||||
|
||||
struct nsWidgetInitData {
|
||||
nsWidgetInitData()
|
||||
: clipChildren(PR_FALSE), clipSiblings(PR_FALSE),
|
||||
mWindowType(eWindowType_child),
|
||||
mBorderStyle(eBorderStyle_default)
|
||||
{
|
||||
}
|
||||
|
||||
// when painting exclude area occupied by child windows and sibling windows
|
||||
PRPackedBool clipChildren, clipSiblings;
|
||||
nsWindowType mWindowType;
|
||||
nsBorderStyle mBorderStyle;
|
||||
};
|
||||
|
||||
/**
|
||||
* The base class for all the widgets. It provides the interface for
|
||||
* all basic and necessary functionality.
|
||||
*/
|
||||
class nsIWidget : public nsISupports {
|
||||
|
||||
public:
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWIDGET_IID)
|
||||
|
||||
/**
|
||||
* Create and initialize a widget.
|
||||
*
|
||||
* The widget represents a window that can be drawn into. It also is the
|
||||
* base class for user-interface widgets such as buttons and text boxes.
|
||||
*
|
||||
* All the arguments can be NULL in which case a top level window
|
||||
* with size 0 is created. The event callback function has to be
|
||||
* provided only if the caller wants to deal with the events this
|
||||
* widget receives. The event callback is basically a preprocess
|
||||
* hook called synchronously. The return value determines whether
|
||||
* the event goes to the default window procedure or it is hidden
|
||||
* to the os. The assumption is that if the event handler returns
|
||||
* false the widget does not see the event. The widget should not
|
||||
* automatically clear the window to the background color. The
|
||||
* calling code must handle paint messages and clear the background
|
||||
* itself.
|
||||
*
|
||||
* @param parent or null if it's a top level window
|
||||
* @param aRect the widget dimension
|
||||
* @param aHandleEventFunction the event handler callback function
|
||||
* @param aContext
|
||||
* @param aAppShell the parent application shell. If nsnull,
|
||||
* the parent window's application shell will be used.
|
||||
* @param aToolkit
|
||||
* @param aInitData data that is used for widget initialization
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Create(nsIWidget *aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext,
|
||||
nsIAppShell *aAppShell = nsnull,
|
||||
nsIToolkit *aToolkit = nsnull,
|
||||
nsWidgetInitData *aInitData = nsnull) = 0;
|
||||
|
||||
/**
|
||||
* Create and initialize a widget with a native window parent
|
||||
*
|
||||
* The widget represents a window that can be drawn into. It also is the
|
||||
* base class for user-interface widgets such as buttons and text boxes.
|
||||
*
|
||||
* All the arguments can be NULL in which case a top level window
|
||||
* with size 0 is created. The event callback function has to be
|
||||
* provided only if the caller wants to deal with the events this
|
||||
* widget receives. The event callback is basically a preprocess
|
||||
* hook called synchronously. The return value determines whether
|
||||
* the event goes to the default window procedure or it is hidden
|
||||
* to the os. The assumption is that if the event handler returns
|
||||
* false the widget does not see the event.
|
||||
*
|
||||
* @param aParent native window.
|
||||
* @param aRect the widget dimension
|
||||
* @param aHandleEventFunction the event handler callback function
|
||||
*/
|
||||
NS_IMETHOD Create(nsNativeWidget aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext,
|
||||
nsIAppShell *aAppShell = nsnull,
|
||||
nsIToolkit *aToolkit = nsnull,
|
||||
nsWidgetInitData *aInitData = nsnull) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Accessor functions to get and set the client data associated with the
|
||||
* widget.
|
||||
*/
|
||||
//@{
|
||||
NS_IMETHOD GetClientData(void*& aClientData) = 0;
|
||||
NS_IMETHOD SetClientData(void* aClientData) = 0;
|
||||
//@}
|
||||
|
||||
/**
|
||||
* Close and destroy the internal native window.
|
||||
* This method does not delete the widget.
|
||||
*/
|
||||
|
||||
NS_IMETHOD Destroy(void) = 0;
|
||||
|
||||
/**
|
||||
* Return the parent Widget of this Widget or nsnull if this is a
|
||||
* top level window
|
||||
*
|
||||
* @return the parent widget or nsnull if it does not have a parent
|
||||
*
|
||||
*/
|
||||
virtual nsIWidget* GetParent(void) = 0;
|
||||
|
||||
/**
|
||||
* Return an nsEnumerator over the children of this widget.
|
||||
*
|
||||
* @return an enumerator over the list of children or nsnull if it does not
|
||||
* have any children
|
||||
*
|
||||
*/
|
||||
virtual nsIEnumerator* GetChildren(void) = 0;
|
||||
|
||||
/**
|
||||
* Show or hide this widget
|
||||
*
|
||||
* @param aState PR_TRUE to show the Widget, PR_FALSE to hide it
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Show(PRBool aState) = 0;
|
||||
|
||||
/**
|
||||
* Make the window modal
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetModal(PRBool aModal) = 0;
|
||||
|
||||
/**
|
||||
* Returns whether the window is visible
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD IsVisible(PRBool & aState) = 0;
|
||||
|
||||
/**
|
||||
* Move this widget.
|
||||
*
|
||||
* @param aX the new x position expressed in the parent's coordinate system
|
||||
* @param aY the new y position expressed in the parent's coordinate system
|
||||
*
|
||||
**/
|
||||
NS_IMETHOD Move(PRInt32 aX, PRInt32 aY) = 0;
|
||||
|
||||
/**
|
||||
* Resize this widget.
|
||||
*
|
||||
* @param aWidth the new width expressed in the parent's coordinate system
|
||||
* @param aHeight the new height expressed in the parent's coordinate system
|
||||
* @param aRepaint whether the widget should be repainted
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Resize(PRInt32 aWidth,
|
||||
PRInt32 aHeight,
|
||||
PRBool aRepaint) = 0;
|
||||
|
||||
/**
|
||||
* Move or resize this widget.
|
||||
*
|
||||
* @param aX the new x position expressed in the parent's coordinate system
|
||||
* @param aY the new y position expressed in the parent's coordinate system
|
||||
* @param aWidth the new width expressed in the parent's coordinate system
|
||||
* @param aHeight the new height expressed in the parent's coordinate system
|
||||
* @param aRepaint whether the widget should be repainted if the size changes
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Resize(PRInt32 aX,
|
||||
PRInt32 aY,
|
||||
PRInt32 aWidth,
|
||||
PRInt32 aHeight,
|
||||
PRBool aRepaint) = 0;
|
||||
|
||||
/**
|
||||
* Set's the widget's z-index.
|
||||
*/
|
||||
NS_IMETHOD SetZIndex(PRInt32 aZIndex) = 0;
|
||||
|
||||
/**
|
||||
* Get's the widget's z-index.
|
||||
*/
|
||||
NS_IMETHOD GetZIndex(PRInt32* aZIndex) = 0;
|
||||
|
||||
/**
|
||||
* Enable or disable this Widget
|
||||
*
|
||||
* @param aState PR_TRUE to enable the Widget, PR_FALSE to disable it.
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Enable(PRBool aState) = 0;
|
||||
|
||||
/**
|
||||
* Give focus to this widget.
|
||||
*/
|
||||
NS_IMETHOD SetFocus(void) = 0;
|
||||
|
||||
/**
|
||||
* Get this widget's outside dimensions relative to it's parent widget
|
||||
*
|
||||
* @param aRect on return it holds the x. y, width and height of this widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetBounds(nsRect &aRect) = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Get this widget's client area dimensions, if the window has a 3D border appearance
|
||||
* this returns the area inside the border, The x and y are always zero
|
||||
*
|
||||
* @param aRect on return it holds the x. y, width and height of the client area of this widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetClientBounds(nsRect &aRect) = 0;
|
||||
|
||||
/**
|
||||
* Gets the width and height of the borders
|
||||
* @param aWidth the width of the border
|
||||
* @param aHeight the height of the border
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetBorderSize(PRInt32 &aWidth, PRInt32 &aHeight) = 0;
|
||||
|
||||
/**
|
||||
* Get the foreground color for this widget
|
||||
*
|
||||
* @return this widget's foreground color
|
||||
*
|
||||
*/
|
||||
virtual nscolor GetForegroundColor(void) = 0;
|
||||
|
||||
/**
|
||||
* Set the foreground color for this widget
|
||||
*
|
||||
* @param aColor the new foreground color
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetForegroundColor(const nscolor &aColor) = 0;
|
||||
|
||||
/**
|
||||
* Get the background color for this widget
|
||||
*
|
||||
* @return this widget's background color
|
||||
*
|
||||
*/
|
||||
|
||||
virtual nscolor GetBackgroundColor(void) = 0;
|
||||
|
||||
/**
|
||||
* Set the background color for this widget
|
||||
*
|
||||
* @param aColor the new background color
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetBackgroundColor(const nscolor &aColor) = 0;
|
||||
|
||||
/**
|
||||
* Get the font for this widget
|
||||
*
|
||||
* @return the font metrics
|
||||
*/
|
||||
|
||||
virtual nsIFontMetrics* GetFont(void) = 0;
|
||||
|
||||
/**
|
||||
* Set the font for this widget
|
||||
*
|
||||
* @param aFont font to display. See nsFont for allowable fonts
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetFont(const nsFont &aFont) = 0;
|
||||
|
||||
/**
|
||||
* Get the cursor for this widget.
|
||||
*
|
||||
* @return this widget's cursor.
|
||||
*/
|
||||
|
||||
virtual nsCursor GetCursor(void) = 0;
|
||||
|
||||
/**
|
||||
* Set the cursor for this widget
|
||||
*
|
||||
* @param aCursor the new cursor for this widget
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetCursor(nsCursor aCursor) = 0;
|
||||
|
||||
/**
|
||||
* Invalidate the widget and repaint it.
|
||||
*
|
||||
* @param aIsSynchronouse PR_TRUE then repaint synchronously. If PR_FALSE repaint later.
|
||||
* @see #Update()
|
||||
*/
|
||||
|
||||
NS_IMETHOD Invalidate(PRBool aIsSynchronous) = 0;
|
||||
|
||||
/**
|
||||
* Invalidate a specified rect for a widget and repaints it.
|
||||
*
|
||||
* @param aIsSynchronouse PR_TRUE then repaint synchronously. If PR_FALSE repaint later.
|
||||
* @see #Update()
|
||||
*/
|
||||
|
||||
NS_IMETHOD Invalidate(const nsRect & aRect, PRBool aIsSynchronous) = 0;
|
||||
|
||||
/**
|
||||
* Invalidate a specified region for a widget and repaints it.
|
||||
*
|
||||
* @param aIsSynchronouse PR_TRUE then repaint synchronously. If PR_FALSE repaint later.
|
||||
* @see #Update()
|
||||
*/
|
||||
|
||||
NS_IMETHOD InvalidateRegion(const nsIRegion* aRegion, PRBool aIsSynchronous) = 0;
|
||||
|
||||
/**
|
||||
* Force a synchronous repaint of the window if there are dirty rects.
|
||||
*
|
||||
* @see Invalidate()
|
||||
*/
|
||||
|
||||
NS_IMETHOD Update() = 0;
|
||||
|
||||
/**
|
||||
* Adds a mouse listener to this widget
|
||||
* Any existing mouse listener is replaced
|
||||
*
|
||||
* @param aListener mouse listener to add to this widget.
|
||||
*/
|
||||
|
||||
NS_IMETHOD AddMouseListener(nsIMouseListener * aListener) = 0;
|
||||
|
||||
/**
|
||||
* Adds an event listener to this widget
|
||||
* Any existing event listener is replaced
|
||||
*
|
||||
* @param aListener event listener to add to this widget.
|
||||
*/
|
||||
|
||||
NS_IMETHOD AddEventListener(nsIEventListener * aListener) = 0;
|
||||
|
||||
/**
|
||||
* Adds a menu listener to this widget
|
||||
* Any existing menu listener is replaced
|
||||
*
|
||||
* @param aListener menu listener to add to this widget.
|
||||
*/
|
||||
|
||||
NS_IMETHOD AddMenuListener(nsIMenuListener * aListener) = 0;
|
||||
|
||||
/**
|
||||
* Return the widget's toolkit
|
||||
*
|
||||
* @return the toolkit this widget was created in. See nsToolkit.
|
||||
*/
|
||||
|
||||
virtual nsIToolkit* GetToolkit() = 0;
|
||||
|
||||
/**
|
||||
* Set the color map for this widget
|
||||
*
|
||||
* @param aColorMap color map for displaying this widget
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetColorMap(nsColorMap *aColorMap) = 0;
|
||||
|
||||
/**
|
||||
* Scroll this widget.
|
||||
*
|
||||
* @param aDx amount to scroll along the x-axis
|
||||
* @param aDy amount to scroll along the y-axis.
|
||||
* @param aClipRect clipping rectangle to limit the scroll to.
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD Scroll(PRInt32 aDx, PRInt32 aDy, nsRect *aClipRect) = 0;
|
||||
|
||||
/**
|
||||
* Scroll an area of this widget.
|
||||
*
|
||||
* @param aRect source rectangle to scroll in the widget
|
||||
* @param aDx x offset from the source
|
||||
* @param aDy y offset from the source
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD ScrollRect(nsRect &aSrcRect, PRInt32 aDx, PRInt32 aDy) = 0;
|
||||
|
||||
/**
|
||||
* Internal methods
|
||||
*/
|
||||
|
||||
//@{
|
||||
virtual void AddChild(nsIWidget* aChild) = 0;
|
||||
virtual void RemoveChild(nsIWidget* aChild) = 0;
|
||||
virtual void* GetNativeData(PRUint32 aDataType) = 0;
|
||||
virtual void FreeNativeData(void * data, PRUint32 aDataType) = 0;//~~~
|
||||
virtual nsIRenderingContext* GetRenderingContext() = 0;
|
||||
virtual nsIDeviceContext* GetDeviceContext() = 0;
|
||||
virtual nsIAppShell *GetAppShell() = 0;
|
||||
//@}
|
||||
|
||||
/**
|
||||
* Set border style
|
||||
* Must be called before Create.
|
||||
* @param aBorderStyle @see nsBorderStyle
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetBorderStyle(nsBorderStyle aBorderStyle) = 0;
|
||||
|
||||
/**
|
||||
* Set the widget's title.
|
||||
* Must be called after Create.
|
||||
*
|
||||
* @param aTitle string displayed as the title of the widget
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetTitle(const nsString& aTitle) = 0;
|
||||
|
||||
/**
|
||||
* Set the widget's MenuBar.
|
||||
* Must be called after Create.
|
||||
*
|
||||
* @param aMenuBar the menubar
|
||||
*/
|
||||
|
||||
NS_IMETHOD SetMenuBar(nsIMenuBar * aMenuBar) = 0;
|
||||
|
||||
/**
|
||||
* Set the widget's MenuBar's visibility
|
||||
*
|
||||
* @param aShow PR_TRUE to show, PR_FALSE to hide
|
||||
*/
|
||||
|
||||
NS_IMETHOD ShowMenuBar(PRBool aShow) = 0;
|
||||
|
||||
/**
|
||||
* Convert from this widget coordinates to screen coordinates.
|
||||
*
|
||||
* @param aOldRect widget coordinates stored in the x,y members
|
||||
* @param aNewRect screen coordinates stored in the x,y members
|
||||
*/
|
||||
|
||||
NS_IMETHOD WidgetToScreen(const nsRect& aOldRect, nsRect& aNewRect) = 0;
|
||||
|
||||
/**
|
||||
* Convert from screen coordinates to this widget's coordinates.
|
||||
*
|
||||
* @param aOldRect screen coordinates stored in the x,y members
|
||||
* @param aNewRect widget's coordinates stored in the x,y members
|
||||
*/
|
||||
|
||||
NS_IMETHOD ScreenToWidget(const nsRect& aOldRect, nsRect& aNewRect) = 0;
|
||||
|
||||
/**
|
||||
* When adjustments are to made to a whole set of child widgets, call this
|
||||
* before resizing/positioning the child windows to minimize repaints. Must
|
||||
* be followed by EndResizingChildren() after child windows have been
|
||||
* adjusted.
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD BeginResizingChildren(void) = 0;
|
||||
|
||||
/**
|
||||
* Call this when finished adjusting child windows. Must be preceded by
|
||||
* BeginResizingChildren().
|
||||
*
|
||||
*/
|
||||
|
||||
NS_IMETHOD EndResizingChildren(void) = 0;
|
||||
|
||||
/**
|
||||
* Returns the preferred width and height for the widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD GetPreferredSize(PRInt32& aWidth, PRInt32& aHeight) = 0;
|
||||
|
||||
/**
|
||||
* Set the preferred width and height for the widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetPreferredSize(PRInt32 aWidth, PRInt32 aHeight) = 0;
|
||||
|
||||
/**
|
||||
* Dispatches and event to the widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD DispatchEvent(nsGUIEvent* event, nsEventStatus & aStatus) = 0;
|
||||
|
||||
|
||||
#ifdef LOSER
|
||||
/**
|
||||
* FSets the vertical scrollbar widget
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD SetVerticalScrollbar(nsIWidget * aScrollbar) = 0;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* For printing and lightweight widgets
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect) = 0;
|
||||
|
||||
/**
|
||||
* Enables the dropping of files to a widget (XXX this is temporary)
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD EnableDragDrop(PRBool aEnable) = 0;
|
||||
|
||||
virtual void ConvertToDeviceCoordinates(nscoord &aX,nscoord &aY) = 0;
|
||||
|
||||
/**
|
||||
* Enables/Disables system mouse capture.
|
||||
* @param aCapture PR_TRUE enables mouse capture, PR_FALSE disables mouse capture
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD CaptureMouse(PRBool aCapture) = 0;
|
||||
|
||||
/**
|
||||
* Enables/Disables system capture of any and all events that would cause a
|
||||
* dropdown to be rolled up, This method ignores the aConsumeRollupEvent
|
||||
* parameter when aDoCapture is FALSE
|
||||
* @param aCapture PR_TRUE enables capture, PR_FALSE disables capture
|
||||
* @param aConsumeRollupEvent PR_TRUE consumes the rollup event, PR_FALSE dispatches rollup event
|
||||
*
|
||||
*/
|
||||
NS_IMETHOD CaptureRollupEvents(nsIRollupListener * aListener, PRBool aDoCapture, PRBool aConsumeRollupEvent) = 0;
|
||||
|
||||
/**
|
||||
* Determine whether a given event should be processed assuming we are
|
||||
* the currently active modal window.
|
||||
* Note that the exact semantics of this method are platform-dependent.
|
||||
* The Macintosh, for instance, cares deeply that this method do exactly
|
||||
* as advertised. Gtk, for instance, handles modality in a completely
|
||||
* different fashion and does little if anything with this method.
|
||||
* @param aRealEvent event is real or a null placeholder (Macintosh)
|
||||
* @param aEvent void pointer to native event structure
|
||||
* @param aForWindow return value. PR_TRUE iff event should be processed.
|
||||
*/
|
||||
NS_IMETHOD ModalEventFilter(PRBool aRealEvent, void *aEvent, PRBool *aForWindow) = 0;
|
||||
|
||||
};
|
||||
|
||||
#endif // nsIWidget_h__
|
||||
556
mozilla/widget/public/nsIWidget.idl
Normal file
556
mozilla/widget/public/nsIWidget.idl
Normal file
@@ -0,0 +1,556 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Stuart Parmenter <pavlov@netscape.com>
|
||||
* Rod Spears <rods@netscape.com>
|
||||
* Kevin McCluskey <kmcclusk@netscape.com>
|
||||
* Mike Pinkerton <pinkerton@netscape.com>
|
||||
* ... and other people
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsIScriptableRegion.idl"
|
||||
#include "nsIRollupListener.idl"
|
||||
#include "nsIToolkit.idl"
|
||||
#include "nsIAppShell.idl"
|
||||
#include "nsIEnumerator.idl"
|
||||
|
||||
%{ C++
|
||||
#include "nsRect.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsIMouseListener.h"
|
||||
#include "nsIMenuListener.h"
|
||||
#include "nsIImage.h"
|
||||
|
||||
#include "prthread.h"
|
||||
#include "nsGUIEvent.h"
|
||||
|
||||
// forward declarations
|
||||
class nsIAppShell;
|
||||
class nsIToolkit;
|
||||
class nsIRenderingContext;
|
||||
class nsIEnumerator;
|
||||
class nsIDeviceContext;
|
||||
struct nsRect;
|
||||
struct nsFont;
|
||||
class nsIEventListener;
|
||||
class nsIRollupListener;
|
||||
%}
|
||||
|
||||
[ptr] native nsGUIEvent(nsGUIEvent);
|
||||
[ptr] native nsIMouseListener(nsIMouseListener);
|
||||
[ptr] native nsIEventListener(nsIEventListener);
|
||||
[ptr] native nsIMenuListener(nsIMenuListener);
|
||||
[ptr] native nsIRegion(nsIRegion);
|
||||
[ptr] native nsRect(nsRect);
|
||||
[ref] native nsRectRef(nsRect);
|
||||
[ptr] native nsFont(nsFont);
|
||||
[ptr] native nsColorMap(nsColorMap);
|
||||
|
||||
[ptr] native nsIRenderingContext(nsIRenderingContext);
|
||||
[ptr] native nsIDeviceContext(nsIDeviceContext);
|
||||
|
||||
native nscolor(nscolor);
|
||||
native nscoord(nscoord);
|
||||
native nsEventStatus(nsEventStatus);
|
||||
[ref] native nsEventStatusRef(nsEventStatus);
|
||||
native PR_CALLBACK(PR_CALLBACKK);
|
||||
native EVENT_CALLBACK(EVENT_CALLBACK);
|
||||
|
||||
typedef long nsCursor;
|
||||
|
||||
|
||||
/*
|
||||
* Hide the native window systems real window type so as to avoid
|
||||
* including native window system types and api's. This is necessary
|
||||
* to ensure cross-platform code.
|
||||
*/
|
||||
typedef voidStar nsNativeWidget;
|
||||
|
||||
|
||||
%{ C++
|
||||
typedef nsEventStatus (*PR_CALLBACK EVENT_CALLBACK)(nsGUIEvent *event);
|
||||
|
||||
|
||||
/**
|
||||
* Basic struct for widget initialization data.
|
||||
* @see Create member function of nsIWidget
|
||||
*/
|
||||
|
||||
struct nsWidgetInitData {
|
||||
nsWidgetInitData()
|
||||
: clipChildren(PR_FALSE), clipSiblings(PR_FALSE)
|
||||
// mWindowType(eWindowType_child),
|
||||
// mBorderStyle(eBorderStyle_default)
|
||||
{
|
||||
}
|
||||
|
||||
// when painting exclude area occupied by child windows and sibling windows
|
||||
PRPackedBool clipChildren, clipSiblings;
|
||||
// nsWindowType mWindowType;
|
||||
// nsBorderStyle mBorderStyle;
|
||||
};
|
||||
%}
|
||||
|
||||
|
||||
[uuid(18032AD5-B265-11d1-AA2A-000000000000)]
|
||||
interface nsIWidget : nsISupports
|
||||
{
|
||||
|
||||
/*
|
||||
* Flags for GetNativeData()
|
||||
*/
|
||||
const short NS_NATIVE_WINDOW = 0;
|
||||
const short NS_NATIVE_GRAPHIC = 1;
|
||||
const short NS_NATIVE_COLORMAP = 2;
|
||||
const short NS_NATIVE_WIDGET = 3;
|
||||
const short NS_NATIVE_DISPLAY = 4;
|
||||
const short NS_NATIVE_REGION = 5;
|
||||
const short NS_NATIVE_OFFSETX = 6;
|
||||
const short NS_NATIVE_OFFSETY = 7;
|
||||
const short NS_NATIVE_PLUGIN_PORT = 8;
|
||||
const short NS_NATIVE_SCREEN = 9;
|
||||
|
||||
|
||||
/**
|
||||
* Cursor types.
|
||||
*/
|
||||
|
||||
//(normal cursor, usually rendered as an arrow)
|
||||
const long eCursor_standard = 0;
|
||||
//(system is busy, usually rendered as a hourglass or watch)
|
||||
const long eCursor_wait = 1;
|
||||
//(Selecting something, usually rendered as an IBeam)
|
||||
const long eCursor_select = 2;
|
||||
//(can hyper-link, usually rendered as a human hand)
|
||||
const long eCursor_hyperlink = 3;
|
||||
//(west/east sizing, usually rendered as ->||<-)
|
||||
const long eCursor_sizeWE = 4;
|
||||
//(north/south sizing, usually rendered as sizeWE rotated 90 degrees)
|
||||
const long eCursor_sizeNS = 5;
|
||||
const long eCursor_arrow_north = 6;
|
||||
const long eCursor_arrow_north_plus = 7;
|
||||
const long eCursor_arrow_south = 8;
|
||||
const long eCursor_arrow_south_plus = 9;
|
||||
const long eCursor_arrow_west = 10;
|
||||
const long eCursor_arrow_west_plus = 11;
|
||||
const long eCursor_arrow_east = 12;
|
||||
const long eCursor_arrow_east_plus = 13;
|
||||
const long eCursor_crosshair = 14;
|
||||
//Don't know what 'move' cursor should be. See CSS2.
|
||||
const long eCursor_move = 15;
|
||||
const long eCursor_help = 16;
|
||||
|
||||
|
||||
/**
|
||||
* initialize a widget
|
||||
*
|
||||
* The widget represents a window that can be drawn into. It also is the
|
||||
* base class for user-interface widgets such as buttons and text boxes.
|
||||
*
|
||||
* All the arguments can be NULL in which case a top level window
|
||||
* with size 0 is created. The event callback function has to be
|
||||
* provided only if the caller wants to deal with the events this
|
||||
* widget receives. The event callback is basically a preprocess
|
||||
* hook called synchronously. The return value determines whether
|
||||
* the event goes to the default window procedure or it is hidden
|
||||
* to the os. The assumption is that if the event handler returns
|
||||
* false the widget does not see the event. The widget should not
|
||||
* automatically clear the window to the background color. The
|
||||
* calling code must handle paint messages and clear the background
|
||||
* itself.
|
||||
*
|
||||
* @param aAppShell the parent application shell. If nsnull,
|
||||
* the parent window's application shell will be used.
|
||||
* @param aToolkit toolkit
|
||||
* @param aContext device context
|
||||
* @param aEventFunction the event handler callback function
|
||||
*
|
||||
*/
|
||||
void initWidget(in nsIAppShell aAppShell,
|
||||
in nsIToolkit aToolkit,
|
||||
in nsIDeviceContext aContext,
|
||||
in EVENT_CALLBACK aEventFunction);
|
||||
|
||||
/**
|
||||
* Get some kind of native data
|
||||
*/
|
||||
voidStar getNativeData(in PRUint32 aDataType);
|
||||
|
||||
/**
|
||||
* Move this widget.
|
||||
*
|
||||
* @param aX the new x position expressed in the parent's coordinate system
|
||||
* @param aY the new y position expressed in the parent's coordinate system
|
||||
*
|
||||
**/
|
||||
void move(in PRInt32 aX, in PRInt32 aY);
|
||||
|
||||
/**
|
||||
* Resize this widget.
|
||||
*
|
||||
* @param aWidth the new width expressed in the parent's coordinate system
|
||||
* @param aHeight the new height expressed in the parent's coordinate system
|
||||
* @param aRepaint whether the widget should be repainted
|
||||
*
|
||||
*/
|
||||
void resize(in PRInt32 aWidth,
|
||||
in PRInt32 aHeight,
|
||||
in PRBool aRepaint);
|
||||
|
||||
/**
|
||||
* Move and resize this widget.
|
||||
*
|
||||
* @param aX the new x position expressed in the parent's coordinate system
|
||||
* @param aY the new y position expressed in the parent's coordinate system
|
||||
* @param aWidth the new width expressed in the parent's coordinate system
|
||||
* @param aHeight the new height expressed in the parent's coordinate system
|
||||
* @param aRepaint whether the widget should be repainted if the size changes
|
||||
*
|
||||
*/
|
||||
void moveResize(in PRInt32 aX,
|
||||
in PRInt32 aY,
|
||||
in PRInt32 aWidth,
|
||||
in PRInt32 aHeight,
|
||||
in PRBool aRepaint);
|
||||
|
||||
/**
|
||||
* Enable or disable this Widget
|
||||
*
|
||||
* @param aState PR_TRUE to enable the Widget, PR_FALSE to disable it.
|
||||
*
|
||||
*/
|
||||
void enable(in PRBool aState);
|
||||
|
||||
|
||||
// XXX GO AWAY
|
||||
|
||||
/**
|
||||
* Get this widget's outside dimensions relative to it's parent widget
|
||||
*
|
||||
* @param aRect on return it holds the x. y, width and height of this widget
|
||||
*
|
||||
*/
|
||||
// readonly attribute nsRect Bounds;
|
||||
|
||||
// this is really out..
|
||||
void getBounds(in nsRectRef aRect);
|
||||
|
||||
|
||||
// XXX keep this, but make it ints
|
||||
/**
|
||||
* Get this widget's client area dimensions, if the window has a 3D border appearance
|
||||
* this returns the area inside the border, The x and y are always zero
|
||||
*
|
||||
* @param aRect on return it holds the x. y, width and height of the client area of this widget
|
||||
*
|
||||
*/
|
||||
// readonly attribute nsRect ClientBounds;
|
||||
|
||||
// this is really out..
|
||||
void getClientBounds(in nsRectRef aRect);
|
||||
|
||||
|
||||
|
||||
// Is this still used?
|
||||
/**
|
||||
* Returns the preferred width and height for the widget
|
||||
*
|
||||
*/
|
||||
void getPreferredSize(out PRInt32 aWidth,
|
||||
out PRInt32 aHeight);
|
||||
|
||||
/**
|
||||
* Set the preferred width and height for the widget
|
||||
*
|
||||
*/
|
||||
void setPreferredSize(in PRInt32 aWidth, in PRInt32 aHeight);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Invalidate the widget and repaint it.
|
||||
*
|
||||
* @param aIsSynchronouse PR_TRUE then repaint synchronously. If PR_FALSE repaint later.
|
||||
* @see #Update()
|
||||
*/
|
||||
void invalidate(in PRBool aIsSynchronous);
|
||||
|
||||
/**
|
||||
* Invalidate a specified rect for a widget and repaints it.
|
||||
*
|
||||
* @param aIsSynchronouse PR_TRUE then repaint synchronously. If PR_FALSE repaint later.
|
||||
* @see #Update()
|
||||
*/
|
||||
void invalidateRect([const] in nsRect aRect, in PRBool aIsSynchronous);
|
||||
|
||||
/**
|
||||
* Invalidate a specified rect for a widget and repaints it.
|
||||
*
|
||||
* @param aIsSynchronouse PR_TRUE then repaint synchronously. If PR_FALSE repaint later.
|
||||
* @see #Update()
|
||||
*/
|
||||
// void InvalidateRegion([const] in nsIScriptableRegion aRegion, in PRBool aIsSynchronous);
|
||||
void invalidateRegion([const] in nsIRegion aRegion, in PRBool aIsSynchronous);
|
||||
|
||||
/**
|
||||
* Force a synchronous repaint of the window if there are dirty rects.
|
||||
*
|
||||
* @see Invalidate()
|
||||
*/
|
||||
void update();
|
||||
|
||||
|
||||
/**
|
||||
* Convert from this widget coordinates to screen coordinates.
|
||||
*
|
||||
* @param aOldRect widget coordinates stored in the x,y members
|
||||
* @param aNewRect screen coordinates stored in the x,y members
|
||||
*/
|
||||
void widgetToScreen([const] in nsRect aOldRect, out nsRect aNewRect);
|
||||
|
||||
/**
|
||||
* Convert from screen coordinates to this widget's coordinates.
|
||||
*
|
||||
* @param aOldRect screen coordinates stored in the x,y members
|
||||
* @param aNewRect widget's coordinates stored in the x,y members
|
||||
*/
|
||||
void screenToWidget([const] in nsRect aOldRect, out nsRect aNewRect);
|
||||
|
||||
// is this used?
|
||||
void convertToDeviceCoordinates(inout nscoord aX, inout nscoord aY);
|
||||
|
||||
|
||||
// can this go away?
|
||||
/**
|
||||
* For printing and lightweight widgets
|
||||
*
|
||||
*/
|
||||
void paint(in nsIRenderingContext aRenderingContext,
|
||||
[const] in nsRect aDirtyRect);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Enables the dropping of files to a widget (XXX this is temporary)
|
||||
*
|
||||
*/
|
||||
void enableDragDrop(in PRBool aEnable);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Enables/Disables system mouse capture.
|
||||
* @param aCapture PR_TRUE enables mouse capture, PR_FALSE disables mouse capture
|
||||
*
|
||||
*/
|
||||
void captureMouse(in PRBool aCapture);
|
||||
|
||||
/**
|
||||
* Enables/Disables system capture of any and all events that would cause a
|
||||
* dropdown to be rolled up, This method ignores the aConsumeRollupEvent
|
||||
* parameter when aDoCapture is FALSE
|
||||
* @param aCapture PR_TRUE enables capture, PR_FALSE disables capture
|
||||
* @param aConsumeRollupEvent PR_TRUE consumes the rollup event, PR_FALSE dispatches rollup event
|
||||
*
|
||||
*/
|
||||
void captureRollupEvents(in nsIRollupListener aListener, in PRBool aDoCapture, in PRBool aConsumeRollupEvent);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Adds a mouse listener to this widget
|
||||
* Any existing mouse listener is replaced
|
||||
*
|
||||
* @param aListener mouse listener to add to this widget.
|
||||
*/
|
||||
void addMouseListener(in nsIMouseListener aListener);
|
||||
|
||||
/**
|
||||
* Adds an event listener to this widget
|
||||
* Any existing event listener is replaced
|
||||
*
|
||||
* @param aListener event listener to add to this widget.
|
||||
*/
|
||||
void addEventListener(in nsIEventListener aListener);
|
||||
|
||||
/**
|
||||
* Adds a menu listener to this widget
|
||||
* Any existing menu listener is replaced
|
||||
*
|
||||
* @param aListener menu listener to add to this widget.
|
||||
*/
|
||||
void addMenuListener(in nsIMenuListener aListener);
|
||||
|
||||
|
||||
// is this an internal method?
|
||||
/**
|
||||
* Dispatches and event to the widget
|
||||
*
|
||||
*/
|
||||
void dispatchEvent(in nsGUIEvent event, in nsEventStatusRef aStatus);
|
||||
|
||||
|
||||
/**
|
||||
* Internal methods
|
||||
*/
|
||||
void addChild(in nsIWidget aChild);
|
||||
void removeChild(in nsIWidget aChild);
|
||||
|
||||
/* ATTRIBUTES */
|
||||
|
||||
|
||||
/**
|
||||
* Device Context used to do printing... probably shouldn't be here
|
||||
*/
|
||||
readonly attribute nsIDeviceContext deviceContext;
|
||||
|
||||
/* attributes */
|
||||
|
||||
/**
|
||||
* Get the AppShell
|
||||
*/
|
||||
readonly attribute nsIAppShell appShell;
|
||||
|
||||
/**
|
||||
* Get the nsIToolkit
|
||||
*/
|
||||
readonly attribute nsIToolkit toolkit;
|
||||
|
||||
/**
|
||||
* callback for the event
|
||||
*/
|
||||
[noscript] readonly attribute EVENT_CALLBACK eventFunction;
|
||||
|
||||
|
||||
/* things that MUST be set AFTER the widget is created */
|
||||
|
||||
/**
|
||||
* Get and Set the widget's z-index.
|
||||
*/
|
||||
attribute PRInt32 zIndex;
|
||||
|
||||
/**
|
||||
* Set/Get the foreground color for this widget
|
||||
*
|
||||
* @param aColor the new foreground color
|
||||
*
|
||||
*/
|
||||
attribute nscolor foregroundColor;
|
||||
|
||||
/**
|
||||
* Set/Get the background color for this widget
|
||||
*
|
||||
* @param aColor the new background color
|
||||
*
|
||||
*/
|
||||
attribute nscolor backgroundColor;
|
||||
|
||||
/**
|
||||
* Set/Get the font for this widget
|
||||
*
|
||||
* @param aFont font to display. See nsFont for allowable fonts
|
||||
*/
|
||||
attribute nsFont font;
|
||||
|
||||
/**
|
||||
* Set/Get the cursor for this widget
|
||||
*
|
||||
* @param aCursor the new cursor for this widget
|
||||
*/
|
||||
|
||||
attribute nsCursor cursor;
|
||||
|
||||
/**
|
||||
* Set the color map for this widget
|
||||
*
|
||||
* @param aColorMap color map for displaying this widget
|
||||
*
|
||||
*/
|
||||
attribute nsColorMap colorMap;
|
||||
|
||||
/**
|
||||
* Accessor functions to get and set the client data associated with the
|
||||
* widget.
|
||||
*/
|
||||
attribute voidStar clientData;
|
||||
|
||||
/**
|
||||
* Return an nsEnumerator over the children of this widget.
|
||||
*
|
||||
* @return an enumerator over the list of children or nsnull if it does not
|
||||
* have any children
|
||||
*
|
||||
*/
|
||||
readonly attribute nsIEnumerator children;
|
||||
|
||||
%{ C++
|
||||
/* backwards compat stuff */
|
||||
NS_IMETHOD Show(PRBool aShow) = 0;
|
||||
|
||||
NS_IMETHOD IsVisible(PRBool & aState) = 0;
|
||||
NS_IMETHOD Resize(PRInt32 aX,
|
||||
PRInt32 aY,
|
||||
PRInt32 aWidth,
|
||||
PRInt32 aHeight,
|
||||
PRBool aRepaint) = 0;
|
||||
|
||||
virtual nscolor GetForegroundColor(void) = 0;
|
||||
virtual nscolor GetBackgroundColor(void) = 0;
|
||||
|
||||
NS_IMETHOD SetFont(const nsFont &aFont) = 0;
|
||||
virtual nsIFontMetrics* GetFont(void) = 0;
|
||||
|
||||
NS_IMETHOD Invalidate(const nsRect & aRect, PRBool aIsSynchronous) = 0;
|
||||
NS_IMETHOD SetTitle(const nsString& aTitle) = 0;
|
||||
NS_IMETHOD GetPreferredSize(PRInt32& aWidth, PRInt32& aHeight) = 0;
|
||||
|
||||
virtual nsIWidget* GetParent(void) = 0;
|
||||
|
||||
virtual nsIEnumerator* GetChildren(void) = 0;
|
||||
|
||||
virtual void* GetNativeData(PRUint32 aDataType) = 0;
|
||||
virtual void FreeNativeData(void * data, PRUint32 aDataType) = 0;
|
||||
virtual nsIRenderingContext* GetRenderingContext() = 0;
|
||||
virtual nsIDeviceContext* GetDeviceContext() = 0;
|
||||
virtual nsIAppShell *GetAppShell() = 0;
|
||||
virtual nsIToolkit* GetToolkit() = 0;
|
||||
|
||||
/* the big ugly ones */
|
||||
NS_IMETHOD Create(nsIWidget *aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext,
|
||||
nsIAppShell *aAppShell = nsnull,
|
||||
nsIToolkit *aToolkit = nsnull,
|
||||
nsWidgetInitData *aInitData = nsnull) = 0;
|
||||
NS_IMETHOD Create(nsNativeWidget aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext,
|
||||
nsIAppShell *aAppShell = nsnull,
|
||||
nsIToolkit *aToolkit = nsnull,
|
||||
nsWidgetInitData *aInitData = nsnull) = 0;
|
||||
|
||||
%}
|
||||
|
||||
};
|
||||
|
||||
203
mozilla/widget/public/nsIWindow.idl
Normal file
203
mozilla/widget/public/nsIWindow.idl
Normal file
@@ -0,0 +1,203 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Stuart Parmenter <pavlov@netscape.com>
|
||||
* Rod Spears <rods@netscape.com>
|
||||
* Kevin McCluskey <kmcclusk@netscape.com>
|
||||
* Mike Pinkerton <pinkerton@netscape.com>
|
||||
* ... and other people
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsIWidget.idl"
|
||||
|
||||
%{ C++
|
||||
#include "nsRect.h"
|
||||
#include "nsIMouseListener.h"
|
||||
#include "nsIMenuListener.h"
|
||||
#include "nsIImage.h"
|
||||
|
||||
#include "prthread.h"
|
||||
#include "nsGUIEvent.h"
|
||||
|
||||
// forward declarations
|
||||
struct nsRect;
|
||||
class nsIMenuBar;
|
||||
%}
|
||||
|
||||
[ptr] native nsIMenuBar(nsIMenuBar);
|
||||
|
||||
typedef long nsBorderStyle;
|
||||
typedef long nsWindowType;
|
||||
|
||||
|
||||
[uuid(491359ea-1dd2-11b2-af7c-bb0346efd9b6)]
|
||||
interface nsIWindow : nsIWidget
|
||||
{
|
||||
/*
|
||||
* types of windows
|
||||
*/
|
||||
const long eWindowType_toplevel = 0;
|
||||
const long eWindowType_dialog = 1;
|
||||
const long eWindowType_popup = 2;
|
||||
const long eWindowType_child = 3;
|
||||
|
||||
|
||||
/*
|
||||
* Border styles
|
||||
*/
|
||||
// no border, titlebar, etc.. opposite of all
|
||||
const long eBorderStyle_none = 0;
|
||||
|
||||
// all window decorations
|
||||
const long eBorderStyle_all = 1 << 0;
|
||||
|
||||
// enables the border on the window. these are only for decoration and are not resize hadles
|
||||
const long eBorderStyle_border = 1 << 1;
|
||||
|
||||
// enables the resize handles for the window. if this is set, border is implied to also be set
|
||||
const long eBorderStyle_resizeh = 1 << 2;
|
||||
|
||||
// enables the titlebar for the window
|
||||
const long eBorderStyle_title = 1 << 3;
|
||||
|
||||
// enables the window menu button on the title bar. this being on should force the title bar to display
|
||||
const long eBorderStyle_menu = 1 << 4;
|
||||
|
||||
// enables the minimize button so the user can minimize the window.
|
||||
// turned off for tranient windows since they can not be minimized seperate from their parent
|
||||
const long eBorderStyle_minimize = 1 << 5;
|
||||
|
||||
// enables the maxmize button so the user can maximize the window
|
||||
const long eBorderStyle_maximize = 1 << 6;
|
||||
|
||||
// show the close button
|
||||
const long eBorderStyle_close = 1 << 7;
|
||||
|
||||
// whatever the OS wants... i.e. don't do anything
|
||||
const long eBorderStyle_default = -1;
|
||||
|
||||
|
||||
/**
|
||||
* initialize a window
|
||||
*
|
||||
* The widget represents a window that can be drawn into. It also is the
|
||||
* base class for user-interface widgets such as buttons and text boxes.
|
||||
*
|
||||
* All the arguments can be NULL in which case a top level window
|
||||
* with size 0 is created. The event callback function has to be
|
||||
* provided only if the caller wants to deal with the events this
|
||||
* widget receives. The event callback is basically a preprocess
|
||||
* hook called synchronously. The return value determines whether
|
||||
* the event goes to the default window procedure or it is hidden
|
||||
* to the os. The assumption is that if the event handler returns
|
||||
* false the widget does not see the event. The widget should not
|
||||
* automatically clear the window to the background color. The
|
||||
* calling code must handle paint messages and clear the background
|
||||
* itself.
|
||||
*
|
||||
* @param aWindowType type of window to create
|
||||
* @param aBorderStyle border style of the window to create
|
||||
*
|
||||
*/
|
||||
void initWindowStyle(in nsWindowType aWindowType,
|
||||
in nsBorderStyle aBorderStyle);
|
||||
|
||||
/**
|
||||
* Make the window modal
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
void setModal(in boolean modal);
|
||||
|
||||
/**
|
||||
* Gets the width and height of the borders
|
||||
* @param aWidth the width of the border
|
||||
* @param aHeight the height of the border
|
||||
*
|
||||
*/
|
||||
void getBorderSize(out PRInt32 aWidth, out PRInt32 aHeight);
|
||||
|
||||
/**
|
||||
* Scroll this widget.
|
||||
*
|
||||
* @param aDx amount to scroll along the x-axis
|
||||
* @param aDy amount to scroll along the y-axis.
|
||||
* @param aClipRect clipping rectangle to limit the scroll to.
|
||||
*
|
||||
*/
|
||||
void scroll(in PRInt32 aDx, in PRInt32 aDy, in nsRect aClipRect);
|
||||
|
||||
/**
|
||||
* Scroll an area of this widget.
|
||||
*
|
||||
* @param aRect source rectangle to scroll in the widget
|
||||
* @param aDx x offset from the source
|
||||
* @param aDy y offset from the source
|
||||
*
|
||||
*/
|
||||
void scrollRect(in nsRectRef aSrcRect, in PRInt32 aDx, in PRInt32 aDy);
|
||||
|
||||
/**
|
||||
* Set the widget's MenuBar.
|
||||
* Must be called after Create.
|
||||
*
|
||||
* @param aMenuBar the menubar
|
||||
*/
|
||||
void setMenuBar(in nsIMenuBar aMenuBar);
|
||||
|
||||
/**
|
||||
* Set the widget's MenuBar's visibility
|
||||
*
|
||||
* @param aShow PR_TRUE to show, PR_FALSE to hide
|
||||
*/
|
||||
void showMenuBar(in PRBool aShow);
|
||||
|
||||
/**
|
||||
* When adjustments are to made to a whole set of child widgets, call this
|
||||
* before resizing/positioning the child windows to minimize repaints. Must
|
||||
* be followed by EndResizingChildren() after child windows have been
|
||||
* adjusted.
|
||||
*
|
||||
*/
|
||||
void beginResizingChildren();
|
||||
|
||||
/**
|
||||
* Call this when finished adjusting child windows. Must be preceded by
|
||||
* BeginResizingChildren().
|
||||
*
|
||||
*/
|
||||
void endResizingChildren();
|
||||
|
||||
/* ATTRIBUTES */
|
||||
|
||||
|
||||
/**
|
||||
* Window type
|
||||
*/
|
||||
readonly attribute nsWindowType windowType;
|
||||
|
||||
/**
|
||||
* Border style
|
||||
*/
|
||||
readonly attribute nsBorderStyle borderStyle;
|
||||
|
||||
};
|
||||
64
mozilla/widget/public/nsRepeater.h
Normal file
64
mozilla/widget/public/nsRepeater.h
Normal file
@@ -0,0 +1,64 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsRepeater_h___
|
||||
#define nsRepeater_h___
|
||||
|
||||
#include "nscore.h"
|
||||
|
||||
class EventRecord;
|
||||
|
||||
class NS_BASE Repeater {
|
||||
public:
|
||||
|
||||
Repeater();
|
||||
virtual ~Repeater();
|
||||
|
||||
virtual void RepeatAction(const EventRecord &aMacEvent) = 0;
|
||||
|
||||
void StartRepeating();
|
||||
void StopRepeating();
|
||||
void StartIdling();
|
||||
void StopIdling();
|
||||
|
||||
static void DoRepeaters(const EventRecord &aMacEvent);
|
||||
static void DoIdlers(const EventRecord &aMacEvent);
|
||||
|
||||
protected:
|
||||
|
||||
void AddToRepeatList();
|
||||
void RemoveFromRepeatList();
|
||||
void AddToIdleList();
|
||||
void RemoveFromIdleList();
|
||||
|
||||
static Repeater* sRepeaters;
|
||||
static Repeater* sIdlers;
|
||||
|
||||
bool mRepeating;
|
||||
bool mIdling;
|
||||
Repeater* mPrevRptr;
|
||||
Repeater* mNextRptr;
|
||||
Repeater* mPrevIdlr;
|
||||
Repeater* mNextIdlr;
|
||||
};
|
||||
|
||||
#endif
|
||||
54
mozilla/widget/public/nsStringUtil.h
Normal file
54
mozilla/widget/public/nsStringUtil.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* -*- Mode: c++; tab-width: 2; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
// Convience macros for converting nsString's to chars +
|
||||
// creating temporary char[] bufs.
|
||||
|
||||
#ifndef NS_STR_UTIL_H
|
||||
#define NS_STR_UTIL_H
|
||||
|
||||
// nsString to temporary char[] macro
|
||||
|
||||
// Convience MACROS to convert an nsString to a char * which use a
|
||||
// static char array if possible to reduce memory fragmentation,
|
||||
// otherwise they allocate a char[] which must be freed.
|
||||
// REMEMBER to always use the NS_FREE_STR_BUF after using the
|
||||
// NS_ALLOC_STR_BUF. You can not nest NS_ALLOC_STR_BUF's.
|
||||
|
||||
#define NS_ALLOC_CHAR_BUF(aBuf, aSize, aActualSize) \
|
||||
int _ns_tmpActualSize = aActualSize; \
|
||||
char _ns_smallBuffer[aSize]; \
|
||||
char * const aBuf = _ns_tmpActualSize <= aSize ? _ns_smallBuffer : new char[_ns_tmpActualSize];
|
||||
|
||||
#define NS_FREE_CHAR_BUF(aBuf) \
|
||||
if (aBuf != _ns_smallBuffer) \
|
||||
delete[] aBuf;
|
||||
|
||||
#define NS_ALLOC_STR_BUF(aBuf, aStrName, aTempSize) \
|
||||
NS_ALLOC_CHAR_BUF(aBuf, aTempSize, aStrName.Length()+1); \
|
||||
aStrName.ToCString(aBuf, aStrName.Length()+1);
|
||||
|
||||
#define NS_FREE_STR_BUF(aBuf) \
|
||||
NS_FREE_CHAR_BUF(aBuf)
|
||||
|
||||
|
||||
#endif // NSStringUtil
|
||||
141
mozilla/widget/public/nsWidgetSupport.h
Normal file
141
mozilla/widget/public/nsWidgetSupport.h
Normal file
@@ -0,0 +1,141 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#ifndef nsWidgetSupport_h__
|
||||
#define nsWidgetSupport_h__
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsIWidget.h"
|
||||
|
||||
|
||||
struct nsRect;
|
||||
class nsITextAreaWidget;
|
||||
class nsIFileWidget;
|
||||
class nsIAppShell;
|
||||
class nsIButton;
|
||||
class nsIComboBox;
|
||||
class nsIEventListener;
|
||||
class nsILabel;
|
||||
class nsIListBox;
|
||||
class nsIListWidget;
|
||||
class nsILookAndFeel;
|
||||
class nsIMouseListener;
|
||||
class nsIToolkit;
|
||||
class nsIWidget;
|
||||
class nsICheckButton;
|
||||
class nsIScrollbar;
|
||||
class nsIRadioButton;
|
||||
class nsITextWidget;
|
||||
class nsIBrowserWindow;
|
||||
|
||||
// These are a series of support methods which help in the creation
|
||||
// of widgets. They are not needed, but are provided as a convenience
|
||||
// mechanism when creating widgets
|
||||
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateButton( nsISupports* aParent,
|
||||
nsIButton* aButton,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateCheckButton( nsISupports* aParent,
|
||||
nsICheckButton* aCheckButton,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateRadioButton( nsISupports* aParent,
|
||||
nsIRadioButton* aButton,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateLabel( nsISupports* aParent,
|
||||
nsILabel* aLabel,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateTextWidget(nsISupports* aParent,
|
||||
nsITextWidget* aWidget,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateTextAreaWidget(nsISupports* aParent,
|
||||
nsITextAreaWidget* aWidget,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateListBox(nsISupports* aParent,
|
||||
nsIListBox* aWidget,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateComboBox(nsISupports* aParent,
|
||||
nsIComboBox* aWidget,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
const nsFont* aFont = nsnull);
|
||||
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_CreateScrollBar(nsISupports* aParent,
|
||||
nsIScrollbar* aWidget,
|
||||
const nsRect& aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction);
|
||||
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_ShowWidget(nsISupports* aWidget, PRBool aShow);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_MoveWidget(nsISupports* aWidget, PRUint32 aX, PRUint32 aY);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_EnableWidget(nsISupports* aWidget, PRBool aEnable);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_SetFocusToWidget(nsISupports* aWidget);
|
||||
|
||||
extern NS_WIDGET nsresult
|
||||
NS_GetWidgetNativeData(nsISupports* aWidget, void** aNativeData);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
200
mozilla/widget/public/nsWidgetsCID.h
Normal file
200
mozilla/widget/public/nsWidgetsCID.h
Normal file
@@ -0,0 +1,200 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
/* 2d96b3d0-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_WINDOW_CID \
|
||||
{ 0x2d96b3d0, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9}}
|
||||
|
||||
/* 2d96b3d1-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_CHILD_CID \
|
||||
{ 0x2d96b3d1, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
|
||||
/* BA7DE611-6088-11d3-A83E-00105A183419 */
|
||||
#define NS_POPUP_CID \
|
||||
{ 0xba7de611, 0x6088, 0x11d3, \
|
||||
{ 0xa8, 0x3e, 0x0, 0x10, 0x5a, 0x18, 0x34, 0x19 } }
|
||||
|
||||
|
||||
/* 2d96b3d2-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_BUTTON_CID \
|
||||
{ 0x2d96b3d2, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3d3-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_CHECKBUTTON_CID \
|
||||
{ 0x2d96b3d3, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3d4-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_COMBOBOX_CID \
|
||||
{ 0x2d96b3d4, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3d5-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_FILEWIDGET_CID \
|
||||
{ 0x2d96b3d5, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3d6-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_LISTBOX_CID \
|
||||
{ 0x2d96b3d6, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3d7-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_RADIOBUTTON_CID \
|
||||
{ 0x2d96b3d7, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3d9-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_HORZSCROLLBAR_CID \
|
||||
{ 0x2d96b3d9, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3da-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_VERTSCROLLBAR_CID \
|
||||
{ 0x2d96b3da, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3db-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_TEXTAREA_CID \
|
||||
{ 0x2d96b3db, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3dc-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_TEXTFIELD_CID \
|
||||
{ 0x2d96b3dc, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3df-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_APPSHELL_CID \
|
||||
{ 0x2d96b3df, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* 2d96b3e0-c051-11d1-a827-0040959a28c9 */
|
||||
#define NS_TOOLKIT_CID \
|
||||
{ 0x2d96b3e0, 0xc051, 0x11d1, \
|
||||
{0xa8, 0x27, 0x00, 0x40, 0x95, 0x9a, 0x28, 0xc9} }
|
||||
|
||||
/* XXX the following CID's are not in order. This needs
|
||||
to be fixed. */
|
||||
|
||||
/* 21B51DE0-21A3-11d2-B6E0-00805F8A2676 */
|
||||
#define NS_LOOKANDFEEL_CID \
|
||||
{ 0x21b51de0, 0x21a3, 0x11d2, \
|
||||
{ 0xb6, 0xe0, 0x0, 0x80, 0x5f, 0x8a, 0x26, 0x76 } }
|
||||
|
||||
/* 4A781D61-3D28-11d2-8DB8-00609703C14E */
|
||||
#define NS_DIALOG_CID \
|
||||
{ 0x4a781d61, 0x3d28, 0x11d2, \
|
||||
{ 0x8d, 0xb8, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
/* F3131891-3DC7-11d2-8DB8-00609703C14E */
|
||||
#define NS_LABEL_CID \
|
||||
{ 0xf3131891, 0x3dc7, 0x11d2, \
|
||||
{ 0x8d, 0xb8, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Menus
|
||||
//-----------------------------------------------------------
|
||||
|
||||
// {BC658C81-4BEB-11d2-8DBB-00609703C14E}
|
||||
#define NS_MENUBAR_CID \
|
||||
{ 0xbc658c81, 0x4beb, 0x11d2, \
|
||||
{ 0x8d, 0xbb, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
// {35A3DEC1-4992-11d2-8DBA-00609703C14E}
|
||||
#define NS_MENU_CID \
|
||||
{ 0x35a3dec1, 0x4992, 0x11d2, \
|
||||
{ 0x8d, 0xba, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
// {7F045771-4BEB-11d2-8DBB-00609703C14E}
|
||||
#define NS_MENUITEM_CID \
|
||||
{ 0x7f045771, 0x4beb, 0x11d2, \
|
||||
{ 0x8d, 0xbb, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
// {1677DAE1-04E2-11d3-B35C-00A0CC3C1CDE}
|
||||
#define NS_CONTEXTMENU_CID \
|
||||
{ 0x1677dae1, 0x4e2, 0x11d3, \
|
||||
{ 0xb3, 0x5c, 0x0, 0xa0, 0xcc, 0x3c, 0x1c, 0xde } }
|
||||
|
||||
//f58c2550-4a7c-11d2-bee2-00805f8a8dbd
|
||||
#define NS_IMAGEBUTTON_CID \
|
||||
{ 0xf58c2550, 0x4a7c, 0x11d2, \
|
||||
{0xbe, 0xe2, 0x00, 0x80, 0x5f, 0x8a, 0x8d, 0xbd} }
|
||||
|
||||
// {F6CD4F21-53AF-11d2-8DC4-00609703C14E}
|
||||
#define NS_POPUPMENU_CID \
|
||||
{ 0xf6cd4f21, 0x53af, 0x11d2, \
|
||||
{ 0x8d, 0xc4, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
#define NS_MENUBUTTON_CID \
|
||||
{ 0x67b8e261, 0x53c3, 0x11d2, \
|
||||
{ 0x8d, 0xc4, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
||||
|
||||
// {D3C3B8B2-55B5-11d2-9A2A-000000000000}
|
||||
#define NS_IMAGEBUTTONLISTENER_CID \
|
||||
{ 0xd3c3b8b2, 0x55b5, 0x11d2, \
|
||||
{ 0x9a, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
|
||||
|
||||
// {285EF9B2-094A-11d3-9A87-0050046CDA96}
|
||||
#define NS_FONTRETRIEVERSERVICE_CID \
|
||||
{ 0x285ef9b2, 0x94a, 0x11d3, { 0x9a, 0x87, 0x0, 0x50, 0x4, 0x6c, 0xda, 0x96 } }
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Drag & Drop & Clipboard
|
||||
//-----------------------------------------------------------
|
||||
// {8B5314BB-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_DRAGSERVICE_CID \
|
||||
{ 0x8b5314bb, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
// {8B5314BC-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_TRANSFERABLE_CID \
|
||||
{ 0x8b5314bc, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
// {8B5314BA-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_CLIPBOARD_CID \
|
||||
{ 0x8b5314ba, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
// {8B5314BD-DB01-11d2-96CE-0060B0FB9956}
|
||||
#define NS_DATAFLAVOR_CID \
|
||||
{ 0x8b5314bd, 0xdb01, 0x11d2, { 0x96, 0xce, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
// {948A0023-E3A7-11d2-96CF-0060B0FB9956}
|
||||
#define NS_XIFFORMATCONVERTER_CID \
|
||||
{ 0x948a0023, 0xe3a7, 0x11d2, { 0x96, 0xcf, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
#define NS_DATAOBJ_CID \
|
||||
{ 0x1bba7640, 0xdf52, 0x11cf, { 0x82, 0x7b, 0, 0xa0, 0x24, 0x3a, 0xe5, 0x05 } }
|
||||
|
||||
// {E93E73B1-0197-11d3-96D4-0060B0FB9956}
|
||||
#define NS_FILELISTTRANSFERABLE_CID \
|
||||
{ 0xe93e73b1, 0x197, 0x11d3, { 0x96, 0xd4, 0x0, 0x60, 0xb0, 0xfb, 0x99, 0x56 } }
|
||||
|
||||
//-----------------------------------------------------------
|
||||
//Other
|
||||
//-----------------------------------------------------------
|
||||
// {B148EED2-236D-11d3-B35C-00A0CC3C1CDE}
|
||||
#define NS_SOUND_CID \
|
||||
{ 0xb148eed2, 0x236d, 0x11d3, { 0xb3, 0x5c, 0x0, 0xa0, 0xcc, 0x3c, 0x1c, 0xde } }
|
||||
62
mozilla/widget/src/Makefile.in
Normal file
62
mozilla/widget/src/Makefile.in
Normal file
@@ -0,0 +1,62 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DEPTH = ../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = xpwidgets support
|
||||
|
||||
#
|
||||
# Dont build the DSO under the 'build' directory as windows does.
|
||||
#
|
||||
# The DSOs get built in the toolkit dir itself. Do this so that
|
||||
# multiple implementations of widget can be built on the same
|
||||
# source tree.
|
||||
#
|
||||
ifndef MOZ_MONOLITHIC_TOOLKIT
|
||||
|
||||
ifdef MOZ_ENABLE_GTK
|
||||
DIRS += gtk
|
||||
endif
|
||||
|
||||
ifdef MOZ_ENABLE_MOTIF
|
||||
DIRS += motif
|
||||
endif
|
||||
|
||||
ifdef MOZ_ENABLE_XLIB
|
||||
DIRS += xlib
|
||||
endif
|
||||
|
||||
ifdef MOZ_ENABLE_QT
|
||||
DIRS += qt
|
||||
endif
|
||||
|
||||
else
|
||||
DIRS += $(MOZ_WIDGET_TOOLKIT)
|
||||
endif
|
||||
|
||||
# unix_services are only useful in unix, duh...
|
||||
ifeq (,$(filter beos os2 rhapsody photon,$(MOZ_WIDGET_TOOLKIT)))
|
||||
DIRS += unix_services
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
75
mozilla/widget/src/beos/Makefile.in
Normal file
75
mozilla/widget/src/beos/Makefile.in
Normal file
@@ -0,0 +1,75 @@
|
||||
#
|
||||
# The contents of this file are subject to the Netscape Public License
|
||||
# Version 1.0 (the "NPL"); you may not use this file except in
|
||||
# compliance with the NPL. You may obtain a copy of the NPL at
|
||||
# http://www.mozilla.org/NPL/
|
||||
#
|
||||
# Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
# for the specific language governing rights and limitations under the
|
||||
# NPL.
|
||||
#
|
||||
# The Initial Developer of this code under the NPL is Netscape
|
||||
# Communications Corporation. Portions created by Netscape are
|
||||
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
# Reserved.
|
||||
#
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
LIBRARY_NAME = widget_beos
|
||||
|
||||
REQUIRES = util img xpcom raptor netlib
|
||||
|
||||
CPPSRCS = \
|
||||
nsAppShell.cpp \
|
||||
nsButton.cpp \
|
||||
nsCheckButton.cpp \
|
||||
nsClipboard.cpp \
|
||||
nsComboBox.cpp \
|
||||
nsDragService.cpp \
|
||||
nsFileWidget.cpp \
|
||||
nsFontRetrieverService.cpp \
|
||||
nsFontSizeIterator.cpp \
|
||||
nsLabel.cpp \
|
||||
nsListBox.cpp \
|
||||
nsLookAndFeel.cpp \
|
||||
nsMenu.cpp \
|
||||
nsMenuBar.cpp \
|
||||
nsMenuItem.cpp \
|
||||
nsObject.cpp \
|
||||
nsPopUpMenu.cpp \
|
||||
nsRadioButton.cpp \
|
||||
nsScrollbar.cpp \
|
||||
nsSound.cpp \
|
||||
nsTextAreaWidget.cpp \
|
||||
nsTextHelper.cpp \
|
||||
nsTextWidget.cpp \
|
||||
nsToolkit.cpp \
|
||||
nsWidgetFactory.cpp \
|
||||
nsWindow.cpp \
|
||||
$(NULL)
|
||||
|
||||
SHARED_LIBRARY_LIBS = $(DIST)/lib/libraptorbasewidget_s.a
|
||||
|
||||
EXTRA_DSO_LDOPTS = \
|
||||
$(TOOLKIT_DSO_LDOPTS) \
|
||||
$(MKSHLIB_FORCE_ALL) \
|
||||
$(SHARED_LIBRARY_LIBS) \
|
||||
$(MKSHLIB_UNFORCE_ALL) \
|
||||
$(TK_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
DEFINES += -D_IMPL_NS_WIDGET -I$(srcdir)/../xpwidgets -I$(srcdir)
|
||||
|
||||
CXXFLAGS += $(TK_CFLAGS)
|
||||
|
||||
$(LIBRARY) $(SHARED_LIBRARY): $(SHARED_LIBRARY_LIBS) Makefile
|
||||
|
||||
332
mozilla/widget/src/beos/nsAppShell.cpp
Normal file
332
mozilla/widget/src/beos/nsAppShell.cpp
Normal file
@@ -0,0 +1,332 @@
|
||||
/* -*- Mode: c++; tab-width: 2; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsAppShell.h"
|
||||
#include "nsIEventQueueService.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIWidget.h"
|
||||
#include "nsIAppShell.h"
|
||||
#include "nsWindow.h"
|
||||
#include "nsSwitchToUIThread.h"
|
||||
#include "plevent.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <AppKit.h>
|
||||
#include <AppFileInfo.h>
|
||||
|
||||
struct ThreadInterfaceData
|
||||
{
|
||||
void *data;
|
||||
int32 sync;
|
||||
};
|
||||
|
||||
static sem_id my_find_sem(const char *name)
|
||||
{
|
||||
sem_id ret = B_ERROR;
|
||||
|
||||
/* Get the sem_info for every sempahore in this team. */
|
||||
sem_info info;
|
||||
int32 cookie = 0;
|
||||
|
||||
while(get_next_sem_info(0, &cookie, &info) == B_OK)
|
||||
if(strcmp(name, info.name) == 0)
|
||||
{
|
||||
ret = info.sem;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsISupports implementation macro
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_DEFINE_IID(kIAppShellIID, NS_IAPPSHELL_IID);
|
||||
NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
|
||||
NS_IMPL_ISUPPORTS(nsAppShell,kIAppShellIID);
|
||||
|
||||
static bool GetAppSig(char *sig)
|
||||
{
|
||||
app_info appInfo;
|
||||
BFile file;
|
||||
BAppFileInfo appFileInfo;
|
||||
image_info info;
|
||||
int32 cookie = 0;
|
||||
*sig = 0;
|
||||
return get_next_image_info(0, &cookie, &info) == B_OK &&
|
||||
file.SetTo(info.name, B_READ_ONLY) == B_OK &&
|
||||
appFileInfo.SetTo(&file) == B_OK &&
|
||||
appFileInfo.GetSignature(sig) == B_OK;
|
||||
}
|
||||
|
||||
class nsBeOSApp : public BApplication
|
||||
{
|
||||
sem_id init;
|
||||
public:
|
||||
nsBeOSApp(const char *signature, sem_id initsem);
|
||||
virtual void ReadyToRun(void);
|
||||
};
|
||||
|
||||
nsBeOSApp::nsBeOSApp(const char *signature, sem_id initsem)
|
||||
: BApplication(signature), init(initsem)
|
||||
{
|
||||
}
|
||||
|
||||
void nsBeOSApp::ReadyToRun(void)
|
||||
{
|
||||
release_sem(init);
|
||||
}
|
||||
|
||||
int32 bapp_thread(void *arg)
|
||||
{
|
||||
// create and start BApplication
|
||||
char sig[B_MIME_TYPE_LENGTH + 1];
|
||||
GetAppSig(sig);
|
||||
nsBeOSApp *app = new nsBeOSApp(sig, (sem_id)arg);
|
||||
app->Run();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsAppShell constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsAppShell::nsAppShell()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mDispatchListener = 0;
|
||||
|
||||
sem_id initsem = create_sem(0, "bapp init");
|
||||
resume_thread(spawn_thread(bapp_thread, "BApplication", B_NORMAL_PRIORITY, (void *)initsem));
|
||||
acquire_sem(initsem);
|
||||
delete_sem(initsem);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Create the application shell
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
NS_METHOD nsAppShell::Create(int* argc, char ** argv)
|
||||
{
|
||||
// system wide unique names
|
||||
// NOTE: this needs to be run from within the main application thread
|
||||
char portname[64];
|
||||
char semname[64];
|
||||
sprintf(portname, "event%lx", PR_GetCurrentThread());
|
||||
sprintf(semname, "sync%lx", PR_GetCurrentThread());
|
||||
|
||||
if((eventport = find_port(portname)) < 0)
|
||||
{
|
||||
// we're here first
|
||||
eventport = create_port(100, portname);
|
||||
syncsem = create_sem(0, semname);
|
||||
}
|
||||
else
|
||||
{
|
||||
// the PLEventQueue stuff (in plevent.c) created the queue before we started
|
||||
syncsem = my_find_sem(semname);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsAppShell::SetDispatchListener(nsDispatchListener* aDispatchListener)
|
||||
{
|
||||
mDispatchListener = aDispatchListener;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Enter a message handler loop
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
nsresult nsAppShell::Run()
|
||||
{
|
||||
int32 code;
|
||||
ThreadInterfaceData id;
|
||||
|
||||
NS_ADDREF_THIS();
|
||||
|
||||
while(read_port(eventport, &code, &id, sizeof(id)) >= 0)
|
||||
{
|
||||
switch(code)
|
||||
{
|
||||
case 'WMti' :
|
||||
extern void nsTimerExpired(void *); // hack: this is in gfx
|
||||
nsTimerExpired(id.data);
|
||||
break;
|
||||
|
||||
case WM_CALLMETHOD :
|
||||
{
|
||||
MethodInfo *mInfo = (MethodInfo *)id.data;
|
||||
mInfo->Invoke();
|
||||
if(! id.sync)
|
||||
delete mInfo;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'natv' : // native queue PLEvent
|
||||
{
|
||||
PREventQueue *queue = (PREventQueue *)id.data;
|
||||
PR_ProcessPendingEvents(queue);
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
printf("nsAppShell::Run - UNKNOWN EVENT\n");
|
||||
break;
|
||||
}
|
||||
|
||||
if(mDispatchListener)
|
||||
mDispatchListener->AfterDispatch();
|
||||
|
||||
if(id.sync)
|
||||
release_sem(syncsem);
|
||||
}
|
||||
|
||||
Release();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Exit a message handler loop
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
NS_METHOD nsAppShell::Exit()
|
||||
{
|
||||
// interrupt message flow
|
||||
close_port(eventport);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsAppShell destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsAppShell::~nsAppShell()
|
||||
{
|
||||
if(be_app->Lock())
|
||||
be_app->Quit();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// GetNativeData
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
void* nsAppShell::GetNativeData(PRUint32 aDataType)
|
||||
{
|
||||
if (aDataType == NS_NATIVE_SHELL) {
|
||||
return NULL;
|
||||
}
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Spinup - do any preparation necessary for running a message loop
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsAppShell::Spinup()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Spindown - do any cleanup necessary for finishing a message loop
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsAppShell::Spindown()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// PushThreadEventQueue - begin processing events from a new queue
|
||||
// note this is the Windows implementation and may suffice, but
|
||||
// this is untested on beos.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsAppShell::PushThreadEventQueue()
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
// push a nested event queue for event processing from netlib
|
||||
// onto our UI thread queue stack.
|
||||
NS_WITH_SERVICE(nsIEventQueueService, eQueueService, kEventQueueServiceCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = eQueueService->PushThreadEventQueue();
|
||||
else
|
||||
NS_ERROR("Appshell unable to obtain eventqueue service.");
|
||||
return rv;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// PopThreadEventQueue - stop processing on a previously pushed event queue
|
||||
// note this is the Windows implementation and may suffice, but
|
||||
// this is untested on beos.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsAppShell::PopThreadEventQueue()
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
NS_WITH_SERVICE(nsIEventQueueService, eQueueService, kEventQueueServiceCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = eQueueService->PopThreadEventQueue();
|
||||
else
|
||||
NS_ERROR("Appshell unable to obtain eventqueue service.");
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_METHOD nsAppShell::GetNativeEvent(PRBool &aRealEvent, void *&aEvent)
|
||||
{
|
||||
printf("nsAppShell::GetNativeEvent - FIXME: not implemented\n");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_METHOD nsAppShell::DispatchNativeEvent(PRBool aRealEvent, void *aEvent)
|
||||
{
|
||||
printf("nsAppShell::DispatchNativeEvent - FIXME: not implemented\n");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_METHOD nsAppShell::EventIsForModalWindow(PRBool aRealEvent, void *aEvent, nsIWidget *aWidget, PRBool *aForWindow)
|
||||
{
|
||||
printf("nsAppShell::EventIsForModalWindow - FIXME: not implemented\n");
|
||||
*aForWindow = PR_FALSE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
60
mozilla/widget/src/beos/nsAppShell.h
Normal file
60
mozilla/widget/src/beos/nsAppShell.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/* -*- Mode: c++; tab-width: 2; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsAppShell_h__
|
||||
#define nsAppShell_h__
|
||||
|
||||
#include "nsObject.h"
|
||||
#include "nsIAppShell.h"
|
||||
#include <OS.h>
|
||||
|
||||
/**
|
||||
* Native BeOS Application shell wrapper
|
||||
*/
|
||||
|
||||
class nsAppShell : public nsIAppShell
|
||||
{
|
||||
public:
|
||||
nsAppShell();
|
||||
virtual ~nsAppShell();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
// nsIAppShellInterface
|
||||
|
||||
NS_IMETHOD Create(int* argc, char ** argv);
|
||||
virtual nsresult Run();
|
||||
NS_IMETHOD Spinup();
|
||||
NS_IMETHOD Spindown();
|
||||
NS_IMETHOD PushThreadEventQueue();
|
||||
NS_IMETHOD PopThreadEventQueue();
|
||||
NS_IMETHOD GetNativeEvent(PRBool &aRealEvent, void *&aEvent);
|
||||
NS_IMETHOD DispatchNativeEvent(PRBool aRealEvent, void * aEvent);
|
||||
NS_IMETHOD EventIsForModalWindow(PRBool aRealEvent, void *aEvent,
|
||||
nsIWidget *aWidget, PRBool *aForWindow);
|
||||
NS_IMETHOD Exit();
|
||||
NS_IMETHOD SetDispatchListener(nsDispatchListener* aDispatchListener);
|
||||
virtual void* GetNativeData(PRUint32 aDataType);
|
||||
|
||||
private:
|
||||
nsDispatchListener *mDispatchListener;
|
||||
port_id eventport;
|
||||
sem_id syncsem;
|
||||
};
|
||||
|
||||
#endif // nsAppShell_h__
|
||||
282
mozilla/widget/src/beos/nsButton.cpp
Normal file
282
mozilla/widget/src/beos/nsButton.cpp
Normal file
@@ -0,0 +1,282 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsButton.h"
|
||||
#include "nsToolkit.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStringUtil.h"
|
||||
|
||||
#include "nsILookAndFeel.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIComponentManager.h"
|
||||
|
||||
#include "nsIDeviceContext.h"
|
||||
#include "nsIFontMetrics.h"
|
||||
|
||||
static NS_DEFINE_IID(kLookAndFeelCID, NS_LOOKANDFEEL_CID);
|
||||
static NS_DEFINE_IID(kILookAndFeelIID, NS_ILOOKANDFEEL_IID);
|
||||
|
||||
|
||||
NS_IMPL_ADDREF(nsButton)
|
||||
NS_IMPL_RELEASE(nsButton)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsButton constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsButton::nsButton() : nsWindow() , nsIButton()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsButton destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsButton::~nsButton()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement the standard QueryInterface for NS_IWIDGET_IID and NS_ISUPPORTS_IID
|
||||
* @modify gpk 8/4/98
|
||||
* @param aIID The name of the class implementing the method
|
||||
* @param _classiiddef The name of the #define symbol that defines the IID
|
||||
* for the class (e.g. NS_ISUPPORTS_IID)
|
||||
*
|
||||
*/
|
||||
nsresult nsButton::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
if (NULL == aInstancePtr) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kIButton, NS_IBUTTON_IID);
|
||||
if (aIID.Equals(kIButton)) {
|
||||
*aInstancePtr = (void*) ((nsIButton*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return nsWindow::QueryInterface(aIID,aInstancePtr);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsButton::SetLabel(const nsString& aText)
|
||||
{
|
||||
mLabel = aText;
|
||||
if(NULL == mView) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
NS_ALLOC_STR_BUF(label, aText, 256);
|
||||
if(mButton)
|
||||
{
|
||||
if(mButton->Looper())
|
||||
mButton->LockLooper();
|
||||
|
||||
mButton->SetLabel(label);
|
||||
|
||||
if(mButton->Looper())
|
||||
mButton->UnlockLooper();
|
||||
}
|
||||
NS_FREE_STR_BUF(label);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Get this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsButton::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
aBuffer = mLabel;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// move, paint, resizes message - ignore
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsButton::OnMove(PRInt32, PRInt32)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsButton::OnPaint(nsRect &r)
|
||||
{
|
||||
//printf("** nsButton::OnPaint **\n");
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsButton::OnResize(nsRect &aWindowRect)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the Button for Printing
|
||||
*
|
||||
**/
|
||||
NS_METHOD nsButton::Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect)
|
||||
{
|
||||
float appUnits;
|
||||
float devUnits;
|
||||
float scale;
|
||||
nsIDeviceContext * context;
|
||||
aRenderingContext.GetDeviceContext(context);
|
||||
|
||||
context->GetCanonicalPixelScale(scale);
|
||||
context->GetAppUnitsToDevUnits(devUnits);
|
||||
context->GetDevUnitsToAppUnits(appUnits);
|
||||
|
||||
nsRect rect;
|
||||
GetBoundsAppUnits(rect, appUnits);
|
||||
aRenderingContext.SetColor(NS_RGB(0,0,0));
|
||||
|
||||
nscolor bgColor = NS_RGB(255,255,255);
|
||||
nscolor fgColor = NS_RGB(0,0,0);
|
||||
nscolor hltColor = NS_RGB(240,240,240);
|
||||
nscolor sdwColor = NS_RGB(128,128,128);
|
||||
|
||||
nsILookAndFeel * lookAndFeel;
|
||||
if (NS_OK == nsComponentManager::CreateInstance(kLookAndFeelCID, nsnull, kILookAndFeelIID, (void**)&lookAndFeel)) {
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_WidgetBackground, bgColor);
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_WidgetForeground, fgColor);
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_Widget3DShadow, sdwColor);
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_Widget3DHighlight, hltColor);
|
||||
}
|
||||
|
||||
aRenderingContext.SetColor(bgColor);
|
||||
aRenderingContext.FillRect(rect);
|
||||
|
||||
/*aRenderingContext.SetColor(bgColor);
|
||||
for (int i=0;i<int(scale);i++) {
|
||||
aRenderingContext.DrawRect(rect);
|
||||
rect.x += 3;
|
||||
rect.y += 3;
|
||||
rect.width -= 6;
|
||||
rect.height -= 6;
|
||||
}*/
|
||||
|
||||
nscoord onePixel = nscoord(scale);
|
||||
nscoord twoPixels = nscoord(scale*2);
|
||||
|
||||
rect.x += onePixel;
|
||||
rect.y += onePixel;
|
||||
rect.width -= twoPixels;
|
||||
rect.height -= twoPixels;
|
||||
|
||||
nscoord right = rect.x+rect.width;
|
||||
nscoord bottom = rect.y+rect.height;
|
||||
|
||||
|
||||
// Draw Left & Top
|
||||
aRenderingContext.SetColor(NS_RGB(225,225,225));
|
||||
DrawScaledLine(aRenderingContext, rect.x, rect.y, right, rect.y, scale, appUnits, PR_TRUE); // top
|
||||
DrawScaledLine(aRenderingContext, rect.x, rect.y, rect.x, bottom, scale, appUnits, PR_FALSE); // left
|
||||
|
||||
//DrawScaledLine(aRenderingContext, rect.x+onePixel, rect.y+onePixel, right-onePixel, rect.y+onePixel, scale, appUnits, PR_TRUE); // top + 1
|
||||
//DrawScaledLine(aRenderingContext, rect.x+onePixel, rect.y+onePixel, rect.x+onePixel, bottom-onePixel, scale, appUnits, PR_FALSE); // left + 1
|
||||
|
||||
// Draw Right & Bottom
|
||||
aRenderingContext.SetColor(NS_RGB(128,128,128));
|
||||
DrawScaledLine(aRenderingContext, right, rect.y+onePixel, right, bottom, scale, appUnits, PR_FALSE); // right
|
||||
DrawScaledLine(aRenderingContext, rect.x+onePixel, bottom, right, bottom, scale, appUnits, PR_TRUE); // bottom
|
||||
|
||||
//DrawScaledLine(aRenderingContext, right-onePixel, rect.y+twoPixels, right-onePixel, bottom, scale, appUnits, PR_FALSE); // right + 1
|
||||
//DrawScaledLine(aRenderingContext, rect.x+twoPixels, bottom-onePixel, right, bottom-onePixel, scale, appUnits, PR_TRUE); // bottom + 1
|
||||
|
||||
aRenderingContext.SetFont(*mFont);
|
||||
|
||||
nscoord textWidth;
|
||||
nscoord textHeight;
|
||||
aRenderingContext.GetWidth(mLabel, textWidth);
|
||||
|
||||
nsIFontMetrics* metrics;
|
||||
context->GetMetricsFor(*mFont, metrics);
|
||||
metrics->GetMaxAscent(textHeight);
|
||||
|
||||
nscoord x = ((rect.width - textWidth) / 2) + rect.x;
|
||||
nscoord y = ((rect.height - textHeight) / 2) + rect.y;
|
||||
aRenderingContext.DrawString(mLabel, x, y);
|
||||
|
||||
|
||||
NS_RELEASE(context);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
BView *nsButton::CreateBeOSView()
|
||||
{
|
||||
return mButton = new nsButtonBeOS(this, BRect(0, 0, 0, 0), "", "");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Sub-class of BeOS Button
|
||||
//-------------------------------------------------------------------------
|
||||
nsButtonBeOS::nsButtonBeOS( nsIWidget *aWidgetWindow, BRect aFrame,
|
||||
const char *aName, const char *aLabel, uint32 aResizingMode, uint32 aFlags )
|
||||
: BButton( aFrame, aName, aLabel, new BMessage('clik'), aResizingMode, aFlags ),
|
||||
nsIWidgetStore( aWidgetWindow )
|
||||
{
|
||||
}
|
||||
|
||||
void nsButtonBeOS::AttachedToWindow()
|
||||
{
|
||||
SetTarget(this);
|
||||
}
|
||||
|
||||
void nsButtonBeOS::MessageReceived(BMessage *msg)
|
||||
{
|
||||
switch(msg->what)
|
||||
{
|
||||
case 'clik' :
|
||||
{
|
||||
nsWindow *w = (nsWindow *)GetMozillaWidget();
|
||||
nsToolkit *t;
|
||||
if(w && (t = w->GetToolkit()) != 0)
|
||||
{
|
||||
uint32 args[5];
|
||||
args[0] = NS_MOUSE_LEFT_CLICK;
|
||||
args[1] = (uint32)0;
|
||||
args[2] = (uint32)0;
|
||||
args[3] = 1;
|
||||
args[4] = modifiers();
|
||||
MethodInfo *info = new MethodInfo(w, w, nsWindow::BTNCLICK, 5, args);
|
||||
t->CallMethodAsync(info);
|
||||
NS_RELEASE(t);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
BButton::MessageReceived(msg);
|
||||
}
|
||||
}
|
||||
|
||||
77
mozilla/widget/src/beos/nsButton.h
Normal file
77
mozilla/widget/src/beos/nsButton.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsButton_h__
|
||||
#define nsButton_h__
|
||||
|
||||
#include "nsdefs.h"
|
||||
#include "nsWindow.h"
|
||||
#include "nsSwitchToUIThread.h"
|
||||
|
||||
#include "nsIButton.h"
|
||||
|
||||
#include <Button.h>
|
||||
|
||||
/**
|
||||
* Native Win32 button wrapper
|
||||
*/
|
||||
|
||||
class nsButton : public nsWindow,
|
||||
public nsIButton
|
||||
{
|
||||
|
||||
public:
|
||||
nsButton();
|
||||
virtual ~nsButton();
|
||||
|
||||
//nsISupports
|
||||
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
NS_IMETHOD_(nsrefcnt) Release(void);
|
||||
|
||||
// nsIButton part
|
||||
NS_IMETHOD SetLabel(const nsString& aText);
|
||||
NS_IMETHOD GetLabel(nsString& aBuffer);
|
||||
|
||||
// nsBaseWidget
|
||||
NS_IMETHOD Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect);
|
||||
|
||||
virtual PRBool OnMove(PRInt32 aX, PRInt32 aY);
|
||||
virtual PRBool OnPaint(nsRect &r);
|
||||
virtual PRBool OnResize(nsRect &aWindowRect);
|
||||
|
||||
protected:
|
||||
nsString mLabel;
|
||||
virtual BView *CreateBeOSView();
|
||||
BButton *mButton;
|
||||
};
|
||||
|
||||
//
|
||||
// A BButton subclass
|
||||
//
|
||||
class nsButtonBeOS : public BButton, public nsIWidgetStore {
|
||||
public:
|
||||
nsButtonBeOS( nsIWidget *aWidgetWindow, BRect aFrame, const char *aName,
|
||||
const char *aLabel, uint32 aResizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||||
uint32 aFlags = B_WILL_DRAW | B_NAVIGABLE );
|
||||
void AttachedToWindow();
|
||||
void MessageReceived(BMessage *msg);
|
||||
};
|
||||
|
||||
#endif // nsButton_h__
|
||||
102
mozilla/widget/src/beos/nsCList.h
Normal file
102
mozilla/widget/src/beos/nsCList.h
Normal file
@@ -0,0 +1,102 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef CLIST_H
|
||||
#define CLIST_H
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
//
|
||||
// Simple circular linked-list implementation...
|
||||
//
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
// Foreward declarations...
|
||||
struct CList;
|
||||
|
||||
#define OBJECT_PTR_FROM_CLIST(className, listElement) \
|
||||
((char*)listElement - offsetof(className, m_link))
|
||||
|
||||
|
||||
struct CList {
|
||||
CList *next;
|
||||
CList *prev;
|
||||
|
||||
CList() {
|
||||
next = prev = this;
|
||||
}
|
||||
|
||||
~CList() {
|
||||
Remove();
|
||||
}
|
||||
|
||||
//
|
||||
// Append an element to the end of this list
|
||||
//
|
||||
void Append(CList &element) {
|
||||
element.next = this;
|
||||
element.prev = prev;
|
||||
prev->next = &element;
|
||||
prev = &element;
|
||||
}
|
||||
|
||||
//
|
||||
// Add an element to the beginning of this list
|
||||
//
|
||||
void Add(CList &element) {
|
||||
element.next = next;
|
||||
element.prev = this;
|
||||
next->prev = &element;
|
||||
next = &element;
|
||||
}
|
||||
|
||||
//
|
||||
// Append this element to the end of a list
|
||||
//
|
||||
void AppendToList(CList &list) {
|
||||
list.Append(*this);
|
||||
}
|
||||
|
||||
//
|
||||
// Add this element to the beginning of a list
|
||||
//
|
||||
void AddToList(CList &list) {
|
||||
list.Add(*this);
|
||||
}
|
||||
|
||||
//
|
||||
// Remove this element from the list and re-initialize
|
||||
//
|
||||
void Remove(void) {
|
||||
prev->next = next;
|
||||
next->prev = prev;
|
||||
|
||||
next = prev = this;
|
||||
}
|
||||
|
||||
//
|
||||
// Is this list empty ?
|
||||
//
|
||||
bool IsEmpty(void) {
|
||||
return (next == this);
|
||||
}
|
||||
};
|
||||
|
||||
#endif // CLIST_H
|
||||
|
||||
237
mozilla/widget/src/beos/nsCheckButton.cpp
Normal file
237
mozilla/widget/src/beos/nsCheckButton.cpp
Normal file
@@ -0,0 +1,237 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsCheckButton.h"
|
||||
#include "nsToolkit.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStringUtil.h"
|
||||
|
||||
#include "nsILookAndFeel.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIComponentManager.h"
|
||||
|
||||
#include "nsIDeviceContext.h"
|
||||
|
||||
NS_IMPL_ADDREF(nsCheckButton)
|
||||
NS_IMPL_RELEASE(nsCheckButton)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsCheckButton constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsCheckButton::nsCheckButton() : nsWindow() , nsICheckButton(),
|
||||
mState(PR_FALSE)
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsCheckButton destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsCheckButton::~nsCheckButton()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implement the standard QueryInterface for NS_IWIDGET_IID and NS_ISUPPORTS_IID
|
||||
* @modify gpk 8/4/98
|
||||
* @param aIID The name of the class implementing the method
|
||||
* @param _classiiddef The name of the #define symbol that defines the IID
|
||||
* for the class (e.g. NS_ISUPPORTS_IID)
|
||||
*
|
||||
*/
|
||||
nsresult nsCheckButton::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
if (NULL == aInstancePtr) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
static NS_DEFINE_IID(kICheckButtonIID, NS_ICHECKBUTTON_IID);
|
||||
if (aIID.Equals(kICheckButtonIID)) {
|
||||
*aInstancePtr = (void*) ((nsICheckButton*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
return nsWindow::QueryInterface(aIID,aInstancePtr);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::SetState(const PRBool aState)
|
||||
{
|
||||
mState = aState;
|
||||
if(mCheckBox && mCheckBox->LockLooper())
|
||||
{
|
||||
mCheckBox->SetValue(aState ? 1 : 0);
|
||||
mCheckBox->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::GetState(PRBool& aState)
|
||||
{
|
||||
aState = mState;
|
||||
if(mCheckBox && mCheckBox->LockLooper())
|
||||
{
|
||||
aState = mCheckBox->Value() ? PR_TRUE : PR_FALSE;
|
||||
mCheckBox->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::SetLabel(const nsString& aText)
|
||||
{
|
||||
char label[256];
|
||||
aText.ToCString(label, 256);
|
||||
label[255] = '\0';
|
||||
if(mCheckBox && mCheckBox->LockLooper())
|
||||
{
|
||||
mCheckBox->SetLabel(label);
|
||||
mCheckBox->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Get this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsCheckButton::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
if(mCheckBox && mCheckBox->LockLooper())
|
||||
{
|
||||
aBuffer.SetLength(0);
|
||||
aBuffer.Append(mCheckBox->Label());
|
||||
mCheckBox->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// move, paint, resizes message - ignore
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsCheckButton::OnMove(PRInt32, PRInt32)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsCheckButton::OnPaint(nsRect &r)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsCheckButton::OnResize(nsRect &aWindowRect)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Renders the CheckButton for Printing
|
||||
*
|
||||
**/
|
||||
NS_METHOD nsCheckButton::Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect)
|
||||
{
|
||||
nsRect rect;
|
||||
float appUnits;
|
||||
float scale;
|
||||
nsIDeviceContext * context;
|
||||
aRenderingContext.GetDeviceContext(context);
|
||||
|
||||
context->GetCanonicalPixelScale(scale);
|
||||
context->GetDevUnitsToAppUnits(appUnits);
|
||||
|
||||
GetBoundsAppUnits(rect, appUnits);
|
||||
|
||||
nscoord one = nscoord(PRFloat64(rect.height) * 1.0/20.0);
|
||||
nscoord three = nscoord(PRFloat64(rect.width) * 3.0/20.0);
|
||||
nscoord five = nscoord(PRFloat64(rect.width) * 5.0/20.0);
|
||||
nscoord six = nscoord(PRFloat64(rect.height) * 5.0/20.0);
|
||||
nscoord eight = nscoord(PRFloat64(rect.height) * 7.0/20.0);
|
||||
nscoord nine = nscoord(PRFloat64(rect.width) * 9.0/20.0);
|
||||
nscoord ten = nscoord(PRFloat64(rect.height) * 9.0/20.0);
|
||||
|
||||
rect.x += three;
|
||||
rect.y += nscoord(PRFloat64(rect.height) * 3.5 /20.0);
|
||||
rect.width = nscoord(PRFloat64(rect.width) * 12.0/20.0);
|
||||
rect.height = nscoord(PRFloat64(rect.height) * 12.0/20.0);
|
||||
|
||||
aRenderingContext.SetColor(NS_RGB(0,0,0));
|
||||
|
||||
nscoord onePixel = nscoord((appUnits+0.6F));
|
||||
DrawScaledRect(aRenderingContext, rect, scale, appUnits);
|
||||
nscoord x = rect.x;
|
||||
nscoord y = rect.y;
|
||||
|
||||
if (mState) {
|
||||
nscoord inc = nscoord(PRFloat64(rect.height) * 0.75/20.0);
|
||||
nscoord yy = 0;
|
||||
for (nscoord i=0;i<4;i++) {
|
||||
DrawScaledLine(aRenderingContext, x+three, y+eight+yy, x+five, y+ten+yy, scale, appUnits, PR_FALSE); // top
|
||||
DrawScaledLine(aRenderingContext, x+five, y+ten+yy, x+nine, y+six+yy, scale, appUnits, PR_FALSE); // top
|
||||
//aRenderingContext.DrawLine(x+three, y+eight+yy, x+five, y+ten+yy);
|
||||
//aRenderingContext.DrawLine(x+five, y+ten+yy, x+nine, y+six+yy);
|
||||
yy += nscoord(scale);
|
||||
}
|
||||
}
|
||||
|
||||
NS_RELEASE(context);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
BView *nsCheckButton::CreateBeOSView()
|
||||
{
|
||||
return mCheckBox = new nsCheckBoxBeOS(this, BRect(0, 0, 0, 0), "", "", NULL);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Sub-class of BeOS CheckBox
|
||||
//-------------------------------------------------------------------------
|
||||
nsCheckBoxBeOS::nsCheckBoxBeOS( nsIWidget *aWidgetWindow, BRect aFrame,
|
||||
const char *aName, const char *aLabel, BMessage *aMessage,
|
||||
uint32 aResizingMode, uint32 aFlags )
|
||||
: BCheckBox( aFrame, aName, aLabel, aMessage, aResizingMode, aFlags ),
|
||||
nsIWidgetStore( aWidgetWindow )
|
||||
{
|
||||
}
|
||||
77
mozilla/widget/src/beos/nsCheckButton.h
Normal file
77
mozilla/widget/src/beos/nsCheckButton.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsCheckButton_h__
|
||||
#define nsCheckButton_h__
|
||||
|
||||
#include "nsdefs.h"
|
||||
#include "nsWindow.h"
|
||||
#include "nsSwitchToUIThread.h"
|
||||
|
||||
#include "nsICheckButton.h"
|
||||
|
||||
#include <CheckBox.h>
|
||||
|
||||
/**
|
||||
* Native Win32 Checkbox wrapper
|
||||
*/
|
||||
|
||||
class nsCheckButton : public nsWindow,
|
||||
public nsICheckButton
|
||||
{
|
||||
|
||||
public:
|
||||
nsCheckButton();
|
||||
virtual ~nsCheckButton();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
NS_IMETHOD_(nsrefcnt) Release(void);
|
||||
|
||||
// nsICheckButton part
|
||||
NS_IMETHOD SetLabel(const nsString &aText);
|
||||
NS_IMETHOD GetLabel(nsString &aBuffer);
|
||||
NS_IMETHOD SetState(const PRBool aState);
|
||||
NS_IMETHOD GetState(PRBool& aState);
|
||||
|
||||
NS_IMETHOD Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect);
|
||||
|
||||
virtual PRBool OnMove(PRInt32 aX, PRInt32 aY);
|
||||
virtual PRBool OnPaint(nsRect &r);
|
||||
virtual PRBool OnResize(nsRect &aWindowRect);
|
||||
|
||||
|
||||
protected:
|
||||
PRBool mState;
|
||||
virtual BView *CreateBeOSView();
|
||||
BCheckBox *mCheckBox;
|
||||
};
|
||||
|
||||
//
|
||||
// A BCheckBox subclass
|
||||
//
|
||||
class nsCheckBoxBeOS : public BCheckBox, public nsIWidgetStore {
|
||||
public:
|
||||
nsCheckBoxBeOS( nsIWidget *aWidgetWindow, BRect aFrame, const char *aName,
|
||||
const char *aLabel, BMessage *aMessage, uint32 aResizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||||
uint32 aFlags = B_WILL_DRAW | B_NAVIGABLE );
|
||||
};
|
||||
|
||||
#endif // nsCheckButton_h__
|
||||
523
mozilla/widget/src/beos/nsClipboard.cpp
Normal file
523
mozilla/widget/src/beos/nsClipboard.cpp
Normal file
@@ -0,0 +1,523 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsClipboard.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
#include "nsIClipboardOwner.h"
|
||||
#include "nsITransferable.h" // kTextMime
|
||||
|
||||
#include "nsIWidget.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
|
||||
#include <View.h>
|
||||
|
||||
// The class statics:
|
||||
BView *nsClipboard::sView = 0;
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsClipboard, nsBaseClipboard)
|
||||
NS_IMPL_RELEASE_INHERITED(nsClipboard, nsBaseClipboard)
|
||||
|
||||
static NS_DEFINE_CID(kCClipboardCID, NS_CLIPBOARD_CID);
|
||||
|
||||
#if defined(DEBUG_akkana) || defined(DEBUG_mcafee)
|
||||
#define DEBUG_CLIPBOARD
|
||||
#endif
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsClipboard constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsClipboard::nsClipboard() : nsBaseClipboard()
|
||||
{
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::nsClipboard()\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
|
||||
//NS_INIT_REFCNT();
|
||||
mIgnoreEmptyNotification = PR_FALSE;
|
||||
mClipboardOwner = nsnull;
|
||||
mTransferable = nsnull;
|
||||
// mSelectionData.data = nsnull;
|
||||
// mSelectionData.length = 0;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsClipboard destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsClipboard::~nsClipboard()
|
||||
{
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::~nsClipboard()\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
|
||||
// // Remove all our event handlers:
|
||||
// if (sView &&
|
||||
// gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == sWidget->window)
|
||||
// gtk_selection_remove_all(sWidget);
|
||||
//
|
||||
// // free the selection data, if any
|
||||
// if (mSelectionData.data != nsnull)
|
||||
// g_free(mSelectionData.data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param aIID The name of the class implementing the method
|
||||
* @param _classiiddef The name of the #define symbol that defines the IID
|
||||
* for the class (e.g. NS_ISUPPORTS_IID)
|
||||
*
|
||||
*/
|
||||
nsresult nsClipboard::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
if (NULL == aInstancePtr) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult rv = NS_NOINTERFACE;
|
||||
|
||||
if (aIID.Equals(nsIClipboard::GetIID())) {
|
||||
*aInstancePtr = (void*) ((nsIClipboard*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
void nsClipboard::SetTopLevelView(BView *v)
|
||||
{
|
||||
// Don't set up any more event handlers if we're being called twice
|
||||
// for the same toplevel widget
|
||||
if (sView == v)
|
||||
return;
|
||||
|
||||
if (sView != 0 && sView->Window() != 0)
|
||||
return;
|
||||
|
||||
if(v == 0 || v->Window() == 0)
|
||||
{
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::SetTopLevelView: widget passed in is null or has no window!\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::SetTopLevelView\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
|
||||
// // If we're changing from one widget to another
|
||||
// // (shouldn't generally happen), clear the old event handlers:
|
||||
// if (sView &&
|
||||
// gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == sWidget->window)
|
||||
// gtk_selection_remove_all(sWidget);
|
||||
//
|
||||
// sWidget = w;
|
||||
//
|
||||
// // Get the clipboard from the service manager.
|
||||
// nsresult rv;
|
||||
// NS_WITH_SERVICE(nsIClipboard, clipboard, kCClipboardCID, &rv);
|
||||
//
|
||||
// if (!NS_SUCCEEDED(rv)) {
|
||||
// printf("Couldn't get clipboard service!\n");
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // Handle selection requests if we called gtk_selection_add_target:
|
||||
// gtk_signal_connect(GTK_OBJECT(sWidget), "selection_get",
|
||||
// GTK_SIGNAL_FUNC(nsClipboard::SelectionGetCB),
|
||||
// clipboard);
|
||||
//
|
||||
// // When someone else takes the selection away:
|
||||
// gtk_signal_connect(GTK_OBJECT(sWidget), "selection_clear_event",
|
||||
// GTK_SIGNAL_FUNC(nsClipboard::SelectionClearCB),
|
||||
// clipboard);
|
||||
//
|
||||
// // Set up the paste handler:
|
||||
// gtk_signal_connect(GTK_OBJECT(sWidget), "selection_received",
|
||||
// GTK_SIGNAL_FUNC(nsClipboard::SelectionReceivedCB),
|
||||
// clipboard);
|
||||
//
|
||||
//#if 0
|
||||
// // Handle selection requests if we called gtk_selection_add_targets:
|
||||
// gtk_signal_connect(GTK_OBJECT(sWidget), "selection_request_event",
|
||||
// GTK_SIGNAL_FUNC(nsClipboard::SelectionRequestCB),
|
||||
// clipboard);
|
||||
//
|
||||
// // Watch this, experimenting with Gtk :-)
|
||||
// gtk_signal_connect(GTK_OBJECT(sWidget), "selection_notify_event",
|
||||
// GTK_SIGNAL_FUNC(nsClipboard::SelectionNotifyCB),
|
||||
// clipboard);
|
||||
//#endif
|
||||
//
|
||||
// // Hmm, sometimes we need this, sometimes not. I'm not clear why.
|
||||
// // See also long comment above on why we don't register a whole target list.
|
||||
//
|
||||
// // Register all the target types we handle:
|
||||
// gtk_selection_add_target(sWidget,
|
||||
// GDK_SELECTION_PRIMARY,
|
||||
// GDK_SELECTION_TYPE_STRING,
|
||||
// GDK_SELECTION_TYPE_STRING);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsClipboard::SetNativeClipboardData()
|
||||
{
|
||||
mIgnoreEmptyNotification = PR_TRUE;
|
||||
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::SetNativeClipboardData()\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
|
||||
// make sure we have a good transferable
|
||||
if (nsnull == mTransferable) {
|
||||
printf(" SetNativeClipboardData: no transferable!\n");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// // If we're already the selection owner, don't need to do anything,
|
||||
// // we'll already get the events:
|
||||
// if (gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == sWidget->window)
|
||||
// return NS_OK;
|
||||
//
|
||||
// // Clear the native clipboard
|
||||
// if (sWidget &&
|
||||
// gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == sWidget->window)
|
||||
// gtk_selection_remove_all(sWidget);
|
||||
//
|
||||
//
|
||||
// // register as the selection owner:
|
||||
// gint have_selection =
|
||||
// gtk_selection_owner_set(sWidget,
|
||||
// GDK_SELECTION_PRIMARY,
|
||||
// GDK_CURRENT_TIME);
|
||||
// if (have_selection == 0)
|
||||
// return NS_ERROR_FAILURE;
|
||||
|
||||
mIgnoreEmptyNotification = PR_FALSE;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// The blocking Paste routine
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsClipboard::GetNativeClipboardData(nsITransferable * aTransferable)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::GetNativeClipboardData()\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
|
||||
// make sure we have a good transferable
|
||||
if (nsnull == aTransferable) {
|
||||
printf(" GetNativeClipboardData: Transferable is null!\n");
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// Dunno why we need to do this, copying the win32 code ...
|
||||
nsCOMPtr<nsITransferable> trans = do_QueryInterface(aTransferable);
|
||||
if (!trans)
|
||||
return rv;
|
||||
|
||||
// //
|
||||
// // We can't call the copy callback when we're blocking on the paste callback;
|
||||
// // so if this app is already the selection owner, we need to copy our own
|
||||
// // data without going through the X server.
|
||||
// //
|
||||
// if (gdk_selection_owner_get (GDK_SELECTION_PRIMARY) == sWidget->window)
|
||||
// {
|
||||
// // XXX only support text/plain for now
|
||||
// nsAutoString dataFlavor(kTextMime);
|
||||
//
|
||||
// // Get data out of our existing transferable.
|
||||
// void *clipboardData;
|
||||
// PRUint32 dataLength;
|
||||
// rv = mTransferable->GetTransferData(&dataFlavor,
|
||||
// &clipboardData,
|
||||
// &dataLength);
|
||||
// if (NS_SUCCEEDED(rv))
|
||||
// rv = trans->SetTransferData(&dataFlavor,
|
||||
// clipboardData, dataLength);
|
||||
// return rv;
|
||||
// }
|
||||
//
|
||||
//#define ONLY_SUPPORT_PLAIN_TEXT 1
|
||||
//#ifdef ONLY_SUPPORT_PLAIN_TEXT
|
||||
// gtk_selection_convert(sWidget, GDK_SELECTION_PRIMARY,
|
||||
// GDK_SELECTION_TYPE_STRING, GDK_CURRENT_TIME);
|
||||
// // Tried to use straight Xlib call but this would need more work:
|
||||
// //XConvertSelection(GDK_WINDOW_XDISPLAY(sWidget->window),
|
||||
// // XA_PRIMARY, XA_STRING, gdk_selection_property,
|
||||
// // GDK_WINDOW_XWINDOW(sWidget->window), GDK_CURRENT_TIME);
|
||||
//
|
||||
//#else /* ONLY_SUPPORT_PLAIN_TEXT */
|
||||
// //
|
||||
// // XXX This code isn't implemented for Unix yet!
|
||||
// // Instead of SetTransferData it will have to call gtk_selection_convert.
|
||||
// //
|
||||
//
|
||||
// // Get the transferable list of data flavors
|
||||
// nsVoidArray * dfList;
|
||||
// aTransferable->GetTransferDataFlavors(&dfList);
|
||||
//
|
||||
// // Walk through flavors and see which flavor matches the one being pasted:
|
||||
// PRUint32 i;
|
||||
// PRUint32 cnt = 0;
|
||||
// nsresult rv = dfList->Count(&cnt);
|
||||
// NS_ASSERTION(NS_SUCCEEDED(rv), "Count failed");
|
||||
// for (i=0;i<cnt;i++) {
|
||||
// nsString * df = (nsString *)dfList->ElementAt(i);
|
||||
// if (nsnull != df) {
|
||||
// UINT format = GetFormat(*df);
|
||||
//
|
||||
// void * data;
|
||||
// PRUint32 dataLen;
|
||||
//
|
||||
// if (nsnull != aDataObject) {
|
||||
// res = GetNativeDataOffClipboard(aDataObject, format, &data, &dataLen);
|
||||
// if (NS_OK == res) {
|
||||
// trans->SetTransferData(df, data, dataLen);
|
||||
// }
|
||||
// } else if (nsnull != aWindow) {
|
||||
// res = GetNativeDataOffClipboard(aWindow, format, &data, &dataLen);
|
||||
// if (NS_OK == res) {
|
||||
// trans->SetTransferData(df, data, dataLen);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//#endif /* ONLY_SUPPORT_PLAIN_TEXT */
|
||||
//
|
||||
// //
|
||||
// // We've told X what type to send, and we just have to wait
|
||||
// // for the callback saying that the data have been transferred.
|
||||
// //
|
||||
//
|
||||
// // Set a flag saying that we're blocking waiting for the callback:
|
||||
// mBlocking = PR_TRUE;
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf("Waiting for the callback\n");
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//
|
||||
// // Now we need to wait until the callback comes in ...
|
||||
// // i is in case we get a runaway (yuck).
|
||||
// for (int i=0; mBlocking == PR_TRUE && i < 10000; ++i)
|
||||
// {
|
||||
// gtk_main_iteration_do(PR_TRUE);
|
||||
// }
|
||||
//
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf("Got the callback: '%s', %d\n",
|
||||
// mSelectionData.data, mSelectionData.length);
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//
|
||||
// // We're back from the callback, no longer blocking:
|
||||
// mBlocking = PR_FALSE;
|
||||
//
|
||||
// //
|
||||
// // Now we have data in mSelectionData.data.
|
||||
// // We just have to copy it to the transferable.
|
||||
// //
|
||||
// nsAutoString dataFlavor(kTextMime);
|
||||
// trans->SetTransferData(&dataFlavor, mSelectionData.data, mSelectionData.length);
|
||||
//
|
||||
// // Can't free the selection data -- the transferable just saves a pointer.
|
||||
// // But the transferable is responsible for freeing it, so we have to
|
||||
// // consider it freed now:
|
||||
// //g_free(mSelectionData.data);
|
||||
// mSelectionData.data = nsnull;
|
||||
// mSelectionData.length = 0;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//
|
||||
// Called when the data from a paste comes in:
|
||||
//
|
||||
//void
|
||||
//nsClipboard::SelectionReceivedCB (GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// gpointer aData)
|
||||
//{
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf(" nsClipboard::SelectionReceivedCB\n");
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//
|
||||
// // ARGHH! GTK doesn't pass the arg to the callback, so we can't
|
||||
// // get "this" back! Until we solve this, get it from the service mgr:
|
||||
// nsresult rv;
|
||||
// NS_WITH_SERVICE(nsIClipboard, iclipboard, kCClipboardCID, &rv);
|
||||
//
|
||||
// if (NS_FAILED(rv)) {
|
||||
// printf("Couldn't get clipboard service!\n");
|
||||
// return;
|
||||
// }
|
||||
// nsClipboard* clipboard = (nsClipboard*)iclipboard;
|
||||
// if (!clipboard) {
|
||||
// printf("couldn't convert nsIClipboard to nsClipboard\n");
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// clipboard->SelectionReceiver(aWidget, aSelectionData);
|
||||
//}
|
||||
//
|
||||
//void
|
||||
//nsClipboard::SelectionReceiver (GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData)
|
||||
//{
|
||||
// mBlocking = PR_FALSE;
|
||||
//
|
||||
// if (aSelectionData->length < 0)
|
||||
// {
|
||||
// printf("Error retrieving selection: length was %d\n",
|
||||
// aSelectionData->length);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// switch (aSelectionData->type)
|
||||
// {
|
||||
// case GDK_SELECTION_TYPE_STRING:
|
||||
// mSelectionData = *aSelectionData;
|
||||
// mSelectionData.data = g_new(guchar, aSelectionData->length + 1);
|
||||
// memcpy(mSelectionData.data,
|
||||
// aSelectionData->data, aSelectionData->length);
|
||||
// // Null terminate in case anyone cares,
|
||||
// // and so we can print the string for debugging:
|
||||
// mSelectionData.data[aSelectionData->length] = '\0';
|
||||
// mSelectionData.length = aSelectionData->length;
|
||||
// return;
|
||||
//
|
||||
// default:
|
||||
// printf("Can't convert type %s (%ld) to string\n",
|
||||
// gdk_atom_name (aSelectionData->type), aSelectionData->type);
|
||||
// return;
|
||||
// }
|
||||
//}
|
||||
//
|
||||
/**
|
||||
* No-op.
|
||||
*
|
||||
*/
|
||||
NS_IMETHODIMP nsClipboard::ForceDataToClipboard()
|
||||
{
|
||||
#ifdef DEBUG_CLIPBOARD
|
||||
printf(" nsClipboard::ForceDataToClipboard()\n");
|
||||
#endif /* DEBUG_CLIPBOARD */
|
||||
|
||||
// make sure we have a good transferable
|
||||
if (nsnull == mTransferable) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//
|
||||
//// This is the callback which is called when another app
|
||||
//// requests the selection.
|
||||
////
|
||||
//void nsClipboard::SelectionGetCB(GtkWidget *widget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// guint /*info*/,
|
||||
// guint /*time*/,
|
||||
// gpointer aData)
|
||||
//{
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf(" nsClipboard::SelectionGetCB\n");
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//
|
||||
// nsClipboard *clipboard = (nsClipboard *)aData;
|
||||
//
|
||||
// void *clipboardData;
|
||||
// PRUint32 dataLength;
|
||||
// nsresult rv;
|
||||
//
|
||||
// // Make sure we have a transferable:
|
||||
// if (!clipboard->mTransferable) {
|
||||
// printf("Clipboard has no transferable!\n");
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // XXX hack, string-only for now.
|
||||
// // Create string data-flavor.
|
||||
// nsString dataFlavor (kTextMime);
|
||||
//
|
||||
// // Get data out of transferable.
|
||||
// rv = clipboard->mTransferable->GetTransferData(&dataFlavor,
|
||||
// &clipboardData,
|
||||
// &dataLength);
|
||||
//
|
||||
// // Currently we only offer the data in GDK_SELECTION_TYPE_STRING format.
|
||||
// if (NS_SUCCEEDED(rv) && clipboardData && dataLength > 0) {
|
||||
// gtk_selection_data_set(aSelectionData,
|
||||
// GDK_SELECTION_TYPE_STRING, 8,
|
||||
// (unsigned char *)clipboardData,
|
||||
// dataLength);
|
||||
// }
|
||||
// else
|
||||
// printf("Transferable didn't support the data flavor\n");
|
||||
//}
|
||||
//
|
||||
//
|
||||
//
|
||||
//// Called when another app requests selection ownership:
|
||||
//void nsClipboard::SelectionClearCB(GtkWidget *widget,
|
||||
// GdkEventSelection *event,
|
||||
// gpointer data)
|
||||
//{
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf(" nsClipboard::SelectionClearCB\n");
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//}
|
||||
//
|
||||
//
|
||||
//// The routine called when another app asks for the content of the selection
|
||||
//void
|
||||
//nsClipboard::SelectionRequestCB (GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// gpointer aData)
|
||||
//{
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf(" nsClipboard::SelectionRequestCB\n");
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//}
|
||||
//
|
||||
//void
|
||||
//nsClipboard::SelectionNotifyCB (GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// gpointer aData)
|
||||
//{
|
||||
//#ifdef DEBUG_CLIPBOARD
|
||||
// printf(" nsClipboard::SelectionNotifyCB\n");
|
||||
//#endif /* DEBUG_CLIPBOARD */
|
||||
//}
|
||||
88
mozilla/widget/src/beos/nsClipboard.h
Normal file
88
mozilla/widget/src/beos/nsClipboard.h
Normal file
@@ -0,0 +1,88 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsClipboard_h__
|
||||
#define nsClipboard_h__
|
||||
|
||||
#include "nsBaseClipboard.h"
|
||||
#include <Clipboard.h>
|
||||
|
||||
class nsITransferable;
|
||||
class nsIClipboardOwner;
|
||||
class nsIWidget;
|
||||
|
||||
/**
|
||||
* Native BeOS Clipboard wrapper
|
||||
*/
|
||||
|
||||
class nsClipboard : public nsBaseClipboard
|
||||
{
|
||||
|
||||
public:
|
||||
nsClipboard();
|
||||
virtual ~nsClipboard();
|
||||
|
||||
//nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIClipboard
|
||||
NS_IMETHOD ForceDataToClipboard();
|
||||
|
||||
static void SetTopLevelView(BView *v);
|
||||
|
||||
|
||||
protected:
|
||||
NS_IMETHOD SetNativeClipboardData();
|
||||
NS_IMETHOD GetNativeClipboardData(nsITransferable * aTransferable);
|
||||
|
||||
PRBool mIgnoreEmptyNotification;
|
||||
|
||||
static BView *sView;
|
||||
|
||||
// // Used for communicating pasted data
|
||||
// // from the asynchronous X routines back to a blocking paste:
|
||||
// GtkSelectionData mSelectionData;
|
||||
// PRBool mBlocking;
|
||||
//
|
||||
// void SelectionReceiver(GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData);
|
||||
//
|
||||
// static void SelectionGetCB(GtkWidget *widget,
|
||||
// GtkSelectionData *selection_data,
|
||||
// guint /*info*/,
|
||||
// guint /*time*/,
|
||||
// gpointer data);
|
||||
//
|
||||
// static void SelectionClearCB(GtkWidget *widget,
|
||||
// GdkEventSelection *event,
|
||||
// gpointer data );
|
||||
//
|
||||
// static void SelectionRequestCB(GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// gpointer aData);
|
||||
//
|
||||
// static void SelectionReceivedCB(GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// gpointer aData);
|
||||
//
|
||||
// static void SelectionNotifyCB(GtkWidget *aWidget,
|
||||
// GtkSelectionData *aSelectionData,
|
||||
// gpointer aData);
|
||||
};
|
||||
|
||||
#endif // nsClipboard_h__
|
||||
380
mozilla/widget/src/beos/nsComboBox.cpp
Normal file
380
mozilla/widget/src/beos/nsComboBox.cpp
Normal file
@@ -0,0 +1,380 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsComboBox.h"
|
||||
#include "nsToolkit.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStringUtil.h"
|
||||
|
||||
#include "nsILookAndFeel.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsIComponentManager.h"
|
||||
|
||||
#include "nsIDeviceContext.h"
|
||||
#include "nsIFontMetrics.h"
|
||||
|
||||
static NS_DEFINE_IID(kLookAndFeelCID, NS_LOOKANDFEEL_CID);
|
||||
static NS_DEFINE_IID(kILookAndFeelIID, NS_ILOOKANDFEEL_IID);
|
||||
NS_IMPL_ADDREF(nsComboBox)
|
||||
NS_IMPL_RELEASE(nsComboBox)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsComboBox constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsComboBox::nsComboBox() : nsWindow(), nsIListWidget(), nsIComboBox()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mBackground = NS_RGB(124, 124, 124);
|
||||
mDropDownHeight = 60; // Default to 60 pixels for drop-down list height
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsComboBox::AddItemAt(nsString &aItem, PRInt32 aPosition)
|
||||
{
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
NS_ALLOC_STR_BUF(val, aItem, 256);
|
||||
mMenuField->Menu()->AddItem(new BMenuItem(val, 0), aPosition);
|
||||
NS_FREE_STR_BUF(val);
|
||||
mMenuField->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Finds an item at a postion
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsComboBox::FindItem(nsString &aItem, PRInt32 aStartPos)
|
||||
{
|
||||
#if 0
|
||||
NS_ALLOC_STR_BUF(val, aItem, 256);
|
||||
int index = ::SendMessage(mWnd, CB_FINDSTRINGEXACT, (int)aStartPos, (LPARAM)(LPCTSTR)val);
|
||||
NS_FREE_STR_BUF(val);
|
||||
|
||||
return index;
|
||||
#endif
|
||||
printf("nsListBox::FindItem not implemented\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// CountItems - Get Item Count
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsComboBox::GetItemCount()
|
||||
{
|
||||
PRInt32 result = 0;
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
result = mMenuField->Menu()->CountItems();
|
||||
mMenuField->UnlockLooper();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Removes an Item at a specified location
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsComboBox::RemoveItemAt(PRInt32 aPosition)
|
||||
{
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
BMenuItem *it = mMenuField->Menu()->RemoveItem(aPosition);
|
||||
delete it;
|
||||
mMenuField->UnlockLooper();
|
||||
return it ? PR_TRUE : PR_FALSE;
|
||||
}
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Removes an Item at a specified location
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsComboBox::GetItemAt(nsString& anItem, PRInt32 aPosition)
|
||||
{
|
||||
PRBool result = PR_FALSE;
|
||||
anItem.SetLength(0);
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
BMenuItem *it = mMenuField->Menu()->ItemAt(aPosition);
|
||||
anItem.Append(it->Label());
|
||||
mMenuField->UnlockLooper();
|
||||
result = PR_TRUE;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Gets the selected of selected item
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsComboBox::GetSelectedItem(nsString& aItem)
|
||||
{
|
||||
GetItemAt(aItem, GetSelectedIndex());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Gets the list of selected otems
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRInt32 nsComboBox::GetSelectedIndex()
|
||||
{
|
||||
PRInt32 index = -1;
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
BMenuItem *it = mMenuField->Menu()->FindMarked();
|
||||
index = it ? mMenuField->Menu()->IndexOf(it) : -1;
|
||||
mMenuField->UnlockLooper();
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// SelectItem
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsComboBox::SelectItem(PRInt32 aPosition)
|
||||
{
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
BMenuItem *it = mMenuField->Menu()->ItemAt(aPosition);
|
||||
if(it)
|
||||
it->SetMarked(true);
|
||||
mMenuField->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Deselect
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsComboBox::Deselect()
|
||||
{
|
||||
if(mMenuField && mMenuField->LockLooper())
|
||||
{
|
||||
BMenuItem *it = mMenuField->Menu()->FindMarked();
|
||||
if(it)
|
||||
it->SetMarked(false);
|
||||
mMenuField->UnlockLooper();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsComboBox::~nsComboBox()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Query interface implementation
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsresult nsComboBox::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
static NS_DEFINE_IID(kInsComboBoxIID, NS_ICOMBOBOX_IID);
|
||||
static NS_DEFINE_IID(kInsListWidgetIID, NS_ILISTWIDGET_IID);
|
||||
|
||||
if (aIID.Equals(kInsComboBoxIID)) {
|
||||
*aInstancePtr = (void*) ((nsIComboBox*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
else if (aIID.Equals(kInsListWidgetIID)) {
|
||||
*aInstancePtr = (void*) ((nsIListWidget*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return nsWindow::QueryInterface(aIID,aInstancePtr);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// move, paint, resizes message - ignore
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsComboBox::OnMove(PRInt32, PRInt32)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsComboBox::OnPaint(nsRect &r)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsComboBox::OnResize(nsRect &aWindowRect)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Cache the drop down list height in mDropDownHeight
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
NS_METHOD nsComboBox::PreCreateWidget(nsWidgetInitData *aInitData)
|
||||
{
|
||||
nsComboBoxInitData* comboData = (nsComboBoxInitData*)aInitData;
|
||||
mDropDownHeight = comboData->mDropDownHeight;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Modify the height passed to create and resize to be
|
||||
// the combo box drop down list height. (Note: Windows uses
|
||||
// the height of the window to specify the drop-down list size,
|
||||
// not the height of combobox text area.
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
PRInt32 nsComboBox::GetHeight(PRInt32 aProposedHeight)
|
||||
{
|
||||
return(mDropDownHeight);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// get position/dimensions
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
NS_METHOD nsComboBox::GetBounds(nsRect &aRect)
|
||||
{
|
||||
#if 0
|
||||
nsWindow::GetNonClientBounds(aRect);
|
||||
#endif
|
||||
printf("nsListBox::GetBounds not wrong\n"); // the following is just a placeholder
|
||||
nsWindow::GetClientBounds(aRect);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the TextWidget for Printing
|
||||
*
|
||||
**/
|
||||
NS_METHOD nsComboBox::Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect)
|
||||
{
|
||||
nsBaseWidget::Paint(aRenderingContext, aDirtyRect);
|
||||
/*nsRect rect;
|
||||
GetBoundsAppUnits(rect, aTwipsConversion);
|
||||
aRenderingContext.SetColor(NS_RGB(0,0,0));
|
||||
|
||||
nscolor bgColor = NS_RGB(255,255,255);
|
||||
nscolor fgColor = NS_RGB(0,0,0);
|
||||
nscolor hltColor = NS_RGB(240,240,240);
|
||||
nscolor sdwColor = NS_RGB(128,128,128);
|
||||
nsILookAndFeel * lookAndFeel;
|
||||
if (NS_OK == nsComponentManager::CreateInstance(kLookAndFeelCID, nsnull, kILookAndFeelIID, (void**)&lookAndFeel)) {
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_WidgetBackground, bgColor);
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_WidgetForeground, fgColor);
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_Widget3DShadow, sdwColor);
|
||||
lookAndFeel->GetColor(nsILookAndFeel::eColor_Widget3DHighlight, hltColor);
|
||||
}
|
||||
|
||||
nsIDeviceContext * context;
|
||||
//nsDrawingSurface surface;
|
||||
aRenderingContext.GetDeviceContext(context);
|
||||
//context->GetDrawingSurface(aRenderingContext, surface);
|
||||
|
||||
//HDC the_hdc = ((nsDrawingSurfaceWin *)&surface)->mDC;
|
||||
|
||||
//::SendMessage(mWnd, WM_PAINT, (WPARAM)the_hdc, NULL);
|
||||
|
||||
|
||||
// shrink by one pixel
|
||||
|
||||
nscoord onePixel = nscoord((aTwipsConversion+0.6F));
|
||||
nscoord twoPixels = onePixel*2;
|
||||
|
||||
nsString text("(ComboBox)");
|
||||
//GetSelectedItem(text);
|
||||
|
||||
|
||||
aRenderingContext.SetColor(bgColor);
|
||||
aRenderingContext.FillRect(rect);
|
||||
|
||||
aRenderingContext.SetColor(NS_RGB(0,0,0));
|
||||
aRenderingContext.DrawRect(rect);
|
||||
|
||||
|
||||
aRenderingContext.SetFont(*mFont);
|
||||
|
||||
nscoord textWidth;
|
||||
nscoord textHeight;
|
||||
aRenderingContext.GetWidth(text, textWidth);
|
||||
|
||||
nsIFontMetrics* metrics;
|
||||
context->GetMetricsFor(*mFont, metrics);
|
||||
metrics->GetMaxAscent(textHeight);
|
||||
|
||||
nscoord x = (twoPixels * 2) + rect.x;
|
||||
nscoord y = ((rect.height - textHeight) / 2) + rect.y;
|
||||
//aRenderingContext.DrawString(text, x, y);
|
||||
*/
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
BView *nsComboBox::CreateBeOSView()
|
||||
{
|
||||
return mMenuField = new nsMenuFieldBeOS((nsIWidget *)this, BRect(0, 0, 0, 0), "");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// Sub-class of BeOS MenuField
|
||||
//-------------------------------------------------------------------------
|
||||
nsMenuFieldBeOS::nsMenuFieldBeOS( nsIWidget *aWidgetWindow, BRect aFrame,
|
||||
const char *aName, uint32 aResizingMode, uint32 aFlags )
|
||||
: BMenuField( aFrame, aName, "", new BPopUpMenu(""), aResizingMode, aFlags ),
|
||||
nsIWidgetStore( aWidgetWindow )
|
||||
{
|
||||
SetDivider(0);
|
||||
}
|
||||
93
mozilla/widget/src/beos/nsComboBox.h
Normal file
93
mozilla/widget/src/beos/nsComboBox.h
Normal file
@@ -0,0 +1,93 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#ifndef nsComboBox_h__
|
||||
#define nsComboBox_h__
|
||||
|
||||
#include "nsdefs.h"
|
||||
#include "nsWindow.h"
|
||||
#include "nsSwitchToUIThread.h"
|
||||
#include "nsIComboBox.h"
|
||||
|
||||
#include <MenuItem.h>
|
||||
#include <PopUpMenu.h>
|
||||
#include <MenuField.h>
|
||||
|
||||
/**
|
||||
* Native Win32 Combobox wrapper
|
||||
*/
|
||||
|
||||
class nsComboBox : public nsWindow,
|
||||
public nsIListWidget,
|
||||
public nsIComboBox
|
||||
{
|
||||
|
||||
public:
|
||||
nsComboBox();
|
||||
~nsComboBox();
|
||||
|
||||
// nsISupports
|
||||
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
NS_IMETHOD_(nsrefcnt) Release(void);
|
||||
|
||||
// nsIWidget overrides
|
||||
virtual PRBool OnMove(PRInt32 aX, PRInt32 aY);
|
||||
virtual PRBool OnPaint(nsRect &r);
|
||||
virtual PRBool OnResize(nsRect &aWindowRect);
|
||||
|
||||
// nsIWidget
|
||||
NS_IMETHOD GetBounds(nsRect &aRect);
|
||||
|
||||
// nsIComboBox interface
|
||||
NS_IMETHOD AddItemAt(nsString &aItem, PRInt32 aPosition);
|
||||
virtual PRInt32 FindItem(nsString &aItem, PRInt32 aStartPos);
|
||||
virtual PRInt32 GetItemCount();
|
||||
virtual PRBool RemoveItemAt(PRInt32 aPosition);
|
||||
virtual PRBool GetItemAt(nsString& anItem, PRInt32 aPosition);
|
||||
NS_IMETHOD GetSelectedItem(nsString& aItem);
|
||||
virtual PRInt32 GetSelectedIndex();
|
||||
NS_IMETHOD SelectItem(PRInt32 aPosition);
|
||||
NS_IMETHOD Deselect() ;
|
||||
|
||||
NS_IMETHOD Paint(nsIRenderingContext& aRenderingContext,
|
||||
const nsRect& aDirtyRect);
|
||||
|
||||
NS_IMETHOD PreCreateWidget(nsWidgetInitData *aInitData);
|
||||
|
||||
protected:
|
||||
|
||||
// Modify the height passed to create and resize to be
|
||||
// the combo box drop down list height.
|
||||
PRInt32 GetHeight(PRInt32 aProposedHeight);
|
||||
PRInt32 mDropDownHeight;
|
||||
BView *CreateBeOSView();
|
||||
BMenuField *mMenuField;
|
||||
};
|
||||
|
||||
//
|
||||
// A BMenuField subclass
|
||||
//
|
||||
class nsMenuFieldBeOS : public BMenuField, public nsIWidgetStore {
|
||||
public:
|
||||
nsMenuFieldBeOS( nsIWidget *aWidgetWindow, BRect aFrame,
|
||||
const char *name, uint32 aResizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
|
||||
uint32 aFlags = B_WILL_DRAW | B_NAVIGABLE );
|
||||
};
|
||||
|
||||
#endif // nsComboBox_h__
|
||||
165
mozilla/widget/src/beos/nsDialog.cpp
Normal file
165
mozilla/widget/src/beos/nsDialog.cpp
Normal file
@@ -0,0 +1,165 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsDialog.h"
|
||||
#include "nsToolkit.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStringUtil.h"
|
||||
|
||||
#include "nsIAppShell.h"
|
||||
#include "nsIFontMetrics.h"
|
||||
#include "nsGUIEvent.h"
|
||||
#include "nsIRenderingContext.h"
|
||||
#include "nsIDeviceContext.h"
|
||||
#include "nsRect.h"
|
||||
#include "nsTransform2D.h"
|
||||
#include "nsStringUtil.h"
|
||||
#include "nsGfxCIID.h"
|
||||
#include "resource.h"
|
||||
|
||||
NS_IMPL_ADDREF(nsDialog)
|
||||
NS_IMPL_RELEASE(nsDialog)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsDialog constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsDialog::nsDialog() : nsWindow(), nsIDialog()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Create the proper widget
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsDialog::Create(nsIWidget *aParent,
|
||||
const nsRect &aRect,
|
||||
EVENT_CALLBACK aHandleEventFunction,
|
||||
nsIDeviceContext *aContext,
|
||||
nsIAppShell *aAppShell,
|
||||
nsIToolkit *aToolkit,
|
||||
nsWidgetInitData *aInitData)
|
||||
{
|
||||
return nsWindow::Create(aParent,aRect,aHandleEventFunction,aContext,aAppShell,aToolkit,aInitData);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// nsDialog destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsDialog::~nsDialog()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Set this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsDialog::SetLabel(const nsString& aText)
|
||||
{
|
||||
#if 0
|
||||
NS_ALLOC_STR_BUF(label, aText, 256);
|
||||
VERIFY(::SetWindowText(mWnd, label));
|
||||
NS_FREE_STR_BUF(label);
|
||||
#endif
|
||||
printf("nsDialog::SetLabel not implemented\n");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Get this button label
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
NS_METHOD nsDialog::GetLabel(nsString& aBuffer)
|
||||
{
|
||||
#if 0
|
||||
int actualSize = ::GetWindowTextLength(mWnd)+1;
|
||||
NS_ALLOC_CHAR_BUF(label, 256, actualSize);
|
||||
::GetWindowText(mWnd, label, actualSize);
|
||||
aBuffer.SetLength(0);
|
||||
aBuffer.Append(label);
|
||||
NS_FREE_CHAR_BUF(label);
|
||||
#endif
|
||||
printf("nsDialog::SetLabel not implemented\n");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// Query interface implementation
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsresult nsDialog::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
nsresult result = nsWindow::QueryInterface(aIID, aInstancePtr);
|
||||
|
||||
static NS_DEFINE_IID(kInsDialogIID, NS_IDIALOG_IID);
|
||||
if (result == NS_NOINTERFACE && aIID.Equals(kInsDialogIID)) {
|
||||
*aInstancePtr = (void*) ((nsIDialog*)this);
|
||||
NS_ADDREF_THIS();
|
||||
result = NS_OK;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// move, paint, resizes message - ignore
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
PRBool nsDialog::OnMove(PRInt32, PRInt32)
|
||||
{
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
PRBool nsDialog::OnPaint(nsRect &r)
|
||||
{
|
||||
return nsWindow::OnPaint(r);
|
||||
}
|
||||
|
||||
PRBool nsDialog::OnResize(nsRect &aWindowRect)
|
||||
{
|
||||
return nsWindow::OnResize(aWindowRect);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// get position/dimensions
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
NS_METHOD nsDialog::GetBounds(nsRect &aRect)
|
||||
{
|
||||
return nsWindow::GetBounds(aRect);
|
||||
}
|
||||
|
||||
230
mozilla/widget/src/beos/nsDragService.cpp
Normal file
230
mozilla/widget/src/beos/nsDragService.cpp
Normal file
@@ -0,0 +1,230 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "nsDragService.h"
|
||||
#include "nsITransferable.h"
|
||||
#include "nsIServiceManager.h"
|
||||
|
||||
#include "nsWidgetsCID.h"
|
||||
|
||||
static NS_DEFINE_IID(kIDragServiceIID, NS_IDRAGSERVICE_IID);
|
||||
static NS_DEFINE_CID(kCDragServiceCID, NS_DRAGSERVICE_CID);
|
||||
|
||||
// The class statics:
|
||||
BView *nsDragService::sView = 0;
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsDragService, nsBaseDragService)
|
||||
NS_IMPL_RELEASE_INHERITED(nsDragService, nsBaseDragService)
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// static variables
|
||||
//-------------------------------------------------------------------------
|
||||
//static PRBool gHaveDrag = PR_FALSE;
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// DragService constructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsDragService::nsDragService()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//
|
||||
// DragService destructor
|
||||
//
|
||||
//-------------------------------------------------------------------------
|
||||
nsDragService::~nsDragService()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param aIID The name of the class implementing the method
|
||||
* @param _classiiddef The name of the #define symbol that defines the IID
|
||||
* for the class (e.g. NS_ISUPPORTS_IID)
|
||||
*
|
||||
*/
|
||||
nsresult nsDragService::QueryInterface(const nsIID& aIID, void** aInstancePtr)
|
||||
{
|
||||
|
||||
if (NULL == aInstancePtr) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult rv = NS_NOINTERFACE;
|
||||
|
||||
if (aIID.Equals(nsIDragService::GetIID())) {
|
||||
*aInstancePtr = (void*) ((nsIDragService*)this);
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
NS_IMETHODIMP nsDragService::StartDragSession (nsITransferable * aTransferable, PRUint32 aActionType)
|
||||
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
NS_IMETHODIMP nsDragService::GetData (nsITransferable * aTransferable,
|
||||
PRUint32 aItemIndex)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
void nsDragService::SetTopLevelView(BView *v)
|
||||
{
|
||||
printf(" nsDragService::SetTopLevelWidget\n");
|
||||
|
||||
// Don't set up any more event handlers if we're being called twice
|
||||
// for the same toplevel widget
|
||||
if (sView == v)
|
||||
return;
|
||||
|
||||
sView = v;
|
||||
|
||||
// Get the DragService from the service manager.
|
||||
nsresult rv;
|
||||
NS_WITH_SERVICE(nsIDragService, dragService, kCDragServiceCID, &rv);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
gtk_signal_connect (GTK_OBJECT (pixmap), "drag_leave",
|
||||
GTK_SIGNAL_FUNC (nsDragService::DragLeave), dragService);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (pixmap), "drag_motion",
|
||||
GTK_SIGNAL_FUNC (nsDragService::DragMotion), dragService);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (pixmap), "drag_drop",
|
||||
GTK_SIGNAL_FUNC (nsDragService::DragDrop), dragService);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (pixmap), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC (nsDragService::DragDataReceived), dragService);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
//void
|
||||
//nsDragService::DragLeave (GtkWidget *widget,
|
||||
// GdkDragContext *context,
|
||||
// guint time)
|
||||
//{
|
||||
// g_print("leave\n");
|
||||
// //gHaveDrag = PR_FALSE;
|
||||
//}
|
||||
//
|
||||
////-------------------------------------------------------------------------
|
||||
//PRBool
|
||||
//nsDragService::DragMotion(GtkWidget *widget,
|
||||
// GdkDragContext *context,
|
||||
// gint x,
|
||||
// gint y,
|
||||
// guint time)
|
||||
//{
|
||||
// g_print("drag motion\n");
|
||||
// GtkWidget *source_widget;
|
||||
//
|
||||
//#if 0
|
||||
// if (!gHaveDrag) {
|
||||
// gHaveDrag = PR_TRUE;
|
||||
// }
|
||||
//#endif
|
||||
//
|
||||
// source_widget = gtk_drag_get_source_widget (context);
|
||||
// g_print("motion, source %s\n", source_widget ?
|
||||
// gtk_type_name (GTK_OBJECT (source_widget)->klass->type) :
|
||||
// "unknown");
|
||||
//
|
||||
// gdk_drag_status (context, context->suggested_action, time);
|
||||
//
|
||||
// return PR_TRUE;
|
||||
//}
|
||||
//
|
||||
////-------------------------------------------------------------------------
|
||||
//PRBool
|
||||
//nsDragService::DragDrop(GtkWidget *widget,
|
||||
// GdkDragContext *context,
|
||||
// gint x,
|
||||
// gint y,
|
||||
// guint time)
|
||||
//{
|
||||
// g_print("drop\n");
|
||||
// //gHaveDrag = PR_FALSE;
|
||||
//
|
||||
// if (context->targets){
|
||||
// gtk_drag_get_data (widget, context,
|
||||
// GPOINTER_TO_INT (context->targets->data),
|
||||
// time);
|
||||
// return PR_TRUE;
|
||||
// }
|
||||
//
|
||||
// return PR_FALSE;
|
||||
//}
|
||||
//
|
||||
////-------------------------------------------------------------------------
|
||||
//void
|
||||
//nsDragService::DragDataReceived (GtkWidget *widget,
|
||||
// GdkDragContext *context,
|
||||
// gint x,
|
||||
// gint y,
|
||||
// GtkSelectionData *data,
|
||||
// guint info,
|
||||
// guint time)
|
||||
//{
|
||||
// if ((data->length >= 0) && (data->format == 8)) {
|
||||
// g_print ("Received \"%s\"\n", (gchar *)data->data);
|
||||
// gtk_drag_finish (context, PR_TRUE, PR_FALSE, time);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// gtk_drag_finish (context, PR_FALSE, PR_FALSE, time);
|
||||
//}
|
||||
//
|
||||
////-------------------------------------------------------------------------
|
||||
//void
|
||||
//nsDragService::DragDataGet(GtkWidget *widget,
|
||||
// GdkDragContext *context,
|
||||
// GtkSelectionData *selection_data,
|
||||
// guint info,
|
||||
// guint time,
|
||||
// gpointer data)
|
||||
//{
|
||||
// gtk_selection_data_set (selection_data,
|
||||
// selection_data->target,
|
||||
// 8, (guchar *)"I'm Data!", 9);
|
||||
//}
|
||||
//
|
||||
////-------------------------------------------------------------------------
|
||||
//void
|
||||
//nsDragService::DragDataDelete(GtkWidget *widget,
|
||||
// GdkDragContext *context,
|
||||
// gpointer data)
|
||||
//{
|
||||
// g_print ("Delete the data!\n");
|
||||
//}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user