/* PIKA - Photo and Image Kooker Application
 * a rebranding of The GNU Image Manipulation Program (created with heckimp)
 * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio
 *
 * Original copyright, applying to most contents (license remains unchanged): 
 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#ifndef __WIDGETS_TYPES_H__
#define __WIDGETS_TYPES_H__


#include "libpikawidgets/pikawidgetstypes.h"

#include "core/core-types.h"

#include "widgets/widgets-enums.h"


/*  input devices & controllers  */

typedef struct _PikaControllerInfo           PikaControllerInfo;
typedef struct _PikaControllerKeyboard       PikaControllerKeyboard;
typedef struct _PikaControllerMouse          PikaControllerMouse;
typedef struct _PikaControllerWheel          PikaControllerWheel;
typedef struct _PikaDeviceInfo               PikaDeviceInfo;
typedef struct _PikaDeviceManager            PikaDeviceManager;


/*  docks  */

typedef struct _PikaDock                     PikaDock;
typedef struct _PikaDockColumns              PikaDockColumns;
typedef struct _PikaDockContainer            PikaDockContainer; /* dummy typedef */
typedef struct _PikaDockWindow               PikaDockWindow;
typedef struct _PikaDockable                 PikaDockable;
typedef struct _PikaDockbook                 PikaDockbook;
typedef struct _PikaDocked                   PikaDocked; /* dummy typedef */
typedef struct _PikaMenuDock                 PikaMenuDock;
typedef struct _PikaPanedBox                 PikaPanedBox;
typedef struct _PikaToolbox                  PikaToolbox;


/*  PikaEditor widgets  */

typedef struct _PikaColorEditor              PikaColorEditor;
typedef struct _PikaDeviceStatus             PikaDeviceStatus;
typedef struct _PikaEditor                   PikaEditor;
typedef struct _PikaErrorConsole             PikaErrorConsole;
typedef struct _PikaToolOptionsEditor        PikaToolOptionsEditor;
typedef struct _PikaDashboard                PikaDashboard;


/*  PikaDataEditor widgets  */

typedef struct _PikaBrushEditor              PikaBrushEditor;
typedef struct _PikaDataEditor               PikaDataEditor;
typedef struct _PikaDynamicsEditor           PikaDynamicsEditor;
typedef struct _PikaGradientEditor           PikaGradientEditor;
typedef struct _PikaPaletteEditor            PikaPaletteEditor;
typedef struct _PikaToolPresetEditor         PikaToolPresetEditor;


/*  PikaImageEditor widgets  */

typedef struct _PikaColormapEditor           PikaColormapEditor;
typedef struct _PikaComponentEditor          PikaComponentEditor;
typedef struct _PikaHistogramEditor          PikaHistogramEditor;
typedef struct _PikaImageEditor              PikaImageEditor;
typedef struct _PikaSamplePointEditor        PikaSamplePointEditor;
typedef struct _PikaSelectionEditor          PikaSelectionEditor;
typedef struct _PikaSymmetryEditor           PikaSymmetryEditor;
typedef struct _PikaUndoEditor               PikaUndoEditor;


/*  PikaContainerView and its implementors  */

typedef struct _PikaChannelTreeView          PikaChannelTreeView;
typedef struct _PikaContainerBox             PikaContainerBox;
typedef struct _PikaContainerComboBox        PikaContainerComboBox;
typedef struct _PikaContainerEntry           PikaContainerEntry;
typedef struct _PikaContainerIconView        PikaContainerIconView;
typedef struct _PikaContainerTreeStore       PikaContainerTreeStore;
typedef struct _PikaContainerTreeView        PikaContainerTreeView;
typedef struct _PikaContainerView            PikaContainerView; /* dummy typedef */
typedef struct _PikaDrawableTreeView         PikaDrawableTreeView;
typedef struct _PikaItemTreeView             PikaItemTreeView;
typedef struct _PikaLayerTreeView            PikaLayerTreeView;
typedef struct _PikaVectorsTreeView          PikaVectorsTreeView;

