def _createDefaultConfig(self, child_name): """ If they do not exist already, create default settings to save the state of a detachable widget. """ GlobalSettings.addConfigSection(child_name) GlobalSettings.addConfigOption(child_name + "docked", section=child_name, key="docked", default=True) GlobalSettings.addConfigOption(child_name + "width", section=child_name, key="width", default=320) GlobalSettings.addConfigOption(child_name + "height", section=child_name, key="height", default=400) GlobalSettings.addConfigOption(child_name + "x", section=child_name, key="x", default=0) GlobalSettings.addConfigOption(child_name + "y", section=child_name, key="y", default=0) GlobalSettings.readSettingSectionFromFile(self.settings, child_name)
def _create_default_config(self, child_name): """Creates default settings to save the state of a detachable widget.""" try: GlobalSettings.addConfigSection(child_name) except ConfigError: self.info("Section %s already exists", child_name) return GlobalSettings.addConfigOption(child_name + "docked", section=child_name, key="docked", default=True) GlobalSettings.addConfigOption(child_name + "width", section=child_name, key="width", default=320) GlobalSettings.addConfigOption(child_name + "height", section=child_name, key="height", default=400) GlobalSettings.addConfigOption(child_name + "x", section=child_name, key="x", default=0) GlobalSettings.addConfigOption(child_name + "y", section=child_name, key="y", default=0) GlobalSettings.readSettingSectionFromFile(self.settings, child_name)
def test_read_config_file(self): GlobalSettings.addConfigSection("section-1") GlobalSettings.addConfigOption("section1OptionA", section="section-1", key="option-a", default=50) GlobalSettings.addConfigOption("section1OptionB", section="section-1", key="option-b", default=False) GlobalSettings.addConfigOption("section1OptionC", section="section-1", key="option-c", default="") GlobalSettings.addConfigOption("section1OptionD", section="section-1", key="option-d", default=[]) GlobalSettings.addConfigOption("section1OptionE", section="section-1", key="option-e", default=["foo"]) self.assertEqual(GlobalSettings.section1OptionA, 50) self.assertEqual(GlobalSettings.section1OptionB, False) self.assertEqual(GlobalSettings.section1OptionC, "") self.assertEqual(GlobalSettings.section1OptionD, []) self.assertEqual(GlobalSettings.section1OptionE, ["foo"]) conf_file_content = ("[section-1]\n" "option-a = 10\n" "option-b = True\n" "option-c = Pigs fly\n" "option-d=\n" "option-e=\n" " elmo\n" " knows\n" " where you live\n") with mock.patch("pitivi.settings.xdg_config_home") as xdg_config_home,\ tempfile.TemporaryDirectory() as temp_dir: with open(os.path.join(temp_dir, "pitivi.conf"), "w") as tmp_file: tmp_file.write(conf_file_content) xdg_config_home.return_value = temp_dir settings = GlobalSettings() self.assertEqual(settings.section1OptionA, 10) self.assertEqual(settings.section1OptionB, True) self.assertEqual(settings.section1OptionC, "Pigs fly") self.assertEqual(settings.section1OptionD, []) expected_e_value = ["elmo", "knows", "where you live"] self.assertEqual(settings.section1OptionE, expected_e_value)
def test_write_config_file(self): GlobalSettings.addConfigSection("section-new") GlobalSettings.addConfigOption("sectionNewOptionA", section="section-new", key="option-a", default="elmo") with mock.patch("pitivi.settings.xdg_config_home") as xdg_config_home,\ tempfile.TemporaryDirectory() as temp_dir: xdg_config_home.return_value = temp_dir settings1 = GlobalSettings() settings1.sectionNewOptionA = "kermit" settings1.storeSettings() settings2 = GlobalSettings() self.assertEqual(settings2.sectionNewOptionA, "kermit")
def test_read_config_file(self): GlobalSettings.addConfigSection("section-1") GlobalSettings.addConfigOption("section1OptionA", section="section-1", key="option-a", default=50) GlobalSettings.addConfigOption("section1OptionB", section="section-1", key="option-b", default=False) GlobalSettings.addConfigOption("section1OptionC", section="section-1", key="option-c", default="") self.assertEqual(GlobalSettings.section1OptionA, 50) self.assertEqual(GlobalSettings.section1OptionB, False) self.assertEqual(GlobalSettings.section1OptionC, "") conf_file_content = ("[section-1]\n" "option-a = 10\n" "option-b = True\n" "option-c = Pigs fly\n") with mock.patch("pitivi.settings.xdg_config_home") as xdg_config_home,\ tempfile.TemporaryDirectory() as temp_dir: with open(os.path.join(temp_dir, "pitivi.conf"), "w") as tmp_file: tmp_file.write(conf_file_content) xdg_config_home.return_value = temp_dir settings = GlobalSettings() self.assertEqual(settings.section1OptionA, 10) self.assertEqual(settings.section1OptionB, True) self.assertEqual(settings.section1OptionC, "Pigs fly")
from pitivi.ui.trackobject import TrackObject from pitivi.ui.point import Point from pitivi.ui.zoominterface import Zoomable from pitivi.settings import GlobalSettings from pitivi.ui.prefs import PreferencesDialog from pitivi.ui.common import TRACK_SPACING, unpack_cairo_pattern, \ LAYER_HEIGHT_EXPANDED, LAYER_SPACING # cursors to be used for resizing objects ARROW = gtk.gdk.Cursor(gtk.gdk.ARROW) # TODO: replace this with custom cursor RAZOR_CURSOR = gtk.gdk.Cursor(gtk.gdk.XTERM) GlobalSettings.addConfigOption('edgeSnapDeadband', section = "user-interface", key = "edge-snap-deadband", default = 5, notify = True) PreferencesDialog.addNumericPreference('edgeSnapDeadband', section = _("Behavior"), label = _("Snap Distance (pixels)"), description = _("Threshold distance (in pixels) used for all snapping " "operations"), lower = 0) class TimelineCanvas(goocanvas.Canvas, Zoomable, Loggable): __gsignals__ = { "scroll-event":"override" }
from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable # Make sure gst knowns about our own GstPresets Gst.preset_set_app_dir(get_gstpresets_dir()) class ProxyingStrategy: AUTOMATIC = "automatic" ALL = "all" NOTHING = "nothing" GlobalSettings.addConfigSection("proxy") GlobalSettings.addConfigOption('proxyingStrategy', section='proxy', key='proxying-strategy', default=ProxyingStrategy.AUTOMATIC) GlobalSettings.addConfigOption('numTranscodingJobs', section='proxy', key='num-proxying-jobs', default=4) GlobalSettings.addConfigOption("max_cpu_usage", section="proxy", key="max-cpu-usage", default=10) ENCODING_FORMAT_PRORES = "prores-raw-in-matroska.gep" ENCODING_FORMAT_JPEG = "jpeg-raw-in-matroska.gep"
from pitivi.ui.zoominterface import Zoomable from pitivi.settings import GlobalSettings from pitivi.ui.prefs import PreferencesDialog from pitivi.ui.common import TRACK_SPACING, unpack_cairo_pattern, \ LAYER_HEIGHT_EXPANDED, LAYER_SPACING from pitivi.ui.controller import Controller from pitivi.ui.curve import KW_LABEL_Y_OVERFLOW # cursors to be used for resizing objects ARROW = gtk.gdk.Cursor(gtk.gdk.ARROW) # TODO: replace this with custom cursor PLAYHEAD_CURSOR = gtk.gdk.Cursor(gtk.gdk.SB_H_DOUBLE_ARROW) GlobalSettings.addConfigOption('edgeSnapDeadband', section = "user-interface", key = "edge-snap-deadband", default = 5, notify = True) PreferencesDialog.addNumericPreference('edgeSnapDeadband', section = _("Behavior"), label = _("Snap Distance (pixels)"), description = _("Threshold distance (in pixels) used for all snapping " "operations"), lower = 0) class PlayheadController(Controller, Zoomable): _cursor = PLAYHEAD_CURSOR
THUMB_HEIGHT = EXPANDED_SIZE - 2 * THUMB_MARGIN_PX THUMB_PERIOD = int(Gst.SECOND / 2) assert Gst.SECOND % THUMB_PERIOD == 0 # For the waveforms, ensures we always have a little extra surface when # scrolling while playing. MARGIN = 500 PREVIEW_GENERATOR_SIGNALS = { "done": (GObject.SIGNAL_RUN_LAST, None, ()), "error": (GObject.SIGNAL_RUN_LAST, None, ()), } GlobalSettings.addConfigSection("previewers") GlobalSettings.addConfigOption("previewers_max_cpu", section="previewers", key="max-cpu-usage", default=90) class PreviewerBin(Gst.Bin, Loggable): """Baseclass for elements gathering data to create previews.""" def __init__(self, bin_desc): Gst.Bin.__init__(self) Loggable.__init__(self) self.internal_bin = Gst.parse_bin_from_description(bin_desc, True) self.add(self.internal_bin) self.add_pad(Gst.GhostPad.new(None, self.internal_bin.sinkpads[0])) self.add_pad(Gst.GhostPad.new(None, self.internal_bin.srcpads[0])) def finalize(self, proxy=None):
from gettext import gettext as _ from pitivi.action import ViewAction from pitivi.stream import VideoStream from pitivi.utils import time_to_string, Seeker from pitivi.log.loggable import Loggable from pitivi.pipeline import PipelineError from pitivi.ui.common import SPACING, hex_to_rgb from pitivi.settings import GlobalSettings from pitivi.ui.dynamic import TimeWidget GlobalSettings.addConfigSection("viewer") GlobalSettings.addConfigOption("viewerDocked", section="viewer", key="docked", default=True) GlobalSettings.addConfigOption("viewerWidth", section="viewer", key="width", default=320) GlobalSettings.addConfigOption("viewerHeight", section="viewer", key="height", default=240) GlobalSettings.addConfigOption("viewerX", section="viewer", key="x-pos", default=0) GlobalSettings.addConfigOption("viewerY", section="viewer",
from gi.repository import Gst from gi.repository import Gtk from gi.repository import Pango from pitivi.configure import get_ui_dir from pitivi.dialogs.prefs import PreferencesDialog from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable from pitivi.utils.timeline import SELECT from pitivi.utils.ui import argb_to_gdk_rgba from pitivi.utils.ui import fix_infobar from pitivi.utils.ui import gdk_rgba_to_argb GlobalSettings.addConfigOption('titleClipLength', section="user-interface", key="title-clip-length", default=5000, notify=True) PreferencesDialog.addNumericPreference('titleClipLength', section="timeline", label=_("Title clip duration"), description=_( "Default clip length (in milliseconds) of titles when inserting on the timeline."), lower=1) FOREGROUND_DEFAULT_COLOR = 0xFFFFFFFF # White BACKGROUND_DEFAULT_COLOR = 0x00000000 # Transparent DEFAULT_FONT_DESCRIPTION = "Sans 36" DEFAULT_VALIGNMENT = GES.TextVAlign.ABSOLUTE DEFAULT_HALIGNMENT = GES.TextHAlign.ABSOLUTE
import os from enum import IntEnum from gettext import gettext as _ from gi.repository import GObject from gi.repository import Peas from pitivi.configure import get_plugins_dir from pitivi.configure import get_user_plugins_dir from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable GlobalSettings.addConfigSection("plugins") GlobalSettings.addConfigOption("ActivePlugins", section="plugins", key="active-plugins", default=[]) class API(GObject.GObject): """Interface that gives access to all the objects inside Pitivi.""" def __init__(self, app): GObject.GObject.__init__(self) self.app = app class PluginType(IntEnum): SYSTEM = 1 USER = 2
from gettext import gettext as _ from pitivi.action import ViewAction from pitivi.stream import VideoStream from pitivi.utils import time_to_string, Seeker from pitivi.log.loggable import Loggable from pitivi.pipeline import PipelineError from pitivi.ui.common import SPACING from pitivi.settings import GlobalSettings from pitivi.ui.dynamic import TimeWidget GlobalSettings.addConfigSection("viewer") GlobalSettings.addConfigOption("viewerDocked", section="viewer", key="docked", default=True) GlobalSettings.addConfigOption("viewerWidth", section="viewer", key="width", default=320) GlobalSettings.addConfigOption("viewerHeight", section="viewer", key="height", default=240) GlobalSettings.addConfigOption("viewerX", section="viewer", key="x-pos", default=0) GlobalSettings.addConfigOption("viewerY", section="viewer",
from pitivi.signalgroup import SignalGroup from pitivi.stream import VideoStream, AudioStream, TextStream, MultimediaStream from pitivi.settings import GlobalSettings from pitivi.utils import beautify_length from pitivi.ui.common import beautify_factory, factory_name, beautify_stream, PADDING from pitivi.log.loggable import Loggable from pitivi.sourcelist import SourceListError SHOW_TREEVIEW = 1 SHOW_ICONVIEW = 2 GlobalSettings.addConfigSection("clip-library") GlobalSettings.addConfigOption( "lastImportFolder", section="clip-library", key="last-folder", environment="PITIVI_IMPORT_FOLDER", default=os.path.expanduser("~"), ) GlobalSettings.addConfigOption( "closeImportDialog", section="clip-library", key="close-import-dialog-after-import", default=True ) GlobalSettings.addConfigOption( "lastClipView", section="clip-library", key="last-clip-view", type_=int, default=SHOW_ICONVIEW ) (COL_ICON, COL_ICON_LARGE, COL_INFOTEXT, COL_FACTORY, COL_URI, COL_LENGTH, COL_SEARCH_TEXT, COL_SHORT_TEXT) = range(8) ui = """ <ui> <menubar name="MainMenuBar">
from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable # Make sure gst knowns about our own GstPresets Gst.preset_set_app_dir(get_gstpresets_dir()) class ProxyingStrategy: AUTOMATIC = "automatic" ALL = "all" NOTHING = "nothing" GlobalSettings.addConfigSection("proxy") GlobalSettings.addConfigOption('proxyingStrategy', section='proxy', key='proxying-strategy', default=ProxyingStrategy.AUTOMATIC) GlobalSettings.addConfigOption('numTranscodingJobs', section='proxy', key='num-proxying-jobs', default=4) ENCODING_FORMAT_PRORES = "prores-opus-in-matroska.gep" ENCODING_FORMAT_JPEG = "jpeg-opus-in-matroska.gep" def createEncodingProfileSimple(container_caps, audio_caps, video_caps): c = GstPbutils.EncodingContainerProfile.new(None, None, Gst.Caps(container_caps), None)
import pitivi.ui.dnd as dnd from pitivi.configure import get_pixmap_dir from pitivi.log.loggable import Loggable from pitivi.effects import AUDIO_EFFECT, VIDEO_EFFECT from pitivi.ui.common import SPACING, PADDING from pitivi.settings import GlobalSettings SHOW_TREEVIEW = 1 SHOW_ICONVIEW = 2 GlobalSettings.addConfigSection('effect-library') GlobalSettings.addConfigOption('lastEffectView', section='effect-library', key='last-effect-view', type_=int, default=SHOW_ICONVIEW) (COL_NAME_TEXT, COL_DESC_TEXT, COL_EFFECT_TYPE, COL_EFFECT_CATEGORIES, COL_FACTORY, COL_ELEMENT_NAME, COL_ICON) = range(7) INVISIBLE = gtk.gdk.pixbuf_new_from_file( os.path.join(get_pixmap_dir(), "invisible.png")) class EffectList(gtk.VBox, Loggable): """ Widget for listing effects """ def __init__(self, instance, uiman): gtk.VBox.__init__(self) Loggable.__init__(self)
from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable # Make sure gst knowns about our own GstPresets Gst.preset_set_app_dir(get_gstpresets_dir()) class ProxyingStrategy: AUTOMATIC = "automatic" ALL = "all" NOTHING = "nothing" GlobalSettings.addConfigSection("proxy") GlobalSettings.addConfigOption( "proxyingStrategy", section="proxy", key="proxying-strategy", default=ProxyingStrategy.AUTOMATIC ) GlobalSettings.addConfigOption("numTranscodingJobs", section="proxy", key="num-proxying-jobs", default=4) ENCODING_FORMAT_PRORES = "prores-opus-in-matroska.gep" ENCODING_FORMAT_JPEG = "jpeg-opus-in-matroska.gep" def createEncodingProfileSimple(container_caps, audio_caps, video_caps): c = GstPbutils.EncodingContainerProfile.new(None, None, Gst.Caps(container_caps), None) a = GstPbutils.EncodingAudioProfile.new(Gst.Caps(audio_caps), None, None, 0) v = GstPbutils.EncodingVideoProfile.new(Gst.Caps(video_caps), None, None, 0) c.add_profile(a) c.add_profile(v)
from pitivi.utils.loggable import Loggable from pitivi.utils.misc import uri_is_valid from pitivi.utils.ui import beautify_length, beautify_stream,\ SPACING from pitivi.viewer import ViewerWidget DEFAULT_AUDIO_IMAGE = os.path.join(get_pixmap_dir(), "pitivi-sound.png") PREVIEW_WIDTH = 250 PREVIEW_HEIGHT = 100 GlobalSettings.addConfigSection('filechooser-preview') GlobalSettings.addConfigOption('FCEnablePreview', section='filechooser-preview', key='do-preview-on-clip-import', default=True) GlobalSettings.addConfigOption('FCpreviewWidth', section='filechooser-preview', key='video-preview-width', default=PREVIEW_WIDTH) GlobalSettings.addConfigOption('FCpreviewHeight', section='filechooser-preview', key='video-preview-height', default=PREVIEW_HEIGHT) class PreviewWidget(gtk.VBox, Loggable): def __init__(self, instance): gtk.VBox.__init__(self)
from pitivi.configure import get_pixmap_dir import pitivi.utils as utils from pitivi.utils.misc import big_to_cairo_alpha_mask, big_to_cairo_red_mask, big_to_cairo_green_mask, big_to_cairo_blue_mask from pitivi.utils.receiver import receiver, handler from pitivi.utils.timeline import Zoomable from pitivi.utils.signal import Signallable from pitivi.utils.loggable import Loggable from pitivi.dialogs.prefs import PreferencesDialog GlobalSettings.addConfigSection("thumbnailing") GlobalSettings.addConfigOption("thumbnailSpacingHint", section="thumbnailing", key="spacing-hint", default=5, notify=True) GlobalSettings.addConfigOption("thumbnailPeriod", section="thumbnailing", key="thumbnail-period", default=gst.SECOND, notify=True) PreferencesDialog.addNumericPreference("thumbnailSpacingHint", section=_("Appearance"), label=_("Thumbnail gap"), lower=0, description=_("The spacing between thumbnails, in pixels"))
import pitivi.ui.dnd as dnd from pitivi.configure import get_pixmap_dir from pitivi.log.loggable import Loggable from pitivi.effects import AUDIO_EFFECT, VIDEO_EFFECT from pitivi.ui.common import SPACING, PADDING from pitivi.settings import GlobalSettings SHOW_TREEVIEW = 1 SHOW_ICONVIEW = 2 GlobalSettings.addConfigSection('effect-library') GlobalSettings.addConfigOption('lastEffectView', section='effect-library', key='last-effect-view', type_=int, default=SHOW_ICONVIEW) (COL_NAME_TEXT, COL_DESC_TEXT, COL_EFFECT_TYPE, COL_EFFECT_CATEGORIES, COL_FACTORY, COL_ELEMENT_NAME, COL_ICON) = range(7) INVISIBLE = gtk.gdk.pixbuf_new_from_file(os.path.join(get_pixmap_dir(), "invisible.png")) class EffectList(gtk.VBox, Loggable):
RIGHT_SIDE = gtk.gdk.Cursor(gtk.gdk.RIGHT_SIDE) ARROW = gtk.gdk.Cursor(gtk.gdk.ARROW) TRIMBAR_PIXBUF = gtk.gdk.pixbuf_new_from_file( os.path.join(configure.get_pixmap_dir(), "trimbar-normal.png")) TRIMBAR_PIXBUF_FOCUS = gtk.gdk.pixbuf_new_from_file( os.path.join(configure.get_pixmap_dir(), "trimbar-focused.png")) NAME_HOFFSET = 10 NAME_VOFFSET = 5 NAME_PADDING = 2 NAME_PADDING2X = 2 * NAME_PADDING import gst GlobalSettings.addConfigOption('videoClipBg', section='user-interface', key='videoclip-background', default=0x3182bdC0, notify=True) PreferencesDialog.addColorPreference( 'videoClipBg', section=_("Appearance"), label=_("Clip Background (Video)"), description=_("The background color for clips in video tracks.")) GlobalSettings.addConfigOption('audioClipBg', section='user-interface', key='audioclip-background', default=0x3182bdC0, notify=True)
from pitivi.utils.timeline import Zoomable, Selection, UNSELECT from pitivi.settings import GlobalSettings from pitivi.dialogs.prefs import PreferencesDialog from pitivi.utils.ui import EXPANDED_SIZE, SPACING, PLAYHEAD_WIDTH, CONTROL_WIDTH, TYPE_PITIVI_EFFECT from pitivi.utils.widgets import ZoomBox from ruler import ScaleRuler from gettext import gettext as _ from pitivi.utils.pipeline import Pipeline, PipelineError from elements import URISourceElement, TransitionElement, Ghostclip from controls import ControlContainer GlobalSettings.addConfigOption('edgeSnapDeadband', section="user-interface", key="edge-snap-deadband", default=5, notify=True) PreferencesDialog.addNumericPreference('edgeSnapDeadband', section=_("Behavior"), label=_("Snap distance"), description=_("Threshold (in pixels) at which two clips will snap together " "when dragging or trimming."), lower=0) GlobalSettings.addConfigOption('imageClipLength', section="user-interface", key="image-clip-length", default=1000, notify=True)
# Private stuff # LEFT_SIDE = Gdk.Cursor.new(Gdk.CursorType.LEFT_SIDE) RIGHT_SIDE = Gdk.Cursor.new(Gdk.CursorType.RIGHT_SIDE) ARROW = Gdk.Cursor.new(Gdk.CursorType.ARROW) TRIMBAR_PIXBUF = GdkPixbuf.Pixbuf.new_from_file( os.path.join(configure.get_pixmap_dir(), "trimbar-normal.png")) TRIMBAR_PIXBUF_FOCUS = GdkPixbuf.Pixbuf.new_from_file( os.path.join(configure.get_pixmap_dir(), "trimbar-focused.png")) NAME_HOFFSET = 10 NAME_VOFFSET = 5 NAME_PADDING = 2 NAME_PADDING2X = 2 * NAME_PADDING GlobalSettings.addConfigOption('videoClipBg', section='user-interface', key='videoclip-background', default=993737707, notify=True) PreferencesDialog.addColorPreference('videoClipBg', section=_("Appearance"), label=_("Color for video clips"), description=_("The background color for clips in video tracks.")) GlobalSettings.addConfigOption('audioClipBg', section='user-interface', key='audioclip-background', default=996806336, notify=True) PreferencesDialog.addColorPreference('audioClipBg',
from gi.repository import Pango from gi.repository import GstPbutils from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable from pitivi.utils.misc import uri_is_valid from pitivi.utils.pipeline import AssetPipeline from pitivi.utils.ui import beautify_length, beautify_stream, SPACING from pitivi.viewer import ViewerWidget PREVIEW_WIDTH = 250 PREVIEW_HEIGHT = 100 GlobalSettings.addConfigSection('filechooser-preview') GlobalSettings.addConfigOption('FCEnablePreview', section='filechooser-preview', key='do-preview-on-clip-import', default=True) GlobalSettings.addConfigOption('FCpreviewWidth', section='filechooser-preview', key='video-preview-width', default=PREVIEW_WIDTH) GlobalSettings.addConfigOption('FCpreviewHeight', section='filechooser-preview', key='video-preview-height', default=PREVIEW_HEIGHT) acceptable_tags = [ Gst.TAG_ALBUM_ARTIST, Gst.TAG_ARTIST, Gst.TAG_TITLE, Gst.TAG_ALBUM,
from pitivi.elements.thumbnailsink import CairoSurfaceThumbnailSink from pitivi.elements.arraysink import ArraySink from pitivi.signalinterface import Signallable import pitivi.stream as stream from pitivi.settings import GlobalSettings from pitivi.ui.zoominterface import Zoomable from pitivi.log.loggable import Loggable from pitivi.factories.file import PictureFileSourceFactory from pitivi.thumbnailcache import ThumbnailCache from pitivi.ui.prefs import PreferencesDialog from pitivi.receiver import receiver, handler GlobalSettings.addConfigSection("thumbnailing") GlobalSettings.addConfigOption("thumbnailSpacingHint", section="thumbnailing", key="spacing-hint", default=2, notify=True) PreferencesDialog.addNumericPreference( "thumbnailSpacingHint", section=_("Appearance"), label=_("Thumbnail Gap (pixels)"), lower=0, description=_("The gap between thumbnails")) # this default works out to a maximum of ~ 1.78 MiB per factory, assuming: # 4:3 aspect ratio # 4 bytes per pixel # 50 pixel height GlobalSettings.addConfigOption("thumbnailCacheSize",
THUMB_MARGIN_PX = 3 # For the waveforms, ensures we always have a little extra surface when # scrolling while playing. MARGIN = 500 PREVIEW_GENERATOR_SIGNALS = { "done": (GObject.SIGNAL_RUN_LAST, None, ()), "error": (GObject.SIGNAL_RUN_LAST, None, ()), } THUMB_HEIGHT = EXPANDED_SIZE - 2 * THUMB_MARGIN_PX GlobalSettings.addConfigSection("previewers") GlobalSettings.addConfigOption("previewers_max_cpu", section="previewers", key="max-cpu-usage", default=90) class PreviewerBin(Gst.Bin, Loggable): """Baseclass for elements gathering datas to create previews.""" def __init__(self, bin_desc): Gst.Bin.__init__(self) Loggable.__init__(self) self.internal_bin = Gst.parse_bin_from_description(bin_desc, True) self.add(self.internal_bin) self.add_pad(Gst.GhostPad.new(None, self.internal_bin.sinkpads[0])) self.add_pad(Gst.GhostPad.new(None, self.internal_bin.srcpads[0])) def finalize(self, proxy=None):
from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable # Make sure gst knowns about our own GstPresets Gst.preset_set_app_dir(get_gstpresets_dir()) class ProxyingStrategy: AUTOMATIC = "automatic" ALL = "all" NOTHING = "nothing" GlobalSettings.addConfigSection("proxy") GlobalSettings.addConfigOption('proxyingStrategy', section='proxy', key='proxying-strategy', default=ProxyingStrategy.AUTOMATIC) GlobalSettings.addConfigOption('numTranscodingJobs', section='proxy', key='num-proxying-jobs', default=4) GlobalSettings.addConfigOption("max_cpu_usage", section="proxy", key="max-cpu-usage", default=10) ENCODING_FORMAT_PRORES = "prores-raw-in-matroska.gep" ENCODING_FORMAT_JPEG = "jpeg-raw-in-matroska.gep" def createEncodingProfileSimple(container_caps, audio_caps, video_caps):
from pitivi.timeline.timeline import TimelineContainer from pitivi.titleeditor import TitleEditor from pitivi.transitions import TransitionsListWidget from pitivi.utils.loggable import Loggable from pitivi.utils.misc import path_from_uri from pitivi.utils.ui import beautify_time_delta from pitivi.utils.ui import clear_styles from pitivi.utils.ui import info_name from pitivi.utils.ui import PADDING from pitivi.utils.ui import SPACING from pitivi.utils.ui import TIMELINE_CSS from pitivi.viewer.viewer import ViewerContainer GlobalSettings.addConfigSection("main-window") GlobalSettings.addConfigOption('mainWindowHPanePosition', section="main-window", key="hpane-position", type_=int) GlobalSettings.addConfigOption('mainWindowMainHPanePosition', section="main-window", key="main-hpane-position", type_=int) GlobalSettings.addConfigOption('mainWindowVPanePosition', section="main-window", key="vpane-position", type_=int) GlobalSettings.addConfigOption('lastProjectFolder', section="main-window", key="last-folder", environment="PITIVI_PROJECT_FOLDER", default=os.path.expanduser("~"))
from pitivi.stream import VideoStream, AudioStream, TextStream, \ MultimediaStream from pitivi.settings import GlobalSettings from pitivi.utils import beautify_length from pitivi.ui.common import beautify_factory, factory_name, \ beautify_stream, PADDING from pitivi.log.loggable import Loggable from pitivi.sourcelist import SourceListError SHOW_TREEVIEW = 1 SHOW_ICONVIEW = 2 GlobalSettings.addConfigSection('clip-library') GlobalSettings.addConfigOption('lastImportFolder', section='clip-library', key='last-folder', environment='PITIVI_IMPORT_FOLDER', default=os.path.expanduser("~")) GlobalSettings.addConfigOption('closeImportDialog', section='clip-library', key='close-import-dialog-after-import', default=True) GlobalSettings.addConfigOption('lastClipView', section='clip-library', key='last-clip-view', type_=int, default=SHOW_ICONVIEW) (COL_ICON, COL_ICON_LARGE, COL_INFOTEXT, COL_FACTORY, COL_URI, COL_LENGTH, COL_SEARCH_TEXT, COL_SHORT_TEXT) = range(8)
import os from gettext import gettext as _ from gi.repository import Gtk from pitivi.configure import get_ui_dir from pitivi.settings import GlobalSettings from pitivi.utils import widgets from pitivi.utils.loggable import Loggable from pitivi.utils.ui import SPACING GlobalSettings.addConfigSection("user-interface") GlobalSettings.addConfigOption('prefsDialogWidth', section="user-interface", key="prefs-dialog-width", default=600) GlobalSettings.addConfigOption('prefsDialogHeight', section="user-interface", key="prefs-dialog-height", default=400) class PreferencesDialog(Loggable): """Preferences for how the app works.""" prefs = {} section_names = {"timeline": _("Timeline")} def __init__(self, app):
def add_option(): GlobalSettings.addConfigOption("optionA1", section="section-a", key="option-a-1", default=False)
from pitivi.elements.singledecodebin import SingleDecodeBin from pitivi.elements.thumbnailsink import CairoSurfaceThumbnailSink from pitivi.elements.arraysink import ArraySink from pitivi.signalinterface import Signallable import pitivi.stream as stream from pitivi.settings import GlobalSettings from pitivi.ui.zoominterface import Zoomable from pitivi.log.loggable import Loggable from pitivi.factories.file import PictureFileSourceFactory from pitivi.thumbnailcache import ThumbnailCache from pitivi.ui.prefs import PreferencesDialog from pitivi.receiver import receiver, handler GlobalSettings.addConfigSection("thumbnailing") GlobalSettings.addConfigOption( "thumbnailSpacingHint", section="thumbnailing", key="spacing-hint", default=2, notify=True ) PreferencesDialog.addNumericPreference( "thumbnailSpacingHint", section=_("Appearance"), label=_("Thumbnail Gap (pixels)"), lower=0, description=_("The gap between thumbnails"), ) # this default works out to a maximum of ~ 1.78 MiB per factory, assuming: # 4:3 aspect ratio # 4 bytes per pixel # 50 pixel height GlobalSettings.addConfigOption("thumbnailCacheSize", section="thumbnailing", key="cache-size", default=250)
def test_read_config_file(self): GlobalSettings.addConfigSection("section-1") GlobalSettings.addConfigOption("section1OptionA", section="section-1", key="option-a", default=50) GlobalSettings.addConfigOption("section1OptionB", section="section-1", key="option-b", default=False) GlobalSettings.addConfigOption("section1OptionC", section="section-1", key="option-c", default="") GlobalSettings.addConfigOption("section1OptionD", section="section-1", key="option-d", default=[]) GlobalSettings.addConfigOption("section1OptionE", section="section-1", key="option-e", default=["foo"]) GlobalSettings.addConfigOption("section1OptionF", section="section-1", key="option-f", default=Gdk.RGBA()) self.assertEqual(GlobalSettings.section1OptionA, 50) self.assertEqual(GlobalSettings.section1OptionB, False) self.assertEqual(GlobalSettings.section1OptionC, "") self.assertEqual(GlobalSettings.section1OptionD, []) self.assertEqual(GlobalSettings.section1OptionE, ["foo"]) self.assertEqual(GlobalSettings.section1OptionF, Gdk.RGBA()) self.assertIs(GlobalSettings.options["section-1"]["section1OptionA"][0], int) self.assertIs(GlobalSettings.options["section-1"]["section1OptionB"][0], bool) self.assertIs(GlobalSettings.options["section-1"]["section1OptionC"][0], str) self.assertIs(GlobalSettings.options["section-1"]["section1OptionD"][0], list) self.assertIs(GlobalSettings.options["section-1"]["section1OptionE"][0], list) self.assertIs(GlobalSettings.options["section-1"]["section1OptionF"][0], Gdk.RGBA) conf_file_content = ("[section-1]\n" "option-a = 10\n" "option-b = True\n" "option-c = Pigs fly\n" "option-d=\n" "option-e=\n" " elmo\n" " knows\n" " where you live\n" "option-f=rgba(51,102,255,0.4)") with mock.patch("pitivi.settings.xdg_config_home") as xdg_config_home,\ tempfile.TemporaryDirectory() as temp_dir: with open(os.path.join(temp_dir, "pitivi.conf"), "w") as tmp_file: tmp_file.write(conf_file_content) xdg_config_home.return_value = temp_dir settings = GlobalSettings() self.assertEqual(settings.section1OptionA, 10) self.assertEqual(settings.section1OptionB, True) self.assertEqual(settings.section1OptionC, "Pigs fly") self.assertEqual(settings.section1OptionD, []) expected_e_value = [ "elmo", "knows", "where you live" ] self.assertEqual(settings.section1OptionE, expected_e_value) self.assertEqual(settings.section1OptionF, Gdk.RGBA(0.2, 0.4, 1.0, 0.4))
from urllib.parse import unquote from gi.repository import Gio from gi.repository import Gtk from pitivi.configure import get_pixmap_dir from pitivi.dialogs.about import AboutDialog from pitivi.editorperspective import EditorPerspective from pitivi.greeterperspective import GreeterPerspective from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable from pitivi.utils.misc import show_user_manual GlobalSettings.addConfigOption('mainWindowX', section="main-window", key="X", default=0, type_=int) GlobalSettings.addConfigOption('mainWindowY', section="main-window", key="Y", default=0, type_=int) GlobalSettings.addConfigOption('mainWindowWidth', section="main-window", key="width", default=-1, type_=int) GlobalSettings.addConfigOption('mainWindowHeight', section="main-window", key="height",
from gi.repository import Gio from gi.repository import Gtk from pitivi.configure import get_pixmap_dir from pitivi.dialogs.about import AboutDialog from pitivi.dialogs.prefs import PreferencesDialog from pitivi.editorperspective import EditorPerspective from pitivi.greeterperspective import GreeterPerspective from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable from pitivi.utils.misc import show_user_manual GlobalSettings.addConfigOption('mainWindowX', section="main-window", key="X", default=0, type_=int) GlobalSettings.addConfigOption('mainWindowY', section="main-window", key="Y", default=0, type_=int) GlobalSettings.addConfigOption('mainWindowWidth', section="main-window", key="width", default=-1, type_=int) GlobalSettings.addConfigOption('mainWindowHeight', section="main-window", key="height", default=-1, type_=int) GlobalSettings.addConfigSection('export') GlobalSettings.addConfigOption('lastExportFolder', section='export', key="last-export-folder",
from pitivi.ui.sourcelist import SourceList from pitivi.ui.effectlist import EffectList from pitivi.ui.clipproperties import ClipProperties from pitivi.ui.common import beautify_factory from pitivi.utils import beautify_length from pitivi.ui.zoominterface import Zoomable from pitivi.ui.startupwizard import StartUpWizard if HAVE_GCONF: D_G_INTERFACE = "/desktop/gnome/interface" for gconf_dir in (D_G_INTERFACE, ): gconf.client_get_default ().add_dir (gconf_dir, gconf.CLIENT_PRELOAD_NONE) GlobalSettings.addConfigOption("fileSupportEnabled", environment="PITIVI_FILE_SUPPORT", default=False) GlobalSettings.addConfigSection("main-window") GlobalSettings.addConfigOption('mainWindowFullScreen', section="main-window", key="full-screen", default=False) GlobalSettings.addConfigOption('mainWindowHPanePosition', section="main-window", key="hpane-position", type_=int) GlobalSettings.addConfigOption('mainWindowMainHPanePosition', section="main-window", key="main-hpane-position", type_=int)
from pitivi.configure import get_ui_dir from pitivi.configure import get_user_plugins_dir from pitivi.pluginmanager import PluginManager from pitivi.settings import GlobalSettings from pitivi.utils import widgets from pitivi.utils.loggable import Loggable from pitivi.utils.ui import alter_style_class from pitivi.utils.ui import fix_infobar from pitivi.utils.ui import PADDING from pitivi.utils.ui import PREFERENCES_CSS from pitivi.utils.ui import SPACING GlobalSettings.addConfigSection("user-interface") GlobalSettings.addConfigOption('prefsDialogWidth', section="user-interface", key="prefs-dialog-width", default=600) GlobalSettings.addConfigOption('prefsDialogHeight', section="user-interface", key="prefs-dialog-height", default=400) class PreferencesDialog(Loggable): """Preferences for how the app works.""" _instance = None prefs = {} section_names = { "timeline": _("Timeline"), "_plugins": _("Plugins"),
from pitivi.dialogs.filelisterrordialog import FileListErrorDialog from pitivi.mediafilespreviewer import PreviewWidget from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable from pitivi.utils.misc import PathWalker, quote_uri, path_from_uri from pitivi.utils.ui import beautify_info, beautify_length, info_name, \ URI_TARGET_ENTRY, FILE_TARGET_ENTRY, SPACING # Values used in the settings file. SHOW_TREEVIEW = 1 SHOW_ICONVIEW = 2 GlobalSettings.addConfigSection('clip-library') GlobalSettings.addConfigOption('lastImportFolder', section='clip-library', key='last-folder', environment='PITIVI_IMPORT_FOLDER', default=os.path.expanduser("~")) GlobalSettings.addConfigOption('closeImportDialog', section='clip-library', key='close-import-dialog-after-import', default=True) GlobalSettings.addConfigOption('lastClipView', section='clip-library', key='last-clip-view', type_=int, default=SHOW_ICONVIEW) STORE_MODEL_STRUCTURE = ( GdkPixbuf.Pixbuf, GdkPixbuf.Pixbuf, str, object, str, str, str)
from pitivi.sourcelist import SourceListError from pitivi.ui.sourcelist import SourceList from pitivi.ui.effectlist import EffectList from pitivi.ui.clipproperties import ClipProperties from pitivi.ui.common import beautify_factory from pitivi.utils import beautify_length from pitivi.ui.zoominterface import Zoomable if HAVE_GCONF: D_G_INTERFACE = "/desktop/gnome/interface" for gconf_dir in (D_G_INTERFACE, ): gconf.client_get_default ().add_dir (gconf_dir, gconf.CLIENT_PRELOAD_NONE) GlobalSettings.addConfigOption("fileSupportEnabled", environment="PITIVI_FILE_SUPPORT", default=False) GlobalSettings.addConfigSection("main-window") GlobalSettings.addConfigOption('mainWindowFullScreen', section="main-window", key="full-screen", default=False) GlobalSettings.addConfigOption('mainWindowHPanePosition', section="main-window", key="hpane-position", type_=int) GlobalSettings.addConfigOption('mainWindowMainHPanePosition', section="main-window", key="main-hpane-position", type_=int)
from gettext import gettext as _ from time import time from math import pi from pitivi.settings import GlobalSettings from pitivi.utils.loggable import Loggable from pitivi.utils.misc import format_ns from pitivi.utils.pipeline import AssetPipeline, Seeker from pitivi.utils.ui import SPACING, hex_to_rgb from pitivi.utils.widgets import TimeWidget import platform GlobalSettings.addConfigSection("viewer") GlobalSettings.addConfigOption("viewerDocked", section="viewer", key="docked", default=True) GlobalSettings.addConfigOption("viewerWidth", section="viewer", key="width", default=320) GlobalSettings.addConfigOption("viewerHeight", section="viewer", key="height", default=240) GlobalSettings.addConfigOption("viewerX", section="viewer", key="x-pos", default=0) GlobalSettings.addConfigOption("viewerY", section="viewer",
from pitivi.timeline.timeline import TimelineContainer from pitivi.titleeditor import TitleEditor from pitivi.transitions import TransitionsListWidget from pitivi.utils.loggable import Loggable from pitivi.utils.misc import path_from_uri from pitivi.utils.ui import beautify_time_delta from pitivi.utils.ui import EDITOR_PERSPECTIVE_CSS from pitivi.utils.ui import info_name from pitivi.utils.ui import PADDING from pitivi.utils.ui import SPACING from pitivi.viewer.viewer import ViewerContainer GlobalSettings.addConfigSection("main-window") GlobalSettings.addConfigOption('mainWindowHPanePosition', section="main-window", key="hpane-position", type_=int) GlobalSettings.addConfigOption('mainWindowMainHPanePosition', section="main-window", key="main-hpane-position", type_=int) GlobalSettings.addConfigOption('mainWindowVPanePosition', section="main-window", key="vpane-position", type_=int) GlobalSettings.addConfigOption('lastProjectFolder', section="main-window", key="last-folder", environment="PITIVI_PROJECT_FOLDER", default=os.path.expanduser("~"))