typedef struct _PikaContainerPopup           PikaContainerPopup;
typedef struct _PikaViewableButton           PikaViewableButton;


/*  PikaContainerEditor widgets  */

typedef struct _PikaContainerEditor          PikaContainerEditor;
typedef struct _PikaBufferView               PikaBufferView;
typedef struct _PikaDocumentView             PikaDocumentView;
typedef struct _PikaFontView                 PikaFontView;
typedef struct _PikaImageView                PikaImageView;
typedef struct _PikaTemplateView             PikaTemplateView;
typedef struct _PikaToolEditor               PikaToolEditor;


/*  PikaDataFactoryView widgets  */

typedef struct _PikaBrushFactoryView         PikaBrushFactoryView;
typedef struct _PikaDataFactoryView          PikaDataFactoryView;
typedef struct _PikaDynamicsFactoryView      PikaDynamicsFactoryView;
typedef struct _PikaFontFactoryView          PikaFontFactoryView;
typedef struct _PikaPatternFactoryView       PikaPatternFactoryView;
typedef struct _PikaToolPresetFactoryView    PikaToolPresetFactoryView;


/*  menus  */

typedef struct _PikaAction                   PikaAction;
typedef struct _PikaActionImpl               PikaActionImpl;
typedef struct _PikaActionFactory            PikaActionFactory;
typedef struct _PikaActionGroup              PikaActionGroup;
typedef struct _PikaDoubleAction             PikaDoubleAction;
typedef struct _PikaEnumAction               PikaEnumAction;
typedef struct _PikaMenuFactory              PikaMenuFactory;
typedef struct _PikaProcedureAction          PikaProcedureAction;
typedef struct _PikaRadioAction              PikaRadioAction;
typedef struct _PikaStringAction             PikaStringAction;
typedef struct _PikaToggleAction             PikaToggleAction;
typedef struct _PikaUIManager                PikaUIManager;


/*  file dialogs  */

typedef struct _PikaExportDialog             PikaExportDialog;
typedef struct _PikaFileDialog               PikaFileDialog;
typedef struct _PikaOpenDialog               PikaOpenDialog;
typedef struct _PikaSaveDialog               PikaSaveDialog;


/*  misc dialogs  */

typedef struct _PikaColorDialog              PikaColorDialog;
typedef struct _PikaCriticalDialog           PikaCriticalDialog;
typedef struct _PikaErrorDialog              PikaErrorDialog;
typedef struct _PikaMessageDialog            PikaMessageDialog;
typedef struct _PikaProgressDialog           PikaProgressDialog;
typedef struct _PikaTextEditor               PikaTextEditor;
typedef struct _PikaViewableDialog           PikaViewableDialog;


/*  PikaPdbDialog widgets  */

typedef struct _PikaBrushSelect              PikaBrushSelect;
typedef struct _PikaFontSelect               PikaFontSelect;
typedef struct _PikaGradientSelect           PikaGradientSelect;
typedef struct _PikaPaletteSelect            PikaPaletteSelect;
typedef struct _PikaPatternSelect            PikaPatternSelect;
typedef struct _PikaPickableSelect           PikaPickableSelect;
typedef struct _PikaPdbDialog                PikaPdbDialog;


/*  misc widgets  */

typedef struct _PikaAccelLabel               PikaAccelLabel;
typedef struct _PikaActionEditor             PikaActionEditor;
typedef struct _PikaActionView               PikaActionView;
typedef struct _PikaBlobEditor               PikaBlobEditor;
typedef struct _PikaBufferSourceBox          PikaBufferSourceBox;
typedef struct _PikaCircle                   PikaCircle;
typedef struct _PikaColorBar                 PikaColorBar;
typedef struct _PikaColorDisplayEditor       PikaColorDisplayEditor;
typedef struct _PikaColorFrame               PikaColorFrame;
typedef struct _PikaColorHistory             PikaColorHistory;
typedef struct _PikaColormapSelection        PikaColormapSelection;
typedef struct _PikaColorPanel               PikaColorPanel;
typedef struct _PikaComboTagEntry            PikaComboTagEntry;
typedef struct _PikaCompressionComboBox      PikaCompressionComboBox;
typedef struct _PikaControllerEditor         PikaControllerEditor;
typedef struct _PikaControllerList           PikaControllerList;
typedef struct _PikaCurveView                PikaCurveView;
typedef struct _PikaDashEditor               PikaDashEditor;
typedef struct _PikaDeviceEditor             PikaDeviceEditor;
typedef struct _PikaDeviceInfoEditor         PikaDeviceInfoEditor;
typedef struct _PikaDial                     PikaDial;
typedef struct _PikaDynamicsOutputEditor     PikaDynamicsOutputEditor;
typedef struct _PikaExtensionDetails         PikaExtensionDetails;
typedef struct _PikaExtensionList            PikaExtensionList;
typedef struct _PikaFgBgEditor               PikaFgBgEditor;
typedef struct _PikaFgBgView                 PikaFgBgView;
typedef struct _PikaFileProcView             PikaFileProcView;
typedef struct _PikaFillEditor               PikaFillEditor;
typedef struct _PikaGridEditor               PikaGridEditor;
typedef struct _PikaHandleBar                PikaHandleBar;
typedef struct _PikaHighlightableButton      PikaHighlightableButton;
typedef struct _PikaHistogramBox             PikaHistogramBox;
typedef struct _PikaHistogramView            PikaHistogramView;
typedef struct _PikaIconPicker               PikaIconPicker;
typedef struct _PikaImageCommentEditor       PikaImageCommentEditor;
typedef struct _PikaImageParasiteView        PikaImageParasiteView;
typedef struct _PikaImageProfileView         PikaImageProfileView;
typedef struct _PikaImagePropView            PikaImagePropView;
typedef struct _PikaLanguageComboBox         PikaLanguageComboBox;
typedef struct _PikaLanguageEntry            PikaLanguageEntry;
typedef struct _PikaLanguageStore            PikaLanguageStore;
typedef struct _PikaLayerModeBox             PikaLayerModeBox;
typedef struct _PikaLayerModeComboBox        PikaLayerModeComboBox;
typedef struct _PikaMessageBox               PikaMessageBox;
typedef struct _PikaMenu                     PikaMenu;
typedef struct _PikaMenuBar                  PikaMenuBar;
typedef struct _PikaMenuModel                PikaMenuModel;
typedef struct _PikaMenuShell                PikaMenuShell;
typedef struct _PikaMeter                    PikaMeter;
typedef struct _PikaModifiersEditor          PikaModifiersEditor;
typedef struct _PikaOverlayBox               PikaOverlayBox;
typedef struct _PikaPickableButton           PikaPickableButton;
typedef struct _PikaPickableChooser          PikaPickableChooser;
typedef struct _PikaPickablePopup            PikaPickablePopup;
typedef struct _PikaPivotSelector            PikaPivotSelector;
typedef struct _PikaPlugInView               PikaPlugInView;
typedef struct _PikaPolar                    PikaPolar;
typedef struct _PikaPopup                    PikaPopup;
typedef struct _PikaPrefsBox                 PikaPrefsBox;
typedef struct _PikaProgressBox              PikaProgressBox;
typedef struct _PikaScaleButton              PikaScaleButton;
typedef struct _PikaSettingsBox              PikaSettingsBox;
typedef struct _PikaSettingsEditor           PikaSettingsEditor;
typedef struct _PikaShortcutButton           PikaShortcutButton;
typedef struct _PikaSizeBox                  PikaSizeBox;
typedef struct _PikaStrokeEditor             PikaStrokeEditor;
typedef struct _PikaTagEntry                 PikaTagEntry;
typedef struct _PikaTagPopup                 PikaTagPopup;
typedef struct _PikaTemplateEditor           PikaTemplateEditor;
typedef struct _PikaTextStyleEditor          PikaTextStyleEditor;
typedef struct _PikaThumbBox                 PikaThumbBox;
typedef struct _PikaToolbar                  PikaToolbar;
typedef struct _PikaToolButton               PikaToolButton;
typedef struct _PikaToolPalette              PikaToolPalette;
typedef struct _PikaTranslationStore         PikaTranslationStore;
typedef struct _PikaWindow                   PikaWindow;


/*  views  */

typedef struct _PikaNavigationView           PikaNavigationView;
typedef struct _PikaPaletteView              PikaPaletteView;
typedef struct _PikaView                     PikaView;


/*  view renderers  */

typedef struct _PikaViewRenderer             PikaViewRenderer;
typedef struct _PikaViewRendererBrush        PikaViewRendererBrush;
typedef struct _PikaViewRendererBuffer       PikaViewRendererBuffer;
typedef struct _PikaViewRendererDrawable     PikaViewRendererDrawable;
typedef struct _PikaViewRendererGradient     PikaViewRendererGradient;
typedef struct _PikaViewRendererImage        PikaViewRendererImage;
typedef struct _PikaViewRendererImagefile    PikaViewRendererImagefile;
typedef struct _PikaViewRendererLayer        PikaViewRendererLayer;
typedef struct _PikaViewRendererPalette      PikaViewRendererPalette;
typedef struct _PikaViewRendererVectors      PikaViewRendererVectors;


/*  cell renderers  */

typedef struct _PikaCellRendererButton       PikaCellRendererButton;
typedef struct _PikaCellRendererDashes       PikaCellRendererDashes;
typedef struct _PikaCellRendererViewable     PikaCellRendererViewable;


/*  misc objects  */

typedef struct _PikaDialogFactory            PikaDialogFactory;
typedef struct _PikaTextBuffer               PikaTextBuffer;
typedef struct _PikaUIConfigurer             PikaUIConfigurer;
typedef struct _PikaWindowStrategy           PikaWindowStrategy;


/*  session management objects and structs  */

typedef struct _PikaSessionInfo              PikaSessionInfo;
typedef struct _PikaSessionInfoAux           PikaSessionInfoAux;
typedef struct _PikaSessionInfoBook          PikaSessionInfoBook;
typedef struct _PikaSessionInfoDock          PikaSessionInfoDock;
typedef struct _PikaSessionInfoDockable      PikaSessionInfoDockable;
typedef struct _PikaSessionManaged           PikaSessionManaged;


/*  structs  */

typedef struct _PikaActionEntry              PikaActionEntry;
typedef struct _PikaDoubleActionEntry        PikaDoubleActionEntry;
typedef struct _PikaEnumActionEntry          PikaEnumActionEntry;
typedef struct _PikaProcedureActionEntry     PikaProcedureActionEntry;
typedef struct _PikaRadioActionEntry         PikaRadioActionEntry;
typedef struct _PikaStringActionEntry        PikaStringActionEntry;
typedef struct _PikaToggleActionEntry        PikaToggleActionEntry;

typedef struct _PikaDialogFactoryEntry       PikaDialogFactoryEntry;

typedef struct _PikaDashboardLogParams       PikaDashboardLogParams;


/*  function types  */

typedef GtkWidget * (* PikaDialogRestoreFunc)        (PikaDialogFactory *factory,
                                                      GdkMonitor        *monitor,
                                                      PikaSessionInfo   *info);
typedef void        (* PikaActionGroupSetupFunc)     (PikaActionGroup   *group);
typedef void        (* PikaActionGroupUpdateFunc)    (PikaActionGroup   *group,
                                                      gpointer           data);

typedef void        (* PikaUIManagerSetupFunc)       (PikaUIManager     *manager,
                                                      const gchar       *ui_path);

typedef void        (* PikaMenuPositionFunc)         (GtkMenu           *menu,
                                                      gint              *x,
                                                      gint              *y,
                                                      gpointer           data);
typedef gboolean    (* PikaPanedBoxDroppedFunc)      (GtkWidget         *notebook,
                                                      GtkWidget         *child,
                                                      gint               insert_index,
                                                      gpointer           data);

typedef GtkWidget * (* PikaToolOptionsGUIFunc)       (PikaToolOptions   *tool_options);


#endif /* __WIDGETS_TYPES_H__ */
