# Swedish translation for gtkmm-documentation. # Copyright © 2022, 2023 gtkmm-documentation's COPYRIGHT HOLDER # This file is distributed under the same license as the gtkmm-documentation package. # Anders Jonsson , 2022, 2023. # msgid "" msgstr "" "Project-Id-Version: gtkmm-documentation master\n" "POT-Creation-Date: 2023-03-16 13:31+0000\n" "PO-Revision-Date: 2023-04-08 11:18+0200\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.2.2\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "Anders Jonsson , 2022, 2023" #. (itstool) path: info/title #: C/index-in.docbook:45 msgid "Programming with gtkmm 4" msgstr "Programmering med gtkmm 4" #. (itstool) path: authorgroup/author #: C/index-in.docbook:47 msgid "MurrayCumming" msgstr "MurrayCumming" #. (itstool) path: authorgroup/author #: C/index-in.docbook:50 msgid "BernhardRieder Chapter on \"Timeouts\"." msgstr "BernhardRieder Kapitlet ”Timeout”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:54 msgid "" "JonathonJongsma Chapter on \"Drawing with Cairo\". " "Chapter on \"Working with gtkmm's Source Code\". Chapter on \"Recent Files\"." msgstr "" "JonathonJongsma Kapitlet ”Rita med Cairo”. " "Kapitlet ”Arbeta med gtkmm:s källkod”. Kapitlet ”Senaste filer”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:60 msgid "" "OleLaursen Parts of chapter on \"Internationalization\"." msgstr "" "OleLaursen Delar av kapitlet ”Internationalisering”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:64 msgid "" "MarkoAnastasov Chapter on \"Printing\". Parts of " "chapter on \"Internationalization\"." msgstr "" "MarkoAnastasov Kapitlet om ”Utskrift”. Delar av " "kapitlet ”Internationalisering”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:69 msgid "" "DanielElstner Section \"Build Structure\" of chapter on \"Wrapping " "C Libraries with gmmproc\"." msgstr "" "DanielElstner Avsnittet ”Byggstruktur” i kapitlet ”Omsluta C-" "bibliotek med gmmproc”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:73 msgid "ChrisVine Chapter on \"Multi-threaded programs\"." msgstr "ChrisVine Kapitlet ”Flertrådade program”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:77 msgid "DavidKing Section on Gtk::Grid." msgstr "DavidKing Avsnittet om Gtk::Grid." #. (itstool) path: authorgroup/author #: C/index-in.docbook:81 msgid "PedroFerreira Chapter on \"Keyboard Events\"." msgstr "PedroFerreira Kapitlet ”Tangentbordshändelser”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:85 msgid "" "KjellAhlstedt Update from gtkmm 3 to gtkmm 4. " "Chapter on \"Building applications\". Chapter on \"The DropDown Widget\". Chapter on \"ListView, " "GridView, ColumnView\"." msgstr "" "KjellAhlstedt Uppdatering från gtkmm 3 till gtkmm 4. " "Kapitlet ”Bygga program”. Kapitlet ”DropDown-komponenten”. Kapitlet ”ListView, GridView, " "ColumnView”." #. (itstool) path: abstract/para #: C/index-in.docbook:96 msgid "" "This book explains key concepts of the gtkmm C++ API for creating user interfaces. It also introduces the main user " "interface elements (\"widgets\")." msgstr "" "Denna bok förklarar nyckelkoncept i gtkmm:s C++-API för att skapa användargränssnitt. Den introducerar också " "huvudelementen i användargränssnitt (”komponenter”)." #. (itstool) path: info/copyright #: C/index-in.docbook:99 msgid "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Murray Cumming" msgstr "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Murray Cumming" #. (itstool) path: legalnotice/para #: C/index-in.docbook:105 msgid "" "Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any " "later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may " "obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to: Free " "Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." msgstr "" "Tillstånd att kopiera, distribuera och/eller modifiera detta dokument ges under villkoren i GNU Free Documentation License, version 1.2 eller " "senare, utgivet av Free Software Foundation, utan standardavsnitt och omslagstexter. Du kan erhålla en kopia av GNU Free Documentation License " "från Free Software Foundation genom att besöka deras webbplats eller genom att skriva till: Free Software Foundation, Inc., 59 Temple Place - " "Suite 330, Boston, MA 02111-1307, USA." #. (itstool) path: chapter/title #: C/index-in.docbook:116 msgid "Introduction" msgstr "Introduktion" #. (itstool) path: section/title #: C/index-in.docbook:119 msgid "This book" msgstr "Denna bok" #. (itstool) path: section/para #: C/index-in.docbook:121 msgid "" "This book explains key concepts of the gtkmm C++ API for creating user interfaces. It also introduces the main user " "interface elements (\"widgets\"). Although it mentions classes, constructors, and methods, it does not go into great detail. Therefore, for " "full API information you should follow the links into the reference documentation." msgstr "" "Denna bok förklarar nyckelkoncept i gtkmm:s C++-API för att skapa användargränssnitt. Den introducerar också " "huvudelementen i användargränssnitt (”komponenter”). Även om den nämner klasser, konstruktorer och metoder så går den inte på djupet. För " "fullständig API-information bör du därmed följa länkarna till referensdokumentationen." #. (itstool) path: section/para #: C/index-in.docbook:123 msgid "This book assumes a good understanding of C++, and how to create C++ programs." msgstr "Denna bok förutsätter en god förståelse av C++ och hur du skapar C++-program." #. (itstool) path: section/para #: C/index-in.docbook:125 msgid "" "We would very much like to hear of any problems you have learning gtkmm with this document, and would appreciate " "input regarding improvements. Please see the Contributing section for further information." msgstr "" "Vi vill gärna veta om eventuella problem du har när du lär dig gtkmm med detta dokument, och skulle uppskatta " "förslag på förbättringar. Se avsnittet Bidra för mer information." #. (itstool) path: section/title #: C/index-in.docbook:133 msgid "gtkmm" msgstr "gtkmm" #. (itstool) path: section/para #: C/index-in.docbook:135 msgid "" "gtkmm is a C++ wrapper for GTK, a library used to create graphical " "user interfaces. It is licensed using the LGPL license, so you can develop open software, free software, or even commercial non-free software " "using gtkmm without purchasing licenses." msgstr "" "gtkmm är ett C++-omslag för GTK, ett bibliotek som används för att " "skapa grafiska användargränssnitt. Det är licensierat under licensen LGPL, så du kan utveckla öppen programvara, fri programvara eller till och " "med kommersiell icke-fri programvara med gtkmm utan att köpa licenser." #. (itstool) path: section/para #: C/index-in.docbook:143 msgid "" "gtkmm was originally named gtk-- because GTK was originally named GTK+ and had a + in the name. However, as -- is " "not easily indexed by search engines, the package generally went by the name gtkmm, and that's what we stuck with." msgstr "" "gtkmm kallades ursprungligen gtk-- eftersom GTK i början hette GTK+ och hade ett + i namnet. Men eftersom -- inte " "lätt kan indexeras av sökmotorer så gick paketet allmänt under namnet gtkmm vilket vi sedan höll oss till." #. (itstool) path: section/title #: C/index-in.docbook:148 msgid "Why use gtkmm instead of GTK?" msgstr "Varför använda gtkmm i stället för GTK?" #. (itstool) path: section/para #: C/index-in.docbook:150 msgid "" "gtkmm allows you to write code using normal C++ techniques such as encapsulation, derivation, and polymorphism. As a " "C++ programmer you probably already realize that this leads to clearer and better organized code." msgstr "" "gtkmm låter dig skriva kod med vanliga C++-tekniker som inkapsling, härledning och polymorfism. Som C++-" "programmerare inser du förmodligen redan att detta leder till tydligare och bättre organiserad kod." #. (itstool) path: section/para #: C/index-in.docbook:151 msgid "" "gtkmm is more type-safe, so the compiler can detect errors that would only be detected at run time when using C. " "This use of specific types also makes the API clearer because you can see what types should be used just by looking at a method's declaration." msgstr "" "gtkmm är mer typsäkert, så kompilatorn kan upptäcka fel som bara skulle upptäckas vid körning om du använde C. Denna " "användning av specifika typer gör också API:t tydligare eftersom du kan se vilka typer som ska användas bara genom att titta på en metods " "deklaration." #. (itstool) path: section/para #: C/index-in.docbook:152 msgid "" "Inheritance can be used to derive new widgets. The derivation of new widgets in GTK C code is so complicated and error prone that almost no C " "coders do it. As a C++ developer you know that derivation is an essential Object Orientated technique." msgstr "" "Arv kan användas för att härleda nya komponenter. Härledandet av nya komponenter i GTK:s C-kod är så komplicerad och inbjudande till fel, så " "att nästan inga C-kodare gör det. Som C++-utvecklare vet du att härledning är en viktig teknik i objektorientering." #. (itstool) path: section/para #: C/index-in.docbook:153 msgid "" "Member instances can be used, simplifying memory management. All GTK C widgets are dealt with by use of pointers. As a C++ coder you know that " "pointers should be avoided where possible." msgstr "" "Medlemsinstanser kan användas vilket förenklar minneshantering. Alla C-komponenter i GTK hanteras genom användning av pekare. Som C++-kodare " "vet du att pekare ska undvikas när möjligt." #. (itstool) path: section/para #: C/index-in.docbook:154 msgid "gtkmm involves less code compared to GTK, which uses prefixed function names and lots of cast macros." msgstr "gtkmm innefattar mindre kod än GTK, vilket använder prefixade funktionsnamn och många typkonverteringsmakron." #. (itstool) path: section/title #: C/index-in.docbook:158 msgid "gtkmm compared to Qt" msgstr "gtkmm jämfört med Qt" #. (itstool) path: section/para #: C/index-in.docbook:160 msgid "Trolltech's Qt is the closest competition to gtkmm, so it deserves discussion." msgstr "Trolltechs Qt är den närmaste konkurrenten till gtkmm, så det förtjänar att diskuteras." #. (itstool) path: section/para #: C/index-in.docbook:162 msgid "" "gtkmm developers tend to prefer gtkmm to Qt because gtkmm does " "things in a more C++ way. Qt originates from a time when C++ and the standard library were not standardized or well supported by compilers. It " "therefore duplicates a lot of stuff that is now in the standard library, such as containers and type information. Most significantly, Trolltech " "modified the C++ language to provide signals, so that Qt classes cannot be used easily with non-Qt classes. gtkmm " "was able to use standard C++ to provide signals without changing the C++ language. See the FAQ for more detailed differences." msgstr "" "gtkmm-utvecklare tenderar att föredra gtkmm över Qt för att gtkmm gör saker på ett mer C++-aktigt sätt. Qt härstammar från en tid då C++ och standardbiblioteket varken standardiserats eller " "stöddes ordentligt av kompilatorer. Det duplicerar därför mycket saker som nu är i standardbiblioteket, som behållare och typinformation. I " "synnerhet modifierade Trolltech C++-språket så det tillhandahöll signaler, så Qt-klasser kan inte lätt användas med klasser som inte är Qt. " "gtkmm kunde använda standard-C++ för att tillhandahålla signaler utan att ändra C++-språket. Se frågor och svar för mer detaljerade skillnader." #. (itstool) path: section/title #: C/index-in.docbook:167 msgid "gtkmm is a wrapper" msgstr "gtkmm är ett omslag" #. (itstool) path: section/para #: C/index-in.docbook:169 msgid "" "gtkmm is not a native C++ toolkit, but a C++ wrapper of a C toolkit. This separation of interface and implementation " "has advantages. The gtkmm developers spend most of their time talking about how gtkmm can " "present the clearest API, without awkward compromises due to obscure technical details. We contribute a little to the underlying GTK code base, " "but so do the C coders, and the Perl coders and the Python coders, etc. Therefore GTK benefits from a broader user base than language-specific " "toolkits - there are more implementers, more developers, more testers, and more users." msgstr "" "gtkmm är inte en inhemsk C++-verktygslåda, utan ett C++-omslag för en C-verktygslåda. Denna uppdelning av gränssnitt " "och implementation har fördelar. Utvecklarna av gtkmm spenderar sin mesta tid åt att prata om hur " "gtkmm kan erbjuda det klaraste API:t, utan klumpiga kompromisser på grund av obskyra tekniska detaljer. Vi bidrar " "lite grann till den underliggande GTK-kodbasen, men så gör även C-kodarna, Perl-kodarna och Python-kodarna o.s.v. Därigenom drar GTK nytta av " "en bredare användarbas än språkspecifika verktygslådor - det finns fler implementatörer, fler utvecklare, fler testare, och fler användare." #. (itstool) path: chapter/title #: C/index-in.docbook:177 msgid "Installation" msgstr "Installation" #. (itstool) path: section/title #: C/index-in.docbook:180 msgid "Dependencies" msgstr "Beroenden" #. (itstool) path: section/para #: C/index-in.docbook:182 msgid "" "Before attempting to install gtkmm-4.0, you might first need to install these other " "packages." msgstr "" "Innan du försöker installera gtkmm-4.0 kan du först behöva installera dessa andra paket." #. (itstool) path: listitem/para #: C/index-in.docbook:187 msgid "sigc++-3.0" msgstr "sigc++-3.0" #. (itstool) path: listitem/para #: C/index-in.docbook:188 msgid "gtk4" msgstr "gtk4" #. (itstool) path: listitem/para #: C/index-in.docbook:189 msgid "glibmm-2.68" msgstr "glibmm-2.68" #. (itstool) path: listitem/para #: C/index-in.docbook:190 msgid "cairomm-1.16" msgstr "cairomm-1.16" #. (itstool) path: listitem/para #: C/index-in.docbook:191 msgid "pangomm-2.48" msgstr "pangomm-2.48" #. (itstool) path: section/para #: C/index-in.docbook:193 msgid "These dependencies have their own dependencies, including the following applications and libraries:" msgstr "Dessa beroenden har sina egna beroenden, inkluderande följande program och bibliotek:" #. (itstool) path: listitem/para #: C/index-in.docbook:198 msgid "pkg-config" msgstr "pkg-config" #. (itstool) path: listitem/para #: C/index-in.docbook:199 msgid "glib-2.0" msgstr "glib-2.0" #. (itstool) path: listitem/para #: C/index-in.docbook:200 msgid "pango" msgstr "pango" #. (itstool) path: listitem/para #: C/index-in.docbook:201 msgid "cairo" msgstr "cairo" #. (itstool) path: listitem/para #: C/index-in.docbook:202 msgid "gdk-pixbuf-2.0" msgstr "gdk-pixbuf-2.0" #. (itstool) path: listitem/para #: C/index-in.docbook:203 msgid "graphene-1.0" msgstr "graphene-1.0" #. (itstool) path: section/title #: C/index-in.docbook:208 msgid "Unix and Linux" msgstr "Unix och Linux" #. (itstool) path: section/title #: C/index-in.docbook:211 msgid "Prebuilt Packages" msgstr "Förbyggda paket" #. (itstool) path: section/para #: C/index-in.docbook:213 msgid "" "Recent versions of gtkmm are packaged by nearly every major Linux distribution these days. So, if you use Linux, you " "can probably get started with gtkmm by installing the package from the official repository for your distribution. " "Distributions that include gtkmm in their repositories include Debian, Ubuntu, Red Hat, Fedora, Mandriva, Suse, and " "many others." msgstr "" "De senaste versionerna av gtkmm paketeras numera av nästan alla större Linux-distributioner. Så om du använder Linux " "kan du troligen komma igång med gtkmm genom att installera paketet från det officiella förrådet för din " "distribution. Distributioner som inkluderar gtkmm i sina förråd inkluderar Debian, Ubuntu, Red Hat, Fedora, " "Mandriva, Suse och många fler." #. (itstool) path: section/para #: C/index-in.docbook:221 msgid "" "The names of the gtkmm packages vary from distribution to distribution (e.g. libgtkmm-4.0-dev on Debian and Ubuntu or gtkmm4.0-devel on Red Hat and Fedora), so check with your distribution's " "package management program for the correct package name and install it like you would any other package." msgstr "" "Namnen på gtkmm-paketen varierar från distribution till distribution (t.ex. libgtkmm-4.0-dev på Debian och Ubuntu eller gtkmm4.0-devel på Red Hat och Fedora), så se i din distributions " "pakethanteringsprogram vad som är rätt paketnamn och installera det som vilket annat paket som helst." #. (itstool) path: note/para #: C/index-in.docbook:229 msgid "" "The package names will not change when new API/ABI-compatible versions of gtkmm are released. Otherwise they would " "not be API/ABI-compatible. So don't be surprised, for instance, to find gtkmm 4.8 supplied by Debian's " "libgtkmm-4.0-dev package." msgstr "" "Paketnamnen kommer inte ändras när nya API/ABI-kompatibla versioner av gtkmm släpps. Annars skulle de inte vara API/" "ABI-kompatibla. Så bli inte överraskad om exempelvis gtkmm 4.8 tillhandahålls av paketet libgtkmm-4.0-" "dev i Debian." #. (itstool) path: section/title #: C/index-in.docbook:239 msgid "Installing From Source" msgstr "Installera från källkod" #. (itstool) path: section/para #: C/index-in.docbook:241 msgid "" "If your distribution does not provide a pre-built gtkmm package, or if you want to install a different version than " "the one provided by your distribution, you can also install gtkmm from source. The source code for " "gtkmm can be downloaded from ." msgstr "" "Om din distribution inte tillhandahåller ett förbyggt gtkmm-paket, eller om du vill installera en annan version än " "den som tillhandahålls av din distribution, så kan du även installera gtkmm från källkod. Källkoden för " "gtkmm kan hämtas från ." #. (itstool) path: section/para #: C/index-in.docbook:247 msgid "" "After you've installed all of the dependencies, download the gtkmm source code, unpack it, and change to the newly " "created directory. gtkmm can be built with Meson. See the README file in the " "gtkmm version you've downloaded." msgstr "" "Efter att du installerat alla beroendena hämtar du gtkmm-källkoden, packar upp den, och går till den nyskapade " "katalogen. gtkmm kan byggas med Meson. Se filen README i gtkmm-" "versionen som du hämtat." # TODO: root password for su, not sudo? #. (itstool) path: note/para #: C/index-in.docbook:254 msgid "" "Remember that on a Unix or Linux operating system, you will probably need to be root to install software. The su or sudo command will allow you to enter the root password and have root " "status temporarily." msgstr "" "Kom i håg att på ett Unix- eller Linux-operativsystem kommer du troligen behöva vara root för att installera programvara. " "Kommandot su eller sudo kommer låta dig mata in root-lösenordet och tillfälligt få " "root-status." #. (itstool) path: section/para #: C/index-in.docbook:261 msgid "" "The configure script or meson will check to make sure all of the required dependencies are already " "installed. If you are missing any dependencies, it will exit and display an error." msgstr "" "configure-skriptet eller meson kommer kontrollera så att alla de beroenden som krävs redan finns " "installerade. Om du saknar några beroenden kommer det att avsluta och visa ett fel." #. (itstool) path: para/screen #: C/index-in.docbook:272 #, no-wrap msgid "" "\n" "# meson setup --prefix=/usr <builddir> <srcdir>\n" "# meson configure --prefix=/usr\n" "# ./configure --prefix=/usr\n" msgstr "" "\n" "# meson setup --prefix=/usr <byggkat> <källkat>\n" "# meson configure --prefix=/usr\n" "# ./configure --prefix=/usr\n" #. (itstool) path: section/para #: C/index-in.docbook:266 msgid "" "By default, gtkmm if built with Meson or Autotools, will be installed under the /usr/local " "directory. On some systems you may need to install to a different location. For instance, on Red Hat Linux systems you might use the --" "prefix option with configure, like one of: <_:screen-1/>" msgstr "" "Som standard kommer gtkmm om det byggts med Meson eller Autotools att installeras under katalogen /usr/" "local. På vissa system kan du behöva installera på en annan plats. På Red Hat-system använder du exempelvis kanske flaggan " "--prefix med configure, som en av: <_:screen-1/>" #. (itstool) path: warning/para #: C/index-in.docbook:279 msgid "" "You should be very careful when installing to standard system prefixes such as /usr. Linux distributions install software " "packages to /usr, so installing a source package to this prefix could corrupt or conflict with software installed using " "your distribution's package-management system. Ideally, you should use a separate prefix for all software you install from source." msgstr "" "Du bör vara väldigt försiktig när du installerar till standardsystemprefix som /usr. Linux-distributioner installerar " "programvarupaket till /usr, så att installera ett programvarupaket till detta prefix kan förstöra eller stå i konflikt med " "programvara som installerats med din distributions pakethanteringssystem. Idealt bör du använda ett separat prefix för all programvara som du " "installerar från källkod." #. (itstool) path: section/para #: C/index-in.docbook:288 msgid "" "If you want to help develop gtkmm or experiment with new features, you can also install gtkmm from git. Most users will never need to do this, but if you're interested in helping with gtkmm " "development, see the Working with gtkmm's Source Code appendix." msgstr "" "Om du vill hjälpa till med att utveckla gtkmm eller experimentera med nya funktioner så kan du även installera " "gtkmm från git. De flesta användare kommer aldrig behöva göra detta, men om du är intresserad av att hjälpa till med " "gtkmm-utveckling, se bilagan Arbeta med gtkmm:s källkod." #. (itstool) path: section/title #: C/index-in.docbook:298 msgid "Microsoft Windows" msgstr "Microsoft Windows" #. (itstool) path: section/para #: C/index-in.docbook:300 msgid "" "GTK and gtkmm were designed to work well with Microsoft Windows, and the developers encourage its use on the win32 " "platform. However, Windows has no standard installation system for development libraries. Please see the Windows Installation page or the gtkmm and Win32 appendix for Windows-specific installation instructions and notes." msgstr "" "GTK och gtkmm designades för att fungera bra med Microsoft Windows, och utvecklarna uppmuntrar dess användning på " "win32-plattformen. Windows har dock inget standardinstallationssystem för utvecklingsbibliotek. Se sidan för Windows-installation eller gtkmm och Win32-bilagan för Windows-specifika installationsinstruktioner och anteckningar." #. (itstool) path: chapter/title #: C/index-in.docbook:311 msgid "Basics" msgstr "Grunder" #. (itstool) path: chapter/para #: C/index-in.docbook:313 msgid "" "This chapter will introduce some of the most important aspects of gtkmm coding. These will be demonstrated with " "simple working example code. However, this is just a taster, so you need to look at the other chapters for more substantial information." msgstr "" "Detta kapitel kommer introducera några av de viktigaste aspekterna kring kodande med gtkmm. Dessa kommer " "demonstreras med enkel, fungerande exempelkod. Detta är dock bara ett smakprov, så du kommer behöva titta på de andra kapitlen för mer påtaglig " "information." #. (itstool) path: chapter/para #: C/index-in.docbook:316 msgid "" "Your existing knowledge of C++ will help you with gtkmm as it would with any library. Unless we state otherwise, you " "can expect gtkmm classes to behave like any other C++ class, and you can expect to use your existing C++ techniques " "with gtkmm classes." msgstr "" "Din befintliga C++-kunskap kommer hjälpa dig med gtkmm som den skulle göra med alla bibliotek. Om vi inte " "uttryckligen säger annat kan du förvänta dig att gtkmm-klasser kommer bete sig som vilken annan C++-klass som helst, " "och du kan förvänta dig att använda dina befintliga C++-tekniker med gtkmm-klasser." #. (itstool) path: section/title #: C/index-in.docbook:321 C/index-in.docbook:3922 msgid "Simple Example" msgstr "Enkelt exempel" #. (itstool) path: section/para #: C/index-in.docbook:323 msgid "" "To begin our introduction to gtkmm, we'll start with the simplest program possible. This program will create an " "empty 200 x 200 pixel window." msgstr "" "För att inleda vår introduktion till gtkmm så börjar vi med enklast möjliga program. Detta program kommer skapa ett " "tomt fönster på 200 × 200 bildpunkter." #. (itstool) path: section/para #: C/index-in.docbook:328 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:330 msgid "We will now explain each part of the example" msgstr "Vi kommer nu förklara varje del av exemplet" #. (itstool) path: section/programlisting #: C/index-in.docbook:331 #, no-wrap msgid "#include <gtkmm.h>" msgstr "#include <gtkmm.h>" #. (itstool) path: section/para #: C/index-in.docbook:332 msgid "" "All gtkmm programs must include certain gtkmm headers; gtkmm.h " "includes the entire gtkmm kit. This is usually not a good idea, because it includes a megabyte or so of headers, but " "for simple programs, it suffices." msgstr "" "Alla gtkmm-program måste innehålla vissa gtkmm-huvuden; gtkmm.h " "inkluderar hela gtkmm-kittet. Detta är vanligen ingen bra idé, då det inkluderar en megabyte eller så med huvuden, " "men för enkla program duger det." #. (itstool) path: section/para #: C/index-in.docbook:339 msgid "The next part of the program:" msgstr "Nästa del av programmet:" #. (itstool) path: section/programlisting #: C/index-in.docbook:340 #, no-wrap msgid "" "class MyWindow : public Gtk::Window\n" "{\n" "public:\n" " MyWindow();\n" "};\n" "\n" "MyWindow::MyWindow()\n" "{\n" " set_title(\"Basic application\");\n" " set_default_size(200, 200);\n" "}" msgstr "" "class MyWindow : public Gtk::Window\n" "{\n" "public:\n" " MyWindow();\n" "};\n" "\n" "MyWindow::MyWindow()\n" "{\n" " set_title(\"Enkelt program\");\n" " set_default_size(200, 200);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:351 msgid "defines the MyWindow class. Its default constructor sets the window's title and default (initial) size." msgstr "definierar klassen MyWindow. Dess standardkonstruktor ställer in fönstrets titel och (initial) standardstorlek." #. (itstool) path: section/para #: C/index-in.docbook:356 msgid "The main() function's first statement:" msgstr "main()-funktionens första sats:" #. (itstool) path: section/programlisting #: C/index-in.docbook:357 #, no-wrap msgid "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");" msgstr "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");" #. (itstool) path: section/para #: C/index-in.docbook:358 msgid "" "creates a Gtk::Application object, stored in a Glib::RefPtr smartpointer. This is needed in all " "gtkmm applications. The create() method for this object initializes gtkmm." msgstr "" "skapar ett Gtk::Application-objekt, lagrat i en Glib::RefPtr-smartpekare. Detta behövs i alla " "gtkmm-program. Metoden create() för detta objekt initierar gtkmm." #. (itstool) path: section/para #: C/index-in.docbook:363 #, fuzzy msgid "" "The last line creates and shows a window and enters the gtkmm main processing loop, which will finish when the " "window is closed. Your main() function will then return with an appropriate success or error code. The argc and argv arguments, passed to your application on the command line, can be checked when " "make_window_and_run() is called, but this simple application does not use those arguments." msgstr "" "Den sista raden skapar och visar ett fönster och går in i huvudslingan för gtkmm, vilken kommer slutföras när " "fönstret stängs. Din main()-funktion kommer sedan returnera med en lämplig avslutnings- eller felkod. Argumenten " "argc och argv som skickas till ditt program på kommandoraden kan kontrolleras när " "make_window_and_run() anropas, men detta enkla program använder inte dessa argument." #. (itstool) path: section/programlisting #: C/index-in.docbook:369 #, no-wrap msgid "return app->make_window_and_run<MyWindow>(argc, argv);" msgstr "return app->make_window_and_run<MyWindow>(argc, argv);" #. (itstool) path: section/para #: C/index-in.docbook:371 msgid "After putting the source code in simple.cc you can compile the above program with gcc using:" msgstr "Efter att ha stoppat källkoden i simple.cc kan du kompilera programmet ovan med gcc genom:" #. (itstool) path: section/programlisting #: C/index-in.docbook:375 #, no-wrap msgid "g++ simple.cc -o simple `pkg-config --cflags --libs gtkmm-4.0` -std=c++17" msgstr "g++ simple.cc -o simple `pkg-config --cflags --libs gtkmm-4.0` -std=c++17" #. (itstool) path: section/para #: C/index-in.docbook:376 msgid "" "Note that you must surround the pkg-config invocation with backquotes. Backquotes cause the shell to execute the command " "inside them, and to use the command's output as part of the command line. Note also that simple.cc must come before the " "pkg-config invocation on the command line. -std=c++17 is necessary only if your compiler is not C++17 " "compliant by default." msgstr "" "Observera att du måste omsluta anropet av pkg-config med grav accent (`). Grava accenter får skalet att exekvera kommandot " "inuti dem, och att använda kommandots utdata som en del av kommandoraden. Observera också att simple.cc måste komma före " "anropet av pkg-config på kommandoraden. -std=c++17 är endast nödvändigt om din kompilator inte följer C+" "+17 som standard." #. (itstool) path: section/title #: C/index-in.docbook:387 msgid "Headers and Linking" msgstr "Huvuden och länkning" #. (itstool) path: section/para #: C/index-in.docbook:389 msgid "" "Although we have shown the compilation command for the simple example, you really should use the Meson build system. The examples used in this book are included in the gtkmm-documentation package, with " "appropriate build files, so we won't show the build commands in future. The README file in gtkmm-" "documentation describes how to build the examples." msgstr "" "Även om vi visat kompileringskommandot för det enkla exemplet så bör du verkligen använda byggsystemet Meson. Exemplen som används i denna bok inkluderas i paketet gtkmm-documentation med lämpliga " "byggfiler, så vi kommer inte visa byggkommandona framöver. Filen README i gtkmm-documentation " "beskriver hur du bygger exemplen." #. (itstool) path: section/para #: C/index-in.docbook:397 msgid "" "To simplify compilation, we use pkg-config, which is present in all (properly installed) gtkmm " "installations. This program 'knows' what compiler switches are needed to compile programs that use gtkmm. The " "--cflags option causes pkg-config to output a list of include directories for the compiler to look in; " "the --libs option requests the list of libraries for the compiler to link with and the directories to find them in. Try " "running it from your shell-prompt to see the results on your system." msgstr "" "För att förenkla kompilering använder vi pkg-config som finns i alla (riktigt installerade) gtkmm-" "installationer. Det här programmet ”vet” vilka kompilatorflaggor som behövs för att kompilera program som använder gtkmm. Flaggan --cflags får pkg-config att mata ut en lista över inkluderingskataloger som " "kompilatorn ska titta i; flaggan --libs begär listan över bibliotek som kompilatorn ska länka med och katalogerna att hitta " "dem i. Försök köra den från din skalprompt för att se resultatet på ditt system." #. (itstool) path: section/para #: C/index-in.docbook:407 msgid "" "However, this is even simpler when using the dependency() function in a meson.build file with Meson. " "For instance:" msgstr "" "Detta är dock ännu lättare om du använder funktionen dependency() i en meson.build-fil med Meson. " "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:411 #, no-wrap msgid "gtkmm_dep = dependency('gtkmm-4.0', version: '>= 4.6.0')" msgstr "gtkmm_dep = dependency('gtkmm-4.0', version: '>= 4.6.0')" #. (itstool) path: section/para #: C/index-in.docbook:412 msgid "" "This checks for the presence of gtkmm and defines gtkmm_dep for use in your meson.build files. For " "instance:" msgstr "" "Detta kontrollerar närvaron av gtkmm och definierar gtkmm_dep för användning i dina meson.build-filer. " "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:416 #, fuzzy, no-wrap msgid "" "exe_file = executable('my_program', 'my_source1.cc', 'my_source2.cc',\n" " dependencies: gtkmm_dep,\n" " win_subsystem: 'windows',\n" ")" msgstr "" "exe_file = executable('my_program', 'my_source1.cc', 'my_source2.cc',\n" " dependencies: gtkmm_dep,\n" " win_subsystem: 'windows',\n" ")" #. (itstool) path: section/para #: C/index-in.docbook:420 msgid "" "gtkmm-4.0 is the name of the current stable API. There are older APIs called gtkmm-2.4 and gtkmm-3.0 which install in parallel when they are " "available. There are several versions of gtkmm-2.4, such as gtkmm 2.10 and there are several versions of the gtkmm-3.0 API. Note that the API " "name does not change for every version because that would be an incompatible API and ABI break. There might be a future gtkmm-5.0 API which " "would install in parallel with gtkmm-4.0 without affecting existing applications." msgstr "" "gtkmm-4.0 är namnet på det aktuella stabila API:t. Det finns äldre API:er som heter gtkmm-2.4 och gtkmm-3.0 vilka installeras parallellt då de " "finns tillgängliga. Det finns flera versioner av gtkmm-2.4, som gtkmm 2.10, och det finns flera versioner av gtkmm-3.0-API:t. Observera att API-" "namnet inte ändras för varje version då det skulle vara ett inkompatibelt API- och ABI-brott. Det kan komma ett framtida gtkmm-5.0-API som då " "skulle gå installera parallellt med gtkmm-4.0 utan att påverka befintliga program." #. (itstool) path: section/para #: C/index-in.docbook:427 msgid "" "If you start by experimenting with a small application that you plan to use just for yourself, it's easier to start with a meson." "build similar to the meson.build files in the Building " "applications chapter." msgstr "" "Om du börjar genom att experimentera med ett litet program som du bara tänker använda själv är det lättare att börja med en meson." "build liknande meson.build-filerna i kapitlet Bygga program." #. (itstool) path: section/para #: C/index-in.docbook:432 msgid "" "If you use the older Autotools build system, see also the GNU site. It has more information about autoconf and automake. There are also some books " "describing Autotools: \"GNU Autoconf, Automake, and Libtool\" by Gary Vaughan et al. and \"Autotools, A Practitioner's Guide to GNU Autoconf, " "Automake, and Libtool\" by John Calcote." msgstr "" "Se även GNU:s webbplats om du använder det äldre Autotools-byggsystemet. Den har mer information om autoconf och automake. Det finns också några " "böcker som beskriver Autotools: ”GNU Autoconf, Automake, and Libtool” av Gary Vaughan med flera, och ”Autotools, A Practitioner's Guide to GNU " "Autoconf, Automake, and Libtool” av John Calcote." #. (itstool) path: section/title #: C/index-in.docbook:443 C/index-in.docbook:6523 msgid "Widgets" msgstr "Komponenter" #. (itstool) path: section/para #: C/index-in.docbook:445 #, fuzzy msgid "" "gtkmm applications consist of windows containing widgets, such as buttons and text boxes. In some other systems, " "widgets are called \"controls\". For each widget in your application's windows, there is a C++ object in your application's code. So you just " "need to call a method of the widget's class to affect the visible widget." msgstr "" "gtkmm-program består av fönster som innehåller komponenter, som knappar och textrutor. I några andra system kallas " "komponenter för ”kontroller”. För varje komponent i ditt programs fönster finns det ett C++-objekt i ditt programs kod. Så du behöver bara " "anropa en metod av komponentens klass för att påverka den synliga komponenten." #. (itstool) path: para/programlisting #: C/index-in.docbook:447 #, no-wrap msgid "" "m_box.append(m_Button1);\n" "m_box.append(m_Button2);" msgstr "" "m_box.append(m_Button1);\n" "m_box.append(m_Button2);" #. (itstool) path: para/programlisting #: C/index-in.docbook:450 #, no-wrap msgid "m_frame.set_child(m_box);" msgstr "m_frame.set_child(m_box);" #. (itstool) path: section/para #: C/index-in.docbook:446 #, fuzzy msgid "" "Widgets are arranged inside container widgets such as frames and notebooks, in a hierarchy of widgets within widgets. Some of these container " "widgets, such as Gtk::Grid, are not visible - they exist only to arrange other widgets. Here is some example code that " "adds 2 Gtk::Button widgets to a Gtk::Box container widget: <_:programlisting-1/> and here is how " "to add the Gtk::Box, containing those buttons, to a Gtk::Frame, which has a visible frame and " "title: <_:programlisting-2/>" msgstr "" "Komponenter arrangeras inuti behållarkomponenter som ramar och anteckningsblock, i en hierarki av komponenter i komponenter. Vissa av dessa " "behållarkomponenter, som Gtk::Grid, är inte synliga - de existerar bara för att arrangera andra komponenter. Här är " "exempelkod som lägger till två Gtk::Button-komponenter till en Gtk::Box-behållarkomponent: <_:" "programlisting-1/> och här är hur du lägger till denna Gtk::Box som innehåller knapparna till en Gtk::Frame som har en synlig ram och titel: <_:programlisting-2/>" #. (itstool) path: section/para #: C/index-in.docbook:452 msgid "" "Most of the chapters in this book deal with specific widgets. See the Container Widgets " "section for more details about adding widgets to container widgets." msgstr "" "De flesta kapitel i denna bok hanterar specifika komponenter. Se avsnittet Behållarkomponenter för mer detaljer om att lägga till komponenter till behållarkomponenter." #. (itstool) path: section/para #: C/index-in.docbook:456 msgid "" "Although you can specify the layout and appearance of windows and widgets with C++ code, you will probably find it more convenient to design " "your user interfaces with Glade and load them at runtime with Gtk::Builder. See the Glade and Gtk::Builder chapter." msgstr "" "Även om du kan ange layouten och utseendet för fönster och komponenter med C++-kod så kommer du troligen finna det mer bekvämt att designa dina " "användargränssnitt med Glade och läsa in dem vid körning med Gtk::Builder. Se kapitlet Glade och Gtk::Builder." #. (itstool) path: section/para #: C/index-in.docbook:459 #, fuzzy msgid "" "Although gtkmm widget instances have lifetimes and scopes just like those of other C++ classes, gtkmm has an optional time-saving feature that you will see in some of the examples. The Gtk::make_managed() allows " "you to create a new widget and state that it will become owned by the container into which you place it. This allows you to create the widget, " "add it to the container and not be concerned about deleting it, since that will occur when the parent container (which may itself be managed) " "is deleted. You can learn more about gtkmm memory management techniques in the Memory Management chapter." msgstr "" "Även om gtkmm-komponentinstanser har livslängder och räckvidder precis som de hos andra C++ classes, så har " "gtkmm en valfri tidssparande funktion som du kommer se i några av exemplen. Gtk::make_managed() " "låter dig skapa en ny komponent och ange att den kommer att ägas av behållaren som du placerar den i. Detta låter dig skapa komponenten, lägga " "till den i behållaren och inte behöva bry dig om att ta bort den, då det kommer att inträffa då den överordnade behållaren (som i sin tur kan " "vara hanterad) tas bort. Du kan lära dig mer om minneshanteringstekniker för gtkmm i kapitlet Minneshantering." #. (itstool) path: section/title #. (itstool) path: appendix/title #: C/index-in.docbook:473 C/index-in.docbook:5362 C/index-in.docbook:5605 C/index-in.docbook:8827 msgid "Signals" msgstr "Signaler" #. (itstool) path: section/para #: C/index-in.docbook:475 #, fuzzy msgid "" "gtkmm, like most GUI toolkits, is event-driven. When an event occurs, such as the press of a " "mouse button, the appropriate signal will be emitted by the Widget that was pressed. Each Widget has a different set of " "signals that it can emit. To make a button click result in an action, we set up a signal handler to catch the button's " "\"clicked\" signal." msgstr "" "gtkmm är som de flesta GUI-verktygslådor händelsedrivet. När en händelse inträffar, som ett " "tryck på en musknapp, så kommer den lämpliga signalen avges av den komponent som trycktes ned. Varje komponent har olika " "uppsättningar signaler som den kan avge. För att få ett musklick att leda till en åtgärd konfigurerar vi en signalhanterare som fångar knappens ”clicked”-signal." #. (itstool) path: section/para #: C/index-in.docbook:482 msgid "" "gtkmm uses the libsigc++ library to implement signals. Here is an example line of code that connects a Gtk::Button's " "\"clicked\" signal with a signal handler called \"on_button_clicked\":" msgstr "" "gtkmm använder libsigc++-biblioteket för att implementera signaler. Här är en exempelrad kod som ansluter ”clicked”-" "signalen för en Gtk::Button med en signalhanterare som heter ”on_button_clicked”:" #. (itstool) path: section/programlisting #: C/index-in.docbook:484 #, no-wrap msgid "" "m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked) );" msgstr "" "m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked) );" #. (itstool) path: section/para #: C/index-in.docbook:487 msgid "For more detailed information about signals, see the appendix." msgstr "Se bilagan för mer detaljerad information om signaler." #. (itstool) path: section/para #: C/index-in.docbook:488 msgid "" "For information about implementing your own signals rather than just connecting to the existing gtkmm signals, see " "the appendix." msgstr "" "För mer information om att implementera dina egna signaler snarare än att bara ansluta till de befintliga gtkmm-" "signalerna, se bilagan." #. (itstool) path: section/title #: C/index-in.docbook:494 msgid "Glib::ustring" msgstr "Glib::ustring" #. (itstool) path: section/para #: C/index-in.docbook:496 msgid "" "You might be surprised to learn that gtkmm doesn't use std::string in its interfaces. Instead " "it uses Glib::ustring, which is so similar and unobtrusive that you could actually pretend that each Glib::" "ustring is a std::string and ignore the rest of this section. But read on if you want to use languages other " "than English in your application." msgstr "" "Det kanske förvånar dig att höra att gtkmm inte använder std::string i sina gränssnitt. I " "stället använder det Glib::ustring vilket är snarlikt och inte gör något väsen av sig, så du skulle kunna låtsas att " "varje Glib::ustring är en std::string och ignorera resten av detta avsnitt. Men läs vidare om du " "vill använda andra språk än engelska i ditt program." #. (itstool) path: section/para #: C/index-in.docbook:497 msgid "" "std::string uses 8 bits per character, but 8 bits aren't enough to encode languages such as Arabic, Chinese, and Japanese. Although the " "encodings for these languages have been specified by the Unicode Consortium, the C and C++ " "languages do not yet provide any standardized Unicode support for UTF-8 encoding. GTK and GNOME chose to implement Unicode using UTF-8, and " "that's what is wrapped by Glib::ustring. It provides almost exactly the same interface as std::string, along with automatic conversions to and " "from std::string." msgstr "" "std::string använder 8 bitar per tecken, men 8 bitar räcker inte till för att koda språk som arabiska, kinesiska och japanska. Även om " "kodningarna för dessa språk har angivits av Unicode Consortium så tillhandahåller språken C " "och C++ ännu inte något standardiserat Unicode-stöd för UTF-8-kodning. GTK och GNOME valde att implementera Unicode med UTF-8, och det är vad " "som är omslaget av Glib::ustring. Det tillhandahåller nästan exakt samma gränssnitt som std::string, tillsammans med automatiska konverteringar " "till och från std::string." #. (itstool) path: section/para #: C/index-in.docbook:502 msgid "" "One of the benefits of UTF-8 is that you don't need to use it unless you want to, so you don't need to retrofit all of your code at once. " "std::string will still work for 7-bit ASCII strings. But when you try to localize your application for languages like " "Chinese, for instance, you will start to see strange errors, and possible crashes. Then all you need to do is start using Glib::" "ustring instead." msgstr "" "En av fördelarna med UTF-8 är att du inte behöver använda det om du inte vill, så du behöver inte skriva om all din kod på en gång. " "std::string kommer fortfarande fungera för 7-bitars ASCII-strängar. Men när du försöker lokalanpassa ditt program för " "språk som exempelvis kinesiska kommer du börja se märkliga fel och möjligen krascher. Då är allt du behöver göra att börja använda " "Glib::ustring i stället." #. (itstool) path: section/para #: C/index-in.docbook:503 msgid "" "Note that UTF-8 isn't compatible with 8-bit encodings like ISO-8859-1. For instance, German umlauts are not in the ASCII range and need more " "than 1 byte in the UTF-8 encoding. If your code contains 8-bit string literals, you have to convert them to UTF-8 (e.g. the Bavarian greeting " "\"Grüß Gott\" would be \"Gr\\xC3\\xBC\\xC3\\x9F Gott\")." msgstr "" "Observera att UTF-8 inte är kompatibelt med 8-bitars kodningar som ISO-8859-1. Exempelvis finns tyska omljud inte i ASCII-intervallet och " "behöver mer än 1 byte i UTF-8-kodningen. Om din kod innehåller 8-bitars stränglitteraler behöver du konvertera dem till UTF-8 (t.ex. skulle den " "bayerska hälsningen ”Grüß Gott” bli ”Gr\\xC3\\xBC\\xC3\\x9F Gott”)." #. (itstool) path: section/para #: C/index-in.docbook:504 msgid "" "You should avoid C-style pointer arithmetic, and functions such as strlen(). In UTF-8, each character might need anywhere from 1 to 6 bytes, so " "it's not possible to assume that the next byte is another character. Glib::ustring worries about the details of this for " "you so you can use methods such as Glib::ustring::substr() while still thinking in terms of characters instead of bytes." msgstr "" "Du bör undvika pekararitmetik av C-stil och funktioner som strlen(). I UTF-8 kan varje tecken behöva vad som helst från 1 till 6 byte, så det " "är inte möjligt att anta att nästa byte är ett nytt tecken. Glib::ustring sköter detaljerna kring detta åt dig, så du " "kan använda metoder som Glib::ustring::substr() och tänka på antal tecken i stället för byte." #. (itstool) path: section/para #: C/index-in.docbook:506 msgid "" "Unlike the Windows UCS-2 Unicode solution, this does not require any special compiler options to process string literals, and it does not " "result in Unicode executables and libraries which are incompatible with ASCII ones." msgstr "" "Till skillnad från Windows Unicode-lösning UCS-2 så kräver detta inte några ytterligare kompilatorflaggor för att behandla stränglitteraler, " "och det resulterar inte i körbara Unicode-program och bibliotek som är inkompatibla med de som använder ASCII." #. (itstool) path: section/para #: C/index-in.docbook:508 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:510 msgid "" "See the Internationalization section for information about providing the UTF-8 string " "literals." msgstr "" "Se avsnittet Internationalisering för information om hur du tillhandahåller UTF-8-" "stränglitteralerna." #. (itstool) path: section/title #: C/index-in.docbook:515 msgid "Mixing C and C++ APIs" msgstr "Blanda C- och C++-API:er" #. (itstool) path: section/para #: C/index-in.docbook:517 msgid "" "You can use C APIs which do not yet have convenient C++ interfaces. It is generally not a problem to use C APIs from C++, and " "gtkmm helps by providing access to the underlying C object, and providing an easy way to create a C++ wrapper object " "from a C object, provided that the C API is also based on the GObject system." msgstr "" "Du kan använda C-API:er som inte ännu har praktiska C++-gränssnitt. Det är allmänt inte ett problem att använda C-API:er från C++, och " "gtkmm hjälper till genom att ge åtkomst till det underliggande C-objektet, och tillhandahåller ett lätt sätt att " "skapa ett C++-omslagsobjekt från ett C-objekt, givet att C-API:t också är baserat på GObject-systemet." #. (itstool) path: section/para #: C/index-in.docbook:523 #, fuzzy msgid "" "To use a gtkmm instance with a C function that requires a C GObject instance, use the C++ " "instance’s gobj() function to obtain a pointer to the underlying C instance. For example:" msgstr "" "För att använda en gtkmm-instans med en C-funktion som kräver en GObject-instans i C, " "använder du C++-instansens gobj()-funktion för att erhålla en pekare till den underliggande C-instansen. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:528 #, fuzzy, no-wrap msgid "" "\n" "Gtk::Button button(\"example\");\n" "gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n" msgstr "" "\n" "Gtk::Button button(\"exempel\");\n" "gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:539 #, fuzzy, no-wrap msgid "" "\n" "GtkButton* cbutton = get_a_button();\n" "Gtk::Button* button = Glib::wrap(cbutton);\n" "button->set_label(\"Now I speak C++ too!\");\n" msgstr "" "\n" "GtkButton* cbutton = get_a_button();\n" "Gtk::Button* button = Glib::wrap(cbutton);\n" "button->set_label(\"Nu talar jag även C++!\");\n" #. (itstool) path: listitem/para #: C/index-in.docbook:546 msgid "it's a widget or other class that inherits from Gtk::Object, and" msgstr "det är en komponent eller annan klass som ärver från Gtk::Object, och" #. (itstool) path: listitem/para #: C/index-in.docbook:547 #, fuzzy msgid "the C instance has a floating reference when the wrapper is created, and" msgstr "C-instansen har en flytande referens när omslaget skapas, och" #. (itstool) path: listitem/para #: C/index-in.docbook:548 msgid "" "Gtk::manage() has not been called on it (which includes if it was created with Gtk::make_managed()), " "or" msgstr "" "Gtk::manage() inte har anropats på det (vilket inkluderar om det skapades med Gtk::make_managed()), " "eller" #. (itstool) path: listitem/para #: C/index-in.docbook:549 #, fuzzy msgid "Gtk::manage() was called on it, but it was never added to a parent." msgstr "Gtk::manage() anropades på det, men det aldrig lades till till en överordnad." #. (itstool) path: section/para #: C/index-in.docbook:533 #, fuzzy msgid "" "To obtain a gtkmm instance from a C GObject instance, use one of the many overloaded " "Glib::wrap() functions. The C instance’s reference count is not incremented, unless you set the optional " "take_copy argument to true. For example: <_:programlisting-1/> The C++ wrapper shall be explicitly " "deleted if <_:itemizedlist-2/> Glib::wrap() binds the C and C++ instances to each other. Don't delete the C++ instance " "before you want the C instance to die." msgstr "" "För att erhålla en gtkmm-instans från en GObject-instans i C, använd en av de många " "överlagrade Glib::wrap()-funktionerna. C-instansens referensantal ökas inte, om du inte ställer in det valfria argumentet " "take_copy till true. Till exempel: <_:programlisting-1/> C++-omslaget ska explicit tas bort om <_:" "itemizedlist-2/> Glib::wrap() binder C- och C++-instanserna till varandra. Ta inte bort C++-instansen innan du vill att C-" "instansen ska dö." #. (itstool) path: section/para #: C/index-in.docbook:554 #, fuzzy msgid "" "In all other cases the C++ instance is automatically deleted when the last reference to the C instance is dropped. This includes all " "Glib::wrap() overloads that return a Glib::RefPtr." msgstr "" "I alla andra fall tas C++-instansen automatiskt bort när den sista referensen till C-instansen släpps. Detta inkluderar alla Glib::" "wrap()-överlagringar som returnerar en Glib::RefPtr." #. (itstool) path: section/title #: C/index-in.docbook:561 msgid "Hello World in gtkmm" msgstr "Hej världen i gtkmm" #. (itstool) path: section/para #: C/index-in.docbook:563 msgid "" "We've now learned enough to look at a real example. In accordance with an ancient tradition of computer science, we now introduce Hello World, " "a la gtkmm:" msgstr "" "Vi har nu lärt oss tillräckligt för att titta på ett riktigt exempel. Enligt en uråldrig tradition inom datavetenskap introducerar vi nu ”Hej " "världen”, på gtkmm-sätt:" #. (itstool) path: section/para #: C/index-in.docbook:568 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:570 msgid "Try to compile and run it before going on. You should see something like this:" msgstr "Försök kompilera och köra det innan du går vidare. Du bör se något i stil med detta:" #. (itstool) path: figure/title #: C/index-in.docbook:575 msgid "Hello World" msgstr "Hej världen" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:577 #, fuzzy msgctxt "_" msgid "external ref='figures/helloworld.png' md5='02f7e986e608661d5a1524ac5f0c0b2e'" msgstr "external ref='figures/helloworld.png' md5='02f7e986e608661d5a1524ac5f0c0b2e'" #. (itstool) path: section/para #: C/index-in.docbook:581 msgid "Pretty thrilling, eh? Let's examine the code. First, the HelloWorld class:" msgstr "Visst är det omvälvande? Låt oss utforska koden. Först har vi klassen HelloWorld:" #. (itstool) path: section/programlisting #: C/index-in.docbook:586 #, no-wrap msgid "" "class HelloWorld : public Gtk::Window\n" "{\n" "public:\n" " HelloWorld();\n" " ~HelloWorld() override;\n" "\n" "protected:\n" " //Signal handlers:\n" " void on_button_clicked();\n" "\n" " //Member widgets:\n" " Gtk::Button m_button;\n" "};" msgstr "" "class HelloWorld : public Gtk::Window\n" "{\n" "public:\n" " HelloWorld();\n" " ~HelloWorld() override;\n" "\n" "protected:\n" " //Signalhanterare:\n" " void on_button_clicked();\n" "\n" " //Medlemskomponenter:\n" " Gtk::Button m_button;\n" "};" #. (itstool) path: section/para #: C/index-in.docbook:600 msgid "" "This class implements the \"Hello World\" window. It's derived from Gtk::Window, and has a single Gtk::" "Button as a member. We've chosen to use the constructor to do all of the initialization work for the window, including setting up " "the signals. Here it is, with the comments omitted:" msgstr "" "Denna klass implementerar ”Hej världen”-fönstret. Den härleds från Gtk::Window och har en ensam Gtk::Button som medlem. Vi har valt att låta konstruktorn gör allt initieringsjobb för fönstret, inklusive att konfigurera signalerna. Här är " "den utan kommentarer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:609 #, no-wrap msgid "" "HelloWorld::HelloWorld()\n" ": m_button(\"Hello World\")\n" "{\n" " m_button.set_margin(10);\n" " m_button.signal_clicked().connect(sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked));\n" " set_child(m_button);\n" "}" msgstr "" "HelloWorld::HelloWorld()\n" ": m_button(\"Hej världen\")\n" "{\n" " m_button.set_margin(10);\n" " m_button.signal_clicked().connect(sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked));\n" " set_child(m_button);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:618 msgid "Notice that we've used an initializer statement to give the m_button object the label \"Hello World\"." msgstr "Observera att vi har använt en initierarsats för att ge m_button-objektet etiketten ”Hej världen”." #. (itstool) path: section/para #: C/index-in.docbook:623 msgid "Next we call the Button's set_margin() method. This sets the amount of space around the button." msgstr "Härnäst anropar vi set_margin()-metoden för vår Button. Denna ställer in mängden utrymme runt knappen." #. (itstool) path: section/para #: C/index-in.docbook:628 #, fuzzy msgid "" "We then hook up a signal handler to m_button's clicked signal. This prints our friendly greeting to " "stdout." msgstr "" "Sedan kopplar vi ihop en signalhanterare med clicked-signalen för m_button. Detta skriver ut vår vänliga " "hälsning till stdout." #. (itstool) path: section/para #: C/index-in.docbook:633 #, fuzzy msgid "" "Next, we use the Window's set_child() method to put m_button in the Window. The " "set_child() method places the Widget in the Window." msgstr "" "Härnäst använder vi set_child()-metoden i Window för att sätta m_button i vårt Window. Metoden " "set_child() placerar komponenten i vårt Window." #. (itstool) path: section/para #: C/index-in.docbook:639 msgid "Now let's look at our program's main() function. Here it is, without comments:" msgstr "Låt oss nu titta på vårt programs main()-funktion. Här är den utan kommentarer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:644 #, no-wrap msgid "" "int main(int argc, char* argv[])\n" "{\n" " auto app = Gtk::Application::create(\"org.gtkmm.example\");\n" " return app->make_window_and_run<HelloWorld>(argc, argv);\n" "}" msgstr "" "int main(int argc, char* argv[])\n" "{\n" " auto app = Gtk::Application::create(\"org.gtkmm.example\");\n" " return app->make_window_and_run<HelloWorld>(argc, argv);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:650 msgid "" "First we instantiate an object stored in a Glib::RefPtr smartpointer called app. This is of type " "Gtk::Application. Every gtkmm program must have one of these." msgstr "" "Först instansierar vi ett objekt som lagras i en Glib::RefPtr-smartpekare som heter app. Detta är av " "typen Gtk::Application. Varje gtkmm-program måste ha ett av dessa." #. (itstool) path: section/para #: C/index-in.docbook:655 #, fuzzy msgid "" "Next we call make_window_and_run() which creates an object of our HelloWorld class, shows that " "Window and starts the gtkmm event loop. During the event loop gtkmm " "idles, waiting for actions from the user, and responding appropriately. When the user closes the Window, make_window_and_run() will return, causing our main() function to return. The application will then finish." msgstr "" "Härnäst anropar vi make_window_and_run() vilket skapar ett objekt av vår HelloWorld-klass, " "visar detta Window och startar gtkmm:s händelseslinga. Under händelseslingan är " "gtkmm inaktivt, väntar på åtgärder från användaren, och svarar på lämpligt sätt. När användaren stänger detta Window " "kommer make_window_and_run() returnera, vilket får vår main()-funktion att returnera. Programmet " "avslutas då." #. (itstool) path: section/para #: C/index-in.docbook:664 msgid "Like the simple example we showed earlier, this Hello World program does not use the command-line parameters." msgstr "Som det enkla exempel vi visade tidigare så använder detta ”Hej världen”-program inte kommandoradsparametrarna." #. (itstool) path: chapter/title #: C/index-in.docbook:673 msgid "Changes in gtkmm 3" msgstr "Ändringar i gtkmm 3" #. (itstool) path: chapter/para #: C/index-in.docbook:675 msgid "" "gtkmm-3.0 is an old version of the gtkmm API that installs in parallel with the still " "older gtkmm-2.4 API and the new gtkmm-4.0 API. The last version of the " "gtkmm-2.4 API was gtkmm 2.24. gtkmm 3 has no major fundamental " "differences to gtkmm 2 but does make several small changes that were not possible while maintaining binary " "compatibility. If you never used the gtkmm-2.4 API then you can safely ignore this chapter." msgstr "" "gtkmm-3.0 är en gammal version av gtkmm-API:t som installeras parallellt med det ännu " "äldre gtkmm-2.4-API:t och det nya gtkmm-4.0-API:t. Den senaste versionen av " "gtkmm-2.4-API:t var gtkmm 2.24. gtkmm 3 har inga större " "fundamentala skillnader mot gtkmm 2 men gör flera små ändringar som inte var möjliga att göra samtidigt som binär " "kompatibilitet behölls. Om du aldrig använt gtkmm-2.4-API:t kan du lugnt ignorera detta kapitel." #. (itstool) path: chapter/para #: C/index-in.docbook:677 msgid "" "gtkmm 3's library is called libgtkmm-3.0 rather than libgtkmm-2.4 and installs " "its headers in a similarly-versioned directory, so your pkg-config check should ask for gtkmm-3.0 rather than " "gtkmm-2.4." msgstr "" "Biblioteket för gtkmm 3 kallas libgtkmm-3.0 snarare än libgtkmm-2.4 och " "installerar sina huvuden i en katalog med liknande version, så din pkg-config-kontroll ska fråga efter gtkmm-3.0 snarare än " "gtkmm-2.4." #. (itstool) path: chapter/para #: C/index-in.docbook:679 msgid "gtkmm 3 added some new classes:" msgstr "gtkmm 3 lade till några nya klasser:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:682 msgid "" "Gtk::AppChooser, Gtk::AppChooserButton, Gtk::AppChooserDialog allow the " "user to select an installed application to open a particular type of content." msgstr "" "Gtk::AppChooser, Gtk::AppChooserButton och Gtk::AppChooserDialog låter " "användaren välja ett installerat program som ska öppna en viss typ av innehåll." #. (itstool) path: listitem/simpara #: C/index-in.docbook:683 msgid "" "Gtk::Grid is a new container widget that will eventually replace Gtk::Box and Gtk::" "Table. It arranges its children according to properties of those children rather than its own layout details." msgstr "" "Gtk::Grid är en ny behållarkomponent som med tiden kommer ersätta Gtk::Box och Gtk::" "Table. Den arrangerar sina underliggande komponenter enligt komponenternas egenskaper snarare än sina egna layoutdetaljer." #. (itstool) path: listitem/simpara #: C/index-in.docbook:684 msgid "" "Gtk::Switch displays On/Off states more explicitly than Gtk::CheckButton. It may be useful, for " "instance, when allowing users to activate hardware." msgstr "" "Gtk::Switch visar På/Av-tillstånd tydligare än Gtk::CheckButton. Det kan exempelvis vara " "användbart när användare tillåts aktivera hårdvara." #. (itstool) path: chapter/para #: C/index-in.docbook:687 msgid "" "gtkmm 3 also made several small changes to the API, which you will probably encounter when porting code that used " "gtkmm-2.4. Here is a short list:" msgstr "" "gtkmm 3 gjorde också flera små ändringar till API:t som du troligen kommer stöta på när du porterar kod som använt " "gtkmm-2.4. Här är en kort lista:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:692 msgid "" "Gtk::CellLayout, used by Gtk::IconView, Gtk::TreeView::Column and " "Gtk::ComboBox, now has a Gtk::CellArea which can be used to specify more details of how the " "CellRenderers are arranged and aligned." msgstr "" "Gtk::CellLayout som används av Gtk::IconView, Gtk::TreeView::Column och " "Gtk::ComboBox har nu en Gtk::CellArea som kan användas för att ange mer detaljer om hur " "CellRenderer-renderarna arrangeras och justeras." #. (itstool) path: listitem/simpara #: C/index-in.docbook:694 msgid "Gtk::ComboBox now derives from CellLayout, allowing easier layout and alignment of its Gtk::CellRenderers." msgstr "" "Gtk::ComboBox härleds nu från CellLayout, vilket tillåter lättare layout och justering av dess Gtk::CellRenderer-" "renderare." #. (itstool) path: listitem/simpara #: C/index-in.docbook:696 msgid "" "Gtk::Adjustment and IconSet and Gdk::Cursor are now used via " "Glib::RefPtr." msgstr "" "Gtk::Adjustment, IconSet och Gdk::Cursor används nu via Glib::" "RefPtr." #. (itstool) path: listitem/simpara #: C/index-in.docbook:698 msgid "" "Gtk::Box, Gtk::ButtonBox, Gtk::IconView, Gtk::Paned, Gtk::ProgressBar, Gtk::ScaleButton, Gtk::Scrollbar and " "Gtk::Separator now derive from Gtk::Orientable, allowing their orientation (vertical or " "horizontal) to be specified without requiring the use of a derived class such as Gtk::HBox." msgstr "" "Gtk::Box, Gtk::ButtonBox, Gtk::IconView, Gtk::Paned, Gtk::ProgressBar, Gtk::ScaleButton, Gtk::Scrollbar och " "Gtk::Separator härleds nu från Gtk::Orientable vilket låter deras orientering (vertikal eller " "horisontell) anges utan att kräva användningen av en härledd klass som Gtk::HBox." #. (itstool) path: listitem/simpara #: C/index-in.docbook:701 msgid "" "Gtk::IconView, Gtk::TextView, Gtk::TreeView and other widgets derive from " "Scrollable instead of having their own methods such as get_vadjustment() and instead of having their own " "set_scroll_adjustments signal." msgstr "" "Gtk::IconView, Gtk::TextView, Gtk::TreeView och andra komponenter härleds " "från Scrollable i stället för att ha egna metoder som get_vadjustment() och i stället för att ha sin egen " "set_scroll_adjustments-signal." #. (itstool) path: listitem/simpara #: C/index-in.docbook:703 msgid "" "Gtk::Style and Gtk::Rc were removed, replaced by Gtk::StyleContext, and " "Gtk::StyleProviders, such as Gtk::CssProvider." msgstr "" "Gtk::Style och Gtk::Rc togs bort, ersatta av Gtk::StyleContext och olika " "Gtk::StyleProvider-klasser, som Gtk::CssProvider." #. (itstool) path: listitem/simpara #: C/index-in.docbook:705 msgid "" "Widget::on_expose_event() was replaced by Widget::on_draw(), which assumes that cairomm is used for drawing, via the provided Cairo::" "Context and does not require you to call Cairo::Context::clip()." msgstr "" "Widget::on_expose_event() ersattes av Widget::on_draw(), vilken antar att cairomm används för ritning genom tillhandahållen Cairo::" "Context och inte kräver att du anropar Cairo::Context::clip()." #. (itstool) path: listitem/simpara #: C/index-in.docbook:707 msgid "" "Gdk::RGBA replaces Color, adding an alpha component for opacity. Colormap " "was removed, along with its awkward use to allocate colors." msgstr "" "Gdk::RGBA ersätter Color, vilket lägger till en alfakomponent för opacitet. Colormap togs bort, tillsammans med sin klumpiga användning för att allokera färger." #. (itstool) path: listitem/simpara #: C/index-in.docbook:709 msgid "Gdk::Pixmap and Gdk::Bitmap were removed in favor of Gdk::Pixbuf." msgstr "Gdk::Pixmap och Gdk::Bitmap togs bort till förmån för Gdk::Pixbuf." #. (itstool) path: listitem/simpara #: C/index-in.docbook:711 msgid "Gdk::Drawable was removed, with its methods moving into Gdk::Window." msgstr "Gdk::Drawable togs bort, dess metoder har flyttat till Gdk::Window." #. (itstool) path: listitem/simpara #: C/index-in.docbook:713 msgid "We now use std::vector in several methods instead of the intermediate *Handle types to make the API clearer." msgstr "Vi använder nu std::vector i flera metoder i stället för mellanliggande *Handle-typer för att göra API:t tydligare." #. (itstool) path: chapter/para #: C/index-in.docbook:718 msgid "" "All deprecated API was removed in gtkmm 3.0, though there have been new deprecations in later gtkmm 3.x versions." msgstr "" "Alla föråldrade API:er togs bort i gtkmm 3.0, men nya föråldringar har gjorts i senare gtkmm 3.x-versioner." #. (itstool) path: chapter/para #: C/index-in.docbook:720 msgid "" "As a first step to porting your source code to gtkmm-3.0 you should probably ensure that your application builds " "with the deprecated gtkmm-2.4 API disabled, by defining macro such as GTKMM_DISABLE_DEPRECATED. There are some " "autotools macros that can help with this by defining them optionally at build time. See the gtkmm 3 porting wiki page for more details." msgstr "" "Som ett första steg för att portera din källkod till gtkmm-3.0 bör du troligen säkerställa att ditt program går " "bygga med det föråldrade gtkmm-2.4-API:t inaktiverat, genom att definiera makron som GTKMM_DISABLE_DEPRECATED. Det " "finns några autotools-makron som kan hjälpa till med detta genom att valfritt definiera dem vid byggtid. Se wikisidan för portering till gtkmm 3 för mer detaljer." #. (itstool) path: chapter/title #: C/index-in.docbook:725 msgid "Changes in gtkmm-4.0 and glibmm-2.68" msgstr "Ändringar i gtkmm-4.0 och glibmm-2.68" #. (itstool) path: chapter/para #: C/index-in.docbook:727 msgid "" "gtkmm-4.0 is a new version of the gtkmm API that installs in parallel with the older " "gtkmm-2.4 and gtkmm-3.0 APIs. The last version of the gtkmm-3.0 API is gtkmm 3.24. gtkmm 4 has no major fundamental differences to " "gtkmm 3 but does make several changes (both small and large ones) that were not possible while maintaining binary " "compatibility. If you never used the gtkmm-3.0 API then you can safely ignore this chapter." msgstr "" "gtkmm-4.0 är en ny version av gtkmm-API:t som installeras parallellt med de äldre API:" "erna gtkmm-2.4 och gtkmm-3.0. Den senaste versionen av gtkmm-3.0-API:t är gtkmm 3.24. gtkmm 4 har inga större fundamentala skillnader mot " "gtkmm 3 men gör flera ändringar (både stora och små) som inte var möjliga att göra samtidigt som binär " "kompatibilitet behölls. Om du aldrig använt gtkmm-3.0-API:t kan du lugnt ignorera detta kapitel." #. (itstool) path: chapter/para #: C/index-in.docbook:735 msgid "" "gtkmm 4's library is called libgtkmm-4.0 rather than libgtkmm-3.0 and installs " "its headers in a similarly-versioned directory, so your pkg-config check should ask for gtkmm-4.0 " "rather than gtkmm-3.0." msgstr "" "Biblioteket för gtkmm 4 kallas libgtkmm-4.0 snarare än libgtkmm-3.0 och " "installerar sina huvuden i en katalog med liknande version, så din pkg-config-kontroll ska fråga efter " "gtkmm-4.0 snarare än gtkmm-3.0." #. (itstool) path: chapter/para #: C/index-in.docbook:741 msgid "" "gtkmm-4.0 is used in combination with glibmm-2.68, which sets the global locale for your " "program. The older glibmm-2.4 does not do that, and gtkmm-3.0 does it only to some " "extent. What this means is briefly that if your gtkmm-3.0 program contains a call to std::locale::" "global(std::locale(\"\")), you can probably remove it. If you don't want glibmm or gtkmm to set the global locale for you, you should add a call to Glib::set_init_to_users_preferred_locale(false) " "before any call to Glib::init() or Gtk::Application::create()." msgstr "" "gtkmm-4.0 används i kombination med glibmm-2.68, vilket ställer in den globala lokalen " "för ditt program. Det äldre glibmm-2.4 gör inte det, och gtkmm-3.0 gör det bara till viss " "del. Vad detta betyder är helt kort att om ditt gtkmm-3.0-program innehåller ett anrop till std::locale::" "global(std::locale(\"\")) så kan du troligen ta bort det. Om du inte vill att glibmm eller " "gtkmm ska ställa in den globala lokalen åt dig så ska du lägga till ett anrop till Glib::" "set_init_to_users_preferred_locale(false) före anrop Glib::init() eller Gtk::Application::create()." #. (itstool) path: chapter/para #: C/index-in.docbook:751 msgid "Reference" msgstr "Referens" #. (itstool) path: chapter/para #: C/index-in.docbook:753 msgid "" "There are lots and lots of differences between gtkmm-3.0 and gtkmm-4.0. The following " "lists are not complete." msgstr "" "Det finns massor av skillnader mellan gtkmm-3.0 och gtkmm-4.0. Följande listor är inte " "fullständiga." #. (itstool) path: chapter/para #: C/index-in.docbook:756 msgid "Some new classes were added in gtkmm 4 and glibmm 2.68:" msgstr "Några nya klasser lades till i gtkmm 4 och glibmm 2.68:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:759 msgid "" "Glib::ExtraClassInit and Gtk::Snapshot: These classes are needed only for writing custom widgets. " "See the Custom Widgets section." msgstr "" "Glib::ExtraClassInit och Gtk::Snapshot: Dessa klasser behövs endast för att skriva anpassade " "komponenter. Se avsnittet Anpassade komponenter." #. (itstool) path: listitem/simpara #: C/index-in.docbook:762 msgid "" "Gtk::EventControllerKey, Gtk::EventControllerMotion, Gtk::EventControllerScroll and Gtk::GestureStylus" msgstr "" "Gtk::EventControllerKey, Gtk::EventControllerMotion, Gtk::EventControllerScroll och Gtk::GestureStylus" #. (itstool) path: listitem/simpara #: C/index-in.docbook:765 msgid "" "Gdk::Paintable, Gdk::Texture, Gtk::Picture and Gtk::" "WidgetPaintable" msgstr "" "Gdk::Paintable, Gdk::Texture, Gtk::Picture och Gtk::" "WidgetPaintable" #. (itstool) path: listitem/simpara #: C/index-in.docbook:768 msgid "" "Gdk::Window has been renamed to Gdk::Surface. (Gtk::Window keeps its name.)" msgstr "" "Gdk::Window har bytt namn till Gdk::Surface. (Gtk::Window behåller sitt " "namn.)" #. (itstool) path: listitem/simpara #: C/index-in.docbook:770 msgid "" "Gdk::DrawContext and Gdk::CairoContext are new. Gdk::DrawingContext has " "been removed." msgstr "" "Gdk::DrawContext och Gdk::CairoContext är nya. Gdk::DrawingContext har " "tagits bort." #. (itstool) path: listitem/simpara #: C/index-in.docbook:772 msgid "Gtk::Clipboard has been replaced by the new Gdk::Clipboard." msgstr "Gtk::Clipboard har ersatts av den nya Gdk::Clipboard." #. (itstool) path: listitem/simpara #: C/index-in.docbook:774 msgid "Gdk::DragContext has been split into Gdk::Drag and Gdk::Drop." msgstr "Gdk::DragContext har delats upp i Gdk::Drag och Gdk::Drop." #. (itstool) path: chapter/para #: C/index-in.docbook:778 msgid "" "There have also been several changes to the API, which you will probably encounter when porting code that used gtkmm-3.0 and glibmm-2.4. Here is a short list:" msgstr "" "Det har också skett flera ändringar till API:t, vilket du troligen kommer stöta på när du porterar kod som använt gtkmm-3.0 och glibmm-2.4. Här är en kort lista:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:783 msgid "A C++17 compiler is required." msgstr "En C++17-kompilator krävs." #. (itstool) path: listitem/simpara #: C/index-in.docbook:784 msgid "" "Gtk::Button, Gtk::ToolButton, Gtk::MenuItem and Gtk::Switch implement the Gtk::Actionable interface instead of the removed Gtk::Activatable " "interface." msgstr "" "Gtk::Button, Gtk::ToolButton, Gtk::MenuItem och Gtk::Switch implementerar Gtk::Actionable-gränssnittet i stället för det borttagna Gtk::Activatable-gränssnittet." #. (itstool) path: listitem/simpara #: C/index-in.docbook:788 msgid "Gtk::FontButton implements the Gtk::FontChooser interface." msgstr "Gtk::FontButton implementerar gränssnittet Gtk::FontChooser." #. (itstool) path: listitem/simpara #: C/index-in.docbook:789 msgid "" "Gtk::Widget: The get_preferred_*_vfunc()s have been replaced by measure_vfunc(). This change only affects custom widgets." msgstr "" "Gtk::Widget: De olika metoderna get_preferred_*_vfunc() har ersatts med " "measure_vfunc(). Denna ändring påverkar bara anpassade komponenter." #. (itstool) path: listitem/simpara #: C/index-in.docbook:792 #, fuzzy msgid "" "sigc::slots use the sigc::slot<R(Args...)> syntax. Example: sigc::slot<" "void(int, int)> instead of sigc::slot<void, int, int>." msgstr "" "sigc::slot använder syntaxen sigc::slot<R(Args...)>. Exempel: sigc::slot<" "void(int, int)> i stället för sigc::slot<void, int, int>." #. (itstool) path: listitem/simpara #: C/index-in.docbook:794 #, fuzzy msgid "Gtk::DrawingArea uses a draw function instead of the draw signal." msgstr "Gtk::DrawingArea använder en ritfunktion i stället för signalen draw." #. (itstool) path: listitem/simpara #: C/index-in.docbook:795 msgid "" "Glib::ArrayHandle, Glib::StringArrayHandle, Glib::ListHandle and " "Glib::SListHandle have been removed. They were used in glibmm-2.4, but not used in " "gtkmm-3.0. If you've ever used these classes, replace them with a standard C++ container, such as std::" "vector." msgstr "" "Glib::ArrayHandle, Glib::StringArrayHandle, Glib::ListHandle och " "Glib::SListHandle har tagits bort. De användes i glibmm-2.4, men används inte i " "gtkmm-3.0. Om du har använt dessa klasser kan du ersätta dem med en C++-standardbehållare som std::" "vector." #. (itstool) path: listitem/simpara #: C/index-in.docbook:799 msgid "Gtk::Container has been removed." msgstr "Gtk::Container har tagits bort." #. (itstool) path: listitem/simpara #: C/index-in.docbook:800 msgid "" "Gtk::Widget::show_all() has been removed. The default value of Gtk::Widget::property_visible() has been changed from false to true." msgstr "" "Gtk::Widget::show_all() har tagits bort. Standardvärdet för Gtk::Widget::property_visible() " "har ändrats från false till true." #. (itstool) path: listitem/simpara #: C/index-in.docbook:803 msgid "" "All event signals have been removed from Gtk::Widget. In most cases you can use one of the subclasses of Gtk::" "EventController as a replacement. For instance, use Gtk::GestureMultiPress instead of " "signal_button_press_event() and signal_button_release_event(), and Gtk::" "EventControllerKey instead of signal_key_press_event() and signal_key_release_event()." msgstr "" "Alla händelsesignaler har tagits bort från Gtk::Widget. I de flesta fall kan du använda en av underklasserna för " "Gtk::EventController som ersättning. Använd till exempel Gtk::GestureMultiPress i stället för " "signal_button_press_event() och signal_button_release_event(), och Gtk::" "EventControllerKey i stället för signal_key_press_event() och signal_key_release_event()." #. (itstool) path: listitem/simpara #: C/index-in.docbook:810 msgid "" "Glib::RefPtr is an alias for std::shared_ptr. If you make your own Glib::ObjectBase-derived classes with create() methods that return a Glib::RefPtr, you must use " "Glib::make_refptr_for_instance() in your create() methods." msgstr "" "Glib::RefPtr är ett alias för std::shared_ptr. Om du gör dina egna Glib::ObjectBase-härledda klasser med create()-metoder som returnerar en Glib::RefPtr så måste du " "använda Glib::make_refptr_for_instance() i dina create()-metoder." #. (itstool) path: listitem/simpara #: C/index-in.docbook:815 msgid "" "Gtk::Box::pack_start() and Gtk::Box::pack_end() have been removed. Use the new " "Gtk::Box methods append(), prepend(), " "insert_child_after() and insert_child_at_start()." msgstr "" "Gtk::Box::pack_start() och Gtk::Box::pack_end() har tagits bort. Använd de nya " "Gtk::Box-metoderna append(), prepend(), " "insert_child_after() och insert_child_at_start()." #. (itstool) path: listitem/simpara #: C/index-in.docbook:820 msgid "Gtk::ButtonBox has been removed." msgstr "Gtk::ButtonBox har tagits bort." #. (itstool) path: listitem/simpara #: C/index-in.docbook:821 msgid "" "Gtk::RadioButton and Gtk::RadioButtonGroup have been removed. Use Gtk::CheckButton or Gtk::ToggleButton with set_group()." msgstr "" "Gtk::RadioButton och Gtk::RadioButtonGroup har tagits bort. Använd Gtk::CheckButton eller Gtk::ToggleButton med set_group()." #. (itstool) path: chapter/para #: C/index-in.docbook:827 msgid "" "All deprecated API was removed in gtkmm 4.0 and glibmm 2.68, though there will be new " "deprecations in future versions." msgstr "" "Alla föråldrade API:er togs bort i gtkmm 4.0 och glibmm 2.68, men det kommer göras nya " "föråldringar i framtida versioner." # TODO: copy paste of wiki page? #. (itstool) path: chapter/para #: C/index-in.docbook:830 msgid "" "As a first step to porting your source code to gtkmm-4.0 you should probably ensure that your application builds " "with the deprecated gtkmm-3.0 and glibmm-2.4 API disabled, by defining the macros " "GTKMM_DISABLE_DEPRECATED, GDKMM_DISABLE_DEPRECATED, GLIBMM_DISABLE_DEPRECATED and GIOMM_DISABLE_DEPRECATED. There are some autotools macros " "that can help with this by defining them optionally at build time. See the Porting from gtkmm-2.4 to gtkmm-3.0 wiki page for more details." msgstr "" "Som ett första steg för att portera din källkod till gtkmm-4.0 bör du troligen säkerställa att ditt program går " "bygga med de föråldrade API:erna för gtkmm-3.0 och glibmm-2.4 inaktiverade, genom att " "definiera makrona GTKMM_DISABLE_DEPRECATED, GDKMM_DISABLE_DEPRECATED, GLIBMM_DISABLE_DEPRECATED och GIOMM_DISABLE_DEPRECATED. Det finns några " "autotools-makron som kan hjälpa till med detta genom att valfritt definiera dem vid byggtid. Se wikisidan för portering från gtkmm-2.4 till gtkmm-3.0 för mer detaljer." #. (itstool) path: chapter/para #: C/index-in.docbook:838 msgid "See also Migrating from GTK 3.x to GTK 4." msgstr "Se även Migrera från GTK 3.x till GTK 4." #. (itstool) path: section/title #: C/index-in.docbook:842 msgid "Deprecations in gtkmm 4.10" msgstr "Föråldringar i gtkmm 4.10" #. (itstool) path: section/para #: C/index-in.docbook:844 msgid "" "Many classes are deprecated since gtkmm 4.10. They can still be used in gtkmm4 " "applications, provided GTKMM_DISABLE_DEPRECATED and GDKMM_DISABLE_DEPRECATED are not defined. There are also many new classes in " "gtkmm 4.10, which replace some of the deprecated classes. Some example programs in this tutorial use classes " "deprecated since gtkmm 4.10. Some other programs use classes available since gtkmm 4.10." msgstr "" "Många klasser har föråldrats sedan gtkmm 4.10. De kan fortfarande användas i gtkmm4-" "program, förutsatt att GTKMM_DISABLE_DEPRECATED och GDKMM_DISABLE_DEPRECATED inte har definierats. Det finns också många nya klasser i " "gtkmm 4.10, vilka ersätter några av de föråldrade klasserna. Några exempelprogram i denna handledning använder " "klasser som föråldrats sedan gtkmm 4.10. Några andra program använder klasser som är tillgängliga sedan " "gtkmm 4.10." #. (itstool) path: section/para #: C/index-in.docbook:850 #, fuzzy msgid "" "Deprecated classes: AppChooser, AppChooserButton, AppChooserDialog, AppChooserWidget, CellArea, CellAreaBox, CellAreaContext, CellLayout, " "CellRenderer, CellRendererAccel, CellRendererCombo, CellRendererPixbuf, CellRendererProgress, CellRendererSpin, CellRendererSpinner, " "CellRendererText, CellRendererToggle, CellView, ComboBox, ComboBoxText, EntryCompletion, IconView, ListStore, ListViewText, StyleContext, " "TreeDragDest, TreeDragSource, TreeIter and other classes in treeiter.h, TreeModel, TreeModelFilter, TreeModelSort, TreePath, TreeRowReference, " "TreeSelection, TreeSortable, TreeStore, TreeView, TreeViewColumn, namespace CellRenderer_Generation, namespace TreeView_Private, ColorButton, " "ColorChooser, ColorChooserDialog, FileChooser, FileChooserDialog, FileChooserNative, FileChooserWidget, FontButton, FontChooser, " "FontChooserDialog, FontChooserWidget, MessageDialog, TreeModelColumn, TreeModelColumnRecord, InfoBar, Assistant, AssistantPage, LockButton, " "Statusbar, VolumeButton." msgstr "" "Föråldrade klasser: AppChooser, AppChooserButton, AppChooserDialog, AppChooserWidget, CellArea, CellAreaBox, CellAreaContext, CellLayout, " "CellRenderer, CellRendererAccel, CellRendererCombo, CellRendererPixbuf, CellRendererProgress, CellRendererSpin, CellRendererSpinner, " "CellRendererText, CellRendererToggle, CellView, ComboBox, ComboBoxText, EntryCompletion, IconView, ListStore, ListViewText, StyleContext, " "TreeDragDest, TreeDragSource, TreeIter och andra klasser i treeiter.h, TreeModel, TreeModelFilter, TreeModelSort, TreePath, TreeRowReference, " "TreeSelection, TreeSortable, TreeStore, TreeView, TreeViewColumn, namnrymden CellRenderer_Generation, namnrymden TreeView_Private, ColorButton, " "ColorChooser, ColorChooserDialog, FileChooser, FileChooserDialog, FileChooserNative, FileChooserWidget, FontButton, FontChooser, " "FontChooserDialog, FontChooserWidget, MessageDialog, TreeModelColumn, TreeModelColumnRecord, InfoBar." #. (itstool) path: section/para #: C/index-in.docbook:868 #, fuzzy msgid "" "New classes and enums: AlertDialog, ColorDialog, ColorDialogButton, ColumnViewSorter, FileDialog, FontDialog, FontDialogButton, FileLauncher, " "UriLauncher, ATContext, enums DialogError, FontLevel, Collation." msgstr "" "Nya klasser och enum-uppräkningar: AlertDialog, ColorDialog, ColorDialogButton, ColumnViewSorter, FileDialog, FontDialog, FontDialogButton, " "enum: DialogError, FontLevel." #. (itstool) path: section/para #: C/index-in.docbook:873 msgid "In most cases there are replacements for the deprecated classes. See the reference documentation." msgstr "I de flesta fall finns det ersättningar för de föråldrade klasserna. Se referensdokumentationen." #. (itstool) path: chapter/title #: C/index-in.docbook:881 msgid "Buttons" msgstr "Knappar" #. (itstool) path: chapter/para #: C/index-in.docbook:883 msgid "gtkmm provides four basic types of buttons:" msgstr "gtkmm tillhandahåller fyra grundläggande knapptyper:" #. (itstool) path: varlistentry/term #: C/index-in.docbook:890 msgid "Push buttons" msgstr "Tryckknappar" #. (itstool) path: listitem/para #: C/index-in.docbook:892 msgid "" "Gtk::Button. Standard " "buttons, usually marked with a label or picture. Pushing one triggers an action. See the Button " "section." msgstr "" "Gtk::Button. " "Standardknappar, vanligen markerade med en etikett eller bild. Att trycka på en av dem utlöser en åtgärd. Se avsnittet Button." #. (itstool) path: varlistentry/term #: C/index-in.docbook:899 msgid "Toggle buttons" msgstr "Växlingsknappar" #. (itstool) path: listitem/para #: C/index-in.docbook:901 msgid "" "Gtk::ToggleButton. " "Unlike a normal Button, which springs back up, a ToggleButton stays down until you press it again. It might be useful as an on/off switch. See " "the ToggleButton section." msgstr "" "Gtk::ToggleButton. " "Till skillnad från en vanlig Button som fjädrar upp igen förblir en ToggleButton nedtryckt till du trycker på den igen. Den kan vara användbar " "som en på/av-brytare. Se avsnittet ToggleButton." #. (itstool) path: varlistentry/term #: C/index-in.docbook:909 msgid "Check buttons" msgstr "Kryssrutor" #. (itstool) path: listitem/para #: C/index-in.docbook:911 msgid "" "Gtk::CheckButton. " "These act like ToggleButtons, but show their state in small squares, with their label at the side. They should be used in most situations which " "require an on/off setting. See the CheckButton section." msgstr "" "Gtk::CheckButton. " "Dessa fungerar som ToggleButton, men visar sitt tillstånd i små rutor, med sin etikett på sidan. De bör användas i de flesta situationer som " "kräver en på/av-inställning. Se avsnittet CheckButton." #. (itstool) path: varlistentry/term #: C/index-in.docbook:921 msgid "Radio buttons" msgstr "Radioknappar" #. (itstool) path: listitem/para #: C/index-in.docbook:923 msgid "" "Named after the station selectors on old car radios, these buttons are used in groups for options which are mutually exclusive. Pressing one " "causes all the others in its group to turn off. They are similar to ToggleButtons or CheckButtons (a small widget with a label at the side), " "but usually look different. There is no separate radio button class. Check buttons and toggle buttons can act as radio buttons. See the Radio Button section." msgstr "" "Dessa knappar har fått sitt namn efter stationsväljarna på gamla bilradioapparater, och används i grupper för alternativ som är ömsesidigt " "uteslutande. Att trycka på en av dem får alla andra i gruppen att slå av. De liknar ToggleButton eller CheckButton (en liten komponent med en " "etikett på sidan), men ser vanligen annorlunda ut. Det finns ingen separat klass för radioknappar. Kryssrutor och växlingsknappar kan användas " "som radioknappar. Se avsnittet Radioknapp." #. (itstool) path: chapter/para #: C/index-in.docbook:937 msgid "" "Note that, due to GTK's theming system, the appearance of these widgets will vary. In the case of check buttons and radio buttons, they may " "vary considerably." msgstr "" "Observera att på grund av GTK:s temasystem kommer utseendet på dessa komponenter att variera. I fallet med kryssrutor och radioknappar kan de " "variera avsevärt." #. (itstool) path: section/title #: C/index-in.docbook:944 msgid "Button" msgstr "Button" #. (itstool) path: section/para #: C/index-in.docbook:946 msgid "" "There are two ways to create a Button. You can specify a label string in the Gtk::Button constructor, or set it later " "with set_label()." msgstr "" "Det finns två sätt att skapa en Button. Du kan ange en etikettsträng i Gtk::Button-konstruktorn, eller ställa in den " "senare med set_label()." #. (itstool) path: section/para #: C/index-in.docbook:952 msgid "" "To define an accelerator key for keyboard navigation, place an underscore before one of the label's characters and specify true for the optional mnemonic parameter. For instance:" msgstr "" "För att definiera en snabbtangent för tangentbordsnavigering sätter du ett understreck före ett av etikettens tecken och anger true för den valfria parametern mnemonic. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:954 #, fuzzy, no-wrap msgid "Gtk::Button* pButton = new Gtk::Button(\"_Something\", true);" msgstr "Gtk::Button* pButton = new Gtk::Button(\"_Något\", true);" #. (itstool) path: section/para #: C/index-in.docbook:956 msgid "" "Gtk::Button is also a container so you could put any other widget, such as a Gtk::Image into it." msgstr "" "Gtk::Button är också en behållare, så du kan stoppa en valfri komponent, som en Gtk::Image i den." #. (itstool) path: section/para #: C/index-in.docbook:962 msgid "" "The Gtk::Button widget has the clicked signal which is emitted when the button is pressed and " "released." msgstr "Komponenten Gtk::Button har signalen clicked som sänds ut när knappen trycks ned och släpps." #. (itstool) path: section/para #: C/index-in.docbook:967 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:970 C/index-in.docbook:1024 C/index-in.docbook:1084 C/index-in.docbook:1200 C/index-in.docbook:1258 C/index-in.docbook:1576 #: C/index-in.docbook:1643 C/index-in.docbook:1666 C/index-in.docbook:1701 C/index-in.docbook:1755 C/index-in.docbook:1794 C/index-in.docbook:1835 #: C/index-in.docbook:1868 C/index-in.docbook:2159 C/index-in.docbook:2191 C/index-in.docbook:2245 C/index-in.docbook:2292 C/index-in.docbook:2453 #: C/index-in.docbook:2477 C/index-in.docbook:2501 C/index-in.docbook:2539 C/index-in.docbook:2567 C/index-in.docbook:2598 C/index-in.docbook:4496 #: C/index-in.docbook:4525 C/index-in.docbook:4552 C/index-in.docbook:4579 C/index-in.docbook:4611 C/index-in.docbook:4635 C/index-in.docbook:4814 #: C/index-in.docbook:4963 C/index-in.docbook:5039 C/index-in.docbook:5111 C/index-in.docbook:5179 C/index-in.docbook:5419 C/index-in.docbook:5926 #: C/index-in.docbook:6245 C/index-in.docbook:6293 C/index-in.docbook:6855 C/index-in.docbook:6979 C/index-in.docbook:7628 C/index-in.docbook:7689 #: C/index-in.docbook:7747 C/index-in.docbook:7972 C/index-in.docbook:9430 msgid "Example" msgstr "Exempel" #. (itstool) path: section/para #: C/index-in.docbook:972 msgid "This example creates a button with a picture and a label." msgstr "Detta exempel skapar en knapp med en bild och en etikett." #. (itstool) path: figure/title #: C/index-in.docbook:977 msgid "buttons example" msgstr "knappexempel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:979 #, fuzzy msgctxt "_" msgid "external ref='figures/buttons.png' md5='ab288a013ed7d6c0b797f5998961dea9'" msgstr "external ref='figures/buttons.png' md5='ab288a013ed7d6c0b797f5998961dea9'" #. (itstool) path: section/para #: C/index-in.docbook:983 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:990 msgid "ToggleButton" msgstr "ToggleButton" #. (itstool) path: section/para #: C/index-in.docbook:992 msgid "" "ToggleButtons are like normal Buttons, but when clicked they remain activated, or pressed, until " "clicked again." msgstr "" "En ToggleButton är som en vanlig Button, men när den klickas på förblir den aktiverad, eller " "nedtryckt, tills den klickas på igen." #. (itstool) path: section/para #: C/index-in.docbook:994 msgid "" "To retrieve the state of the ToggleButton, you can use the get_active() method. This returns " "true if the button is \"down\". You can also set the toggle button's state, with set_active(). Note " "that, if you do this, and the state actually changes, it causes the \"clicked\" signal to be emitted. This is usually what you want." msgstr "" "För att erhålla tillståndet för vår ToggleButton kan du använda metoden get_active(). Denna " "returnerar true om knappen är ”nere”. Du kan också ställa in växlingsknappens tillstånd med set_active(). Observera att om du gör detta och tillståndet faktiskt ändras, så får det signalen ”clicked” att sändas ut. Detta är vanligen vad " "du vill." #. (itstool) path: section/para #: C/index-in.docbook:1001 msgid "" "You can use the toggled() method to toggle the button, rather than forcing it to be up or down: This switches the " "button's state, and causes the toggled signal to be emitted." msgstr "" "Du kan använda metoden toggled() för att trycka på knappen, snarare än att tvinga den att vara uppe eller nere: detta " "växlar knappens tillstånd, och får signalen toggled att sändas ut." #. (itstool) path: section/para #: C/index-in.docbook:1006 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1011 C/index-in.docbook:1027 msgid "CheckButton" msgstr "CheckButton" #. (itstool) path: section/para #: C/index-in.docbook:1013 msgid "" "Gtk::CheckButton inherits directly from Gtk::Widget. It is similar to Gtk::" "ToggleButton. The only real difference between the two is Gtk::CheckButton's appearance. You can check and " "set a check button using the same member methods as for Gtk::ToggleButton." msgstr "" "Gtk::CheckButton ärver direkt från Gtk::Widget. Den liknar Gtk::ToggleButton. Den enda verkliga skillnaden mellan de två är utseendet för Gtk::CheckButton. Du kan kontrollera och ställa " "in en kryssruta med samma medlemsmetoder som för Gtk::ToggleButton." #. (itstool) path: section/para #: C/index-in.docbook:1021 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1029 #, fuzzy msgctxt "_" msgid "external ref='figures/checkbutton.png' md5='4d0e8f846ce98aeeada64227dd2f55a7'" msgstr "external ref='figures/checkbutton.png' md5='4d0e8f846ce98aeeada64227dd2f55a7'" #. (itstool) path: section/para #: C/index-in.docbook:1033 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1039 msgid "Radio Button" msgstr "Radioknapp" #. (itstool) path: section/para #: C/index-in.docbook:1041 msgid "" "There is no separate class for radio buttons. Check buttons and toggle buttons act as radio buttons when they form a group. Only one button in " "a group can be selected at any one time." msgstr "" "Det finns ingen separat klass för radioknappar. Kryssrutor och växlingsknappar agerar som radioknappar då de bildar en grupp. Endast en knapp " "åt gången kan vara vald i en grupp." #. (itstool) path: section/title #: C/index-in.docbook:1048 msgid "Groups" msgstr "Grupper" #. (itstool) path: section/para #: C/index-in.docbook:1049 msgid "You create the buttons, and set up their group afterwards. In the following example, we put 3 radio buttons in a group:" msgstr "Du skapar knapparna, och konfigurerar deras grupp efteråt. I följande exempel stoppar vi 3 radioknappar i en grupp:" #. (itstool) path: section/programlisting #: C/index-in.docbook:1054 #, no-wrap msgid "" "\n" "auto rb1 = Gtk::make_managed<Gtk::CheckButton>(\"button1\");\n" "auto rb2 = Gtk::make_managed<Gtk::CheckButton>(\"button2\");\n" "auto rb3 = Gtk::make_managed<Gtk::CheckButton>(\"button3\");\n" "rb2->set_group(*rb1);\n" "rb3->set_group(*rb1);\n" msgstr "" "\n" "auto rb1 = Gtk::make_managed<Gtk::CheckButton>(\"knapp1\");\n" "auto rb2 = Gtk::make_managed<Gtk::CheckButton>(\"knapp2\");\n" "auto rb3 = Gtk::make_managed<Gtk::CheckButton>(\"knapp3\");\n" "rb2->set_group(*rb1);\n" "rb3->set_group(*rb1);\n" #. (itstool) path: section/para #: C/index-in.docbook:1062 msgid "" "We told gtkmm to put all three CheckButtons in the same group by using " "set_group() to tell the other CheckButtons to share group with the first " "CheckButton." msgstr "" "Vi sa till gtkmm att stoppa alla tre CheckButton-knapparna i samma grupp genom att använda " "set_group() för att säga till de andra två CheckButton-knapparna att dela grupp med den första " "CheckButton-knappen." #. (itstool) path: section/title #: C/index-in.docbook:1072 C/index-in.docbook:1537 C/index-in.docbook:5290 msgid "Methods" msgstr "Metoder" #. (itstool) path: section/para #: C/index-in.docbook:1073 msgid "" "CheckButtons and ToggleButtons are \"off\" when created; this means that when you first make a " "group of them, they will all be off. Don't forget to turn one of them on using set_active()." msgstr "" "CheckButton och ToggleButton är ”av” när de skapas. Detta betyder att när du först gör en grupp " "av dem kommer alla vara ”av”. Glöm inte att slå på en av dem med set_active()." #. (itstool) path: section/para #: C/index-in.docbook:1079 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1085 msgid "The following example demonstrates the use of grouped CheckButtons:" msgstr "Följande exempel demonstrerar användningen av grupperade CheckButton-knappar:" #. (itstool) path: figure/title #: C/index-in.docbook:1091 msgid "RadioButton" msgstr "RadioButton" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1093 #, fuzzy msgctxt "_" msgid "external ref='figures/radiobuttons.png' md5='49ad0ed4567104af07b1c6484ffb821e'" msgstr "external ref='figures/radiobuttons.png' md5='49ad0ed4567104af07b1c6484ffb821e'" #. (itstool) path: section/para #: C/index-in.docbook:1097 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #. (itstool) path: figure/title #: C/index-in.docbook:1104 C/index-in.docbook:1211 #, fuzzy msgid "Range Widgets" msgstr "Intervallkomponenter" #. (itstool) path: chapter/para #: C/index-in.docbook:1106 #, fuzzy msgid "" "Gtk::Scale inherits from Gtk::Range. Gtk::Scrollbar does not inherit from " "Gtk::Range, but it shares much functionality with Gtk::Scale. They both contain a \"trough\" and " "a \"slider\" (sometimes called a \"thumbwheel\" in other GUI environments). Dragging the slider with the pointer moves it within the trough, " "while clicking in the trough advances the slider towards the location of the click, either completely, or by a designated amount, depending on " "which mouse button is used. This should be familiar scrollbar behavior." msgstr "" "Gtk::Scale ärver från Gtk::Range. Gtk::Scrollbar ärver inte från " "Gtk::Range, men delar mycket funktionalitet med Gtk::Scale. De innehåller båda ett ”tråg” och ett " "”skjutreglage” (ibland kallat ett ”tumhjul” i andra grafiska användargränssnittsmiljöer). Att dra skjutreglaget med pekaren flyttar den i " "tråget, medan att klicka i tråget flyttar skjutreglaget i riktning mot klickets plats, antingen fullständigt, eller med en angiven mängd, " "beroende på vilken musknapp som används. Det här bör vara bekant beteende för rullningslister." #. (itstool) path: chapter/para #: C/index-in.docbook:1118 #, fuzzy msgid "" "As will be explained in the Adjustments section, all range widgets are associated with an " "Adjustment object. To change the lower, upper, and current values used by the widget you need to use the methods of its " "Adjustment, which you can get with the get_adjustment() method. The range widgets' default " "constructors create an Adjustment automatically, or you can specify an existing Adjustment, maybe " "to share it with another widget. See the Adjustments section for further details." msgstr "" "Som kommer förklaras i avsnittet Justeringar så är alla intervallkomponenter associerade med ett " "Adjustment-objekt. För att ändra de lägsta, högsta och aktuella värdena som används av komponenten behöver du använda " "metoderna för dess Adjustment vilka du kan få med metoden get_adjustment(). " "Intervallkomponenternas standardkonstruktorer skapar automatiskt en Adjustment, eller så kan du ange en befintlig " "Adjustment, kanske för att dela med en annan komponent. Se avsnittet Justeringar för mer detaljer." #. (itstool) path: chapter/para #: C/index-in.docbook:1132 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1135 msgid "Scrollbar Widgets" msgstr "Rullningslistkomponenter" #. (itstool) path: section/para #: C/index-in.docbook:1137 msgid "" "These are standard scrollbars. They should be used only to scroll another widget, such as a Gtk::Entry or a " "Gtk::Viewport, though it's usually easier to use the Gtk::ScrolledWindow widget in most cases." msgstr "" "Dessa är standardrullningslister. De bör endast användas för att rulla en annan komponent, som en Gtk::Entry eller " "Gtk::Viewport, men det är vanligen lättare att använda komponenten Gtk::ScrolledWindow i de " "flesta fall." #. (itstool) path: section/para #: C/index-in.docbook:1144 msgid "The orientation of a Gtk::Scrollbar can be either horizontal or vertical." msgstr "Orienteringen för en Gtk::Scrollbar kan vara antingen horisontell eller vertikal." #. (itstool) path: section/para #: C/index-in.docbook:1149 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1154 #, fuzzy msgid "Scale Widgets" msgstr "Skalkomponenter" # TODO: color #. (itstool) path: section/para #: C/index-in.docbook:1156 msgid "" "Gtk::Scale widgets (or \"sliders\") allow the user to visually select and manipulate a value within a specific range. " "You might use one, for instance, to adjust the magnification level on a zoomed preview of a picture, or to control the brightness of a colour, " "or to specify the number of minutes of inactivity before a screensaver takes over the screen." msgstr "" "Gtk::Scale-komponenter (eller ”skjutreglage”) låter användaren visuellt välja och manipulera ett värde inom ett visst " "intervall. Du använder exempelvis kanske en för att justera förstoringsnivån på en zoomad förhandsgranskning av en bild, eller för att styra " "ljusstyrkan för en färg, eller för att ange antalet inaktiva minuter innan en skärmsläckare tar över skärmen." #. (itstool) path: section/para #: C/index-in.docbook:1165 msgid "" "As with Scrollbars, the orientation can be either horizontal or vertical. The default constructor creates an " "Adjustment with all of its values set to 0.0. This isn't useful so you will need to set some " "Adjustment details to get meaningful behavior." msgstr "" "Som med Scrollbar kan orienteringen vara antingen horisontell eller vertikal. Standardkonstruktorn skapar en " "Adjustment med alla sina värden satta till 0.0. Det här är inte användbart så du kommer behöva ställa " "in några Adjustment-detaljer för att få betydelsefullt beteende." #. (itstool) path: section/title #: C/index-in.docbook:1174 msgid "Useful methods" msgstr "Användbara metoder" #. (itstool) path: section/para #: C/index-in.docbook:1176 #, fuzzy msgid "" "Scale widgets can display their current value as a number next to the trough. By default they show the value, but you " "can change this with the set_draw_value() method." msgstr "" "Scale-komponenter kan visa sina aktuella värden som ett tal intill tråget. Som standard visar de värdet, men du kan " "ändra detta med metoden set_draw_value()." #. (itstool) path: section/para #: C/index-in.docbook:1182 #, fuzzy msgid "" "The value displayed by a scale widget is rounded to one decimal point by default, as is the value field in its " "Gtk::Adjustment. You can change this with the set_digits() method." msgstr "" "Värdet som visas av en skalkomponent avrundas till en decimal som standard, som det är i fältet value i dess Gtk::" "Adjustment. Du kan ändra detta med metoden set_digits()." #. (itstool) path: section/para #: C/index-in.docbook:1189 #, fuzzy msgid "" "Also, the value can be drawn in different positions relative to the trough, specified by the set_value_pos() method." msgstr "Värdet kan också skrivas ut i olika positions relativt till tråget, angivet av metoden set_value_pos()." #. (itstool) path: section/para #: C/index-in.docbook:1194 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1202 #, fuzzy msgid "" "This example displays a window with three range widgets all connected to the same adjustment, along with a couple of controls for adjusting " "some of the parameters mentioned above and in the section on adjustments, so you can see how they affect the way these widgets work for the " "user." msgstr "" "Detta exempel visar ett fönster med tre intervallkomponenter som alla anslutits till samma justering, tillsammans med ett par kontroller för " "att justera några av parametrarna som nämnts ovan och i avsnittet om justeringar, så du kan se hur de påverkar sättet dessa komponenter " "fungerar för användaren." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1213 #, fuzzy msgctxt "_" msgid "external ref='figures/range_widgets.png' md5='8bebdf457c84aa921681a7f44f46f244'" msgstr "external ref='figures/range_widgets.png' md5='8bebdf457c84aa921681a7f44f46f244'" #. (itstool) path: section/para #: C/index-in.docbook:1217 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:1224 msgid "Miscellaneous Widgets" msgstr "Diverse komponenter" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1227 C/index-in.docbook:1268 #, fuzzy msgid "Label" msgstr "Label" #. (itstool) path: section/para #: C/index-in.docbook:1229 msgid "" "Labels are the main method of placing non-editable text in windows, for instance to place a title next to an Entry " "widget. You can specify the text in the constructor, or later with the set_text() or set_markup() methods." msgstr "" "Etiketter är huvudmetoden för att placera ej redigerbar text i fönster, exempelvis för att placera en titel intill en Entry-komponent. Du kan ange texten i konstruktorn, eller senare med metoderna set_text() eller " "set_markup()." #. (itstool) path: section/para #: C/index-in.docbook:1236 msgid "" "The width of the label will be adjusted automatically. You can produce multi-line labels by putting line breaks (\"\\n\") in the label string." msgstr "" "Bredden på etiketten kommer justeras automatiskt. Du kan skapa etiketter med flera rader genom att stoppa nyrader (”\\n”) i etikettsträngen." #. (itstool) path: section/para #: C/index-in.docbook:1240 #, fuzzy msgid "" "The label text can be justified using the set_justify() method. The widget is also capable of word-wrapping, which can " "be activated with set_wrap()." msgstr "" "Etikettexten kan justeras med metoden set_justify(). Etiketten kan också radbryta ord, vilket kan aktiveras med " "set_wrap()." # TODO: remove space before . ? #. (itstool) path: section/para #: C/index-in.docbook:1246 #, fuzzy msgid "" "Gtk::Label supports some simple formatting, for instance allowing you to make some text bold, colored, or larger. You can do this by providing " "a string to set_markup(), using the Pango Markup " "syntax. For instance, <b>bold text</b> and <s>strikethrough text</s> ." msgstr "" "Gtk::Label stöder viss enkel formatering, till exempel låter det dig göra text i fetstil, i färg, eller större. Du kan göra detta genom att " "tillhandahålla en sträng till set_markup() med Pango " "Markup-syntax. Exempelvis, <b>text i fetstil</b> och <s>genomstruken text</s> ." #. (itstool) path: section/para #: C/index-in.docbook:1255 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1259 msgid "" "Below is a short example to illustrate these functions. This example makes use of the Frame widget to better demonstrate the label styles. (The " "Frame widget is explained in the Frame section.) It is possible that the first character in " "m_Label_Normal is shown underlined only when you press the Alt key." msgstr "" "Nedan är ett kort exempel för att illustrera dessa funktioner. Detta exempel använder komponenten Frame för att bättre demonstrera " "etikettstilarna. (Komponenten Frame förklaras i avsnittet Frame.) Det är möjligt att det första tecknet i " "m_Label_Normal endast visas understruket när du trycker på Alt-tangenten." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1270 #, fuzzy msgctxt "_" msgid "external ref='figures/label.png' md5='107dd71338becc14c70fbd3a708caa89'" msgstr "external ref='figures/label.png' md5='107dd71338becc14c70fbd3a708caa89'" #. (itstool) path: section/para #: C/index-in.docbook:1274 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1281 C/index-in.docbook:1337 #, fuzzy msgid "Entry" msgstr "Entry" #. (itstool) path: section/title #: C/index-in.docbook:1284 msgid "Simple Use" msgstr "Enkel användning" #. (itstool) path: section/para #: C/index-in.docbook:1286 #, fuzzy msgid "" "Entry widgets allow the user to enter text. You can change the contents with the set_text() method, and read the " "current contents with the get_text() method." msgstr "" "Inmatningskomponenter låter användaren mata in text. Du kan ändra innehållet med metoden set_text(), och läsa aktuellt " "innehåll med metoden get_text()." #. (itstool) path: section/para #: C/index-in.docbook:1291 msgid "" "Occasionally you might want to make an Entry widget read-only. This can be done by passing false to " "the set_editable() method." msgstr "" "Ibland kan du vilja göra en Entry-komponent skrivskyddad. Detta kan göras genom att skicka false till " "metoden set_editable()." #. (itstool) path: section/para #: C/index-in.docbook:1297 msgid "" "For the input of passwords, passphrases and other information you don't want echoed on the screen, calling set_visibility() with false will cause the text to be hidden." msgstr "" "För inmatning av lösenord, lösenfraser och annan information du inte vill ska skrivas ut på skärmen kan du anropa set_visibility() med false för att texten ska vara dold." #. (itstool) path: section/para #: C/index-in.docbook:1303 #, fuzzy msgid "" "You might want to be notified whenever the user types in a text entry widget. Gtk::Entry provides two signals, " "activate (since gtkmm 4.8) and changed, for this purpose. activate is emitted when the user presses the Enter key in a text-entry widget; changed is emitted when the " "text in the widget changes. You can use these, for instance, to validate or filter the text the user types. Moving the keyboard focus to " "another widget may also signal that the user has finished entering text. The leave signal in a Gtk::" "EventControllerFocus can notify you when that happens. The ComboBox with an Entry " "section contains example programs that use these signals." msgstr "" "Du kan vilja meddelas närhelst användaren skriver i en textinmatningskomponent. Gtk::Entry tillhandahåller två signaler, " "activate (sedan gtkmm 4.8.0) och changed för detta syfte. activate sänds ut när användaren trycker på Retur-tangenten i en textinmatningskomponent; changed sänds ut " "när texten i komponenten ändras. Du kan exempelvis använda dessa för att validera eller filtrera texten som användaren skriver in. Att flytta " "tangentbordsfokus till en annan komponent kan också signalera att användaren är klar med att mata in text. Signalen leave i " "ett Gtk::EventControllerFocus kan meddela dig när det händer. Avsnittet ComboBox med " "ett Entry innehåller exempelprogram som använder dessa signaler." #. (itstool) path: section/para #: C/index-in.docbook:1317 #, fuzzy msgid "" "If you pass true to the set_activates_default() method, pressing Enter in the " "Gtk::Entry will activate the default widget for the window containing the Gtk::Entry. This is " "especially useful in dialog boxes. The default widget is usually one of the dialog buttons, which e.g. will close the dialog box. To set a " "widget as the default widget, use Gtk::Window::set_default_widget()." msgstr "" "Om du skickar true till metoden set_activates_default() kommer att trycka Retur i " "vår Gtk::Entry aktivera standardkomponenten för fönstret som innehåller vår Gtk::Entry. Detta är " "speciellt användbart i dialogrutor. Standardkomponenten är vanligen en av dialogknapparna, vilken t.ex. kommer stänga dialogrutan. Använd " "Gtk::Window::set_default_widget() för att ställa in en komponent som standardkomponenten." #. (itstool) path: section/para #: C/index-in.docbook:1326 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1329 #, fuzzy msgid "Simple Entry Example" msgstr "Enkelt inmatningsexempel" #. (itstool) path: section/para #: C/index-in.docbook:1330 msgid "" "This example uses Gtk::Entry. It also has two CheckButtons, with which you can toggle the " "editable and visible flags." msgstr "" "Detta exempel använder Gtk::Entry. Det har också två CheckButton-knappar, med vilka du kan växla " "flaggorna för redigering och synlighet." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1339 #, fuzzy msgctxt "_" msgid "external ref='figures/entry.png' md5='ae877c1b982f8c6cadebc9867f6d9075'" msgstr "external ref='figures/entry.png' md5='ae877c1b982f8c6cadebc9867f6d9075'" #. (itstool) path: section/para #: C/index-in.docbook:1343 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1350 C/index-in.docbook:1390 #, fuzzy msgid "Entry Completion" msgstr "Inmatningskomplettering" #. (itstool) path: note/para #: C/index-in.docbook:1352 msgid "" "Gtk::EntryCompletion is deprecated since gtkmm 4.10. There is no replacement in " "gtkmm." msgstr "" "Gtk::EntryCompletion är föråldrad sedan gtkmm 4.10. Det finns ingen ersättning i " "gtkmm." #. (itstool) path: section/para #: C/index-in.docbook:1356 msgid "" "An Entry widget can offer a drop-down list of pre-existing choices based on the first few characters typed by the user. " "For instance, a search dialog could suggest text from previous searches." msgstr "" "En Entry-komponent kan erbjuda en rullgardinslista med befintliga val baserat på de första tecken som användaren skrivit " "in. En sökdialog skulle exempelvis kunna föreslå text från tidigare sökningar." #. (itstool) path: section/para #: C/index-in.docbook:1361 msgid "" "To enable this functionality, you must create an EntryCompletion object, and provide it to the Entry widget via the set_completion() method." msgstr "" "För att aktivera denna funktionalitet måste du skapa ett EntryCompletion-objekt, och tillhandahålla det till " "Entry-komponenten genom metoden set_completion()." #. (itstool) path: section/para #: C/index-in.docbook:1366 #, fuzzy msgid "" "The EntryCompletion may use a TreeModel containing possible entries, specified with " "set_model(). You should then call set_text_column() to specify which of your model columns " "should be used to match possible text entries." msgstr "" "Denna EntryCompletion kan använda en TreeModel som innehåller möjliga inmatningar, angivet med " "set_model(). Du bör sedan anropa set_text_column() för att ange vilka av dina modellkolumner " "som ska användas för att matcha möjliga textinmatningar." #. (itstool) path: section/para #: C/index-in.docbook:1372 #, fuzzy msgid "" "Alternatively, if a complete list of possible entries would be too large or too inconvenient to generate, a callback slot may instead be " "specified with set_match_func(). This is also useful if you wish to match on a part of the string other than the start." msgstr "" "Alternativt kan, om en fullständig lista över möjliga inmatningar skulle vara för stor eller opraktisk att skapa, ett återanropsfack i stället " "anges med set_match_func(). Detta är även användbart om du vill matcha strängen på en annan del än starten." #. (itstool) path: section/para #: C/index-in.docbook:1378 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1381 #, fuzzy msgid "Entry Completion Example" msgstr "Exempel på inmatningskomplettering" #. (itstool) path: section/para #: C/index-in.docbook:1382 msgid "" "This example creates a Gtk::EntryCompletion and associates it with a Gtk::Entry widget. The " "completion uses a Gtk::TreeModel of possible entries, and some additional actions." msgstr "" "Detta exempel skapar en Gtk::EntryCompletion och associerar den med en Gtk::Entry-komponent. " "Kompletteringen använder en Gtk::TreeModel med möjliga inmatningar och några ytterligare åtgärder." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1392 #, fuzzy msgctxt "_" msgid "external ref='figures/entry_completion.png' md5='5b9015c5bd9c04c2c51eb1de40ab7534'" msgstr "external ref='figures/entry_completion.png' md5='5b9015c5bd9c04c2c51eb1de40ab7534'" #. (itstool) path: section/para #: C/index-in.docbook:1396 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1402 #, fuzzy msgid "Entry Icons" msgstr "Inmatningsikoner" #. (itstool) path: section/para #: C/index-in.docbook:1404 msgid "" "An Entry widget can show an icon at the start or end of the text area. The icon can be specified by methods such as " "set_icon_from_paintable() or set_icon_from_icon_name(). An application can respond to the " "user pressing the icon by handling the signal_icon_press signal." msgstr "" "En Entry-komponent kan visa en ikon i början eller i slutet på textområdet. Ikonen kan anges av metoder som " "set_icon_from_paintable() eller set_icon_from_icon_name(). Ett program kan svara på tryck på " "ikonen genom att hantera signalen signal_icon_press." #. (itstool) path: section/title #: C/index-in.docbook:1412 #, fuzzy msgid "Entry Icon Example" msgstr "Exempel på inmatningsikon" #. (itstool) path: section/para #: C/index-in.docbook:1413 msgid "" "This example shows a Gtk::Entry widget with a named search icon, and prints text to the terminal when the icon is " "pressed." msgstr "" "Detta exempel visar en Gtk::Entry-komponent med en namngiven sökikon, och skriver ut text till terminalen när ikonen " "trycks ned." #. (itstool) path: figure/title #: C/index-in.docbook:1419 #, fuzzy msgid "Entry with Icon" msgstr "Entry med ikon" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1421 #, fuzzy msgctxt "_" msgid "external ref='figures/entry_icon.png' md5='fb1db5f1b82bb2849d352170ada89191'" msgstr "external ref='figures/entry_icon.png' md5='fb1db5f1b82bb2849d352170ada89191'" #. (itstool) path: section/para #: C/index-in.docbook:1425 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1431 #, fuzzy msgid "Entry Progress" msgstr "Inmatningsförlopp" #. (itstool) path: section/para #: C/index-in.docbook:1433 msgid "" "An Entry widget can show a progress bar inside the text area, under the entered text. The progress bar will be shown if " "the set_progress_fraction() or set_progress_pulse_step() methods are called." msgstr "" "En Entry-komponent kan visa en förloppsindikator inuti textområdet, under den inmatade texten. Förloppsindikatorn kommer " "visas om metoderna set_progress_fraction() eller set_progress_pulse_step() anropas." #. (itstool) path: section/title #: C/index-in.docbook:1439 #, fuzzy msgid "Entry Progress Example" msgstr "Exempel på inmatningsförlopp" #. (itstool) path: section/para #: C/index-in.docbook:1440 msgid "This example shows a Gtk::Entry widget with a progress bar." msgstr "Detta exempel visar en Gtk::Entry-komponent med en förloppsindikator." #. (itstool) path: figure/title #: C/index-in.docbook:1446 #, fuzzy msgid "Entry with Progress Bar" msgstr "Entry med förloppsindikator" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1448 #, fuzzy msgctxt "_" msgid "external ref='figures/entry_progress.png' md5='07a446c645744d0ab3516112271cf4e3'" msgstr "external ref='figures/entry_progress.png' md5='07a446c645744d0ab3516112271cf4e3'" #. (itstool) path: section/para #: C/index-in.docbook:1452 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1460 C/index-in.docbook:1583 msgid "SpinButton" msgstr "SpinButton" #. (itstool) path: section/para #: C/index-in.docbook:1462 #, fuzzy msgid "" "A SpinButton allows the user to select a value from a range of numeric values. It has an Entry " "widget with increment and decrement buttons at the side. Clicking the buttons causes the value to 'spin' up and down across the range of " "possible values. The Entry widget may also be used to enter a value directly." msgstr "" "En SpinButton låter användaren välja ett värde från ett numeriskt intervall. Den har en Entry-" "komponent med öknings- och minskningsknappar på sidan. Att klicka på knapparna får värdet att ”snurras” upp och ner längs intervallet av " "möjliga värden. Entry-komponenten kan också användas för att direkt mata in ett värde." #. (itstool) path: section/para #: C/index-in.docbook:1470 msgid "" "The value can have an adjustable number of decimal places, and the step size is configurable. SpinButtons have an 'auto-" "repeat' feature as well: holding down the increment or decrement button can optionally cause the value to change more quickly the longer the " "button is held down." msgstr "" "Värdet kan ha ett justerbart antal decimaler, och stegstorleken kan konfigureras. SpinButton har även en funktion för " "”automatisk upprepning”: att hålla ner öknings- eller minskningsknappen kan valfritt få värdet att ändras snabbare ju längre knappen hålls ner." #. (itstool) path: listitem/para #: C/index-in.docbook:1484 msgid "value: value for the Spin Button" msgstr "value: värdet på stegningsrutan" #. (itstool) path: listitem/para #: C/index-in.docbook:1490 msgid "lower: lower range value" msgstr "lower: lägsta intervallvärde" #. (itstool) path: listitem/para #: C/index-in.docbook:1496 msgid "upper: upper range value" msgstr "upper: högsta intervallvärde" #. (itstool) path: listitem/para #: C/index-in.docbook:1501 msgid "step_increment: value to increment/decrement when pressing mouse button 1" msgstr "step_increment: värde att öka/minska med när musknapp 1 trycks ned" #. (itstool) path: listitem/para #: C/index-in.docbook:1508 msgid "page_increment: value to increment/decrement when pressing mouse button 2" msgstr "page_increment: värde att öka/minska med när musknapp 2 trycks ned" #. (itstool) path: listitem/para #: C/index-in.docbook:1515 msgid "page_size: unused" msgstr "page_size: används inte" #. (itstool) path: section/para #: C/index-in.docbook:1477 #, fuzzy msgid "" "SpinButtons use an Adjustment object to hold information about the range of " "values. These Adjustment attributes are used by the Spin Button like so: <_:itemizedlist-1/>" msgstr "" "SpinButton-rutor använder ett Adjustment-objekt för att hålla information om " "värdeintervallet. Dessa Adjustment-attribut används så här av stegningsrutan: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:1523 msgid "Additionally, mouse button 3 can be used to jump directly to the upper or lower values." msgstr "Vidare kan musknapp 3 användas för att hoppa direkt till värdena upper eller lower." #. (itstool) path: section/para #: C/index-in.docbook:1528 msgid "" "The SpinButton can create a default Adjustment, which you can access via the " "get_adjustment() method, or you can specify an existing Adjustment in the constructor." msgstr "" "SpinButton kan skapa en standard-Adjustment som du kan komma åt genom " "get_adjustment()-metoden, eller så kan du ange en befintlig Adjustment i konstruktorn." #. (itstool) path: section/para #: C/index-in.docbook:1539 msgid "The number of decimal places can be altered using the set_digits() method." msgstr "Antalet decimaltecken kan ändras med metoden set_digits()." #. (itstool) path: section/para #: C/index-in.docbook:1544 msgid "" "You can set the spinbutton's value using the set_value() method, and retrieve it with get_value()." msgstr "" "Du kan ställa in stegningsrutans värde med metoden set_value(), och erhålla det med get_value()." #. (itstool) path: section/para #: C/index-in.docbook:1549 #, fuzzy msgid "" "The spin() method 'spins' the SpinButton, as if its increment or decrement button had been " "clicked. You need to specify a Gtk::SpinType to specify the direction or new position." msgstr "" "Metoden spin() ”snurrar” vår SpinButton som om dess knapp för ökning eller minskning har " "klickats på. Du behöver ange en Gtk::SpinType för att ange riktningen eller ny position." #. (itstool) path: section/para #: C/index-in.docbook:1556 msgid "" "To prevent the user from typing non-numeric characters into the entry box, pass true to the set_numeric() method." msgstr "" "För att hindra användaren från att mata in icke-numeriska tecken i inmatningsfältet skickar du true till metoden " "set_numeric()." #. (itstool) path: section/para #: C/index-in.docbook:1561 #, fuzzy msgid "" "To make the SpinButton 'wrap' between its upper and lower bounds, use the set_wrap() method." msgstr "" "För att få SpinButton att ”slå runt” mellan sina högsta och lägsta gränser, använd metoden set_wrap()." #. (itstool) path: section/para #: C/index-in.docbook:1566 #, fuzzy msgid "To force it to snap to the nearest step_increment, use set_snap_to_ticks()." msgstr "För att tvinga den att fästa vid närmaste step_increment, använd set_snap_to_ticks()." #. (itstool) path: section/para #: C/index-in.docbook:1571 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1578 msgid "Here's an example of a SpinButton in action:" msgstr "Här är ett exempel på användning av en SpinButton:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1585 #, fuzzy msgctxt "_" msgid "external ref='figures/spinbutton.png' md5='2157244b231fea5619793aa8ba25d4d8'" msgstr "external ref='figures/spinbutton.png' md5='2157244b231fea5619793aa8ba25d4d8'" #. (itstool) path: section/para #: C/index-in.docbook:1589 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1596 C/index-in.docbook:1646 msgid "ProgressBar" msgstr "ProgressBar" #. (itstool) path: section/para #: C/index-in.docbook:1598 msgid "" "Progress bars are used to show the status of an ongoing operation. For instance, a ProgressBar can show how much of a " "task has been completed." msgstr "" "Förloppsindikatorer används för att visa status för en pågående operation. Exempelvis kan ProgressBar visa hur mycket av " "en uppgift som har slutförts." #. (itstool) path: section/para #: C/index-in.docbook:1604 #, fuzzy msgid "" "To change the value shown, use the set_fraction() method, passing a double between 0.0 and 1.0 to provide " "the new fraction." msgstr "" "För att ändra det visade värdet, använd metoden set_fraction(), och skicka med en double mellan 0.0 och " "1.0 för att ge den nya bråkdelen." #. (itstool) path: section/para #: C/index-in.docbook:1609 msgid "" "A ProgressBar is horizontal and left-to-right by default, but you can change it to a vertical progress bar by using the " "set_orientation() method." msgstr "" "En ProgressBar är som standard horisontell och vänster-till-höger, men du kan ändra den till en vertikal " "förloppsindikator genom att använda metoden set_orientation()." #. (itstool) path: section/para #: C/index-in.docbook:1615 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1618 msgid "Activity Mode" msgstr "Aktivitetsläge" #. (itstool) path: section/para #: C/index-in.docbook:1620 #, fuzzy msgid "" "Besides indicating the amount of progress that has occurred, the progress bar can also be used to indicate that there is some activity; this is " "done by placing the progress bar in activity mode. In this mode, the progress bar displays a small rectangle which moves " "back and forth. Activity mode is useful in situations where the progress of an operation cannot be calculated as a value range (e.g., receiving " "a file of unknown length)." msgstr "" "Förutom att visa mängden framsteg som har nåtts så kan även förloppsindikatorn användas för att visa att aktivitet råder; detta görs genom att " "försätta förloppsindikatorn aktivitetsläge. I detta läge visar förloppsindikatorn en liten rektangel som rör sig fram och " "tillbaka. Aktivitetsläge är användbart i situationer när en operations förlopp inte kan beräknas som ett värdeintervall (t.ex. vid mottagande " "av en fil av okänd storlek)." #. (itstool) path: section/para #: C/index-in.docbook:1630 #, fuzzy msgid "" "To do this, you need to call the pulse() method at regular intervals. You can also choose the step size, with the " "set_pulse_step() method." msgstr "" "För att göra detta behöver du anropa metoden pulse() med regelbundna intervall. Du kan också välja stegstorleken med " "metoden set_pulse_step()." #. (itstool) path: section/para #: C/index-in.docbook:1636 #, fuzzy msgid "The progress bar can also display a configurable text string next to the bar, using the set_text() method." msgstr "Förloppsindikatorn kan också visa en konfigurerbar textsträng intill indikatorn med metoden set_text()." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1648 #, fuzzy msgctxt "_" msgid "external ref='figures/progressbar.png' md5='c7dcbf44476378ef1d0c601f619c7918'" msgstr "external ref='figures/progressbar.png' md5='c7dcbf44476378ef1d0c601f619c7918'" #. (itstool) path: section/para #: C/index-in.docbook:1652 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1658 C/index-in.docbook:1673 msgid "InfoBar" msgstr "InfoBar" #. (itstool) path: section/para #: C/index-in.docbook:1660 msgid "" "An InfoBar may show small items of information or ask brief questions. Unlike a Dialog, it " "appears at the top of the current window instead of opening a new window. Its API is very similar to the Gtk::" "Dialog API." msgstr "" "En InfoBar kan visa små informationsobjekt eller fråga korta frågor. Till skillnad från en Dialog " "dyker den upp högst upp i det aktuella fönstret i stället för att öppna ett nytt fönster. Dess API är väldigt likt API:t för Gtk::Dialog." #. (itstool) path: section/para #: C/index-in.docbook:1663 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1668 msgid "" "The InfoBar widget is deprecated since gtkmm 4.10. The example shows an info bar consisting " "of a Box with a Label and a Button." msgstr "" "InfoBar-komponenten är föråldrad sedan gtkmm 4.10. Exemplen visar en inforad som består av en " "Box med en Label och en Button." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1675 #, fuzzy msgctxt "_" msgid "external ref='figures/infobar.png' md5='4da1d3d7d3011221c3a1d896436b1931'" msgstr "external ref='figures/infobar.png' md5='cce31c49b5d951433103d2ab9a752477'" #. (itstool) path: section/para #: C/index-in.docbook:1679 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1686 msgid "Tooltips" msgstr "Inforutor" #. (itstool) path: section/para #: C/index-in.docbook:1688 msgid "" "Tooltips are the little information windows that pop up when you leave your pointer over a widget for a few seconds. Use " "set_tooltip_text() to set a text string as a tooltip on any Widget. Gtk::Tooltip is used for more advanced tooltip usage, such as showing an image as well as text." msgstr "" "Inforutor är de små informationsfönster som poppar upp när du lämnar pekaren över en komponent i några sekunder. Använd " "set_tooltip_text() för att ställa in en textsträng som en inforuta på en Widget. " "Gtk::Tooltip används för mer avancerad inforuteanvändning, som att visa en bild såväl som text." #. (itstool) path: section/para #: C/index-in.docbook:1697 msgid "Widget Reference" msgstr "Widget-referens" #. (itstool) path: section/para #: C/index-in.docbook:1698 msgid "Tooltip Reference" msgstr "Tooltip-referens" #. (itstool) path: figure/title #: C/index-in.docbook:1704 #, fuzzy msgid "Tooltip" msgstr "Tooltip" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1706 #, fuzzy msgctxt "_" msgid "external ref='figures/tooltip.png' md5='85a18bdc5b7301f2d4d4a1886176a38c'" msgstr "external ref='figures/tooltip.png' md5='85a18bdc5b7301f2d4d4a1886176a38c'" #. (itstool) path: section/para #: C/index-in.docbook:1710 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:1717 msgid "Container Widgets" msgstr "Behållarkomponenter" #. (itstool) path: chapter/para #: C/index-in.docbook:1719 msgid "" "Container widgets, like other widgets, derive from Gtk::Widget. Some container widgets, such as Gtk::Grid can hold many child widgets, so these typically have more complex interfaces. Others, such as Gtk::Frame " "contain only one child widget." msgstr "" "Behållarkomponenter härleds som andra komponenter från Gtk::Widget. Vissa behållarkomponenter, som Gtk::Grid kan innehålla många underordnade komponenter, så de har vanligen mer komplexa gränssnitt. Andra, som Gtk::Frame innehåller bara en underordnad komponent." #. (itstool) path: section/title #: C/index-in.docbook:1727 msgid "Single-item Containers" msgstr "Enobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:1729 msgid "" "Most single-item container widgets have set_child() and unset_child() methods for the child " "widget. Gtk::Button and Gtk::Window are technically single-item containers, but we have discussed " "them already elsewhere." msgstr "" "De flesta behållarkomponenter för ett objekt har metoderna set_child() och unset_child() för " "den underordnade komponenten. Gtk::Button och Gtk::Window är tekniskt sett enobjektsbehållare, " "men vi har redan diskuterat dem på annat håll." #. (itstool) path: section/para #: C/index-in.docbook:1736 msgid "" "We also discuss the Gtk::Paned widget, which allows you to divide a window into two separate \"panes\". This widget " "actually contains two child widgets, but the number is fixed so it seems appropriate." msgstr "" "Vi kommer också diskutera komponenten Gtk::Paned som låter dig dela ett fönster i två separata ”paneler”. Denna " "komponent kommer faktiskt innehålla två underordnade komponenter, men antalet är fast så det verkar lämpligt." #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1743 C/index-in.docbook:1758 #, fuzzy msgid "Frame" msgstr "Frame" #. (itstool) path: section/para #: C/index-in.docbook:1745 #, fuzzy msgid "" "Frames can enclose one or a group of widgets within a box, optionally with a title. For instance, you might place a group of " "ToggleButtons or CheckButtons in a Frame." msgstr "" "Ramar kan omsluta en eller en grupp av komponenter i en ruta, valfritt med en titel. Exempelvis kan du placera en grupp med " "ToggleButton eller CheckButton i en Frame." #. (itstool) path: section/para #: C/index-in.docbook:1752 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1760 #, fuzzy msgctxt "_" msgid "external ref='figures/frame.png' md5='e7b49b5f57afa5c0d4c487c187f1be55'" msgstr "external ref='figures/frame.png' md5='e7b49b5f57afa5c0d4c487c187f1be55'" #. (itstool) path: section/para #: C/index-in.docbook:1764 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1770 C/index-in.docbook:1797 msgid "Paned" msgstr "Paned" #. (itstool) path: section/para #: C/index-in.docbook:1772 msgid "" "Panes divide a widget into two halves, separated by a moveable divider. The two halves (panes) can be oriented either horizontally (side by " "side) or vertically (one above the other)." msgstr "" "Paneler delar en komponent i två halvor, separerade av en flyttbar avskiljare. De två halvorna (panelerna) kan orienteras antingen horisontellt " "(sida vid sida) eller vertikalt (en ovanpå den andra)." #. (itstool) path: section/para #: C/index-in.docbook:1778 msgid "" "Unlike the other widgets in this section, pane widgets contain not one but two child widgets, one in each pane. Therefore, you should use " "set_start_child() and set_end_child() instead of a set_child() " "method." msgstr "" "Till skillnad från de andra komponenterna i detta avsnitt innehåller panelkomponenter inte en utan två underordnade komponenter, en i varje " "panel. Du ska därför använda set_start_child() och set_end_child() i stället för en " "set_child()-metod." #. (itstool) path: section/para #: C/index-in.docbook:1785 msgid "You can adjust the position of the divider using the set_position() method, and you will probably need to do so." msgstr "" "Du kan justera avskiljarens position genom att använda metoden set_position(), och kommer troligen behöva göra det." #. (itstool) path: section/para #: C/index-in.docbook:1791 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1799 #, fuzzy msgctxt "_" msgid "external ref='figures/paned.png' md5='874e9d11227d6d10d2ab7cb0b04de32d'" msgstr "external ref='figures/paned.png' md5='874e9d11227d6d10d2ab7cb0b04de32d'" #. (itstool) path: section/para #: C/index-in.docbook:1803 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1809 C/index-in.docbook:1842 msgid "ScrolledWindow" msgstr "ScrolledWindow" #. (itstool) path: section/para #: C/index-in.docbook:1811 msgid "" "ScrolledWindow widgets create a scrollable area. You can insert any type of widget into a ScrolledWindow, and it will be accessible regardless of its size by using the scrollbars. Note that ScrolledWindow is not a " "Gtk::Window despite the slightly misleading name." msgstr "" "ScrolledWindow-komponenter skapar ett rullningsbart område. Du kan infoga en komponent av valfri typ i ett " "ScrolledWindow, så kommer den vara åtkomlig oavsett dess storlek genom att använda rullningslisterna. Observera att " "ScrolledWindow inte är ett Gtk::Window trots det något missvisande namnet." #. (itstool) path: section/para #: C/index-in.docbook:1820 #, fuzzy msgid "" "Scrolled windows have scrollbar policies which determine whether the Scrollbars will be displayed. " "The policies can be set with the set_policy() method. The policy may be for instance Gtk::PolicyType::" "AUTOMATIC or Gtk::PolicyType::ALWAYS. Gtk::PolicyType::AUTOMATIC will cause the scrolled window " "to display the scrollbar only if the contained widget is larger than the visible area. Gtk::PolicyType::ALWAYS will cause " "the scrollbar to be displayed always." msgstr "" "Rullade fönster har rullningslistpolicyer som avgör huruvida Scrollbar-listerna kommer visas. " "Policyerna kan ställas in med metoden set_policy(). Policyn kan exempelvis vara Gtk::PolicyType::AUTOMATIC eller Gtk::PolicyType::ALWAYS. Gtk::PolicyType::AUTOMATIC kommer få det rullade fönstret att " "visa rullningslisten endast om den innehållna komponenten är större än det synliga området. Gtk::PolicyType::ALWAYS kommer " "få rullningslisten att alltid visas." #. (itstool) path: section/para #: C/index-in.docbook:1832 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1837 msgid "Here is a simple example that packs 100 toggle buttons into a ScrolledWindow. Try resizing the window to see the scrollbars react." msgstr "" "Här är ett enkelt exempel som packar 100 växlingsknappar i ett ScrolledWindow. Försök ändra storlek på fönstret för att se hur " "rullningslisterna reagerar." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1844 #, fuzzy msgctxt "_" msgid "external ref='figures/scrolledwindow.png' md5='b99f195d17b39197af733087e0e69def'" msgstr "external ref='figures/scrolledwindow.png' md5='b99f195d17b39197af733087e0e69def'" #. (itstool) path: section/para #: C/index-in.docbook:1848 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1854 C/index-in.docbook:1877 msgid "AspectFrame" msgstr "AspectFrame" #. (itstool) path: section/para #: C/index-in.docbook:1856 msgid "" "The AspectFrame widget looks like a Frame widget, but it also enforces the aspect " "ratio (the ratio of the width to the height) of the child widget, adding extra space if necessary. For instance, this would allow " "you to display a photograph without allowing the user to distort it horizontally or vertically while resizing." msgstr "" "AspectFrame-komponenten ser ut som en Frame-komponent, men den upprätthåller även " "bildförhållandet (kvoten mellan bredden och höjden) för den underordnade komponenten, och lägger till extra utrymme om " "nödvändigt. Exempelvis skulle detta låta dig visa ett foto utan att användaren kan förvränga det horisontellt eller vertikalt då storleken " "ändras." #. (itstool) path: section/para #: C/index-in.docbook:1865 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1870 msgid "" "The following program uses a Gtk::AspectFrame to present a drawing area whose aspect ratio will always be 2:1, no matter " "how the user resizes the top-level window." msgstr "" "Följande program använder en Gtk::AspectFrame för att presentera en rityta vars bildförhållande alltid kommer vara 2:1, " "oavsett hur användaren ändrar storleken på toppnivåfönstret." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1879 #, fuzzy msgctxt "_" msgid "external ref='figures/aspectframe.png' md5='9d8aac9521789ed27036a97a22fedece'" msgstr "external ref='figures/aspectframe.png' md5='9d8aac9521789ed27036a97a22fedece'" #. (itstool) path: section/para #: C/index-in.docbook:1883 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1889 msgid "Other Single-item Containers" msgstr "Andra enobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:1891 msgid "" "There are other single-item containers. See the reference documentation for a complete list. Here are links to some example programs that show " "containers, which are not mentioned elsewhere in this tutorial." msgstr "" "Det finns andra enobjektsbehållare. Se referensdokumentationen för en fullständig lista. Här är länkar till några exempelprogram som visar " "behållare som inte nämns någon annanstans i denna handledning." #. (itstool) path: section/para #: C/index-in.docbook:1897 msgid "Source Code, Expander" msgstr "Källkod, Expander" #. (itstool) path: section/para #: C/index-in.docbook:1898 msgid "Source Code, Popover" msgstr "Källkod, Popover" #. (itstool) path: section/title #: C/index-in.docbook:1905 msgid "Multiple-item Containers" msgstr "Flerobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:1907 #, fuzzy msgid "" "Multiple-item container widgets have other methods than set_child() and unset_child(). " "Different containers can have different methods for adding and removing child widgets. For instance, Gtk::Box has " "append() and remove() as well as other methods. The remove() method " "for multiple-item containers takes an argument, specifying which widget to remove." msgstr "" "Behållarkomponenter för flera objekt har andra metoder än set_child() och unset_child(). " "Olika behållare kan ha olika metoder för att lägga till och ta bort underordnade komponenter. Gtk::Box har exempelvis " "append() och remove() såväl som andra metoder. Metoden remove() för " "flerobjektsbehållare tar ett argument som anger vilken komponent som ska tas bort." #. (itstool) path: section/title #: C/index-in.docbook:1917 msgid "Packing" msgstr "Packning" #. (itstool) path: section/para #: C/index-in.docbook:1919 msgid "" "You've probably noticed that gtkmm windows seem \"elastic\" - they can usually be stretched in many different ways. " "This is due to the widget packing system." msgstr "" "Du har troligen upptäckt att gtkmm-fönster verkar ”elastiska” - de kan vanligen sträckas ut på många olika sätt. Det " "här är på grund av systemet för komponentpackning." #. (itstool) path: section/para #: C/index-in.docbook:1924 msgid "" "Many GUI toolkits require you to precisely place widgets in a window, using absolute positioning, often using a visual editor. This leads to " "several problems:" msgstr "" "Många verktygslådor för grafiska användargränssnitt kräver att du precist placerar komponenter i ett fönster med absolut positionering, ofta " "med en visuell redigerare. Detta leder till flera problem:" #. (itstool) path: listitem/para #: C/index-in.docbook:1931 msgid "" "The widgets don't rearrange themselves when the window is resized. Some widgets are hidden when the window is made smaller, and lots of useless " "space appears when the window is made larger." msgstr "" "Komponenterna arrangerar inte om sig själva när fönstrets storlek ändras. Vissa komponenter döljs när fönstret görs mindre, och mycket onödigt " "utrymme uppstår när fönstret görs större." #. (itstool) path: listitem/para #: C/index-in.docbook:1935 msgid "" "It's impossible to predict the amount of space necessary for text after it has been translated to other languages, or displayed in a different " "font. On Unix it is also impossible to anticipate the effects of every theme and window manager." msgstr "" "Det är omöjligt att förutse mängden utrymme som krävs för text efter att den har översatts till andra språk, eller visas med ett annat " "typsnitt. På Unix är det också omöjligt att förutse effekterna av varje tema och fönsterhanterare." #. (itstool) path: listitem/para #: C/index-in.docbook:1939 msgid "" "Changing the layout of a window \"on the fly\", to make some extra widgets appear, for instance, is complex. It requires tedious recalculation " "of every widget's position." msgstr "" "Att ändra layouten för ett fönster ”i farten”, exempelvis för att få några extra komponenter att visas, är komplext. Det kräver tröttsam " "omräkning av varje komponents position." #. (itstool) path: section/para #: C/index-in.docbook:1945 #, fuzzy msgid "" "gtkmm uses the packing system to solve these problems. Rather than specifying the position and size of each widget " "in the window, you can arrange your widgets in rows, columns, and/or grids. gtkmm can size your window " "automatically, based on the sizes of the widgets it contains. And the sizes of the widgets are, in turn, determined by the amount of text they " "contain, or the minimum and maximum sizes that you specify, and/or how you have requested that the available space should be shared between " "sets of widgets. You can perfect your layout by specifying margins and centering values for each of your widgets. gtkmm then uses all this information to resize and reposition everything sensibly and smoothly when the user manipulates the window." msgstr "" "gtkmm använder packningssystemet för att lösa dessa problem. Snarare än att ange position och storlek för varje " "komponent i fönstret så kan du arrangera dina komponenter i rader, kolumner och/eller rutnät. gtkmm kan ändra " "storlek på ditt fönster automatiskt, baserat på storlekarna på komponenterna det innehåller. Storlekarna på komponenterna avgörs i sin tur av " "mängden text de innehåller, eller de minsta och största storlekarna som du anger, och/eller hur du har begärt att tillgängligt utrymme ska " "delas mellan uppsättningar av komponenter. gtkmm använder sedan all denna information för att ändra storlek och " "position på allt på ett rimligt och smidigt sätt när användaren manipulerar fönstret." #. (itstool) path: section/para #: C/index-in.docbook:1954 msgid "" "gtkmm arranges widgets hierarchically, using containers. A container widget contains other " "widgets. Most gtkmm widgets are containers. Windows, Notebook tabs, and Buttons are all container widgets. There are " "two flavors of containers: single-child containers and multiple-child containers. Most container widgets in gtkmm " "are single-child containers, including Gtk::Window." msgstr "" "gtkmm arrangerar komponenter hierarkiskt med behållare. En behållarkomponent innehåller andra " "komponenter. De flesta gtkmm-komponenter är behållare. Fönster, anteckningsblocksflikar och knappar är alla " "behållarkomponenter. Det finns två sorters behållare: behållare med en underordnad och de med flera underordnade. De flesta behållarkomponenter " "i gtkmm är behållare med en underordnad, inklusive Gtk::Window." #. (itstool) path: section/para #: C/index-in.docbook:1963 msgid "" "Yes, that's correct: a Window can contain at most one widget. How, then, can we use a window for anything useful? By placing a multiple-child " "container in the window. The most useful container widgets are Gtk::Grid and Gtk::Box." msgstr "" "Det stämmer: ett Window kan innehålla högst en komponent. Men hur kan vi då använda ett fönster för något användbart? Genom att placera en " "flerobjektsbehållare i fönstret. De mest användbara behållarkomponenterna är Gtk::Grid och Gtk::Box." #. (itstool) path: listitem/para #: C/index-in.docbook:1974 msgid "" "Gtk::Grid arranges its child widgets in rows and columns. Use attach() and " "attach_next_to() to insert child widgets." msgstr "" "Gtk::Grid arrangerar sina underordnade komponenter i rader och kolumner. Använd attach() och " "attach_next_to() för att infoga underordnade komponenter." #. (itstool) path: listitem/para #: C/index-in.docbook:1982 msgid "" "Gtk::Box arranges its child widgets vertically or horizontally. Use append() to insert child " "widgets." msgstr "" "Gtk::Box arrangerar sina underordnade komponenter vertikalt eller horisontellt. Använd append() " "för att infoga underordnade komponenter." #. (itstool) path: section/para #: C/index-in.docbook:1990 msgid "There are several other containers, which we will also discuss." msgstr "Det finns flera andra behållare som vi också kommer diskutera." #. (itstool) path: section/para #: C/index-in.docbook:1994 #, fuzzy msgid "" "If you've never used a packing toolkit before, it can take some getting used to. You'll probably find, however, that you don't need to rely on " "visual form editors quite as much as you might with other toolkits." msgstr "" "Om du aldrig använt en packningsverktygslåda förut kan det ta tid att vänja sig vid. Du kommer dock troligen se att du inte kommer förlita dig " "på visuella redigerare riktigt lika mycket som du kan göra med andra verktygslådor." #. (itstool) path: section/title #: C/index-in.docbook:2004 msgid "An improved Hello World" msgstr "Ett förbättrat Hej världen" #. (itstool) path: section/para #: C/index-in.docbook:2006 msgid "Let's take a look at a slightly improved helloworld, showing what we've learnt." msgstr "Låt oss ta en titt på ett något förbättrat helloworld som visar vad vi lärt oss." #. (itstool) path: figure/title #: C/index-in.docbook:2011 msgid "Hello World 2" msgstr "Hej världen 2" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2013 #, fuzzy msgctxt "_" msgid "external ref='figures/helloworld2.png' md5='b16c41a2b1206bb0a5a3e1e488e198f8'" msgstr "external ref='figures/helloworld2.png' md5='b16c41a2b1206bb0a5a3e1e488e198f8'" #. (itstool) path: section/para #: C/index-in.docbook:2017 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:2019 #, fuzzy msgid "" "After building and running this program, try resizing the window to see the behavior. Also, try playing with set_expand(), set_hexpand(), set_vexpand(), set_halign() and " "set_valign() while reading the Boxes section." msgstr "" "Försök efter att ha byggt och kört detta program att ändra storlek på fönstret för att se beteendet. Pröva även leka med " "set_expand(), set_hexpand(), set_vexpand(), " "set_halign() och set_valign() medan du läser avsnittet Boxar." #. (itstool) path: section/title #: C/index-in.docbook:2030 #, fuzzy msgid "Boxes" msgstr "Boxar" #. (itstool) path: section/para #: C/index-in.docbook:2032 #, fuzzy msgid "" "Most packing uses boxes as in the above example. These are invisible containers into which we can pack our widgets. When packing widgets into a " "horizontal box, the objects are inserted horizontally from left to right. In a vertical box, widgets are packed from top to bottom. You may use " "any combination of boxes inside or beside other boxes to create the desired effect." msgstr "" "Den mesta packningen använder boxar som i exemplet ovan. Dessa är osynliga behållare som vi kan packa våra komponenter i. När komponenter " "packas i en horisontell box sätts objekten in horisontellt från vänster till höger. I en horisontell box packas komponenter uppifrån och ner. " "Du kan använda valfri kombination av boxar inuti eller bredvid andra boxar för att skapa önskade effekt." #. (itstool) path: section/title #: C/index-in.docbook:2042 msgid "Adding widgets" msgstr "Lägga till komponenter" #. (itstool) path: section/title #: C/index-in.docbook:2044 msgid "Per-child packing options" msgstr "Packningsalternativ per underordnad" #. (itstool) path: section/para #: C/index-in.docbook:2045 msgid "" "The append() method places widgets inside these containers. It will start at the top and work its way down in a " "Box with vertical orientation, or pack left to right in a Box with horizontal orientation. If " "it's inconvenient to add widgets in this order, use insert_child_after() or insert_child_at_start(). We will use append() in our examples." msgstr "" "Metoden append() placerar komponenter inuti dessa behållare. Den kommer starta uppifrån och arbeta sig nedåt i en " "Box med vertikal orientering, eller packa från vänster till höger i en Box med horisontell " "orientering. Om det är opraktiskt att lägga till komponenter i denna ordning kan du använda insert_child_after() eller " "insert_child_at_start(). Vi kommer använda append() i våra exempel." #. (itstool) path: section/para #: C/index-in.docbook:2055 #, fuzzy msgid "" "There are several options governing how widgets are to be packed, and this can be confusing at first. You can modify the packing by using " "set_expand(), set_hexpand(), set_vexpand(), " "set_halign(), set_valign() and/or set_margin() on the child widgets. " "If you have difficulties, then it is sometimes a good idea to play with the glade GUI designer to see what is " "possible. You might even decide to use the Gtk::Builder API to load your GUI at runtime." msgstr "" "Det finns flera alternativ som styr hur komponenter ska packas, och detta kan till en början vara förvirrande. Du kan ändra packningen genom " "att använda set_expand(), set_hexpand(), set_vexpand(), " "set_halign(), set_valign() och/eller set_margin() på de underordnade " "komponenterna. Om du har svårigheter är det ibland en god idé att leka med GUI-designern glade för att se vad som är " "möjligt. Du kan till och med bestämma dig för att använda Gtk::Builder-API:t för att läsa in ditt GUI vid körning." #. (itstool) path: section/para #: C/index-in.docbook:2067 msgid "There are basically five different styles, as shown in this picture:" msgstr "Det finns i grunden fem olika stilar som kan ses i denna bild:" #. (itstool) path: figure/title #: C/index-in.docbook:2073 msgid "Box Packing 1" msgstr "Boxpackning 1" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2075 #, fuzzy msgctxt "_" msgid "external ref='figures/box_packing1.png' md5='dedb723a5ca690ed542d09361fc8ad4a'" msgstr "external ref='figures/box_packing1.png' md5='dedb723a5ca690ed542d09361fc8ad4a'" #. (itstool) path: section/para #: C/index-in.docbook:2079 #, fuzzy msgid "" "Each line contains one horizontal Box with several buttons. Each of the buttons on a line is packed into the " "Box with the same arguments to the set_hexpand(), set_halign(), " "set_margin_start() and set_margin_end() methods." msgstr "" "Varje rad innehåller en horisontell Box med flera knappar. Var och en av knapparna på en rad packas i Boxen med samma argument till metoderna set_hexpand(), set_halign(), " "set_margin_start() och set_margin_end() methods." #. (itstool) path: section/para #: C/index-in.docbook:2088 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2093 #, fuzzy msgid "Per-container packing options" msgstr "Packningsalternativ per behållare" #. (itstool) path: para/programlisting #: C/index-in.docbook:2097 #, no-wrap msgid "" "Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n" "void set_orientation(Gtk::Orientation orientation);\n" "void set_spacing(int spacing);\n" "void set_homogeneous(bool homogeneous = true);" msgstr "" "Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n" "void set_orientation(Gtk::Orientation orientation);\n" "void set_spacing(int spacing);\n" "void set_homogeneous(bool homogeneous = true);" #. (itstool) path: section/para #: C/index-in.docbook:2094 #, fuzzy msgid "" "Here's the constructor for the Box widget, and methods that set per-container packing options: <_:programlisting-1/> " "Passing true to set_homogeneous() will cause all of the contained widgets to be the same size. " "spacing is a (minimum) number of pixels to leave between each widget." msgstr "" "Här är konstruktorn för komponenten Box, och metoder som ställer in packningsalternativ per behållare: <_:" "programlisting-1/> Att skicka true till set_homogeneous() kommer få alla inneslutna komponenter att " "vara samma storlek. spacing är ett (minsta) antal bildpunkter att lämna mellan varje komponent." #. (itstool) path: section/para #: C/index-in.docbook:2107 #, fuzzy msgid "" "What's the difference between spacing (set when the box is created) and margins (set separately for each child widget)? Spacing is added " "between objects, and margins are added on one or more sides of a widget. The following figure should make it clearer. The shown margins are the " "left and right margins of each button in the row." msgstr "" "Vad är skillnaden mellan utrymme (ställs in när boxen skapas) och marginaler (ställs in separat för varje underordnad komponent)? Utrymme läggs " "in mellan objekt, och marginaler läggs till på en eller flera sidor av en komponent. Följande figur bör göra det tydligare. De visade " "marginalerna är vänster- och högermarginalerna för varje knapp i raden." #. (itstool) path: figure/title #: C/index-in.docbook:2116 msgid "Box Packing 2" msgstr "Boxpackning 2" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2118 #, fuzzy msgctxt "_" msgid "external ref='figures/box_packing2.png' md5='48e64123d27cc8e66137c8a2edf9589f'" msgstr "external ref='figures/box_packing2.png' md5='48e64123d27cc8e66137c8a2edf9589f'" #. (itstool) path: section/title #: C/index-in.docbook:2126 msgid "Gtk::Application and command-line options" msgstr "Gtk::Application och kommandoradsflaggor" #. (itstool) path: section/para #: C/index-in.docbook:2128 msgid "" "The following example program requires a command-line option. The source code shows two ways of handling command-line options in combination " "with Gtk::Application." msgstr "" "Följande exempelprogram kräver en kommandoradsflagga. Källkoden visar två sätt att hantera kommandoradsflaggor i kombination med " "Gtk::Application." #. (itstool) path: listitem/para #: C/index-in.docbook:2134 msgid "" "Handle the options in main() and hide them from Gtk::Application by setting argc = 1 in the call to Gtk::Application::run()." msgstr "" "Hantera flaggorna i main() och dölj dem från Gtk::Application genom att ställa in argc = " "1 i anropet till Gtk::Application::run()." #. (itstool) path: listitem/para #: C/index-in.docbook:2140 msgid "" "Give all command-line options to Gtk::Application::run() and add the flag Gio::Application::Flags::" "HANDLES_COMMAND_LINE to Gtk::Application::create(). Connect a signal handler to the command_line signal, and handle the command-line options in the signal handler." msgstr "" "Ge alla kommandoradsflaggor till Gtk::Application::run() och lägg till flaggan Gio::Application::Flags::" "HANDLES_COMMAND_LINE till Gtk::Application::create(). Anslut en signalhanterare till signalen " "command_line, och hantera kommandoradsflaggorna i signalhanteraren." #. (itstool) path: listitem/para #: C/index-in.docbook:2147 #, fuzzy msgid "" "You must set the optional parameter after = false in the call to signal_command_line().connect(), because " "your signal handler must be called before the default signal handler. You must also call Gio::Application::activate() " "in the signal handler, unless you want your application to exit without showing its main window. (Gio::Application is a " "base class of Gtk::Application.)" msgstr "" "Du måste ställa in den valfria parametern after = false i anropet till signal_command_line().connect(), " "för din signalhanterare måste anropas för standardsignalhanteraren. Du måste också anropa Gio::Application::activate() " "i signalhanteraren om du inte vill att ditt program ska avslutas utan att visa sitt huvudfönster. (Gio::Application är " "en basklass för Gtk::Application.)" #. (itstool) path: section/para #: C/index-in.docbook:2161 #, fuzzy msgid "" "Here is the source code for the example that produced the screenshots above. When you run this example, provide a number between 1 and 3 as a " "command-line option, to see different packing options in use." msgstr "" "Här är källkoden för exemplet som skapade skärmbilderna ovan. Skicka när du kör detta exempel med ett tal mellan 1 och 3 som en " "kommandoradsflagga för att se då olika packningsalternativ används." #. (itstool) path: section/para #: C/index-in.docbook:2164 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2170 C/index-in.docbook:2200 msgid "Grid" msgstr "Grid" #. (itstool) path: section/para #: C/index-in.docbook:2172 msgid "" "A Grid dynamically lays out child widgets in rows and columns. The dimensions of the grid do not need to be specified in " "the constructor." msgstr "" "Ett Grid organiserar dynamiskt underordnade komponenter i rader och kolumner. Dimensionerna på rutnätet behöver inte " "anges i konstruktorn." #. (itstool) path: section/para #: C/index-in.docbook:2177 msgid "" "Child widgets can span multiple rows or columns, using attach(), or added next to an existing widget inside the grid " "with attach_next_to(). Individual rows and columns of the grid can be set to have uniform height or width with " "set_row_homogeneous() and set_column_homogeneous()." msgstr "" "Underordnade komponenter kan spänna över flera rader eller kolumner med attach(), eller läggas intill en befintlig " "komponent i rutnätet med attach_next_to(). Individuella rader och kolumner i rutnätet kan ställas in att ha enhetlig " "höjd eller bredd med set_row_homogeneous() och set_column_homogeneous()." #. (itstool) path: section/para #: C/index-in.docbook:2184 #, fuzzy msgid "" "You can set the margin and expand properties of the child Widgets to control " "their spacing and their behavior when the Grid is resized." msgstr "" "Du kan sätta egenskaperna för marginal och expansion för underordnade Widget " "för att styra deras utrymme och deras beteende när vår Grid får storleken ändrad." #. (itstool) path: section/para #: C/index-in.docbook:2188 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:2192 msgid "" "This example creates a window with three buttons in a grid. The first two buttons are in the upper row, from left to right. A third button is " "attached underneath the first button, in a new lower row, spanning two columns." msgstr "" "Detta exempel skapar ett fönster med tre knappar i ett rutnät. De första två knapparna är i den övre raden, från vänster till höger. En tredje " "knapp infogas under den första knappen i en ny lägre rad, och spänner över två kolumner." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2202 msgctxt "_" msgid "external ref='figures/grid.png' md5='18031e926d6082207f18de1b08cd85ae'" msgstr "external ref='figures/grid.png' md5='18031e926d6082207f18de1b08cd85ae'" #. (itstool) path: section/para #: C/index-in.docbook:2206 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2212 C/index-in.docbook:2248 msgid "Notebook" msgstr "Notebook" #. (itstool) path: section/para #: C/index-in.docbook:2214 #, fuzzy msgid "" "A Notebook has a set of stacked pages, each of which contains widgets. Labelled tabs allow the user to select the pages. Notebooks allow several sets of widgets to be placed in a small space, by " "only showing one page at a time. For instance, they are often used in preferences dialogs." msgstr "" "En Notebook har en hög med sidor, var och en innehållande komponenter. Etiketterade flikar låter användaren välja sidorna. En Notebook möjliggör för flera uppsättningar komponenter att placeras i ett " "litet utrymme genom att bara visa en sida åt gången. De används exempelvis ofta i inställningsdialoger." #. (itstool) path: section/para #: C/index-in.docbook:2223 #, fuzzy msgid "" "Use the append_page(), prepend_page() and insert_page() methods to " "add tabbed pages to the Notebook, supplying the child widget and the name for the tab." msgstr "" "Använd metoderna append_page(), prepend_page() och insert_page() för " "att lägga till sidor med flik till vår Notebook, med den underordnade komponenten och namnet på fliken." #. (itstool) path: section/para #: C/index-in.docbook:2230 msgid "" "To discover the currently visible page, use the get_current_page() method. This returns the page number, and then " "calling get_nth_page() with that number will give you a pointer to the actual child widget." msgstr "" "Använd metoden get_current_page() för att avgöra vilken sida som är synlig för tillfället. Detta returnerar sidnumret, " "och att sedan anropa get_nth_page() med det numret kommer ge dig en pekare till den faktiska underordnade komponenten." #. (itstool) path: section/para #: C/index-in.docbook:2237 #, fuzzy msgid "To programmatically change the selected page, use the set_current_page() method." msgstr "Använd metoden set_current_page() för att programmatiskt ändra den valda sidan." #. (itstool) path: section/para #: C/index-in.docbook:2242 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2250 #, fuzzy msgctxt "_" msgid "external ref='figures/notebook.png' md5='b46c25388d4c250b0ab737f71f82d81b'" msgstr "external ref='figures/notebook.png' md5='b46c25388d4c250b0ab737f71f82d81b'" #. (itstool) path: section/para #: C/index-in.docbook:2254 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2261 C/index-in.docbook:2295 msgid "Assistant" msgstr "Assistant" #. (itstool) path: note/para #: C/index-in.docbook:2263 msgid "" "Gtk::Assistant is deprecated since gtkmm 4.10. There is no replacement in gtkmm. libadwaita (a C library) has replacement parts (like AdwCarousel). In some cases, a Gtk::Notebook might be " "an acceptable replacement." msgstr "" "Gtk::Assistant är föråldrad sedan gtkmm 4.10. Det finns ingen ersättning i " "gtkmm. libadwaita (ett C-bibliotek) har ersättningsdelar (som AdwCarousel). I vissa fall kan en Gtk::" "Notebook vara en acceptabel ersättning." #. (itstool) path: section/para #: C/index-in.docbook:2269 #, fuzzy msgid "" "An Assistant splits a complex operation into steps. Each step is a page, containing a header, a child widget and an " "action area. The Assistant's action area has navigation buttons which update automatically depending on the type of the page, set with " "set_page_type()." msgstr "" "En Assistant delar upp en komplex operation i steg. Varje steg är en sida som innehåller en rubrik, en underordnad " "komponent och ett åtgärdsområde. Åtgärdsområdet för denna Assistant har navigeringsknappar som uppdaterar sig automatiskt beroende på typen av " "sida, inställd med set_page_type()." #. (itstool) path: section/para #: C/index-in.docbook:2273 #, fuzzy msgid "" "Use the append_page(), prepend_page and insert_page() methods to add " "pages to the Assistant, supplying the child widget for each page." msgstr "" "Använd metoderna append_page(), prepend_page och insert_page() för " "att lägga till sidor till vår Assistant, med den underordnade komponenten för varje sida." #. (itstool) path: section/para #: C/index-in.docbook:2277 #, fuzzy msgid "" "To determine the currently-visible page, use the get_current_page() method, and pass the result to " "get_nth_page(), which returns a pointer to the actual widget. To programmatically change the current page, use the " "set_current_page() method." msgstr "" "Använd metoden get_current_page() för att avgöra vilken sida som är synlig för tillfället, och skicka resultatet till " "get_nth_page() som returnerar en pekare till den faktiska underordnade komponenten. Använd metoden " "set_current_page() för att programmatiskt ändra den aktuella sidan." #. (itstool) path: section/para #: C/index-in.docbook:2281 msgid "To set the title of a page, use the set_page_title() method." msgstr "Använd metoden set_page_title() för att ställa in titeln för en sida." #. (itstool) path: section/para #: C/index-in.docbook:2285 #, fuzzy msgid "" "To add widgets to the action area, use the add_action_widget() method. They will be packed alongside the default " "buttons. Use the remove_action_widget() method to remove widgets." msgstr "" "Använd metoden add_action_widget() för att lägga till komponenter till åtgärdsområdet. De kommer packas bredvid " "standardknapparna. Använd metoden remove_action_widget() för att ta bort komponenter." #. (itstool) path: section/para #: C/index-in.docbook:2289 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2297 #, fuzzy msgctxt "_" msgid "external ref='figures/assistant.png' md5='14f588bf7a1dde5e329e5478efe3ae3f'" msgstr "external ref='figures/assistant.png' md5='14f588bf7a1dde5e329e5478efe3ae3f'" #. (itstool) path: section/para #: C/index-in.docbook:2301 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2308 msgid "Other Multi-item Containers" msgstr "Andra flerobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:2310 msgid "" "There are other multi-item containers. See the reference documentation for a complete list. Here are links to some example programs that show " "containers, which are not mentioned elsewhere in this tutorial." msgstr "" "Det finns andra flerobjektsbehållare. Se referensdokumentationen för en fullständig lista. Här är länkar till några exempelprogram som visar " "behållare som inte nämns någon annanstans i denna handledning." #. (itstool) path: section/para #: C/index-in.docbook:2316 msgid "Source Code, ActionBar" msgstr "Källkod, ActionBar" #. (itstool) path: section/para #: C/index-in.docbook:2317 msgid "" "Source Code, FlowBox" msgstr "" "Källkod, FlowBox" #. (itstool) path: chapter/title #: C/index-in.docbook:2324 msgid "ListView, GridView, ColumnView" msgstr "ListView, GridView, ColumnView" #. (itstool) path: chapter/para #: C/index-in.docbook:2326 msgid "" "Lists are intended to be used whenever developers want to display many objects in roughly the same way. They are perfectly fine to be used for " "very short lists of only 2 or 3 items, but generally scale fine to thousands of items." msgstr "" "Listor är avsedda att användas närhelst utvecklare vill visa många objekt på i stort sett samma sätt. De fungerar utmärkt att använda för " "väldigt korta listor på bara två eller tre objekt, men går även allmänt fint att skala upp till tusentals objekt." #. (itstool) path: chapter/para #: C/index-in.docbook:2332 msgid "" "Lists are meant to be used with changing data, both with the items themselves changing as well as the list adding and removing items. Of " "course, they work just as well with static data." msgstr "" "Listor är tänkta att använda med data som ändras, både då objekten själva ändras samt då listan lägger till och tar bort objekt. De fungerar " "förstås precis lika bra med statiska data." #. (itstool) path: chapter/para #: C/index-in.docbook:2338 msgid "" "The List Widget Overview chapter in the GTK documentation " "contains more information about list widgets." msgstr "" "Kapitlet List Widget Overview i GTK-dokumentationen innehåller " "mer information om listkomponenter." #. (itstool) path: chapter/para #: C/index-in.docbook:2343 msgid "" "Some examples are shown in this chapter. There are more examples in the listmodelviews directory in gtkmm-documentation's examples." msgstr "" "Några exempel visas i detta kapitel. Det finns mer exempel i listmodelviews-katalogen i gtkmm-documentations exempel." #. (itstool) path: section/title #: C/index-in.docbook:2349 msgid "The Data Model" msgstr "Datamodellen" #. (itstool) path: section/para #: C/index-in.docbook:2351 msgid "" "The data model is a class that implements the Gio::ListModel interface. Examples of such classes are Gio::" "ListStore (not to be confused with the deprecated Gtk::ListStore), Gtk:StringList, " "Gtk:DirectoryList and Pango::FontMap." msgstr "" "Datamodellen är en klass som implementerar Gio::ListModel-gränssnittet. Exempel på sådana klasser är Gio::" "ListStore (inte att förväxlas med den föråldrade Gtk::ListStore), Gtk:StringList, " "Gtk:DirectoryList och Pango::FontMap." #. (itstool) path: section/para #: C/index-in.docbook:2359 msgid "" "The elements in a model are called items. All items are instances of a subclass of Glib::Object. " "For instance, you might have a ColumnView with one integer and one text column, like so:" msgstr "" "Elementen i en modell kallas objekt. Alla objekt är instanser av en underklass till Glib::Object. " "Exempelvis kan du ha en ColumnView med ett heltal och en textkolumn, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2365 C/index-in.docbook:3367 #, no-wrap msgid "" "class ModelColumns : public Glib::Object\n" "{\n" "public:\n" " int m_col_id;\n" " Glib::ustring m_col_name;\n" "\n" " static Glib::RefPtr<ModelColumns> create(\n" " int col_id, const Glib::ustring& col_name)\n" " {\n" " return Glib::make_refptr_for_instance<ModelColumns>(\n" " new ModelColumns(col_id, col_name));\n" " }\n" "\n" "protected:\n" " ModelColumns(int col_id, const Glib::ustring& col_name)\n" " : m_col_id(col_id), m_col_name(col_name)\n" " {}\n" "};\n" "\n" "Glib::RefPtr<Gio::ListStore<ModelColumns>> m_ListStore;\n" msgstr "" "class ModelColumns : public Glib::Object\n" "{\n" "public:\n" " int m_col_id;\n" " Glib::ustring m_col_name;\n" "\n" " static Glib::RefPtr<ModelColumns> create(\n" " int col_id, const Glib::ustring& col_name)\n" " {\n" " return Glib::make_refptr_for_instance<ModelColumns>(\n" " new ModelColumns(col_id, col_name));\n" " }\n" "\n" "protected:\n" " ModelColumns(int col_id, const Glib::ustring& col_name)\n" " : m_col_id(col_id), m_col_name(col_name)\n" " {}\n" "};\n" "\n" "Glib::RefPtr<Gio::ListStore<ModelColumns>> m_ListStore;\n" #. (itstool) path: section/para #: C/index-in.docbook:2387 msgid "" "Every item in a model has a position which is the unsigned integer that describes where in the model the item is located. The first item in a " "model is at position 0. The position of an item can of course change as other items are added to or removed from the model." msgstr "" "Varje objekt i en modell har en position vilken är det teckenlösa heltalet som beskriver var i modellen som objektet finns. Det första objektet " "i en modell har position 0. Positionen för ett objekt kan förstås ändras då andra objekt läggs till eller tas bort från modellen." #. (itstool) path: section/para #: C/index-in.docbook:2393 msgid "Gio::ListStore Reference" msgstr "Referens för Gio::ListStore" #. (itstool) path: section/para #: C/index-in.docbook:2394 msgid "StringList Reference" msgstr "Referens för StringList" #. (itstool) path: section/para #: C/index-in.docbook:2395 msgid "DirectoryList Reference" msgstr "Referens för DirectoryList" #. (itstool) path: section/title #: C/index-in.docbook:2399 msgid "The Selection Model" msgstr "Markeringsmodellen" #. (itstool) path: section/para #: C/index-in.docbook:2401 msgid "" "The selection model is a class that implements the Gtk::SelectionModel interface. You can choose between " "NoSelection, SingleSelection and MultiSelection." msgstr "" "Markeringsmodellen är en klass som implementerar gränssnittet Gtk::SelectionModel. You can choose between " "NoSelection, SingleSelection and MultiSelection." #. (itstool) path: section/para #: C/index-in.docbook:2406 msgid "NoSelection Reference" msgstr "Referens för NoSelection" #. (itstool) path: section/para #: C/index-in.docbook:2407 msgid "SingleSelection Reference" msgstr "Referens för SingleSelection" #. (itstool) path: section/para #: C/index-in.docbook:2408 msgid "MultiSelection Reference" msgstr "Referens för MultiSelection" #. (itstool) path: section/title #: C/index-in.docbook:2412 #, fuzzy msgid "The Factory" msgstr "Fabriken" #. (itstool) path: section/para #: C/index-in.docbook:2414 #, fuzzy msgid "" "Data from the data model is added to the view by a factory, which is a subclass of ListItemFactory. There is only one " "such subclass in gtkmm, SignalListItemFactory. Data from the model is added to the view with " "signal handlers connected to a SignalListItemFactory." msgstr "" "Data från datamodellen läggs till i vyn av en fabrik, vilken är en underklass av ListItemFactory. Det finns endast en " "sådan underklass i gtkmm, SignalListItemFactory. Data från modellen läggs till i vyn med " "signalhanterare anslutna till en SignalListItemFactory." #. (itstool) path: section/para #: C/index-in.docbook:2420 msgid "" "SignalListItemFactory Reference" msgstr "" "Referens för SignalListItemFactory" #. (itstool) path: section/title #: C/index-in.docbook:2424 C/index-in.docbook:2795 C/index-in.docbook:3848 #, fuzzy msgid "The View" msgstr "Vyn" #. (itstool) path: section/para #: C/index-in.docbook:2426 #, fuzzy msgid "" "The View is the widget that displays the model data and allows the user to interact with it. The View can show all of the model's columns, or " "just some, and it can show them in various ways." msgstr "" "Vyn är komponenten som visar data för modellen och låter användaren interagera med dem. Vyn kan visa alla modellens kolumner, eller bara några, " "och den kan visa dem på olika sätt." #. (itstool) path: section/para #: C/index-in.docbook:2432 #, fuzzy msgid "" "An important requirement for views (especially views of long lists) is that they need to know which items are not visible so they can be " "recycled. Views achieve that by implementing the Scrollable interface and expecting to be placed directly into a " "ScrolledWindow." msgstr "" "Ett viktigt krav för vyer (särskilt vyer över långa listor) är att de behöver veta vilka objekt som inte är synliga, så att de kan återvinnas. " "Vyer åstadkommer det genom att implementera gränssnittet Scrollable och förväntar sig att placeras direkt i ett " "ScrolledWindow." #. (itstool) path: section/para #: C/index-in.docbook:2439 #, fuzzy msgid "There are different view widgets to choose from." msgstr "Det finns olika vykomponenter att välja från." #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2444 C/index-in.docbook:2456 msgid "ListView" msgstr "ListView" #. (itstool) path: section/para #: C/index-in.docbook:2446 msgid "The ListView shows a 1-dimensional list with one column." msgstr "ListView visar en 1-dimensionell lista med en kolumn." #. (itstool) path: section/para #: C/index-in.docbook:2450 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2458 #, fuzzy msgctxt "_" msgid "external ref='figures/listmodel_listview.png' md5='5e49d159f43fdc5242998713bdedafc8'" msgstr "external ref='figures/listmodel_listview.png' md5='5e49d159f43fdc5242998713bdedafc8'" #. (itstool) path: section/para #: C/index-in.docbook:2462 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2468 C/index-in.docbook:2480 msgid "GridView" msgstr "GridView" #. (itstool) path: section/para #: C/index-in.docbook:2470 msgid "The GridView shows a 2-dimensional grid." msgstr "GridView visar ett 2-dimensionellt rutnät." #. (itstool) path: section/para #: C/index-in.docbook:2474 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2482 #, fuzzy msgctxt "_" msgid "external ref='figures/listmodel_gridview.png' md5='0d87e962deacc452f32513f0d5e07e04'" msgstr "external ref='figures/listmodel_gridview.png' md5='0d87e962deacc452f32513f0d5e07e04'" #. (itstool) path: section/para #: C/index-in.docbook:2486 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2492 C/index-in.docbook:2504 msgid "ColumnView" msgstr "ColumnView" #. (itstool) path: section/para #: C/index-in.docbook:2494 msgid "The ColumnView shows a 1-dimensional list with one or more columns." msgstr "ColumnView visar en 1-dimensionell lista med en eller flera kolumner." #. (itstool) path: section/para #: C/index-in.docbook:2498 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2506 #, fuzzy msgctxt "_" msgid "external ref='figures/listmodel_columnview.png' md5='fd8445f1904773397a7252bf843e2c38'" msgstr "external ref='figures/listmodel_columnview.png' md5='fd8445f1904773397a7252bf843e2c38'" #. (itstool) path: section/para #: C/index-in.docbook:2510 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2517 C/index-in.docbook:3115 msgid "Sorting" msgstr "Sortering" #. (itstool) path: section/para #: C/index-in.docbook:2519 #, fuzzy msgid "The list can be sorted by wrapping it in a SortListModel. There are two ways to do this." msgstr "Listan kan sorteras genom att omsluta den i en SortListModel. Det finns två sätt att göra detta." #. (itstool) path: listitem/para #: C/index-in.docbook:2524 #, fuzzy msgid "" "In a ColumnView, get the ColumnViewSorter from the ColumnView and set it " "to the SortListModel. Set a Sorter to each ColumnViewColumn. Then the user " "of your app can sort the items by clicking on a column heading." msgstr "" "I en ColumnView hämtar du ColumnViewSorter från denna ColumnView och " "ställer in den till SortListModel-modellen. Ställ in en Sorter för varje " "ColumnViewColumn. Användaren av ditt program kan sedan sortera objekten genom att klicka på en kolumnrubrik." #. (itstool) path: listitem/para #: C/index-in.docbook:2529 #, fuzzy #| msgid "" #| "As mentioned above, each TextView has a TextBuffer, and one or more TextViews can share the same TextBuffer." msgid "" "In any view, set a Sorter such as a StringSorter or a NumericSorter to the " "SortListModel." msgstr "" "Ställ i valfri vy in en Sorter som en StringSorter eller en NumericSorter " "till SortListModel-modellen." #. (itstool) path: section/para #: C/index-in.docbook:2534 msgid "SortListModel Reference" msgstr "Referens för SortListModel" #. (itstool) path: section/para #: C/index-in.docbook:2535 msgid "StringSorter Reference" msgstr "Referens för StringSorter" #. (itstool) path: section/para #: C/index-in.docbook:2536 msgid "NumericSorter Reference" msgstr "Referens för NumericSorter" #. (itstool) path: figure/title #: C/index-in.docbook:2542 msgid "SortListModel" msgstr "SortListModel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2544 #, fuzzy msgctxt "_" msgid "external ref='figures/listmodel_sort.png' md5='9f6ee5fc4c2f03172fefc8027d97063e'" msgstr "external ref='figures/listmodel_sort.png' md5='9f6ee5fc4c2f03172fefc8027d97063e'" #. (itstool) path: section/para #: C/index-in.docbook:2548 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2554 msgid "Filtering" msgstr "Filtrering" #. (itstool) path: section/para #: C/index-in.docbook:2556 #, fuzzy #| msgid "" #| "Gtk::Style and Gtk::Rc were removed, replaced by Gtk::StyleContext, and " #| "Gtk::StyleProviders, such as Gtk::CssProvider." msgid "" "The list can be filtered by wrapping it in a FilterListModel. Set a Filter such as a " "StringFilter or a BoolFilter to the FilterListModel." msgstr "" "Gtk::Style och Gtk::Rc togs bort, ersatta av Gtk::StyleContext och olika " "Gtk::StyleProvider-klasser, som Gtk::CssProvider." #. (itstool) path: section/para #: C/index-in.docbook:2562 msgid "FilterListModel Reference" msgstr "Referens för FilterListModel" #. (itstool) path: section/para #: C/index-in.docbook:2563 msgid "StringFilter Reference" msgstr "Referens för StringFilter" #. (itstool) path: section/para #: C/index-in.docbook:2564 msgid "BoolFilter Reference" msgstr "Referens för BoolFilter" #. (itstool) path: figure/title #: C/index-in.docbook:2570 msgid "FilterListModel" msgstr "FilterListModel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2572 #, fuzzy msgctxt "_" msgid "external ref='figures/listmodel_filter.png' md5='b1407e88c99b90c2ad7698ce30a46a1e'" msgstr "external ref='figures/listmodel_filter.png' md5='b1407e88c99b90c2ad7698ce30a46a1e'" #. (itstool) path: section/para #: C/index-in.docbook:2576 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2582 msgid "Displaying Trees" msgstr "Visa träd" #. (itstool) path: section/para #: C/index-in.docbook:2584 #, fuzzy msgid "" "While the deprecated TreeView provided built-in support for trees, the list widgets, and in particular Gio::" "ListModel, do not. However, gtkmm provides functionality to make trees look and behave like lists for " "the people who still want to display lists. This is achieved by using the TreeListModel to flatten a tree into a list. " "The TreeExpander widget can then be used inside a listitem to allow users to expand and collapse rows." msgstr "" "Medan den föråldrade TreeView tillhandahöll inbyggt stöd för träd så gör listkomponenterna, och i synnerhet " "Gio::ListModel, inte det. gtkmm tillhandahåller dock funktionalitet för att få träd att se ut " "och uppföra sig som listor för de som fortfarande vill visa listor. Detta åstadkoms genom att använda TreeListModel-" "modellen för att platta ut ett träd till en lista. TreeExpander-komponenten kan sedan användas inuti ett listobjekt för " "att låta användare expandera och fälla ihop rader." #. (itstool) path: section/para #: C/index-in.docbook:2594 msgid "TreeListModel Reference" msgstr "Referens för TreeListModel" #. (itstool) path: section/para #: C/index-in.docbook:2595 msgid "TreeExpander Reference" msgstr "Referens för TreeExpander" #. (itstool) path: figure/title #: C/index-in.docbook:2601 msgid "TreeListModel" msgstr "TreeListModel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2603 #, fuzzy msgctxt "_" msgid "external ref='figures/listmodel_tree.png' md5='656307ee78c8fd9ac379f2a0d01b8a81'" msgstr "external ref='figures/listmodel_tree.png' md5='656307ee78c8fd9ac379f2a0d01b8a81'" #. (itstool) path: section/para #: C/index-in.docbook:2607 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:2615 msgid "The TreeView widget" msgstr "TreeView-komponenten" #. (itstool) path: note/para #: C/index-in.docbook:2617 msgid "" "Gtk::TreeView is deprecated since gtkmm 4.10. In new code, use Gtk::ListView for lists and Gtk::ColumnView for tabular lists." msgstr "" "Gtk::TreeView är föråldrad sedan gtkmm 4.10. Använd i ny kod Gtk::ListView för listor och Gtk::ColumnView för tabellistor." #. (itstool) path: chapter/para #: C/index-in.docbook:2622 msgid "The Gtk::TreeView widget can contain lists or trees of data, in columns." msgstr "Komponenten Gtk::TreeView kan innehålla listor eller träd med data i kolumner." #. (itstool) path: section/title #: C/index-in.docbook:2628 msgid "The Model" msgstr "Modellen" #. (itstool) path: section/para #: C/index-in.docbook:2630 #, fuzzy msgid "" "Each Gtk::TreeView has an associated Gtk::TreeModel, which contains the data displayed by the " "TreeView. Each Gtk::TreeModel can be used by more than one Gtk::TreeView. " "For instance, this allows the same underlying data to be displayed and edited in 2 different ways at the same time. Or the 2 Views might " "display different columns from the same Model data, in the same way that 2 SQL queries (or \"views\") might show different fields from the same " "database table." msgstr "" "Varje Gtk::TreeView har en associerad Gtk::TreeModel som innehåller de data som visas av denna " "Gtk::TreeView. Varje Gtk::TreeModel kan användas av mer än en Gtk::TreeView. Exempelvis tillåter detta samma underliggande data att visas och redigeras på två olika sätt samtidigt. Eller så kan de två vyerna " "visa olika kolumner från samma modelldata, på samma sätt som två SQL-frågor (eller ”vyer”) kan visa olika fält från samma databastabell." #. (itstool) path: section/para #: C/index-in.docbook:2640 #, fuzzy msgid "" "Although you can theoretically implement your own Model, you will normally use either the ListStore or " "TreeStore model classes." msgstr "" "Även om du i teorin kan implementera en egen Model, så kommer du vanligen använda antingen modellklasserna ListStore " "eller TreeStore." #. (itstool) path: section/para #: C/index-in.docbook:2646 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2649 msgid "ListStore, for rows" msgstr "ListStore, för rader" #. (itstool) path: section/para #: C/index-in.docbook:2651 msgid "The ListStore contains simple rows of data, and each row has no children." msgstr "ListStore innehåller enkla rader med data, och varje rad saknar underordnade." #. (itstool) path: figure/title #: C/index-in.docbook:2657 C/index-in.docbook:3238 msgid "TreeView - ListStore" msgstr "TreeView - ListStore" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2659 C/index-in.docbook:3240 #, fuzzy msgctxt "_" msgid "external ref='figures/treeview_list.png' md5='60e5e4ecb284d0cdc53373fe0ec858ee'" msgstr "external ref='figures/treeview_list.png' md5='60e5e4ecb284d0cdc53373fe0ec858ee'" #. (itstool) path: section/para #: C/index-in.docbook:2663 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2668 msgid "TreeStore, for a hierarchy" msgstr "TreeStore, för en hierarki" #. (itstool) path: section/para #: C/index-in.docbook:2670 msgid "The TreeStore contains rows of data, and each row may have child rows." msgstr "TreeStore innehåller rader med data, och varje rad kan ha underordnade rader." #. (itstool) path: figure/title #: C/index-in.docbook:2676 C/index-in.docbook:3258 msgid "TreeView - TreeStore" msgstr "TreeView - TreeStore" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2678 C/index-in.docbook:3260 #, fuzzy msgctxt "_" msgid "external ref='figures/treeview_tree.png' md5='2270025659b23ebfc0e38d8b629289ef'" msgstr "external ref='figures/treeview_tree.png' md5='2270025659b23ebfc0e38d8b629289ef'" #. (itstool) path: section/para #: C/index-in.docbook:2682 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2687 msgid "Model Columns" msgstr "Modellkolumner" #. (itstool) path: section/para #: C/index-in.docbook:2689 #, fuzzy msgid "" "The TreeModelColumnRecord class is used to keep track of the columns and their data types. You add " "TreeModelColumn instances to the ColumnRecord and then use those TreeModelColumns when getting and setting the data in model rows. You will probably find it convenient to derive a new " "TreeModelColumnRecord which has your TreeModelColumn instances as member data." msgstr "" "TreeModelColumnRecord-klassen används för att hålla koll på kolumnerna och deras datatyper. Du lägger till " "TreeModelColumn-instanser till ditt ColumnRecord och använder sedan dessa " "TreeModelColumn-instanser när du hämtar och ställer in data i modellrader. Du kommer troligen finna det praktiskt att " "härleda en ny TreeModelColumnRecord som har dina TreeModelColumn-instanser som medlemsdata." #. (itstool) path: section/programlisting #: C/index-in.docbook:2700 #, no-wrap msgid "" "class ModelColumns : public Gtk::TreeModelColumnRecord\n" "{\n" "public:\n" "\n" " ModelColumns()\n" " { add(m_col_text); add(m_col_number); }\n" "\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_text;\n" " Gtk::TreeModelColumn<int> m_col_number;\n" "};\n" "\n" "ModelColumns m_Columns;" msgstr "" "class ModelColumns : public Gtk::TreeModelColumnRecord\n" "{\n" "public:\n" "\n" " ModelColumns()\n" " { add(m_col_text); add(m_col_number); }\n" "\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_text;\n" " Gtk::TreeModelColumn<int> m_col_number;\n" "};\n" "\n" "ModelColumns m_Columns;" #. (itstool) path: section/para #: C/index-in.docbook:2713 #, fuzzy msgid "You specify the ColumnRecord when creating the Model, like so:" msgstr "Du anger ColumnRecord när du skapar modellen, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2717 #, no-wrap msgid "" "Glib::RefPtr<Gtk::ListStore> refListStore =\n" " Gtk::ListStore::create(m_Columns);" msgstr "" "Glib::RefPtr<Gtk::ListStore> refListStore =\n" " Gtk::ListStore::create(m_Columns);" #. (itstool) path: section/para #: C/index-in.docbook:2719 #, fuzzy msgid "" "As a TreeModelColumnRecord describes structure, not data, it can be shared among multiple models, and this is preferable " "for efficiency. However, the instance (such as m_Columns here) should usually not be static, because it often needs to be " "instantiated after glibmm has been initialized. The best solution is to make it a lazily instantiated singleton, so " "that it will be constructed on-demand, whenever the first model accesses it." msgstr "" "Då en TreeModelColumnRecord beskriver struktur, inte data, så kan den delas mellan flera modeller, och detta är önskvärt " "för effektivitet. Instansen (som m_Columns här) ska dock vanligen inte vara statisk, då den ofta behöver instansieras efter " "att glibmm har initierats. Den bästa lösningen är att göra den till en slött instansierad singleton, så att den " "kommer konstrueras när den behövs, närhelst den första modellen kommer åt den." #. (itstool) path: section/title #: C/index-in.docbook:2731 msgid "Adding Rows" msgstr "Lägga till rader" #. (itstool) path: section/para #: C/index-in.docbook:2733 msgid "" "Add rows to the model with the append(), prepend(), or insert() " "methods." msgstr "" "Lägg till rader till modellen med metoderna append(), prepend() eller insert()." #. (itstool) path: section/programlisting #: C/index-in.docbook:2737 #, no-wrap msgid "auto iter = m_refListStore->append();" msgstr "auto iter = m_refListStore->append();" #. (itstool) path: section/para #: C/index-in.docbook:2738 #, fuzzy msgid "You can dereference the iterator to get the Row:" msgstr "Du kan dereferera iteratorn för att få raden:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2740 #, no-wrap msgid "auto row = *iter;" msgstr "auto row = *iter;" #. (itstool) path: section/title #: C/index-in.docbook:2742 msgid "Adding child rows" msgstr "Lägga till underordnade rader" #. (itstool) path: section/para #: C/index-in.docbook:2743 msgid "" "Gtk::TreeStore models can have child items. Add them with the append(), prepend(), or insert() methods, like so:" msgstr "" "Gtk::TreeStore-modeller kan ha underordnade objekt. Lägg till dem med metoderna append(), " "prepend() eller insert(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2748 #, no-wrap msgid "" "auto iter_child =\n" " m_refTreeStore->append(row.children());" msgstr "" "auto iter_child =\n" " m_refTreeStore->append(row.children());" #. (itstool) path: section/title #: C/index-in.docbook:2755 msgid "Setting values" msgstr "Ställa in värden" #. (itstool) path: section/para #: C/index-in.docbook:2757 #, fuzzy msgid "" "You can use the operator[] overload to set the data for a particular column in the row, specifying the " "TreeModelColumn used to create the model." msgstr "" "Du kan använda överlagringen operator[] för att ställa in data för en specifik kolumn i raden, angivande den " "TreeModelColumn som används för att skapa modellen." #. (itstool) path: section/programlisting #: C/index-in.docbook:2762 #, no-wrap msgid "row[m_Columns.m_col_text] = \"sometext\";" msgstr "row[m_Columns.m_col_text] = \"litetext\";" #. (itstool) path: section/title #: C/index-in.docbook:2766 msgid "Getting values" msgstr "Hämta värden" #. (itstool) path: section/para #: C/index-in.docbook:2768 #, fuzzy msgid "" "You can use the operator[] overload to get the data in a particular column in a row, specifying the " "TreeModelColumn used to create the model." msgstr "" "Du kan använda överlagringen operator[] för att få data för en specifik kolumn i raden, angivande den " "TreeModelColumn som används för att skapa modellen." #. (itstool) path: section/programlisting #: C/index-in.docbook:2773 #, no-wrap msgid "" "auto strText = row[m_Columns.m_col_text];\n" "auto number = row[m_Columns.m_col_number];" msgstr "" "auto strText = row[m_Columns.m_col_text];\n" "auto number = row[m_Columns.m_col_number];" #. (itstool) path: section/para #: C/index-in.docbook:2775 msgid "The compiler will complain if you use an inappropriate type. For instance, this would generate a compiler error:" msgstr "Kompilatorn kommer klaga om du använder en olämplig typ. Exempelvis skulle detta generera ett kompileringsfel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2779 #, no-wrap msgid "" "//compiler error - no conversion from ustring to int.\n" "int number = row[m_Columns.m_col_text];" msgstr "" "//kompileringsfel - ingen konvertering från ustring till int.\n" "int number = row[m_Columns.m_col_text];" #. (itstool) path: section/title #: C/index-in.docbook:2784 msgid "\"Hidden\" Columns" msgstr "”Dolda” kolumner" #. (itstool) path: section/para #: C/index-in.docbook:2786 #, fuzzy msgid "You might want to associate extra data with each row. If so, just add it as a Model column, but don't add it to the View." msgstr "Du kan vilja associera extra data med varje rad. Lägg i så fall bara till dem som en modellkolumn, men lägg inte till dem till vyn." #. (itstool) path: section/para #: C/index-in.docbook:2797 #, fuzzy msgid "" "The View is the actual widget (Gtk::TreeView) that displays the model (Gtk::TreeModel) data and " "allows the user to interact with it. The View can show all of the model's columns, or just some, and it can show them in various ways." msgstr "" "Vyn är den faktiska komponenten (Gtk::TreeView) som visar data för modellen (Gtk::TreeModel) och " "låter användaren interagera med dem. Vyn kan visa alla modellens kolumner, eller bara några, och den kan visa dem på olika sätt." #. (itstool) path: section/para #: C/index-in.docbook:2804 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2807 #, fuzzy msgid "Using a Model" msgstr "Använda en Model" #. (itstool) path: section/para #: C/index-in.docbook:2809 msgid "" "You can specify a Gtk::TreeModel when constructing the Gtk::TreeView, or you can use the " "set_model() method, like so:" msgstr "" "Du kan ange en Gtk::TreeModel när du skapar din Gtk::TreeView, eller så kan du använda metoden " "set_model(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2814 #, no-wrap msgid "m_TreeView.set_model(m_refListStore);" msgstr "m_TreeView.set_model(m_refListStore);" #. (itstool) path: section/title #: C/index-in.docbook:2818 #, fuzzy msgid "Adding View Columns" msgstr "Lägga till vykolumner" #. (itstool) path: section/para #: C/index-in.docbook:2820 #, fuzzy msgid "" "You can use the append_column() method to tell the View that it should display certain Model columns, in a certain " "order, with a certain column title." msgstr "" "Du kan använda metoden append_column() för att säga till vyn att den ska visa vissa modellkolumner i en viss ordning, " "med en viss kolumntitel." #. (itstool) path: section/programlisting #: C/index-in.docbook:2825 #, fuzzy, no-wrap msgid "m_TreeView.append_column(\"Messages\", m_Columns.m_col_text);" msgstr "m_TreeView.append_column(\"Meddelanden\", m_Columns.m_col_text);" #. (itstool) path: section/para #: C/index-in.docbook:2826 #, fuzzy msgid "" "When using this simple append_column() overload, the TreeView will display the model data with " "an appropriate CellRenderer. For instance, strings and numbers are shown in a simple Gtk::Entry " "widget, and booleans are shown in a Gtk::CheckButton. This is usually what you need. For other column types you must " "either connect a callback that converts your type into a string representation, with TreeViewColumn::set_cell_data_func(), or derive a custom CellRenderer. Note that (unsigned) short is not supported by default - You could use " "(unsigned) int or (unsigned) long as the column type instead." msgstr "" "När denna enkla append_column()-överlagring används kommer vår TreeView modelldata med en " "lämplig CellRenderer. Strängar och tal visas exempelvis i en enkel Gtk::Entry-komponent, och " "booleaner visas i en Gtk::CheckButton. Det här är vanligen vad du behöver. För andra kolumntyper måste du antingen " "ansluta ett återanrop som konverterar din typ till en strängrepresentation med TreeViewColumn::set_cell_data_func(), " "eller härleda en anpassad CellRenderer. Observera att (unsigned) short inte stöds som standard - Du skulle kunna använda " "(unsigned) int eller (unsigned) long som kolumntyp i stället." #. (itstool) path: section/title #: C/index-in.docbook:2842 msgid "More than one Model Column per View Column" msgstr "Mer än en modellkolumn per vykolumn" #. (itstool) path: section/para #: C/index-in.docbook:2844 #, fuzzy msgid "" "To render more than one model column in a view column, you need to create the TreeView::Column widget manually, and use " "pack_start() to add the model columns to it." msgstr "" "För att rendera mer än en modellkolumn i en vykolumn behöver du skapa TreeView::Column-komponenten manuellt, och använda " "pack_start() för att lägga till modellkolumnerna till den." #. (itstool) path: section/para #: C/index-in.docbook:2850 #, fuzzy msgid "" "Then use append_column() to add the view Column to the View. Notice that Gtk::TreeView::append_column() is overloaded to accept either a prebuilt Gtk::TreeView::Column widget, or just the " "TreeModelColumn from which it generates an appropriate Gtk::TreeView::Column widget." msgstr "" "Använd sedan append_column() för att lägga till vykolumnen till vyn. Observera att Gtk::TreeView::" "append_column() är överlagrad för att acceptera antingen en förbyggd Gtk::TreeView::Column-komponent, eller " "bara vår TreeModelColumn från vilken den genererar en lämplig Gtk::TreeView::Column-komponent." #. (itstool) path: section/para #: C/index-in.docbook:2857 msgid "Here is some example code, which has a pixbuf icon and a text name in the same column:" msgstr "Här är lite exempelkod som har en pixbuf-ikon och ett textnamn i samma kolumn:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2860 #, fuzzy, no-wrap msgid "" "\n" "auto pColumn = Gtk::make_managed<Gtk::TreeView::Column>(\"Icon Name\");\n" "\n" "// m_columns.icon and m_columns.iconname are columns in the model.\n" "// pColumn is the column in the TreeView:\n" "pColumn->pack_start(m_columns.icon, /* expand= */ false);\n" "pColumn->pack_start(m_columns.iconname);\n" "\n" "m_TreeView.append_column(*pColumn);" msgstr "" "\n" "auto pColumn = Gtk::make_managed<Gtk::TreeView::Column>(\"Ikonnamn\");\n" "\n" "// m_columns.icon och m_columns.iconname är kolumner i modellen.\n" "// pColumn är kolumnen i vår TreeView:\n" "pColumn->pack_start(m_columns.icon, /* expand= */ false);\n" "pColumn->pack_start(m_columns.iconname);\n" "\n" "m_TreeView.append_column(*pColumn);" #. (itstool) path: section/title #: C/index-in.docbook:2872 msgid "Specifying CellRenderer details" msgstr "Ange detaljer för CellRenderer" #. (itstool) path: section/para #: C/index-in.docbook:2874 #, fuzzy msgid "" "The default CellRenderers and their default behavior will normally suffice, but you might occasionally need finer " "control. For instance, this example code from gtkmm/demos/gtk-demo/example_treeview_treestore.cc, appends a " "Gtk::CellRenderer widget and instructs it to render the data from various model columns through various aspects of its " "appearance." msgstr "" "Vanliga CellRenderer med sitt standardbeteende räcker vanligen, men du kan ibland behöva finare kontroll. Denna " "exempelkod från gtkmm/demos/gtk-demo/example_treeview_treestore.cc lägger till exempel till en Gtk::" "CellRenderer-komponent och instruerar den att rendera data från diverse modellkolumner genom olika aspekter av dess utseende." #. (itstool) path: section/programlisting #: C/index-in.docbook:2882 #, fuzzy, no-wrap msgid "" "auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n" "auto pColumn = m_TreeView.get_column(cols_count-1);\n" "if(pColumn)\n" "{\n" " auto pRenderer = static_cast<Gtk::CellRendererToggle*>(pColumn->get_first_cell());\n" " pColumn->add_attribute(pRenderer->property_visible(), m_columns.visible);\n" " pColumn->add_attribute(pRenderer->property_activatable(), m_columns.world);" msgstr "" "auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n" "auto pColumn = m_TreeView.get_column(cols_count-1);\n" "if(pColumn)\n" "{\n" " auto pRenderer = static_cast<Gtk::CellRendererToggle*>(pColumn->get_first_cell());\n" " pColumn->add_attribute(pRenderer->property_visible(), m_columns.visible);\n" " pColumn->add_attribute(pRenderer->property_activatable(), m_columns.world);" #. (itstool) path: section/para #: C/index-in.docbook:2890 msgid "You can also connect to CellRenderer signals to detect user actions. For instance:" msgstr "Du kan också ansluta till CellRenderer-signaler för att upptäcka användaråtgärder. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2894 #, no-wrap msgid "" "\n" "auto pRenderer = Gtk::make_managed<Gtk::CellRendererToggle>();\n" "pRenderer->signal_toggled().connect(\n" " sigc::bind( sigc::mem_fun(*this,\n" " &Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n" ");" msgstr "" "\n" "auto pRenderer = Gtk::make_managed<Gtk::CellRendererToggle>();\n" "pRenderer->signal_toggled().connect(\n" " sigc::bind( sigc::mem_fun(*this,\n" " &Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n" ");" #. (itstool) path: section/title #: C/index-in.docbook:2903 C/index-in.docbook:3269 msgid "Editable Cells" msgstr "Redigerbara celler" #. (itstool) path: section/title #: C/index-in.docbook:2906 msgid "Automatically-stored editable cells." msgstr "Automatiskt lagrade redigerbara celler." #. (itstool) path: section/para #: C/index-in.docbook:2908 #, fuzzy msgid "" "Cells in a TreeView can be edited in-place by the user. To allow this, use the Gtk::TreeView " "insert_column_editable() and append_column_editable() methods instead of " "insert_column() and append_column(). When these cells are edited the new values will be " "stored immediately in the Model. Note that these methods are templates which can only be instantiated for simple column types such as " "Glib::ustring, int, and long." msgstr "" "Celler i en TreeView kan redigeras på plats av användaren. För att tillåta detta använder du i Gtk::TreeView metoderna insert_column_editable() och append_column_editable() i stället för " "insert_column() och append_column(). När dessa celler redigeras kommer de nya värdena lagras " "omedelbart i modellen. Observera att dessa metoder är mallar som bara kan instansieras för enkla kolumntyper som Glib::ustring, int, och long." #. (itstool) path: section/title #: C/index-in.docbook:2922 msgid "Implementing custom logic for editable cells." msgstr "Implementera anpassad logik för redigerbara celler." #. (itstool) path: section/para #: C/index-in.docbook:2924 msgid "" "However, you might not want the new values to be stored immediately. For instance, maybe you want to restrict the input to certain characters " "or ranges of values." msgstr "" "Du vill dock kanske inte att de nya värdena ska lagras omedelbart. Du vill exempelvis kanske begränsa inmatningen till vissa tecken eller " "teckenintervall." #. (itstool) path: section/para #: C/index-in.docbook:2929 #, fuzzy msgid "" "To achieve this, you should use the normal Gtk::TreeView insert_column() and " "append_column() methods, then use get_column_cell_renderer() to get the Gtk::" "CellRenderer used by that column." msgstr "" "För att åstadkomma detta bör du i Gtk::TreeView använda de normala metoderna insert_column() " "och append_column(), och sedan använda get_column_cell_renderer() för att får den " "Gtk::CellRenderer som används av den kolumnen." #. (itstool) path: section/para #: C/index-in.docbook:2935 #, fuzzy msgid "" "You should then cast that Gtk::CellRenderer* to the specific CellRenderer that you expect, so you " "can use specific API." msgstr "" "Du bör sedan typkonvertera den Gtk::CellRenderer* till den specifika CellRenderer som du " "förväntar dig, så du kan använda specifikt API." #. (itstool) path: section/para #: C/index-in.docbook:2939 msgid "For instance, for a CellRendererText, you would set the cell's editable property to true, like so:" msgstr "För en CellRendererText skulle du exempelvis ställa in cellens editable-egenskap till true, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2942 #, no-wrap msgid "cell->property_editable() = true;" msgstr "cell->property_editable() = true;" #. (itstool) path: section/para #: C/index-in.docbook:2943 msgid "For a CellRendererToggle, you would set the activatable property instead." msgstr "För en CellRendererToggle skulle du i stället ställa in egenskapen activatable." #. (itstool) path: section/para #: C/index-in.docbook:2947 #, fuzzy msgid "" "You can then connect to the appropriate \"edited\" signal. For instance, connect to Gtk::CellRendererText::signal_edited(), or Gtk::CellRendererToggle::signal_toggled(). If the column contains more than one " "CellRenderer then you will need to use Gtk::TreeView::get_column() and then call " "get_cells() on that view Column." msgstr "" "Du kan sedan ansluta till den lämpliga ”edited”-signalen. Anslut exempelvis till Gtk::CellRendererText::signal_edited() eller Gtk::CellRendererToggle::signal_toggled(). Om kolumnen innehåller mer än en CellRenderer så kommer du behöva använda Gtk::TreeView::get_column() och sedan anropa get_cells() på den vykolumnen." #. (itstool) path: section/para #: C/index-in.docbook:2955 #, fuzzy msgid "In your signal handler, you should examine the new value and then store it in the Model if that is appropriate for your application." msgstr "I din signalhanterare bör du undersöka det nya värdet och sedan lagra det i modellen om det är lämpligt för ditt program." #. (itstool) path: section/title #: C/index-in.docbook:2964 #, fuzzy msgid "Iterating over Model Rows" msgstr "Iterera över modellrader" #. (itstool) path: section/para #: C/index-in.docbook:2966 #, fuzzy msgid "" "Gtk::TreeModel provides a C++ Standard Library-style container of its children, via the children() method. You can use the familiar begin() and end() methods iterator incrementing, " "like so:" msgstr "" "Gtk::TreeModel tillhandahåller en behållare av sina underordnade enligt stilen hos C++-standardbiblioteket, via metoden " "children(). Du kan använda iteratorökning med de bekanta metoderna begin() och " "end(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2972 #, fuzzy, no-wrap msgid "" "\n" "auto children = refModel->children();\n" "for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)\n" "{\n" " auto row = *iter;\n" " //Do something with the row - see above for set/get.\n" "}" msgstr "" "\n" "auto children = refModel->children();\n" "for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)\n" "{\n" " auto row = *iter;\n" " //Gör något med raden - se ovan för set/get.\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:2979 #, fuzzy msgid "" "If you always want to iterate across the entire range, much more succinct syntax is possible using C++'s range-based for " "loop:" msgstr "" "Om du alltid vill iterera längs hela intervallet är mycket mer kortfattad syntax möjlig med C++:s intervallbaserade for-loop:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2983 #, fuzzy, no-wrap msgid "" "\n" "for (auto row: refModel->children())\n" "{\n" " //Do something with the row - see above for set/get.\n" "}" msgstr "" "\n" "for (auto row: refModel->children())\n" "{\n" " //Gör något med raden - se ovan för set/get.\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:2990 #, fuzzy msgid "Row children" msgstr "Underordnade rader" #. (itstool) path: section/para #: C/index-in.docbook:2992 #, fuzzy msgid "" "When using a Gtk::TreeStore, the rows can have child rows, which can have their own children in turn. Use " "Gtk::TreeModel::Row::children() to get the container of child Rows:" msgstr "" "Vid användning av Gtk::TreeStore kan raderna ha underordnade rader, vilka i sin tur kan ha egna underordnade. Använd " "Gtk::TreeModel::Row::children() för att få behållaren för underordnade Row-rader:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2997 #, no-wrap msgid "Gtk::TreeModel::Children children = row.children();" msgstr "Gtk::TreeModel::Children children = row.children();" #. (itstool) path: section/title #: C/index-in.docbook:3003 #, fuzzy msgid "The Selection" msgstr "Selection" #. (itstool) path: section/para #: C/index-in.docbook:3005 #, fuzzy msgid "" "To find out what rows the user has selected, get the Gtk::TreeView::Selection object from the TreeView, like so:" msgstr "" "För att få reda på vilka rader användaren har markerat tar du objektet Gtk::TreeView::Selection från vår " "TreeView, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3010 #, no-wrap msgid "auto refTreeSelection = m_TreeView.get_selection();" msgstr "auto refTreeSelection = m_TreeView.get_selection();" #. (itstool) path: section/title #: C/index-in.docbook:3013 #, fuzzy msgid "Single or multiple selection" msgstr "Enkel- eller flermarkering" #. (itstool) path: section/para #: C/index-in.docbook:3015 #, fuzzy msgid "By default, only single rows can be selected, but you can allow multiple selection by setting the mode, like so:" msgstr "Som standard kan endast enskilda rader markeras, men du kan tillåta markering av flera genom att ställa in det läget så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3019 #, no-wrap msgid "refTreeSelection->set_mode(Gtk::SelectionMode::MULTIPLE);" msgstr "refTreeSelection->set_mode(Gtk::SelectionMode::MULTIPLE);" #. (itstool) path: section/title #: C/index-in.docbook:3023 #, fuzzy msgid "The selected rows" msgstr "De markerade raderna" #. (itstool) path: section/para #: C/index-in.docbook:3025 #, fuzzy msgid "For single-selection, you can just call get_selected(), like so:" msgstr "För enkelmarkering kan du helt enkelt anropa get_selected(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3029 #, fuzzy, no-wrap msgid "" "auto iter = refTreeSelection->get_selected();\n" "if(iter) //If anything is selected\n" "{\n" " auto row = *iter;\n" " //Do something with the row.\n" "}" msgstr "" "auto iter = refTreeSelection->get_selected();\n" "if(iter) //Om något är markerat\n" "{\n" " auto row = *iter;\n" " //Gör något med raden.\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:3036 #, fuzzy msgid "" "For multiple-selection, you need to call get_selected_rows() or define a callback, and give it to " "selected_foreach(), selected_foreach_path(), or selected_foreach_iter(), like so:" msgstr "" "För flermarkering behöver du anropa get_selected_rows() eller definiera ett återanrop och ge det till " "selected_foreach(), selected_foreach_path() eller selected_foreach_iter(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3043 #, no-wrap msgid "" "refTreeSelection->selected_foreach_iter(\n" " sigc::mem_fun(*this, &TheClass::selected_row_callback) );\n" "\n" "void TheClass::selected_row_callback(\n" " const Gtk::TreeModel::const_iterator& iter)\n" "{\n" " auto row = *iter;\n" " //Do something with the row.\n" "}" msgstr "" "refTreeSelection->selected_foreach_iter(\n" " sigc::mem_fun(*this, &TheClass::selected_row_callback) );\n" "\n" "void TheClass::selected_row_callback(\n" " const Gtk::TreeModel::const_iterator& iter)\n" "{\n" " auto row = *iter;\n" " //Gör något med raden.\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:3056 msgid "The \"changed\" signal" msgstr "Signalen ”changed”" #. (itstool) path: section/para #: C/index-in.docbook:3058 msgid "To respond to the user clicking on a row or range of rows, connect to the signal like so:" msgstr "För att svara på att användaren klickar på en rad eller ett radintervall ansluter du till signalen så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3062 #, no-wrap msgid "" "refTreeSelection->signal_changed().connect(\n" " sigc::mem_fun(*this, &Example_IconTheme::on_selection_changed)\n" ");" msgstr "" "refTreeSelection->signal_changed().connect(\n" " sigc::mem_fun(*this, &Example_IconTheme::on_selection_changed)\n" ");" #. (itstool) path: section/title #: C/index-in.docbook:3068 #, fuzzy msgid "Preventing row selection" msgstr "Förhindra radmarkering" #. (itstool) path: section/para #: C/index-in.docbook:3070 #, fuzzy msgid "" "Maybe the user should not be able to select every item in your list or tree. For instance, in the gtk-demo, you can select a demo to see the " "source code, but it doesn't make any sense to select a demo category." msgstr "" "Kanske användaren inte ska kunna markera alla objekt i din lista eller ditt träd. Exempelvis kan du i gtk-demo välja en demonstration för att " "se källkoden, men det är nonsens att markera en demonstrationskategori." #. (itstool) path: section/para #: C/index-in.docbook:3075 #, fuzzy msgid "" "To control which rows can be selected, use the set_select_function() method, providing a sigc::slot callback. For instance:" msgstr "" "För att styra vilka rader som kan markeras använder du metoden set_select_function(), som tillhandahåller ett " "sigc::slot-återanrop. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3080 #, no-wrap msgid "" "m_refTreeSelection->set_select_function( sigc::mem_fun(*this,\n" " &DemoWindow::select_function) );" msgstr "" "m_refTreeSelection->set_select_function( sigc::mem_fun(*this,\n" " &DemoWindow::select_function) );" #. (itstool) path: section/para #: C/index-in.docbook:3082 msgid "and then" msgstr "och sedan" #. (itstool) path: section/programlisting #: C/index-in.docbook:3085 #, fuzzy, no-wrap msgid "" "bool DemoWindow::select_function(\n" " const Glib::RefPtr<Gtk::TreeModel>& model,\n" " const Gtk::TreeModel::Path& path, bool)\n" "{\n" " const auto iter = model->get_iter(path);\n" " return iter->children().empty(); // only allow leaf nodes to be selected\n" "}" msgstr "" "bool DemoWindow::select_function(\n" " const Glib::RefPtr<Gtk::TreeModel>& model,\n" " const Gtk::TreeModel::Path& path, bool)\n" "{\n" " const auto iter = model->get_iter(path);\n" " return iter->children().empty(); // tillåt endast lövnoder att markeras\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:3095 #, fuzzy msgid "Changing the selection" msgstr "Ändra markeringen" #. (itstool) path: section/para #: C/index-in.docbook:3097 #, fuzzy msgid "To change the selection, specify a Gtk::TreeModel::iterator or Gtk::TreeModel::Row, like so:" msgstr "" "För att ändra markeringen, ange en Gtk::TreeModel::iterator eller Gtk::TreeModel::Row, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3102 #, no-wrap msgid "" "auto row = m_refModel->children()[5]; //The sixth row.\n" "if(row)\n" " refTreeSelection->select(row.get_iter());" msgstr "" "auto row = m_refModel->children()[5]; //Den sjätte raden.\n" "if(row)\n" " refTreeSelection->select(row.get_iter());" #. (itstool) path: section/para #: C/index-in.docbook:3105 msgid "or" msgstr "eller" #. (itstool) path: section/programlisting #: C/index-in.docbook:3108 #, no-wrap msgid "" "auto iter = m_refModel->children().begin()\n" "if(iter)\n" " refTreeSelection->select(iter);" msgstr "" "auto iter = m_refModel->children().begin()\n" "if(iter)\n" " refTreeSelection->select(iter);" #. (itstool) path: section/para #: C/index-in.docbook:3117 msgid "" "The standard tree models (TreeStore and ListStore) derive from TreeSortable, so they offer sorting functionality. For instance, call set_sort_column(), to sort the model by the " "specified column. Or supply a callback function to set_sort_func() to implement a more complicated sorting algorithm." msgstr "" "Standardträdmodellerna (TreeStore och ListStore) härleds från TreeSortable, så de erbjuder funktionalitet för sortering. Anropa exempelvis set_sort_column() för att sortera modellen " "efter angiven kolumn. Eller tillhandahåll en återanropsfunktion till set_sort_func() för att implementera en mer " "komplicerad sorteringsalgoritm." #. (itstool) path: section/para #: C/index-in.docbook:3121 msgid "TreeSortable Reference" msgstr "Referens för TreeSortable" #. (itstool) path: section/title #: C/index-in.docbook:3124 msgid "Sorting by clicking on columns" msgstr "Sortering genom att klicka på kolumner" #. (itstool) path: section/para #: C/index-in.docbook:3126 #, fuzzy msgid "" "So that a user can click on a TreeView's column header to sort the TreeView's contents, call " "Gtk::TreeView::Column::set_sort_column(), supplying the model column on which model should be sorted when the header " "is clicked. For instance:" msgstr "" "För att en användare ska kunna klicka på kolumnrubriken för en TreeView för att sortera innehållet i denna " "TreeView så anropar du Gtk::TreeView::Column::set_sort_column(), och tillhandahåller " "modellkolumnen för vilken modell som ska sorteras när rubriken klickas på. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3129 #, no-wrap msgid "" "auto pColumn = treeview.get_column(0);\n" "if(pColumn)\n" " pColumn->set_sort_column(m_columns.m_col_id);" msgstr "" "auto pColumn = treeview.get_column(0);\n" "if(pColumn)\n" " pColumn->set_sort_column(m_columns.m_col_id);" #. (itstool) path: section/title #: C/index-in.docbook:3135 #, fuzzy msgid "Independently sorted views of the same model" msgstr "Oberoende sorterade vyer av samma modell" #. (itstool) path: section/para #: C/index-in.docbook:3137 #, fuzzy msgid "" "The TreeView already allows you to show the same TreeModel in two TreeView " "widgets. If you need one of these TreeViews to sort the model differently than the other then you should use a TreeModelSort instead of just, for instance, Gtk::TreeViewColumn::set_sort_column(). TreeModelSort " "is a model that contains another model, presenting a sorted version of that model. For instance, you might add a sorted version of a model to a " "TreeView like so:" msgstr "" "TreeView låter dig redan visa samma TreeModel i två TreeView-komponenter. " "Om du behöver att en av dessa TreeView ska sortera modellen på ett annat sätt än den andra så bör du använda en TreeModelSort i stället för att exempelvis bara använda, Gtk::TreeViewColumn::set_sort_column(). " "TreeModelSort är en modell som innehåller en annan modell, och presenterar en sorterad version av den modellen. Du " "lägger exempelvis kanske till en sorterad version av en modell till en TreeView så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3145 #, fuzzy, no-wrap msgid "" "auto sorted_model = Gtk::TreeModelSort::create(model);\n" "sorted_model->set_sort_column(columns.m_col_name, Gtk::SortType::ASCENDING);\n" "treeview.set_model(sorted_model);" msgstr "" "auto sorted_model = Gtk::TreeModelSort::create(model);\n" "sorted_model->set_sort_column(columns.m_col_name, Gtk::SortType::ASCENDING);\n" "treeview.set_model(sorted_model);" #. (itstool) path: section/para #: C/index-in.docbook:3149 #, fuzzy msgid "" "Note, however, that the TreeView will provide iterators to the sorted model. You must convert them to iterators to the underlying child model " "in order to perform actions on that model. For instance:" msgstr "" "Observera docka att vår TreeView kommer tillhandahålla iteratorer till den sorterade modellen. Du måste konvertera dem till iteratorer till den " "underliggande underordnade modellen för att utföra åtgärder på den modellen. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3151 #, no-wrap msgid "" "void ExampleWindow::on_button_delete()\n" "{\n" " auto refTreeSelection = m_treeview.get_selection();\n" " if(refTreeSelection)\n" " {\n" " auto sorted_iter = m_refTreeSelection->get_selected();\n" " if(sorted_iter)\n" " {\n" " auto iter = m_refModelSort->convert_iter_to_child_iter(sorted_iter);\n" " m_refModel->erase(iter);\n" " }\n" " }\n" "}" msgstr "" "void ExampleWindow::on_button_delete()\n" "{\n" " auto refTreeSelection = m_treeview.get_selection();\n" " if(refTreeSelection)\n" " {\n" " auto sorted_iter = m_refTreeSelection->get_selected();\n" " if(sorted_iter)\n" " {\n" " auto iter = m_refModelSort->convert_iter_to_child_iter(sorted_iter);\n" " m_refModel->erase(iter);\n" " }\n" " }\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:3165 msgid "TreeModelSort Reference" msgstr "Referens för TreeModelSort" #. (itstool) path: section/title #. (itstool) path: chapter/title #. (itstool) path: figure/title #: C/index-in.docbook:3171 C/index-in.docbook:3289 C/index-in.docbook:5266 C/index-in.docbook:5424 msgid "Drag and Drop" msgstr "Dra och släpp" #. (itstool) path: section/para #: C/index-in.docbook:3173 msgid "" "Gtk::TreeView already implements simple drag-and-drop when used with the Gtk::ListStore or " "Gtk::TreeStore models (since gtk 4.8). If necessary, it also allows you to implement more complex behavior when items " "are dragged and dropped, using the normal Drag and Drop API." msgstr "" "Gtk::TreeView implementerar redan enkelt dra-och-släpp när den används med Gtk::ListStore- eller " "Gtk::TreeStore-modellerna (sedan gtk 4.8). Om nödvändigt låter den dig också implementera mer komplext beteende när " "objekt dras och släpps, med det vanliga dra och släpp-API:t." #. (itstool) path: section/title #: C/index-in.docbook:3182 #, fuzzy msgid "Reorderable rows" msgstr "Rader vars ordning går ändra" #. (itstool) path: section/para #: C/index-in.docbook:3184 #, fuzzy msgid "" "If you call Gtk::TreeView::set_reorderable() then your TreeView's items can be moved within the treeview itself. This " "is demonstrated in the TreeStore example." msgstr "" "Om du anropar Gtk::TreeView::set_reorderable() så kan objekten i din TreeView flyttas i själva trädvyn. Detta " "demonstreras i TreeStore-exemplet." #. (itstool) path: section/para #: C/index-in.docbook:3189 #, fuzzy msgid "" "However, this does not allow you any control of which items can be dragged, and where they can be dropped. If you need that extra control then " "you might create a derived Gtk::TreeModel from Gtk::TreeStore or Gtk::ListStore and " "override the Gtk::TreeDragSource::row_draggable_vfunc() and Gtk::TreeDragDest::row_drop_possible_vfunc() " "virtual methods. You can examine the Gtk::TreeModel::Paths provided and allow or disallow dragging or dropping by returning " "true or false." msgstr "" "Detta låter dig dock inte styra vilka objekt som kan dras, och var de kan släppas. Om du behöver den extra kontrollen så kan du skapa en " "härledd Gtk::TreeModel från Gtk::TreeStore eller Gtk::ListStore åsidosätta de " "virtuella metoderna Gtk::TreeDragSource::row_draggable_vfunc() och Gtk::TreeDragDest::row_drop_possible_vfunc(). Du kan undersöka de Gtk::TreeModel::Path som tillhandahålls och tillåta eller förbjuda dragning eller släppning " "genom att returnera true eller false." #. (itstool) path: section/para #: C/index-in.docbook:3196 msgid "This is demonstrated in the drag_and_drop example." msgstr "Detta demonstreras i dra-och-släpp-exemplet." #. (itstool) path: section/title #: C/index-in.docbook:3202 C/index-in.docbook:3312 msgid "Popup Context Menu" msgstr "Poppuppsnabbvalsmeny" #. (itstool) path: section/para #: C/index-in.docbook:3204 #, fuzzy msgid "" "Lots of people need to implement right-click context menus for TreeViews so we will explain how to do that here to save " "you some time. It's much the same as a normal context menu, as described in the menus chapter. You use " "a Gtk::GestureClick to detect the mouse click." msgstr "" "Det finns många som behöver implementera snabbvalsmenyer åtkomliga med högerklick för TreeView-vyer, så vi kommer " "förklara hur det görs för att spara tid åt dig. Det är i stort sett samma som en vanlig snabbvalsmeny, som beskrivet i kapitlet menyer. Du använder ett Gtk::GestureClick för att upptäcka musklicket." #. (itstool) path: section/para #: C/index-in.docbook:3211 #, fuzzy msgid "" "This is demonstrated in the Popup Context Menu example. In that example a derived TreeView is used, but that's not " "necessary." msgstr "" "Detta demonstreras i exemplet poppuppsnabbvalsmeny. I det exemplet används en härledd TreeView, men det är inte " "nödvändigt." #. (itstool) path: section/title #: C/index-in.docbook:3218 C/index-in.docbook:3919 C/index-in.docbook:4218 C/index-in.docbook:5540 msgid "Examples" msgstr "Exempel" #. (itstool) path: section/para #: C/index-in.docbook:3220 msgid "" "Some TreeView examples are shown here. There are more examples in the treeview directory in gtkmm-documentation's " "examples." msgstr "" "Några TreeView-exempel visas här. Det finns mer exempel i treeview-katalogen i gtkmm-documentations exempel." #. (itstool) path: section/para #: C/index-in.docbook:3224 msgid "" "If neither ListStore nor TreeStore is suitable for your application, look at the custom TreeModel " "example. It shows how you can make your own implementation of the TreeModel interface." msgstr "" "Om varken ListStore eller TreeStore är lämplig för ditt program kan du titta på exemplet anpassad TreeModel. Det visar dig hur du kan göra din egen implementation av TreeModel-gränssnittet." #. (itstool) path: section/title #: C/index-in.docbook:3231 msgid "ListStore" msgstr "ListStore" #. (itstool) path: section/para #: C/index-in.docbook:3232 msgid "This example has a Gtk::TreeView widget, with a Gtk::ListStore model." msgstr "Detta exempel har en Gtk::TreeView-komponent med en Gtk::ListStore-modell." #. (itstool) path: section/para #: C/index-in.docbook:3244 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3249 msgid "TreeStore" msgstr "TreeStore" #. (itstool) path: section/para #: C/index-in.docbook:3251 msgid "" "This example is very similar to the ListStore example, but uses a Gtk::TreeStore model instead, " "and adds children to the rows." msgstr "" "Detta exempel är väldigt likt ListStore-exemplet, men använder en Gtk::TreeStore-modell i " "stället, och lägger till underordnade till raderna." #. (itstool) path: section/para #: C/index-in.docbook:3264 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:3271 msgid "" "This example is identical to the ListStore example, but it uses TreeView::append_column_editable() instead of TreeView::append_column()." msgstr "" "Detta exempel är identiskt med ListStore-exemplet, men använder TreeView::append_column_editable() i stället för TreeView::append_column()." #. (itstool) path: figure/title #: C/index-in.docbook:3278 msgid "TreeView - Editable Cells" msgstr "TreeView - Redigerbara celler" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3280 #, fuzzy msgctxt "_" msgid "external ref='figures/treeview_editablecells.png' md5='b4c81c776d192afdc3685fd4a8ef178c'" msgstr "external ref='figures/treeview_editablecells.png' md5='b4c81c776d192afdc3685fd4a8ef178c'" #. (itstool) path: section/para #: C/index-in.docbook:3284 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:3291 #, fuzzy msgid "" "This example is much like the TreeStore example, but has 2 extra columns to indicate whether the row can be dragged, and " "whether it can receive drag-and-dropped rows. It uses a derived Gtk::TreeStore which overrides the virtual functions as " "described in the TreeView Drag and Drop section." msgstr "" "Detta exempel liknar mycket TreeStore-exemplet, men har två extra kolumner som indikerar huruvida raden kan dras, och " "huruvida den kan ta emot dra-och-släppta rader. Det använder en härledd Gtk::TreeStore som åsidosätter de virtuella " "funktionerna som beskrivet i avsnittet TreeView - Dra och släpp." #. (itstool) path: figure/title #: C/index-in.docbook:3301 msgid "TreeView - Drag And Drop" msgstr "TreeView - Dra och släpp" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3303 #, fuzzy msgctxt "_" msgid "external ref='figures/treeview_draganddrop.png' md5='fb5de06eb865e9bd312f0b020e8f631d'" msgstr "external ref='figures/treeview_draganddrop.png' md5='fb5de06eb865e9bd312f0b020e8f631d'" #. (itstool) path: section/para #: C/index-in.docbook:3307 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:3314 #, fuzzy msgid "" "This example is much like the ListStore example, but derives a custom TreeView to encapsulate the " "tree model code and popup menu code in our derived class. See the TreeView Popup Context Menu " "section." msgstr "" "Detta exempel liknar mycket ListStore-exemplet, men härleder en anpassad TreeView för att kapsla " "in trädmodellskoden och poppuppmenykoden i vår härledda klass. Se avsnittet TreeView - " "Poppuppsnabbvalsmeny." #. (itstool) path: figure/title #: C/index-in.docbook:3322 msgid "TreeView - Popup Context Menu" msgstr "TreeView - Poppuppsnabbvalsmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3324 #, fuzzy msgctxt "_" msgid "external ref='figures/treeview_popup.png' md5='29c7b04f9f865c6ae8214cbb1724b05f'" msgstr "external ref='figures/treeview_popup.png' md5='29c7b04f9f865c6ae8214cbb1724b05f'" #. (itstool) path: section/para #: C/index-in.docbook:3328 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:3335 msgid "The DropDown Widget" msgstr "DropDown-komponenten" #. (itstool) path: chapter/para #: C/index-in.docbook:3337 msgid "" "The DropDown widget is an alternative to the deprecated ComboBox. It uses list models instead of " "tree models, and the content is displayed using widgets instead of cell renderers." msgstr "" "Komponenten DropDown är ett alternativ till den föråldrade ComboBox. Den använder listmodeller i " "stället för trädmodeller, och innehållet visas med komponenter i stället för cellrenderare." #. (itstool) path: chapter/para #: C/index-in.docbook:3342 #, fuzzy #| msgid "" #| "The ComboBox widget offers a list (or tree) of choices in a dropdown menu. If appropriate, it can show extra " #| "information about each item, such as text, a picture, a check button, or a progress bar. The ComboBox widget usually " #| "restricts the user to the available choices, but it can optionally have an Entry, allowing the user to enter " #| "arbitrary text if none of the available choices are suitable." msgid "" "The DropDown widget offers a list of choices in a dropdown menu. If appropriate, it can show extra information about " "each item, such as text, a picture, or a check button. The DropDown widget can optionally have an Entry in the dropdown menu, allowing the user to search in a long list." msgstr "" "ComboBox-komponenten erbjuder en lista (eller ett träd) av val i en rullgardinsmeny. Om lämpligt kan den visa extra " "information om varje objekt, som text, en bild, en kryssruta eller en förloppsindikator. ComboBox-komponenten begränsar " "vanligen användaren till de tillgängliga valen, men den kan valfritt ha ett Entry, som låter användaren mata in " "godtycklig text om inget av de tillgängliga valen passar." #. (itstool) path: chapter/para #: C/index-in.docbook:3349 msgid "" "The list is provided via a Gio::ListModel, and data from this model is added to the DropDown's " "view with signal handlers connected to a SignalListItemFactory. This provides flexibility, but the " "StringList class provides a simpler text-based specialization in case that flexibility is not required." msgstr "" "Listan tillhandahålls via en Gio::ListModel, och data från denna modell läggs till vyn för DropDown-komponenten med signalhanterare anslutna till en SignalListItemFactory. Detta tillhandahåller flexibilitet, " "men StringList-klassen tillhandahåller en enklare textbaserad specialisering om den flexibiliteten inte behövs." #. (itstool) path: chapter/para #: C/index-in.docbook:3356 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3359 C/index-in.docbook:3534 msgid "The model" msgstr "Modellen" #. (itstool) path: section/para #: C/index-in.docbook:3361 #, fuzzy msgid "" "The model for a DropDown can be defined and filled exactly as for a ListView or a " "ColumnView. It must be a subclass of Glib::Object. For instance, you might have a " "DropDown with one integer and one text column, like so:" msgstr "" "Modellen för en DropDown kan definieras och fyllas i exakt som för en ListView eller en " "ColumnView. Den måste vara en underklass till Glib::Object. Exempelvis kan du ha en " "DropDown med ett heltal och en textkolumn, så här:" #. (itstool) path: section/para #: C/index-in.docbook:3389 #, fuzzy msgid "" "After appending rows to this model, you should provide the model to the DropDown with the set_model() method. Unless you use the StringList model, you also need to set a ListItemFactory " "with set_factory(). If you want the items in the dropdown menu to look different from the item in the " "DropDown widget, you also need to set a separate ListItemFactory with " "set_list_factory()." msgstr "" "Efter att ha lagt till rader till denna modell bör du tillhandahålla modellen till vår DropDown med metoden " "set_model(). Om du inte använder modellen StringList så kommer du också behöva ställa in en " "ListItemFactory med set_factory(). Om du vill att objekten i rullgardinsmenyn ska se annorlunda " "från objektet i DropDown-komponenten så behöver du också ställa in en separat ListItemFactory med " "set_list_factory()." #. (itstool) path: section/title #: C/index-in.docbook:3400 msgid "The selected item" msgstr "Det valda objektet" #. (itstool) path: section/para #: C/index-in.docbook:3402 #, fuzzy msgid "" "To discover what item, if any, the user has selected from the DropDown, call DropDown::get_selected(). This returns an unsigned int that you can use to get the selected data from the model. For instance, you might read " "an integer ID value from the model, even though you have chosen only to show the human-readable description in the DropDown. For instance:" msgstr "" "För att upptäcka vilket objekt, om något, som användaren har valt från vår DropDown, anropa DropDown::" "get_selected(). Detta returnerar en unsigned int som du kan använda för att få valda data från modellen. Exempelvis " "kanske du läser ett heltals-ID-värde från modellen, även om du valt att bara visa den mänskligt läsbara beskrivningen i vår " "DropDown. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3409 #, fuzzy, no-wrap msgid "" "unsigned int sel = m_DropDown.get_selected();\n" "if (sel != GTK_INVALID_LIST_POSITION)\n" "{\n" " // Get the data for the selected row, using our knowledge of the list model:\n" " auto id = m_ListStore->get_item(sel).m_col_id;\n" " set_some_id_chosen(id); // Your own function.\n" "}\n" "else\n" " set_nothing_chosen(); // Your own function.\n" msgstr "" "unsigned int sel = m_DropDown.get_selected();\n" "if (sel != GTK_INVALID_LIST_POSITION)\n" "{\n" " // Få data för markerad rad, med vår kunskap om listmodellen:\n" " auto id = m_ListStore->get_item(sel).m_col_id;\n" " set_some_id_chosen(id); // Din egen funktion.\n" "}\n" "else\n" " set_nothing_chosen(); // Din egen funktion.\n" #. (itstool) path: section/title #: C/index-in.docbook:3422 C/index-in.docbook:3573 C/index-in.docbook:3634 msgid "Responding to changes" msgstr "Svara på ändringar" #. (itstool) path: section/para #: C/index-in.docbook:3424 #, fuzzy msgid "" "You might need to react to every change of selection in the DropDown, for instance to update other widgets. To do so, " "you should connect to property_selected().signal_changed(). For instance:" msgstr "" "Du kan behöva reagera på varje ändring av val i vår DropDown, till exempel för att uppdatera andra komponenter. För att " "göra så bör du ansluta till property_selected().signal_changed(). Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3428 #, no-wrap msgid "" "m_DropDown.property_selected().signal_changed().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_dropdown_changed));\n" msgstr "" "m_DropDown.property_selected().signal_changed().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_dropdown_changed));\n" #. (itstool) path: section/title #: C/index-in.docbook:3434 msgid "Simple String Example" msgstr "Enkelt strängexempel" #. (itstool) path: figure/title #: C/index-in.docbook:3437 msgid "Simple DropDown" msgstr "Enkel DropDown" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3439 #, fuzzy msgctxt "_" msgid "external ref='figures/dropdown_string.png' md5='b1689605c645e1ada3040f6df3335c56'" msgstr "external ref='figures/dropdown_string.png' md5='b1689605c645e1ada3040f6df3335c56'" #. (itstool) path: section/para #: C/index-in.docbook:3443 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3447 msgid "Examples with a Search Entry" msgstr "Exempel med ett sökfält" #. (itstool) path: section/para #: C/index-in.docbook:3449 msgid "" "The dropdown menu may contain an Entry that allows to search for items in the list. Call " "set_enable_search() and set_expression(). For instance:" msgstr "" "Rullgardinsmenyn kan innehålla ett Entry som tillåter sökning efter objekt i listan. Anropa " "set_enable_search() och set_expression(). Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3453 #, no-wrap msgid "" "m_DropDown.set_enable_search(true);\n" "auto expression = Gtk::ClosureExpression<Glib::ustring>::create(\n" " sigc::mem_fun(*this, &ExampleWindow::get_col_name));\n" "m_DropDown.set_expression(expression);\n" "\n" "//-------\n" "Glib::ustring ExampleWindow::get_col_name(const Glib::RefPtr<Glib::ObjectBase>& item)\n" "{\n" " const auto col = std::dynamic_pointer_cast<ModelColumns>(item);\n" " return col ? col->m_col_name : \"\";\n" "}\n" msgstr "" "m_DropDown.set_enable_search(true);\n" "auto expression = Gtk::ClosureExpression<Glib::ustring>::create(\n" " sigc::mem_fun(*this, &ExampleWindow::get_col_name));\n" "m_DropDown.set_expression(expression);\n" "\n" "//-------\n" "Glib::ustring ExampleWindow::get_col_name(const Glib::RefPtr<Glib::ObjectBase>& item)\n" "{\n" " const auto col = std::dynamic_pointer_cast<ModelColumns>(item);\n" " return col ? col->m_col_name : \"\";\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:3467 msgid "String Example" msgstr "Strängexempel" #. (itstool) path: figure/title #: C/index-in.docbook:3470 msgid "Search String" msgstr "Sök sträng" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3472 #, fuzzy #| msgctxt "_" #| msgid "external ref='figures/drawingarea_arcs.png' md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" msgctxt "_" msgid "external ref='figures/dropdown_search_string.png' md5='e130e644e7cfb13a5b90ab1372b17503'" msgstr "external ref='figures/dropdown_search_string.png' md5='e130e644e7cfb13a5b90ab1372b17503'" #. (itstool) path: section/para #: C/index-in.docbook:3476 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3480 msgid "Font Example" msgstr "Typsnittsexempel" #. (itstool) path: section/para #: C/index-in.docbook:3482 msgid "" "This example uses a Pango::FontMap as its model. This is possible because Pango::FontMap " "implements the Gio::ListModel interface. Of course you can use a FontDialogButton instead." msgstr "" "Detta exempel använder en Pango::FontMap som sin modell. Detta är möjligt för att Pango::FontMap " "implementerar Gio::ListModel-gränssnittet. Du kan förstås använda en FontDialogButton i stället." #. (itstool) path: figure/title #: C/index-in.docbook:3489 C/index-in.docbook:3508 msgid "Search Font" msgstr "Sök typsnitt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3491 #, fuzzy msgctxt "_" msgid "external ref='figures/dropdown_search_font.png' md5='1733e29c88c19dc6c4cbd1114446ac18'" msgstr "external ref='figures/dropdown_search_font.png' md5='1733e29c88c19dc6c4cbd1114446ac18'" #. (itstool) path: section/para #: C/index-in.docbook:3495 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3500 msgid "Complex Example" msgstr "Komplext exempel" #. (itstool) path: section/para #: C/index-in.docbook:3502 msgid "" "This is a more complex example with two SignalListItemFactory objects and their signal handlers. This example would be " "simpler without the checkmark in the dropdown menu." msgstr "" "Detta är ett mer komplext exempel med två SignalListItemFactory-objekt och deras signalhanterare. Detta exempel skulle " "vara enklare utan bocken i rullgardinsmenyn." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3510 #, fuzzy msgctxt "_" msgid "external ref='figures/dropdown_complex.png' md5='2167fb44e42653aa7fd855604c4c1e65'" msgstr "external ref='figures/dropdown_complex.png' md5='2167fb44e42653aa7fd855604c4c1e65'" #. (itstool) path: section/para #: C/index-in.docbook:3514 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:3519 msgid "Combo Boxes" msgstr "Kombinationsrutor" #. (itstool) path: note/para #: C/index-in.docbook:3521 msgid "" "Gtk::ComboBox and Gtk::ComboBoxText are deprecated since gtkmm 4.10. " "Use Gtk::DropDown in new code." msgstr "" "Gtk::ComboBox och Gtk::ComboBoxText är föråldrade sedan gtkmm 4.10. " "Använd Gtk::DropDown i ny kod." #. (itstool) path: chapter/para #: C/index-in.docbook:3525 msgid "" "The ComboBox widget offers a list (or tree) of choices in a dropdown menu. If appropriate, it can show extra information " "about each item, such as text, a picture, a check button, or a progress bar. The ComboBox widget usually restricts the " "user to the available choices, but it can optionally have an Entry, allowing the user to enter arbitrary text if none of " "the available choices are suitable." msgstr "" "ComboBox-komponenten erbjuder en lista (eller ett träd) av val i en rullgardinsmeny. Om lämpligt kan den visa extra " "information om varje objekt, som text, en bild, en kryssruta eller en förloppsindikator. ComboBox-komponenten begränsar " "vanligen användaren till de tillgängliga valen, men den kan valfritt ha ett Entry, som låter användaren mata in " "godtycklig text om inget av de tillgängliga valen passar." #. (itstool) path: chapter/para #: C/index-in.docbook:3528 msgid "" "The list is provided via a TreeModel, and columns from this model are added to the ComboBox's view with the " "ComboBox::pack_start() method. This provides flexibility and compile-time type-safety, but the " "ComboBoxText class provides a simpler text-based specialization in case that flexibility is not required." msgstr "" "Listan tillhandahålls via en TreeModel, och kolumner från denna modell läggs till vyn för ComboBox-komponenten med " "metoden ComboBox::pack_start(). Detta tillhandahåller flexibilitet och typsäkerhet under kompilering, men " "ComboBoxText-klassen tillhandahåller en enklare textbaserad specialisering om den flexibiliteten inte behövs." #. (itstool) path: chapter/para #: C/index-in.docbook:3531 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:3536 msgid "" "The model for a ComboBox can be defined and filled exactly as for a TreeView. For instance, you might derive a ComboBox " "class with one integer and one text column, like so:" msgstr "" "Modellen för en ComboBox kan definieras och fyllas i exakt som för en TreeView. Exempelvis kan du härleda en ComboBox " "med ett heltal och en textkolumn, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3538 #, fuzzy, no-wrap msgid "" "class ModelColumns : public Gtk::TreeModel::ColumnRecord\n" "{\n" "public:\n" " ModelColumns()\n" " { add(m_col_id); add(m_col_name); }\n" "\n" " Gtk::TreeModelColumn<int> m_col_id;\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_name;\n" "};\n" "\n" "ModelColumns m_columns;" msgstr "" "class ModelColumns : public Gtk::TreeModel::ColumnRecord\n" "{\n" "public:\n" " ModelColumns()\n" " { add(m_col_id); add(m_col_name); }\n" "\n" " Gtk::TreeModelColumn<int> m_col_id;\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_name;\n" "};\n" "\n" "ModelColumns m_columns;" #. (itstool) path: section/para #: C/index-in.docbook:3550 #, fuzzy msgid "" "After appending rows to this model, you should provide the model to the ComboBox with the set_model() method. Then use the pack_start() or pack_end() methods to specify what columns " "will be displayed in the ComboBox. As with the TreeView you may either use the default cell renderer by passing the TreeModelColumn to the pack methods, or you may instantiate a specific CellRenderer and specify a particular mapping with " "either add_attribute() or set_cell_data_func(). Note that these methods are in the " "CellLayout base class." msgstr "" "Efter att ha lagt till rader till denna modell bör du tillhandahålla modellen till ComboBoxen med metoden " "set_model(). Använd sedan metoderna pack_start() eller pack_end() " "för att ange vilka kolumner som kommer visas i vår ComboBox. Som med TreeView kan du antingen använda standardcellrenderare genom att skicka " "TreeModelColumn till packmetoderna, eller så kan du instansiera en specifik CellRenderer och ange " "en viss mappning med antingen add_attribute() eller set_cell_data_func(). Observera att dessa " "metoder finns i basklassen CellLayout." #. (itstool) path: section/title #: C/index-in.docbook:3554 msgid "The chosen item" msgstr "Det valda objektet" #. (itstool) path: section/para #: C/index-in.docbook:3556 #, fuzzy msgid "" "To discover what item, if any, the user has chosen from the ComboBox, call ComboBox::get_active(). This returns a " "TreeModel::iterator that you can dereference to a Row in order to read the values in your " "columns. For instance, you might read an integer ID value from the model, even though you have chosen only to show the human-readable " "description in the ComboBox. For instance:" msgstr "" "För att upptäcka vilket objekt, om något, som användaren har valt från en ComboBox, anropa ComboBox::get_active(). " "Detta returnerar en TreeModel::iterator som du kan dereferera till en Row för att läsa värdena i " "dina kolumner. Exempelvis kanske du läser ett heltals-ID-värde från modellen, även om du valt att bara visa den mänskligt läsbara beskrivningen " "i vår ComboBox. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3558 #, fuzzy, no-wrap msgid "" "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n" "if(iter)\n" "{\n" " auto row = *iter;\n" "\n" " //Get the data for the selected row, using our knowledge\n" " //of the tree model:\n" " auto id = row[m_Columns.m_col_id];\n" " set_something_id_chosen(id); //Your own function.\n" "}\n" "else\n" " set_nothing_chosen(); //Your own function." msgstr "" "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n" "if(iter)\n" "{\n" " auto row = *iter;\n" "\n" " //Få data för markerad rad, med vår kunskap\n" " //om trädmodellen:\n" " auto id = row[m_Columns.m_col_id];\n" " set_something_id_chosen(id); //Din egen funktion.\n" "}\n" "else\n" " set_nothing_chosen(); //Din egen funktion." #. (itstool) path: section/para #: C/index-in.docbook:3575 #, fuzzy msgid "" "You might need to react to every change of selection in the ComboBox, for instance to update other widgets. To do so, you should handle the " "changed signal. For instance:" msgstr "" "Du behöver reagera på varje ändring av val i vår ComboBox, till exempel för att uppdatera andra komponenter. För att göra så bör du hantera " "signalen changed. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3578 #, no-wrap msgid "" "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n" " &ExampleWindow::on_combo_changed) );" msgstr "" "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n" " &ExampleWindow::on_combo_changed) );" #. (itstool) path: section/title #: C/index-in.docbook:3583 C/index-in.docbook:3669 msgid "Full Example" msgstr "Fullständigt exempel" #. (itstool) path: figure/title #: C/index-in.docbook:3586 msgid "ComboBox" msgstr "ComboBox" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3588 #, fuzzy msgctxt "_" msgid "external ref='figures/combobox_complex.png' md5='ec96e29fe85caef072868284443e413e'" msgstr "external ref='figures/combobox_complex.png' md5='ec96e29fe85caef072868284443e413e'" #. (itstool) path: section/para #: C/index-in.docbook:3592 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3597 C/index-in.docbook:3683 msgid "Simple Text Example" msgstr "Enkelt textexempel" #. (itstool) path: figure/title #: C/index-in.docbook:3600 msgid "ComboBoxText" msgstr "ComboBoxText" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3602 #, fuzzy msgctxt "_" msgid "external ref='figures/combobox_text.png' md5='f8278861eaa5cdc1d165b577fc41ccf4'" msgstr "external ref='figures/combobox_text.png' md5='f8278861eaa5cdc1d165b577fc41ccf4'" #. (itstool) path: section/para #: C/index-in.docbook:3606 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3611 msgid "ComboBox with an Entry" msgstr "ComboBox med ett Entry" #. (itstool) path: section/para #: C/index-in.docbook:3613 msgid "" "A ComboBox may contain an Entry widget for entering of arbitrary text, by specifying " "true for the constructor's has_entry parameter." msgstr "" "En ComboBox kan innehålla en Entry-komponent för inmatning av godtycklig text genom att ange " "true för konstruktorns has_entry-parameter." #. (itstool) path: section/title #: C/index-in.docbook:3616 msgid "The text column" msgstr "Textkolumnen" #. (itstool) path: section/para #: C/index-in.docbook:3618 #, fuzzy msgid "" "So that the Entry can interact with the drop-down list of choices, you must specify which of your model columns is the " "text column, with set_entry_text_column(). For instance:" msgstr "" "För att Entryt ska kunna interagera med rullgardinslistan med val, måste du ange vilken av dina modellkolumner som är " "textkolumnen med set_entry_text_column(). Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3620 #, fuzzy, no-wrap msgid "m_combo.set_entry_text_column(m_columns.m_col_name);" msgstr "m_combo.set_entry_text_column(m_columns.m_col_name);" #. (itstool) path: section/para #: C/index-in.docbook:3621 #, fuzzy msgid "When you select a choice from the drop-down menu, the value from this column will be placed in the Entry." msgstr "När du väljer ett val från rullgardinsmenyn kommer värdet från denna kolumn placeras i Entryt." #. (itstool) path: section/title #: C/index-in.docbook:3627 #, fuzzy msgid "The entry" msgstr "Inmatningen" #. (itstool) path: section/para #: C/index-in.docbook:3629 msgid "" "Because the user may enter arbitrary text, an active model row isn't enough to tell us what text the user has entered. Therefore, you should " "retrieve the Entry widget with the ComboBox::get_entry() method and call " "get_text() on that." msgstr "" "Eftersom användaren kan mata in godtycklig text är en aktiv modellrad inte tillräckligt för att säga till oss vilken text som användaren har " "matat in. Du bör därför erhålla Entry-komponenten med metoden ComboBox::get_entry() och anropa " "get_text() på den." #. (itstool) path: section/para #: C/index-in.docbook:3636 #, fuzzy msgid "" "When the user enters arbitrary text, it may not be enough to connect to the changed signal, which is emitted for every typed " "character. It is not emitted when the user presses the Enter key. Pressing the Enter key or moving the " "keyboard focus to another widget may signal that the user has finished entering text. To be notified of these events, connect to the " "Entry's activate signal (available since gtkmm 4.8), and add a " "Gtk::EventControllerFocus and connect to its leave signal, like so" msgstr "" "När användaren matar in godtyckligt text är det kanske inte tillräckligt att ansluta till signalen changed, som sänds ut för " "varje inmatat tecken. Den sänds inte ut när användaren trycker på Retur-tangenten. Att trycka på Retur-" "tangenten eller flytta tangentbordsfokus till en annan komponent kan signalera att användaren slutat mata in text. För att aviseras om dessa " "händelse ansluter du till Entryts activate-signal (tillgänglig sedan gtkmm " "4.8.0), och lägger till ett Gtk::EventControllerFocus och ansluter till des leave-signal, så här" #. (itstool) path: section/programlisting #: C/index-in.docbook:3646 #, fuzzy, no-wrap msgid "" "auto entry = m_Combo.get_entry();\n" "if (entry)\n" "{\n" " // Alternatively you can connect to m_Combo.signal_changed().\n" " entry->signal_changed().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_changed));\n" " entry->signal_activate().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_activate));\n" " // The Entry shall receive focus-leave events.\n" " auto controller = Gtk::EventControllerFocus::create();\n" " m_ConnectionFocusLeave = controller->signal_leave().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_leave));\n" " entry->add_controller(controller);\n" "}" msgstr "" "auto entry = m_Combo.get_entry();\n" "if (entry)\n" "{\n" " // Alternativt kan du ansluta till m_Combo.signal_changed().\n" " entry->signal_changed().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_changed));\n" " entry->signal_activate().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_activate));\n" " // Entry ska ta emot fokuslämnande händelser.\n" " auto controller = Gtk::EventControllerFocus::create();\n" " m_ConnectionFocusLeave = controller->signal_leave().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_leave));\n" " entry->add_controller(controller);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:3660 #, fuzzy msgid "" "The changed signals of ComboBox and Entry are both emitted for every change. " "It doesn't matter which one you connect to. But the EventControllerFocus must be added to the Entry." msgstr "" "changed-signalerna för ComboBox och Entry sänds båda ut för varje ändring. Det " "spelar ingen roll vilken du ansluter till. Men detta EventControllerFocus måste läggas till i Entryt." #. (itstool) path: figure/title #: C/index-in.docbook:3672 #, fuzzy msgid "ComboBox with Entry" msgstr "ComboBox med Entry" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3674 #, fuzzy msgctxt "_" msgid "external ref='figures/comboboxentry_complex.png' md5='09bd46bc2fb93193ed4f9cf910ede733'" msgstr "external ref='figures/comboboxentry_complex.png' md5='09bd46bc2fb93193ed4f9cf910ede733'" #. (itstool) path: section/para #: C/index-in.docbook:3678 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: figure/title #: C/index-in.docbook:3686 #, fuzzy msgid "ComboBoxText with Entry" msgstr "ComboBoxText med Entry" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3688 #, fuzzy msgctxt "_" msgid "external ref='figures/comboboxentry_text.png' md5='164e857e073b574d6176927c8247ad96'" msgstr "external ref='figures/comboboxentry_text.png' md5='164e857e073b574d6176927c8247ad96'" #. (itstool) path: section/para #: C/index-in.docbook:3692 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #. (itstool) path: figure/title #: C/index-in.docbook:3700 C/index-in.docbook:3925 msgid "TextView" msgstr "TextView" #. (itstool) path: chapter/para #: C/index-in.docbook:3702 #, fuzzy msgid "" "The TextView widget can be used to display and edit large amounts of formatted text. Like the TreeView, it has a model/view design. In this case the TextBuffer is the model." msgstr "" "TextView-komponenten kan användas för att visa och redigera stora mängder formaterad text. Som TreeView har det en model/view-design. I detta fall är det TextBuffer som är modellen." #. (itstool) path: section/title #: C/index-in.docbook:3710 msgid "The Buffer" msgstr "Bufferten" #. (itstool) path: section/para #: C/index-in.docbook:3712 #, fuzzy msgid "" "Gtk::TextBuffer is a model containing the data for the Gtk::TextView, like the Gtk::" "TreeModel used by Gtk::TreeView. This allows two or more Gtk::TextViews to share the " "same TextBuffer, and allows those TextBuffers to be displayed slightly differently. Or you could maintain several " "Gtk::TextBuffers and choose to display each one at different times in the same Gtk::TextView " "widget." msgstr "" "Gtk::TextBuffer är en modell som innehåller data för Gtk::TextView, som den Gtk::" "TreeModel som används av Gtk::TreeView. Detta tillåter två eller fler Gtk::TextView " "att dela på samma TextBuffer, och låter dessa TextBuffer-komponenter visas lite olika. Eller så kan du underhålla flera " "Gtk::TextBuffer-komponenter och välja att visa var och en på olika tider i samma Gtk::TextView-" "komponent." #. (itstool) path: section/para #: C/index-in.docbook:3722 #, fuzzy msgid "" "The TextView creates its own default TextBuffer, which you can access via the " "get_buffer() method." msgstr "" "TextView skapar sin egen standard-TextBuffer, som du kan komma åt genom metoden " "get_buffer()." #. (itstool) path: section/para #: C/index-in.docbook:3728 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3731 msgid "Iterators" msgstr "Iteratorer" #. (itstool) path: section/para #: C/index-in.docbook:3733 #, fuzzy msgid "" "A Gtk::TextBuffer::iterator and a Gtk::TextBuffer::const_iterator represent a position between " "two characters in the text buffer. Whenever the buffer is modified in a way that affects the number of characters in the buffer, all " "outstanding iterators become invalid. Because of this, iterators can't be used to preserve positions across buffer modifications. To preserve a " "position, use Gtk::TextBuffer::Mark." msgstr "" "En Gtk::TextBuffer::iterator och en Gtk::TextBuffer::const_iterator representerar en position " "mellan två tecken i textbufferten. Närhelst bufferten ändras på ett sätt som påverkar antalet tecken i bufferten kommer alla de tidigare " "iteratorerna bli ogiltiga. På grund av detta kan iteratorer inte användas för att bevara positioner genom buffertändringar. För att bevara en " "position, använd Gtk::TextBuffer::Mark." #. (itstool) path: section/para #: C/index-in.docbook:3740 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3744 msgid "Tags and Formatting" msgstr "Taggar och formatering" #. (itstool) path: section/title #: C/index-in.docbook:3747 msgid "Tags" msgstr "Taggar" #. (itstool) path: section/para #: C/index-in.docbook:3749 #, fuzzy msgid "" "To specify that some text in the buffer should have specific formatting, you must define a tag to hold that formatting information, and then " "apply that tag to the region of text. For instance, to define the tag and its properties:" msgstr "" "För att ange att någon text i bufferten ska ha specifik formatering måste du ange en tagg för att hålla den formatinformationen, och sedan " "tillämpa den taggen på textområdet. För att exempelvis definiera taggen och dess egenskaper:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3752 #, no-wrap msgid "" "auto refTagMatch = Gtk::TextBuffer::Tag::create();\n" "refTagMatch->property_background() = \"orange\";" msgstr "" "auto refTagMatch = Gtk::TextBuffer::Tag::create();\n" "refTagMatch->property_background() = \"orange\";" #. (itstool) path: section/para #: C/index-in.docbook:3754 #, fuzzy msgid "" "You can specify a name for the Tag when using the create() method, but it is not necessary." msgstr "" "Du kan ange ett namn för denna Tag när du använder create()-metoden, men det är inte nödvändigt." #. (itstool) path: section/para #: C/index-in.docbook:3759 msgid "The Tag class has many other properties." msgstr "Klassen Tag har många andra egenskaper." #. (itstool) path: section/para #: C/index-in.docbook:3763 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3768 msgid "TagTable" msgstr "TagTable" #. (itstool) path: section/para #: C/index-in.docbook:3770 #, fuzzy msgid "" "Each Gtk::TextBuffer uses a Gtk::TextBuffer::TagTable, which contains the Tags for that buffer. 2 or more TextBuffers may share the same TagTable. When you create " "Tags you should add them to the TagTable. For instance:" msgstr "" "Varje Gtk::TextBuffer använder en Gtk::TextBuffer::TagTable, vilken innehåller den buffertens " "Taggar. 2 eller fler TextBuffer kan dela på samma TagTable. När du skapar " "Taggar bör du lägga till dem i denna TagTable. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3778 #, fuzzy, no-wrap msgid "" "auto refTagTable = Gtk::TextBuffer::TagTable::create();\n" "refTagTable->add(refTagMatch);\n" "//Hopefully a future version of gtkmm will have a set_tag_table() method,\n" "//for use after creation of the buffer.\n" "auto refBuffer = Gtk::TextBuffer::create(refTagTable);" msgstr "" "auto refTagTable = Gtk::TextBuffer::TagTable::create();\n" "refTagTable->add(refTagMatch);\n" "//Förhoppningsvis kommer en framtida version av gtkmm ha en set_tag_table()-metod,\n" "//för användning efter skapande av bufferten.\n" "auto refBuffer = Gtk::TextBuffer::create(refTagTable);" #. (itstool) path: section/para #: C/index-in.docbook:3784 #, fuzzy msgid "" "You can also use get_tag_table() to get, and maybe modify, the TextBuffer's default " "TagTable instead of creating one explicitly." msgstr "" "Du kan också använda get_tag_table() för att få, och kanske modifiera, TextBuffertens " "TagTable i stället för att skapa en explicit." #. (itstool) path: section/para #: C/index-in.docbook:3790 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3795 msgid "Applying Tags" msgstr "Tillämpa taggar" #. (itstool) path: section/para #: C/index-in.docbook:3797 #, fuzzy msgid "" "If you have created a Tag and added it to the TagTable, you may apply that tag to part of the " "TextBuffer so that some of the text is displayed with that formatting. You define the start and end of the range of text " "by specifying Gtk::TextBuffer::iterators. For instance:" msgstr "" "Om du har skapat en Tag och lagt till den till din TagTable kan du tillämpa den taggen på en del " "av din TextBuffer så att delar av texten visas med den formateringen. Du definierar start och slut på textintervallet " "genom att att ange Gtk::TextBuffer::iteratorer. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3804 #, fuzzy, no-wrap msgid "refBuffer->apply_tag(refTagMatch, iterRangeStart, iterRangeStop);" msgstr "refBuffer->apply_tag(refTagMatch, iterRangeStart, iterRangeStop);" #. (itstool) path: section/para #: C/index-in.docbook:3805 #, fuzzy msgid "Or you could specify the tag when first inserting the text:" msgstr "Eller så kan du ange texten när du först infogar texten:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3808 #, fuzzy, no-wrap msgid "refBuffer->insert_with_tag(iter, \"Some text\", refTagMatch);" msgstr "refBuffer->insert_with_tag(iter, \"Lite text\", refTagMatch);" #. (itstool) path: section/para #: C/index-in.docbook:3810 #, fuzzy msgid "" "You can apply more than one Tag to the same text, by using apply_tag() more than once, or by " "using insert_with_tags(). The Tags might specify different values for the same properties, but " "you can resolve these conflicts by using Tag::set_priority()." msgstr "" "Du kan tillämpa mer än en Tag på samma text, genom att använda apply_tag() mer än en gång, " "eller genom att använda insert_with_tags(). The Taggarna kan ange olika värden för samma " "egenskaper, men du kan lösa dessa konflikter genom att använda Tag::set_priority()." #. (itstool) path: section/title #: C/index-in.docbook:3822 #, fuzzy msgid "Marks" msgstr "Mark" #. (itstool) path: section/para #: C/index-in.docbook:3824 msgid "" "TextBuffer iterators are generally invalidated when the text changes, but you can use a Gtk::TextBuffer::" "Mark to remember a position in these situations. For instance," msgstr "" "TextBuffer-iteratorer görs vanligen ogiltiga när texten ändras, men du kan använda ett Gtk::TextBuffer::Mark för att komma ihåg en position i dessa fall. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:3829 #, no-wrap msgid "auto refMark = refBuffer->create_mark(iter);" msgstr "auto refMark = refBuffer->create_mark(iter);" #. (itstool) path: section/para #: C/index-in.docbook:3831 #, fuzzy msgid "" "You can then use the get_iter() method later to create an iterator for the Mark's new position." msgstr "" "Du kan sedan använda metoden get_iter() för att senare skapa en iterator för den nya positionen för detta " "Mark." #. (itstool) path: section/para #: C/index-in.docbook:3836 #, fuzzy msgid "" "There are two built-in Marks - insert and selection_bound, which you can access " "with TextBuffer's get_insert() and get_selection_bound() methods." msgstr "" "Det finns två inbyggda Mark - insert och selection_bound, vilka du kan komma åt " "med TextBuffertens metoder get_insert() och get_selection_bound()." #. (itstool) path: section/para #: C/index-in.docbook:3843 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:3850 msgid "" "As mentioned above, each TextView has a TextBuffer, and one or more TextViews can share the same TextBuffer." msgstr "" "Som nämns ovan har varje TextView en TextBuffer, och en eller flera TextView kan dela på samma TextBuffer." #. (itstool) path: section/para #: C/index-in.docbook:3857 #, fuzzy msgid "" "Like the TreeView, you should probably put your TextView inside a ScrolledWindow to allow the user to see and move around the whole text area with scrollbars." msgstr "" "Som med TreeView bör du troligen stoppa din TextView i ett ScrolledWindow " "för att låta användaren se och gå runt i hela textområdet med rullningslister." #. (itstool) path: section/para #: C/index-in.docbook:3864 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3867 msgid "Default formatting" msgstr "Standardformatering" #. (itstool) path: section/para #: C/index-in.docbook:3869 #, fuzzy msgid "" "TextView has various methods which allow you to change the presentation of the buffer for this particular view. Some of " "these may be overridden by the Gtk::TextTags in the buffer, if they specify the same things. For instance, " "set_left_margin(), set_right_margin(), set_indent(), etc." msgstr "" "TextView har olika metoder som låter dig ändra buffertens presentation för denna specifika vy. Vissa av dessa kan " "åsidosättas av de Gtk::TextTag som finns i bufferten, om de anger samma saker. Exempelvis set_left_margin(), set_right_margin(), set_indent() och så vidare." #. (itstool) path: section/title #: C/index-in.docbook:3880 msgid "Scrolling" msgstr "Rullning" #. (itstool) path: section/para #: C/index-in.docbook:3882 msgid "" "Gtk::TextView has various scroll_to() methods. These allow you to ensure that a particular part " "of the text buffer is visible. For instance, your application's Find feature might use Gtk::TextView::scroll_to() to " "show the found text." msgstr "" "Gtk::TextView har olika scroll_to()-metoder. Dessa låter dig säkerställa att en viss del av " "textbufferten är synlig. Exempelvis använder ditt programs sökfunktion kanske Gtk::TextView::scroll_to() för att visa " "den hittade texten." #. (itstool) path: section/title #: C/index-in.docbook:3897 #, fuzzy msgid "Widgets and ChildAnchors" msgstr "Komponenter och ChildAnchor" #. (itstool) path: section/para #: C/index-in.docbook:3899 #, fuzzy msgid "" "You can embed widgets, such as Gtk::Buttons, in the text. Each such child widget needs a ChildAnchor. ChildAnchors are associated with iterators. For instance, to create a child anchor at a particular position, " "use Gtk::TextBuffer::create_child_anchor():" msgstr "" "Du kan bädda in komponenter, som Gtk::Button, i texten. Varje sådan underordnad komponent behöver ett " "ChildAnchor. ChildAnchor är associerat med iteratorer. För att exempelvis skapa ett ankare för " "underordnade på en viss position använder du Gtk::TextBuffer::create_child_anchor():" #. (itstool) path: section/programlisting #: C/index-in.docbook:3906 #, no-wrap msgid "auto refAnchor = refBuffer->create_child_anchor(iter);" msgstr "auto refAnchor = refBuffer->create_child_anchor(iter);" #. (itstool) path: section/para #: C/index-in.docbook:3908 msgid "Then, to add a widget at that position, use Gtk::TextView::add_child_at_anchor():" msgstr "Använd sedan Gtk::TextView::add_child_at_anchor() för att lägga till en komponent på den positionen:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3912 #, no-wrap msgid "m_TextView.add_child_at_anchor(m_Button, refAnchor);" msgstr "m_TextView.add_child_at_anchor(m_Button, refAnchor);" #. (itstool) path: section/para #: C/index-in.docbook:3914 msgid "Reference" msgstr "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3927 #, fuzzy msgctxt "_" msgid "external ref='figures/textview.png' md5='451e30f66cc32c4231bb6bc442cf0d2f'" msgstr "external ref='figures/textview.png' md5='451e30f66cc32c4231bb6bc442cf0d2f'" #. (itstool) path: section/para #: C/index-in.docbook:3931 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:3938 msgid "Menus and Toolbars" msgstr "Menyer och verktygsfält" #. (itstool) path: chapter/para #: C/index-in.docbook:3940 msgid "" "There are specific APIs for menus and toolbars, but you should usually deal with them together, creating Gio::SimpleActions that you can refer to in both menus and toolbars. In this way you can handle activation of the action instead of responding to the " "menu and toolbar items separately. And you can enable or disable both the menu and toolbar item via the action. Gtk::Builder can create menus and toolbars." msgstr "" "Det finns specifika API:er för menyer och verktygsfält, men du bör vanligen hantera dem tillsammans genom att skapa Gio::" "SimpleAction-åtgärder som du kan hänvisa till både i menyer och verktygsfält. På detta sätt kan du hantera aktivering av åtgärden i " "stället för att svara på menyns och verktygsfältets objekt separat. Och du kan aktivera eller inaktivera både menyns och verktygsfältets objekt " "via åtgärden. Gtk::Builder kan skapa menyer och verktygsfält." #. (itstool) path: chapter/para #: C/index-in.docbook:3948 msgid "" "This involves the use of the Gio::SimpleActionGroup, Gio::SimpleAction and Gtk::" "Builder classes, all of which should be instantiated via their create() methods, which return " "RefPtrs." msgstr "" "Detta involverar användningen av klasserna Gio::SimpleActionGroup, Gio::SimpleAction och " "Gtk::Builder, vilka alla ska instansieras via sina create()-metoder, vilka returnerar " "RefPtr-pekare." #. (itstool) path: section/title #: C/index-in.docbook:3956 msgid "Actions" msgstr "Åtgärder" #. (itstool) path: section/para #: C/index-in.docbook:3958 msgid "" "First create the Gio::SimpleActions and add them to a Gio::SimpleActionGroup, with " "Gio::ActionMap::add_action(). (Gio::ActionMap is a base class of Gio::" "SimpleActionGroup.) Then add the action group to your window with Gtk::Widget::insert_action_group()." msgstr "" "Skapa först Gio::SimpleAction-åtgärder och lägg till dem till en Gio::SimpleActionGroup med " "Gio::ActionMap::add_action(). (Gio::ActionMap är en basklass för Gio::" "SimpleActionGroup.) Lägg sedan till åtgärdsgruppen till ditt fönster med Gtk::Widget::insert_action_group()." #. (itstool) path: section/para #: C/index-in.docbook:3966 msgid "" "The arguments to add_action() specify the action's name, which is used in the menu items and toolbar buttons. You can " "also specify a signal handler when calling add_action(). This signal handler will be called when the action is " "activated via either a menu item or a toolbar button." msgstr "" "Argumenten till add_action() anger åtgärdens namn, vilket används i menyobjekten och verktygsfältsknapparna. Du kan " "också ange en signalhanterare när du anropar add_action(). Denna signalhanterare kommer anropas när åtgärden aktiveras " "antingen via ett menyobjekt eller en verktygsfältsknapp." #. (itstool) path: section/para #: C/index-in.docbook:3974 C/index-in.docbook:4101 msgid "For instance:" msgstr "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3976 #, fuzzy, no-wrap msgid "" "\n" "m_refActionGroup = Gio::SimpleActionGroup::create();\n" "\n" "m_refActionGroup->add_action(\"new\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_new));\n" "m_refActionGroup->add_action(\"open\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_open));\n" "m_refActionGroup->add_action(\"quit\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit));\n" "\n" "insert_action_group(\"example\", m_refActionGroup);\n" msgstr "" "\n" "m_refActionGroup = Gio::SimpleActionGroup::create();\n" "\n" "m_refActionGroup->add_action(\"new\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_new));\n" "m_refActionGroup->add_action(\"open\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_open));\n" "m_refActionGroup->add_action(\"quit\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit));\n" "\n" "insert_action_group(\"example\", m_refActionGroup);\n" #. (itstool) path: section/para #: C/index-in.docbook:3986 msgid "" "If you use an Gtk::ApplicationWindow, you don't have to create your own action group. Gio::ActionGroup and Gio::ActionMap are base classes of Gtk::ApplicationWindow." msgstr "" "Om du använder ett Gtk::ApplicationWindow behöver du inte skapa din egen åtgärdsgrupp. Gio::ActionGroup och Gio::ActionMap är basklasser för Gtk::ApplicationWindow." #. (itstool) path: section/title #: C/index-in.docbook:3997 msgid "Menubar and Toolbar" msgstr "Menyrad och verktygsfält" #. (itstool) path: section/para #: C/index-in.docbook:3999 msgid "" "Next you should create a Gtk::Builder. At this point is also a good idea to tell the application to respond to keyboard " "shortcuts, by using Gtk::Application::set_accel_for_action()." msgstr "" "Härnäst ska du skapa en Gtk::Builder. Vid detta tillfälle är det också en bra idé att säga till programmet att svara på " "tangentbordsgenvägar genom att använda Gtk::Application::set_accel_for_action()." #. (itstool) path: section/para #: C/index-in.docbook:4005 C/index-in.docbook:5718 C/index-in.docbook:5783 C/index-in.docbook:11438 msgid "For instance," msgstr "Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:4007 #, fuzzy, no-wrap msgid "" "\n" "m_refBuilder = Gtk::Builder::create();\n" "\n" "app->set_accel_for_action(\"example.new\", \"<Primary>n\");\n" "app->set_accel_for_action(\"example.quit\", \"<Primary>q\");\n" "app->set_accel_for_action(\"example.copy\", \"<Primary>c\");\n" "app->set_accel_for_action(\"example.paste\", \"<Primary>v\");\n" msgstr "" "\n" "m_refBuilder = Gtk::Builder::create();\n" "\n" "app->set_accel_for_action(\"example.new\", \"<Primary>n\");\n" "app->set_accel_for_action(\"example.quit\", \"<Primary>q\");\n" "app->set_accel_for_action(\"example.copy\", \"<Primary>c\");\n" "app->set_accel_for_action(\"example.paste\", \"<Primary>v\");\n" #. (itstool) path: section/para #: C/index-in.docbook:4026 #, fuzzy msgid "" "Then, you can define the actual visible layout of the menus and toolbars, and add the UI layout to the Builder. This " "\"ui string\" uses an XML format, in which you should mention the names of the actions that you have already created. For instance:" msgstr "" "Sedan kan du definiera den faktiska synliga layouten för menyerna och verktygsfälten, och lägga till UI-layouten till vår Builder. Denna ”ui-sträng” använder ett XML-format, i vilket du ska nämna namnet på åtgärderna som du redan skapat. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4032 #, fuzzy, no-wrap msgid "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menubar'>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_File</attribute>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_New</attribute>\"\n" " \" <attribute name='action'>example.new</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Quit</attribute>\"\n" " \" <attribute name='action'>example.quit</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </submenu>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_Edit</attribute>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Copy</attribute>\"\n" " \" <attribute name='action'>example.copy</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Paste</attribute>\"\n" " \" <attribute name='action'>example.paste</attribute>\"\n" " \" </item>\"\n" " \" </submenu>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "m_refBuilder->add_from_resource(\"/toolbar/toolbar.glade\");\n" msgstr "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menubar'>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_File</attribute>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_New</attribute>\"\n" " \" <attribute name='action'>example.new</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Quit</attribute>\"\n" " \" <attribute name='action'>example.quit</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </submenu>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_Edit</attribute>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Copy</attribute>\"\n" " \" <attribute name='action'>example.copy</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Paste</attribute>\"\n" " \" <attribute name='action'>example.paste</attribute>\"\n" " \" </item>\"\n" " \" </submenu>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "m_refBuilder->add_from_resource(\"/toolbar/toolbar.glade\");\n" #. (itstool) path: section/para #: C/index-in.docbook:4069 msgid "" "This is where we specify the names of the menu items as they will be seen by users in the menu. Therefore, this is where you should make " "strings translatable, by adding translatable='yes'." msgstr "" "Här anger vi namnen för menyobjekten som de kommer ses av användare i menyn. Det är därför här som du ska göra strängar översättbara genom att " "lägga till translatable='yes'." #. (itstool) path: section/para #: C/index-in.docbook:4073 #, fuzzy msgid "" "To instantiate a Gtk::PopoverMenuBar and toolbar (a horizontal Gtk::Box) which you can actually " "show, you should use the Builder::get_object() and Builder::get_widget() methods, and then " "add the widgets to a container. For instance:" msgstr "" "För att instansiera en Gtk::PopoverMenuBar och verktygsfält (en horisontell Gtk::Box) som du " "faktiskt kan visa, bör du använda metoderna Builder::get_object() och Builder::get_widget(), " "och sedan lägga till komponenterna till en behållare. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4080 #, fuzzy, no-wrap msgid "" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menubar\");\n" "auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);\n" "m_Box.append(*pMenuBar);\n" "\n" "auto toolbar = m_refBuilder->get_widget<Gtk::Box>(\"toolbar\");\n" "m_Box.append(*toolbar);\n" msgstr "" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menubar\");\n" "auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);\n" "m_Box.append(*pMenuBar);\n" "\n" "auto toolbar = m_refBuilder->get_widget<Gtk::Box>(\"toolbar\");\n" "m_Box.append(*toolbar);\n" #. (itstool) path: section/title #: C/index-in.docbook:4093 msgid "Popup Menus" msgstr "Poppuppmenyer" #. (itstool) path: section/para #: C/index-in.docbook:4094 #, fuzzy msgid "" "Menus are normally just added to a window, but they can also be displayed temporarily as the result of a mouse button " "click. For instance, a context menu might be displayed when the user clicks their right mouse button." msgstr "" "Menu läggs vanligen bara till i ett fönster, men de kan också visas tillfälligt som resultatet av ett musklick. En " "snabbvalsmeny kan exempelvis visas när användaren klickar på höger musknapp." #. (itstool) path: section/programlisting #: C/index-in.docbook:4103 #, fuzzy, no-wrap msgid "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menu-examplepopup'>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Edit</attribute>\"\n" " \" <attribute name='action'>examplepopup.edit</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Process</attribute>\"\n" " \" <attribute name='action'>examplepopup.process</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Remove</attribute>\"\n" " \" <attribute name='action'>examplepopup.remove</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menu-examplepopup\");\n" "m_MenuPopup.set_menu_model(gmenu);\n" msgstr "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menu-examplepopup'>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Edit</attribute>\"\n" " \" <attribute name='action'>examplepopup.edit</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Process</attribute>\"\n" " \" <attribute name='action'>examplepopup.process</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Remove</attribute>\"\n" " \" <attribute name='action'>examplepopup.remove</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menu-examplepopup\");\n" "m_MenuPopup.set_menu_model(gmenu);\n" #. (itstool) path: section/para #: C/index-in.docbook:4130 msgid "" "To show the popup menu, use a Gtk::EventControllerClick and connect to its pressed signal. In the " "signal handler, use Gtk::PopoverMenu's popup() method. For instance:" msgstr "" "Använd för att visa poppuppmenyn en Gtk::EventControllerClick och anslut till dess pressed-signal. " "Använd i signalhanteraren Gtk::PopoverMenus popup()-metod. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4136 #, no-wrap msgid "" "\n" "void ExampleWindow::on_label_pressed(int /* n_press */, double x, double y)\n" "{\n" " const Gdk::Rectangle rect(x, y, 1, 1);\n" " m_MenuPopup.set_pointing_to(rect);\n" " m_MenuPopup.popup();\n" "}" msgstr "" "\n" "void ExampleWindow::on_label_pressed(int /* n_press */, double x, double y)\n" "{\n" " const Gdk::Rectangle rect(x, y, 1, 1);\n" " m_MenuPopup.set_pointing_to(rect);\n" " m_MenuPopup.popup();\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:4147 msgid "Gio::Resource and glib-compile-resources" msgstr "Gio::Resource och glib-compile-resources" #. (itstool) path: section/para #: C/index-in.docbook:4149 #, fuzzy msgid "" "Applications and libraries often contain binary or textual data that is really part of the application, rather than user data. For instance " "Gtk::Builder .glade files, splashscreen images, Gio::Menu markup xml, CSS files, icons, etc. These are often shipped as files in $datadir/appname, or " "manually included as literal strings in the code." msgstr "" "Program och bibliotek innehåller ofta binär- och textdata som egentligen hör till programmet snarare än användardata. Exempelvis " "Gtk::Builders .glade-filer, uppstartsbilder, Gio::Menus " "markup-xml, CSS-filer, ikoner o.s.v. Dessa levereras ofta som filer i $datadir/appname, eller " "inkluderas manuellt som uttryckliga strängar i koden." #. (itstool) path: section/para #: C/index-in.docbook:4157 #, fuzzy msgid "" "The Gio::Resource API and the glib-compile-resources program provide a convenient and " "efficient alternative to this, which has some nice properties. You maintain the files as normal files, so it's easy to edit them, but during " "the build the files are combined into a binary bundle that is linked into the executable. This means that loading the resource files is " "efficient (as they are already in memory, shared with other instances) and simple (no need to check for things like I/O errors or locate the " "files in the filesystem). It also makes it easier to create relocatable applications." msgstr "" "Gio::Resource-API:t och programmet glib-compile-resources tillhandahåller ett bekvämt och " "effektivt alternativ till detta, vilket har några trevliga egenskaper. Du underhåller filerna som vanliga filer, så det är lätt att redigera " "dem, men under bygget komponeras filerna till en binär bunt som länkas till den exekverbara filen. Det här betyder att inläsning av " "resursfilerna är effektiv (då de redan finns i minnet, delade med andra instanser) och enkelt (inget behov av att kontrollera saker som I/O-fel " "eller hitta filerna i filsystemet). Det gör det också lättare att skapa flyttbara program." #. (itstool) path: section/para #: C/index-in.docbook:4169 msgid "" "Resource bundles are created by the glib-compile-" "resources program which takes an xml file that describes the bundle, and a set of files that the xml references. These are combined into " "a binary resource bundle." msgstr "" "Resursbuntar skapas av programmet glib-compile-" "resources som tar en xml-fil som beskriver bunten, och en uppsättning filer som xml-filen refererar till. Dessa kombineras till en binär " "resursbunt." #. (itstool) path: section/para #: C/index-in.docbook:4174 msgid "Gio::Resource Reference" msgstr "Referens för Gio::Resource" #. (itstool) path: para/programlisting #: C/index-in.docbook:4177 #, fuzzy, no-wrap msgid "" "\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<gresources>\n" " <gresource prefix=\"/toolbar\">\n" " <file preprocess=\"xml-stripblanks\">toolbar.glade</file>\n" " <file>rain.png</file>\n" " </gresource>\n" "</gresources>\n" msgstr "" "\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<gresources>\n" " <gresource prefix=\"/toolbar\">\n" " <file preprocess=\"xml-stripblanks\">toolbar.glade</file>\n" " <file>rain.png</file>\n" " </gresource>\n" "</gresources>\n" #. (itstool) path: listitem/para #: C/index-in.docbook:4188 msgid "/toolbar/toolbar.glade" msgstr "/toolbar/toolbar.glade" #. (itstool) path: listitem/para #: C/index-in.docbook:4189 msgid "/toolbar/rain.png" msgstr "/toolbar/rain.png" #. (itstool) path: section/para #: C/index-in.docbook:4175 msgid "An example: <_:programlisting-1/> This will create a resource bundle with the files <_:itemizedlist-2/>" msgstr "Ett exempel: <_:programlisting-1/> Detta kommer skapa en resursbunt med filerna <_:itemizedlist-2/>" #. (itstool) path: para/screen #: C/index-in.docbook:4197 #, no-wrap msgid "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml" msgstr "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml" #. (itstool) path: section/para #: C/index-in.docbook:4192 #, fuzzy msgid "" "You can then use glib-compile-resources to compile the xml to a binary bundle that you can load with " "Gio::Resource::create_from_file(). However, it's more common to use the --generate-" "source argument to create a C source file to link directly into your application. E.g. <_:screen-1/>" msgstr "" "Du kan sedan använda glib-compile-resources för att kompilera xml-filen till en binär bunt som du kan läsa in med " "Gio::Resource::create_from_file(). Det är dock vanligare att använda argumentet --" "generate-source för att skapa en C-källfil för att länka direkt till ditt program. T.ex. <_:screen-1/>" #. (itstool) path: section/para #: C/index-in.docbook:4199 #, fuzzy msgid "" "Once a Gio::Resource has been created and registered all the data in it can be accessed globally in the process by using " "API calls like Gio::Resource::open_stream_from_global_resources() to stream the data or Gio::Resource::" "lookup_data_in_global_resources() to get a direct pointer to the data. You can also use URIs like resource:///toolbar/rain." "png with Gio::File to access the resource data." msgstr "" "När en Gio::Resource har skapats och registrerats kan alla data i den kommas åt globalt i processen genom att använda " "API-anrop som Gio::Resource::open_stream_from_global_resources() för att strömma data eller Gio::Resource::" "lookup_data_in_global_resources() för att få en direkt pekare till data. Du kan också använda URI:er som resource:///toolbar/" "rain.png med Gio::File för att komma åt resursdata." #. (itstool) path: section/para #: C/index-in.docbook:4207 msgid "" "Often you don't need a Gio::Resource instance, because resource data can be loaded with methods such as Gdk::" "Pixbuf::create_from_resource(), Gtk::Builder::add_from_resource() and Gtk::Image::" "set_from_resource()." msgstr "" "Ofta behöver du ingen Gio::Resource-instans eftersom resursdata kan läsas in med metoder som Gdk::Pixbuf::" "create_from_resource(), Gtk::Builder::add_from_resource() och Gtk::Image::" "set_from_resource()." #. (itstool) path: section/title #: C/index-in.docbook:4221 msgid "Application Menu and Main Menu example" msgstr "Exempel på programmeny och huvudmeny" #. (itstool) path: section/para #: C/index-in.docbook:4222 msgid "" "This program contains an application menu, a menubar and a toolbar. Classes are derived from Gtk::Application and " "Gtk::ApplicationWindow." msgstr "" "Detta program innehåller en programmeny, en menyrad och ett verktygsfält. Klasser härleds från Gtk::Application och " "Gtk::ApplicationWindow." #. (itstool) path: figure/title #: C/index-in.docbook:4229 msgid "App and Main Menu" msgstr "Program- och huvudmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4231 #, fuzzy msgctxt "_" msgid "external ref='figures/main_menu.png' md5='fc670c5887873c4c8ec1e5aa1e032680'" msgstr "external ref='figures/main_menu.png' md5='fc670c5887873c4c8ec1e5aa1e032680'" #. (itstool) path: section/para #: C/index-in.docbook:4235 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4240 msgid "Main Menu example" msgstr "Exempel på huvudmeny" #. (itstool) path: section/para #: C/index-in.docbook:4241 msgid "This program contains a menubar and a toolbar. A class is derived from Gtk::Window." msgstr "Detta program innehåller en menyrad och ett verktygsfält. En klass härleds från Gtk::Window." #. (itstool) path: figure/title #: C/index-in.docbook:4247 msgid "Main Menu" msgstr "Huvudmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4249 #, fuzzy msgctxt "_" msgid "external ref='figures/menus_and_toolbars.png' md5='cbe894e7603b7c3de488d4c9ff503442'" msgstr "external ref='figures/menus_and_toolbars.png' md5='cbe894e7603b7c3de488d4c9ff503442'" #. (itstool) path: section/para #: C/index-in.docbook:4253 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4258 msgid "Popup Menu example" msgstr "Exempel på poppuppmeny" #. (itstool) path: figure/title #: C/index-in.docbook:4261 msgid "Popup Menu" msgstr "Poppuppmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4263 #, fuzzy msgctxt "_" msgid "external ref='figures/menu_popup.png' md5='bd168ad48b89f488d29e13db9b765168'" msgstr "external ref='figures/menu_popup.png' md5='bd168ad48b89f488d29e13db9b765168'" #. (itstool) path: section/para #: C/index-in.docbook:4267 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:4274 #, fuzzy msgid "Adjustments" msgstr "Justeringar" #. (itstool) path: chapter/para #: C/index-in.docbook:4276 #, fuzzy msgid "" "gtkmm has various widgets that can be visually adjusted using the mouse or the keyboard, such as the " "Range widgets (described in the Range Widgets section). There are also a " "few widgets that display some adjustable part of a larger area, such as the Viewport widget. These widgets have " "Gtk::Adjustment objects that express this common part of their API." msgstr "" "gtkmm har olika komponenter som kan visuellt justeras med musen eller tangentbordet, som Range-komponenterna (beskrivna i avsnittet Range-komponenter). Det finns också några " "komponenter som visar en justerbar del av ett större område, som Viewport-komponenten. Dessa komponenter har " "Gtk::Adjustment-objekt som uttrycker denna gemensamma del av deras API." #. (itstool) path: chapter/para #: C/index-in.docbook:4286 msgid "" "So that applications can react to changes, for instance when a user moves a scrollbar, Gtk::Adjustment has a " "value_changed signal. You can then use the get_value() method to discover the new value." msgstr "" "Gtk::Adjustment har en value_changed-signal så att program kan reagera på ändringar, exempelvis då en " "användare flyttar en rullningslist. Du kan sedan använda metoden get_value() för att få reda på det nya värdet." #. (itstool) path: section/title #: C/index-in.docbook:4294 #, fuzzy msgid "Creating an Adjustment" msgstr "Skapa en Adjustment" #. (itstool) path: section/para #: C/index-in.docbook:4296 #, fuzzy msgid "The Gtk::Adjustment is created by its create() method which is as follows:" msgstr "Denna Gtk::Adjustment skapas av sin create()-metod som är som följer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4301 #, no-wrap msgid "" "Glib::RefPtr<Gtk::Adjustment> Gtk::Adjustment::create(\n" " double value,\n" " double lower,\n" " double upper,\n" " double step_increment = 1,\n" " double page_increment = 10,\n" " double page_size = 0);" msgstr "" "Glib::RefPtr<Gtk::Adjustment> Gtk::Adjustment::create(\n" " double value,\n" " double lower,\n" " double upper,\n" " double step_increment = 1,\n" " double page_increment = 10,\n" " double page_size = 0);" #. (itstool) path: section/para #: C/index-in.docbook:4309 #, fuzzy msgid "" "The value argument is the initial value of the adjustment, usually corresponding to the topmost or leftmost position of " "an adjustable widget. The lower and upper arguments specify the possible range of values which " "the adjustment can hold. The step_increment argument specifies the smaller of the two increments by which the user can " "change the value, while the page_increment is the larger one. The page_size argument usually " "corresponds somehow to the visible area of a panning widget. The upper argument is used to represent the bottommost or " "rightmost coordinate in a panning widget's child." msgstr "" "Argumentet value är justeringens ursprungliga värde, vanligen motsvarande positionen överst eller längst till vänster " "för en justerbar komponent. Argumenten lower och upper anger det möjliga värdeintervallet som " "justeringen kan hålla. Argumentet step_increment anger den mindre av de två ökningar som användaren kan ändra värdet " "med, medan page_increment är den större. Argumentet page_size motsvarar vanligen på något vis det " "synliga området för en panoreringskomponent. Argumentet upper används för att representera koordinaten längst ner eller " "till höger i en panoreringskomponents underordnade." #. (itstool) path: section/title #: C/index-in.docbook:4328 #, fuzzy msgid "Using Adjustments the Easy Way" msgstr "Det enkla sättet att använda justeringar" #. (itstool) path: section/para #: C/index-in.docbook:4330 #, fuzzy msgid "" "The adjustable widgets can be roughly divided into those which use and require specific units for these values, and those which treat them as " "arbitrary numbers." msgstr "" "De justerbara komponenterna kan i stort delas upp i de som använder och kräver specifika enheter för dessa värden, och de som behandlar dem som " "godtyckliga tal." #. (itstool) path: section/para #: C/index-in.docbook:4335 #, fuzzy msgid "" "The group which treats the values as arbitrary numbers includes the Range widgets (Scrollbar and " "Scale), the ScaleButton widget, and the SpinButton widget. These widgets " "are typically \"adjusted\" directly by the user with the mouse or keyboard. They will treat the lower and " "upper values of an adjustment as a range within which the user can manipulate the adjustment's value. By default, they will only modify the value of an adjustment." msgstr "" "Gruppen som behandlar värdena som godtyckliga tal inkluderar Range-komponenterna (Scrollbar och " "Scale), ScaleButton-komponenten och SpinButton-komponenten. Dessa " "komponenter ”justeras” typiskt av användaren med musen eller tangentbordet. De kommer behandla lower- och " "upper-värdena för en justering som ett intervall som användaren kan manipulera justeringens value " "inom. Som standard kommer de endast ändra value för en justering." #. (itstool) path: section/para #: C/index-in.docbook:4347 #, fuzzy msgid "" "The other group includes the Viewport widget and the ScrolledWindow widget. All of these widgets " "use pixel values for their adjustments. These are also typically adjusted indirectly using scrollbars. While all widgets which use adjustments " "can either create their own adjustments or use ones you supply, you'll generally want to let this particular category of widgets create its own " "adjustments." msgstr "" "Den andra gruppen inkluderar Viewport-komponenten och ScrolledWindow-komponenten. Alla dessa " "komponenter använder bildpunktsvärden för sina justeringar. Dessa justeras också typiskt indirekt med rullningslister. Medan alla komponenter " "som använder justeringar antingen kan skapa sina egna justeringar eller använda sådana som du tillhandahåller, så kommer du allmänt vilja låta " "denna specifika kategori komponenter skapa sina egna justeringar." #. (itstool) path: section/para #: C/index-in.docbook:4356 #, fuzzy msgid "" "If you share an adjustment object between a Scrollbar and a TextView widget, manipulating the scrollbar will automagically adjust the TextView " "widget. You can set it up like this:" msgstr "" "Om du delar ett justeringsobjekt mellan en Scrollbar- och en TextView-komponent, kommer att manipulera rullningslisten automagiskt justera " "TextView-komponenten. Du kan konfigurera det så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4361 #, fuzzy, no-wrap msgid "" "// creates its own adjustments\n" "Gtk::TextView textview;\n" "// uses the newly-created adjustment for the scrollbar as well\n" "Gtk::Scrollbar vscrollbar(textview.get_vadjustment(), Gtk::Orientation::VERTICAL);" msgstr "" "// skapar sina egna justeringar\n" "Gtk::TextView textview;\n" "// använder den nyss skapade justeringen även för rullningslisten\n" "Gtk::Scrollbar vscrollbar(textview.get_vadjustment(), Gtk::Orientation::VERTICAL);" #. (itstool) path: section/title #: C/index-in.docbook:4369 #, fuzzy msgid "Adjustment Internals" msgstr "Inre delarna av Adjustment" #. (itstool) path: section/para #: C/index-in.docbook:4371 msgid "" "OK, you say, that's nice, but what if I want to create my own handlers to respond when the user adjusts a Range widget " "or a SpinButton. To access the value of a Gtk::Adjustment, you can use the " "get_value() and set_value() methods:" msgstr "" "OK, då säger du att det var väl fint, men om jag vill skapa mina egna hanterare för att svara när användaren justerar en Range-komponent eller en SpinButton då? För att komma åt värdet på en Gtk::Adjustment kan du " "använda metoderna get_value() och set_value():" #. (itstool) path: section/para #: C/index-in.docbook:4379 #, fuzzy msgid "" "As mentioned earlier, Gtk::Adjustment can emit signals. This is, of course, how updates happen automatically when you " "share an Adjustment object between a Scrollbar and another adjustable widget; all adjustable " "widgets connect signal handlers to their adjustment's value_changed signal, as can your program." msgstr "" "Som nämnts tidigare kan Gtk::Adjustment sända ut signaler. Detta är förstås hur uppdateringar sker automatiskt när du " "delar ett Adjustment-objekt mellan en Scrollbar och en annan justerbar komponent; alla justerbara " "komponenter ansluter signalhanterare till sin justerings value_changed-signal, och det kan även ditt program." #. (itstool) path: section/para #: C/index-in.docbook:4388 #, fuzzy msgid "" "So, for example, if you have a Scale widget, and you want to change the rotation of a picture whenever its value " "changes, you would create a signal handler like this:" msgstr "" "Så om du exempelvis har en Scale-komponent och vill ändra rotationen för en bild närhelst dess värde ändras så skulle du " "skapa en signalhanterare så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4393 #, fuzzy, no-wrap msgid "" "void cb_rotate_picture(MyPicture* picture)\n" "{\n" " picture->set_rotation(adj->get_value());\n" "..." msgstr "" "void cb_rotate_picture(MyPicture* picture)\n" "{\n" " picture->set_rotation(adj->get_value());\n" "..." #. (itstool) path: section/para #: C/index-in.docbook:4397 #, fuzzy msgid "and connect it to the scale widget's adjustment like this:" msgstr "och ansluta den till skalkomponentens justering så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4400 #, fuzzy, no-wrap msgid "" "adj->signal_value_changed().connect(sigc::bind<MyPicture*>(sigc::mem_fun(*this,\n" " &cb_rotate_picture), picture));" msgstr "" "adj->signal_value_changed().connect(sigc::bind<MyPicture*>(sigc::mem_fun(*this,\n" " &cb_rotate_picture), picture));" #. (itstool) path: section/para #: C/index-in.docbook:4403 #, fuzzy msgid "" "What if a widget reconfigures the upper or lower fields of its Adjustment, " "such as when a user adds more text to a text widget? In this case, it emits the changed signal." msgstr "" "Men om en komponent konfigurerar om fälten upper eller lower för sin Adjustment, som när en användare lägger till mer text till en textkomponent? I detta fall sänder den ut signalen changed." #. (itstool) path: section/para #: C/index-in.docbook:4410 #, fuzzy msgid "" "Range widgets typically connect a handler to this signal, which changes their appearance to reflect the change - for " "example, the size of the slider in a scrollbar will grow or shrink in inverse proportion to the difference between the lower and upper values of its Adjustment." msgstr "" "Range-komponenter ansluter typiskt en hanterare till denna signal, vilket ändrar deras utseende för att reflektera " "ändringen - exempelvis kommer storleken på skjutreglaget i en rullningslist växa eller krympa i invers proportion till skillnaden mellan " "lower- och upper-värdena för dess Adjustment." #. (itstool) path: section/para #: C/index-in.docbook:4419 #, fuzzy msgid "You probably won't ever need to attach a handler to this signal, unless you're writing a new type of range widget." msgstr "Du kommer troligen aldrig behöva fästa en hanterare till denna signal, om du inte skriver en ny typ av intervallkomponent." #. (itstool) path: section/programlisting #: C/index-in.docbook:4423 #, fuzzy, no-wrap msgid "adjustment->signal_changed();" msgstr "adjustment->signal_changed();" #. (itstool) path: chapter/title #: C/index-in.docbook:4430 msgid "Dialogs" msgstr "Dialogrutor" #. (itstool) path: note/para #: C/index-in.docbook:4432 msgid "" "Gtk::Dialog and the classes derived from it, are deprecated since gtkmm 4.10. They can still " "be used in gtkmm4 applications, provided GTKMM_DISABLE_DEPRECATED and GDKMM_DISABLE_DEPRECATED are not defined. Some " "of the dialog classes are replaced by classes that are available since gtkmm 4.10." msgstr "" "Gtk::Dialog och klasserna som härleds från den är föråldrade sedan gtkmm 4.10. De kan " "fortfarande användas i gtkmm4-program, förutsatt att GTKMM_DISABLE_DEPRECATED och GDKMM_DISABLE_DEPRECATED inte har " "definierats. Några av dialogklasserna ersätts av klasser som finns tillgängliga sedan gtkmm 4.10." #. (itstool) path: note/para #: C/index-in.docbook:4437 msgid "" "The examples in this chapter use classes that are available since gtkmm 4.10. Similar examples with the deprecated " "classes are available in the " "gtkmm-4-0 branch in the git repository." msgstr "" "Exemplen i detta kapitel använder klasser som finns tillgängliga sedan gtkmm 4.10. Liknande exempel med de " "föråldrade klasserna finns tillgängliga i grenen gtkmm-4-0 i git-arkivet." #. (itstool) path: chapter/para #: C/index-in.docbook:4443 #, fuzzy msgid "" "Dialogs are used as secondary windows, to provide specific information or to ask questions. Gtk::Dialog windows contain " "a few pre-packed widgets to ensure consistency, and a response signal which is emitted when the user dismisses the dialog." msgstr "" "Dialogrutor används som sekundära fönster för att tillhandahålla specifik information eller ställa frågor. Gtk::Dialog-" "fönster innehåller några i förväg packade komponenter för att säkerställa konsekvens, och en response-signal som sänds ut " "när användaren klickar bort dialogrutan." #. (itstool) path: chapter/para #: C/index-in.docbook:4450 msgid "" "There are several derived Dialog classes which you might find useful. Gtk::MessageDialog is used " "for most simple notifications. But at other times you might need to derive your own dialog class to provide more complex functionality." msgstr "" "Det finns flera härledda Dialog-klasser som du kan finna användbara. Gtk::MessageDialog används " "för de enklaste aviseringarna. Men andra gånger kan du behöva härleda din egen dialogklass för att tillhandahålla mer komplex funktionalitet." #. (itstool) path: chapter/para #: C/index-in.docbook:4457 #, fuzzy msgid "" "To pack widgets into a custom dialog, you should pack them into the Gtk::Box, available via " "get_content_area(). To just add a Button to the bottom of the Dialog, " "you could use the add_button() method." msgstr "" "För att packa komponenter i en anpassad dialogruta bör du packa dem i Gtk::Boxen, tillgänglig via " "get_content_area(). För att bara lägga till en Button längst ner i Dialogen kan du använda metoden add_button()." #. (itstool) path: chapter/para #: C/index-in.docbook:4465 #, fuzzy msgid "" "The response signal handler receives an int. This may be a value from the Gtk::ResponseType " "if the user closed the dialog by clicking a standard button, or it could be the custom response value that you specified when using " "add_button()." msgstr "" "response-signalhanteraren tar emot en int. Detta kan vara ett värde från Gtk::ResponseType " "om användaren stängt dialogrutan genom att klicka på en standardknapp, eller så kunde det vara det anpassade svarsvärdet som du angivit när du " "använt add_button()." #. (itstool) path: chapter/para #: C/index-in.docbook:4472 msgid "" "To show the dialog, call set_visible(true). If the same dialog instance will be shown several times, you must also " "call set_hide_on_close(), or else the dialog will be destroyed when it's closed. Connect to the response signal, if you want to know which button was pressed. The response signal handler is also where you should hide the " "dialog." msgstr "" "För att visa dialogrutan, anropa set_visible(true). Om samma dialoginstans kommer visas flera gånger måste du också " "anropa set_hide_on_close(), annars kommer dialogrutan förstöras då den stängs. Anslut till response-" "signalen om du vill veta vilken knapp som trycktes på. response-signalhanteraren är också var du ska dölja dialogrutan." #. (itstool) path: chapter/para #: C/index-in.docbook:4481 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:4484 msgid "AlertDialog and MessageDialog" msgstr "AlertDialog och MessageDialog" #. (itstool) path: section/para #: C/index-in.docbook:4485 msgid "" "MessageDialog (deprecated since gtkmm 4.10) and AlertDialog (available " "since gtkmm 4.10) are convenience classes, used to create simple, standard message dialogs, with a message and " "buttons for user response." msgstr "" "MessageDialog (föråldrad sedan gtkmm 4.10) och AlertDialog " "(tillgänglig sedan gtkmm 4.10) är bekvämlighetsklasser som används för att skapa enkla standardmeddelandedialoger, " "med ett meddelande och knappar för användarsvar." #. (itstool) path: section/para #: C/index-in.docbook:4492 msgid "AlertDialog Reference" msgstr "AlertDialog-referens" #. (itstool) path: section/para #: C/index-in.docbook:4493 msgid "MessageDialog Reference" msgstr "MessageDialog-referens" #. (itstool) path: figure/title #: C/index-in.docbook:4499 msgid "AlertDialog" msgstr "AlertDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4501 #, fuzzy msgctxt "_" msgid "external ref='figures/dialogs_alertdialog.png' md5='88fa2103ad6d842eeebc68cc8cfd94ef'" msgstr "external ref='figures/dialogs_alertdialog.png' md5='88fa2103ad6d842eeebc68cc8cfd94ef'" #. (itstool) path: section/para #: C/index-in.docbook:4505 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4510 msgid "FileDialog and FileChooserDialog" msgstr "FileDialog och FileChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:4511 msgid "" "The FileChooserDialog (deprecated since gtkmm 4.10) and FileDialog " "(available since gtkmm 4.10) are suitable for use with \"Open\" or \"Save\" menu items." msgstr "" "FileChooserDialog (föråldrad sedan gtkmm 4.10) och FileDialog " "(tillgänglig sedan gtkmm 4.10) är lämpliga för användning med menyobjekten ”Öppna” eller ”Spara”." #. (itstool) path: section/para #: C/index-in.docbook:4516 msgid "" "Most of the useful member methods for FileChooserDialog are actually in the Gtk::FileChooser base " "class." msgstr "" "De flesta av de användbara medlemsmetoderna för FileChooserDialog finns faktiskt i basklassen Gtk::" "FileChooser." #. (itstool) path: section/para #: C/index-in.docbook:4521 msgid "FileDialog Reference" msgstr "Referens för FileDialog" #. (itstool) path: section/para #: C/index-in.docbook:4522 msgid "FileChooserDialog Reference" msgstr "Referens för FileChooserDialog" #. (itstool) path: figure/title #: C/index-in.docbook:4528 msgid "FileDialog" msgstr "FileDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4530 #, fuzzy msgctxt "_" msgid "external ref='figures/dialogs_filedialog.png' md5='15ecc452482112428259d0dcd8d0394a'" msgstr "external ref='figures/dialogs_filedialog.png' md5='15ecc452482112428259d0dcd8d0394a'" #. (itstool) path: section/para #: C/index-in.docbook:4534 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4539 msgid "ColorDialog and ColorChooserDialog" msgstr "ColorDialog och ColorChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:4540 msgid "" "The ColorChooserDialog (deprecated since gtkmm 4.10) and ColorDialog " "(available since gtkmm 4.10) allow the user to choose a color. The ColorButton (deprecated " "since gtkmm 4.10) and ColorDialogButton (available since gtkmm " "4.10) open a color selection dialog when it is clicked." msgstr "" "ColorChooserDialog (föråldrad sedan gtkmm 4.10) och ColorDialog " "(tillgänglig sedan gtkmm 4.10) låter användaren välja en färg. ColorButton (föråldrad sedan " "gtkmm 4.10) och ColorDialogButton (tillgänglig sedan gtkmm 4.10) " "öppnar en färgvalsdialog när de klickas på." #. (itstool) path: section/para #: C/index-in.docbook:4548 msgid "ColorDialog Reference" msgstr "Referens för ColorDialog" #. (itstool) path: section/para #: C/index-in.docbook:4549 msgid "ColorChooserDialog Reference" msgstr "" "Referens för ColorChooserDialog" #. (itstool) path: figure/title #: C/index-in.docbook:4555 msgid "ColorDialog" msgstr "ColorDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4557 #, fuzzy msgctxt "_" msgid "external ref='figures/dialogs_colordialog.png' md5='029761e82cf06d3cbeaac2b7ccd70e57'" msgstr "external ref='figures/dialogs_colordialog.png' md5='029761e82cf06d3cbeaac2b7ccd70e57'" #. (itstool) path: section/para #: C/index-in.docbook:4561 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4566 msgid "FontDialog and FontChooserDialog" msgstr "FontDialog och FontChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:4567 msgid "" "The FontChooserDialog (deprecated since gtkmm 4.10) and FontDialog " "(available since gtkmm 4.10) allow the user to choose a font. The FontButton (deprecated " "since gtkmm 4.10) and FontDialogButton (available since gtkmm " "4.10) open a font chooser dialog when it is clicked." msgstr "" "FontChooserDialog (föråldrad sedan gtkmm 4.10) och FontDialog " "(tillgänglig sedan gtkmm 4.10) låter användaren välja ett typsnitt. FontButton (föråldrad " "sedan gtkmm 4.10) och FontDialogButton (tillgänglig sedan gtkmm " "4.10) öppnar en typsnittvalsdialog när de klickas på." #. (itstool) path: section/para #: C/index-in.docbook:4575 msgid "FontDialog Reference" msgstr "Referens för FontDialog" #. (itstool) path: section/para #: C/index-in.docbook:4576 msgid "FontChooserDialog Reference" msgstr "Referens för FontChooserDialog" #. (itstool) path: figure/title #: C/index-in.docbook:4582 msgid "FontDialog" msgstr "FontDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4584 #, fuzzy msgctxt "_" msgid "external ref='figures/dialogs_fontdialog.png' md5='e35e05429468fa8823416b8a0deff342'" msgstr "external ref='figures/dialogs_fontdialog.png' md5='e35e05429468fa8823416b8a0deff342'" #. (itstool) path: section/para #: C/index-in.docbook:4588 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4593 #, fuzzy msgid "Non-modal AboutDialog" msgstr "Ej modal AboutDialog" #. (itstool) path: section/para #: C/index-in.docbook:4594 msgid "" "The AboutDialog offers a simple way to display information about a program, like its logo, name, copyright, website and " "license." msgstr "" "AboutDialog erbjuder ett lätt sätt att visa information om ett program, som dess logotyp, namn, upphovsrätt, webbplats " "och licens." #. (itstool) path: section/para #: C/index-in.docbook:4598 #, fuzzy msgid "" "Most dialogs in this chapter are modal, that is, they freeze the rest of the application while they are shown. It's also possible to create a " "non-modal dialog, which does not freeze other windows in the application. The following example shows a non-modal AboutDialog. This is perhaps not the kind of dialog you would normally make non-modal, but non-modal dialogs can be useful in other cases. E.g. " "gedit's search-and-replace dialog is non-modal." msgstr "" "De flesta dialogrutorna i detta kapitel är modala, det vill säga att de fryser resten av programmet medan de visas. Det är också möjligt att " "skapa en icke-modal dialogruta som inte fryser andra fönster i programmet. Följande exempel visar en AboutDialog som " "inte är modal. Detta är kanske inte dialogsorten som du skulle göra icke-modal, men icke-modala dialogrutor kan vara användbara i andra fall. " "Exempelvis är gedits sök-och-ersättdialog icke-modal." #. (itstool) path: section/para #: C/index-in.docbook:4608 msgid "Reference" msgstr "Referens" #. (itstool) path: figure/title #: C/index-in.docbook:4614 msgid "AboutDialog" msgstr "AboutDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4616 #, fuzzy msgctxt "_" msgid "external ref='figures/dialogs_about.png' md5='1b70a95ad73fce53bb5a2fbd3df69c5c'" msgstr "external ref='figures/dialogs_about.png' md5='1b70a95ad73fce53bb5a2fbd3df69c5c'" #. (itstool) path: section/para #: C/index-in.docbook:4620 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4625 #, fuzzy msgid "Custom Dialog" msgstr "Anpassad dialogruta" #. (itstool) path: section/para #: C/index-in.docbook:4626 #, fuzzy msgid "" "When none of the predefined dialog classes suit your needs, you can make your own dialog by deriving a class from Window " "and fill it with the widgets you need." msgstr "" "Om ingen av de fördefinierade dialogklasserna passar för dina behov kan du skapa din egen dialogruta genom att härleda en klass från " "Window och fylla den med komponenterna som du behöver." #. (itstool) path: section/para #: C/index-in.docbook:4632 msgid "Window Reference" msgstr "Referens för Window" #. (itstool) path: figure/title #: C/index-in.docbook:4638 #, fuzzy msgid "Window Dialog" msgstr "Fönsterdialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4640 #, fuzzy msgctxt "_" msgid "external ref='figures/dialogs_windowdialog.png' md5='53deb18153f6903fe45d015fc06ccef3'" msgstr "external ref='figures/dialogs_windowdialog.png' md5='53deb18153f6903fe45d015fc06ccef3'" #. (itstool) path: section/para #: C/index-in.docbook:4644 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:4651 msgid "The DrawingArea Widget" msgstr "DrawingArea-komponenten" #. (itstool) path: chapter/para #: C/index-in.docbook:4652 #, fuzzy msgid "" "The DrawingArea widget is a blank window that gives you the freedom to create any graphic you desire. Along with that " "freedom comes the responsibility to draw on the widget. When a widget is first shown, or when it is covered and then uncovered again it needs " "to redraw itself. Most widgets have code to do this, but the DrawingArea does not, allowing you to write your own draw " "function to determine how the contents of the widget will be drawn. This is done by setting a draw function with a call to the " "set_draw_func() member function." msgstr "" "DrawingArea-komponenten är ett blankt fönster som ger dig friheten att skapa vilken grafik du vill. Tillsammans med den " "friheten kommer ansvaret för att rita på komponenten. När en komponent först visas, eller när den täcks och sedan tas fram igen behöver den " "rita om sig själv. De flesta komponenter har kod för att göra detta, men DrawingArea har inte det, vilket låter skriva " "din egen ritfunktion för att bestämma hur innehållet i komponenten ska ritas. Detta görs genom att ställa in en ritfunktion med ett anrop till " "medlemsfunktionen set_draw_func()." #. (itstool) path: chapter/para #: C/index-in.docbook:4664 msgid "" "GTK uses the Cairo drawing API. With gtkmm, you may use the " "cairomm C++ API for cairo." msgstr "" "GTK använder Cairos rit-API. Med gtkmm kan du använda C++-API:t " "cairomm för cairo." #. (itstool) path: chapter/para #: C/index-in.docbook:4669 #, fuzzy msgid "" "You can draw very sophisticated shapes using Cairo, but the methods to do so are quite basic. Cairo provides methods for drawing straight " "lines, curved lines, and arcs (including circles). These basic shapes can be combined to create more complex shapes and paths which can be " "filled with solid colors, gradients, patterns, and other things. In addition, Cairo can perform complex transformations, do compositing of " "images, and render antialiased text." msgstr "" "Du kan rita väldigt sofistikerade former med Cairo, men metoderna för att göra det är ganska rudimentära. Cairo tillhandahåller metoder för att " "rita raka linjer, krökta linjer och bågar (inkluderande cirklar). Dessa grundläggande former kan kombineras för att skapa mer komplexa former " "och banor som kan fyllas enfärgat eller med gradienter och många andra saker. Dessutom kan Cairo utföra komplexa transformationer och " "sammansättning av bilder, samt rendera kantutjämnad text." #. (itstool) path: note/title #: C/index-in.docbook:4679 msgid "Cairo and Pango" msgstr "Cairo och Pango" #. (itstool) path: note/para #: C/index-in.docbook:4680 msgid "" "Although Cairo can render text, it's not meant to be a replacement for Pango. Pango is a better choice if you need to perform more advanced " "text rendering such as wrapping or ellipsizing text. Drawing text with Cairo should only be done if the text is part of a graphic." msgstr "" "Även om Cairo kan rendera text så är det inte tänkt som en ersättning för Pango. Pango är ett bättre val om du behöver utföra mer avancerad " "textrendering som att radbryta eller elliptisera text. Att rita text med Cairo bör bara göras om texten är del av en grafik." #. (itstool) path: chapter/para #: C/index-in.docbook:4685 #, fuzzy msgid "" "In this section of the tutorial, we'll cover the basic Cairo drawing model, describe each of the basic drawing elements in some detail (with " "examples), and then present a simple application that uses Cairo to draw a custom clock widget." msgstr "" "I detta avsnitt av handledningen kommer vi täcka den grundläggande Cairo-ritmodellen, beskriva vart och ett av de grundläggande ritelementet " "någorlunda detaljerat (med exempel), och sedan presentera ett enkelt program som använder Cairo för att rita en anpassad klockkomponent." #. (itstool) path: section/title #: C/index-in.docbook:4693 msgid "The Cairo Drawing Model" msgstr "Cairo-ritmodellen" #. (itstool) path: section/para #: C/index-in.docbook:4694 #, fuzzy msgid "The basic concept of drawing in Cairo involves defining 'invisible' paths and then stroking or filling them to make them visible." msgstr "" "Det grundläggande konceptet för att rita i Cairo involverar att definiera ”osynliga” banor och sedan strecka eller fylla dem för att göra dem " "synliga." #. (itstool) path: section/para #: C/index-in.docbook:4698 #, fuzzy msgid "" "To do any drawing in gtkmm with Cairo, you must first get a Cairo::Context object. This class " "holds all of the graphics state parameters that describe how drawing is to be done. This includes information such as line width, color, the " "surface to draw to, and many other things. This allows the actual drawing functions to take fewer arguments to simplify the interface. Usually, " "you use the Cairo::Context that you get as input data to the draw function that you set with the call to " "set_draw_func(). It's also possible to create a Cairo::Context by calling the Gdk::" "Surface::create_cairo_context() and Gdk::CairoContext::cairo_create() functions. Since Cairo contexts are " "reference-counted objects, cairo_create() returns a Cairo::RefPtr<Cairo::Context> object. " "(Note the difference between Gdk::CairoContext and Cairo::Context.)" msgstr "" "För att rita i gtkmm med Cairo måste du först få ett Cairo::Context-objekt. Denna klass " "innehåller alla grafiktillståndsparametrar som beskriver hur utritning görs. Detta inkluderar information som linjebredd, färg, ytan att rita " "till och mycket annat. Detta låter de faktiska ritfunktionerna att ta färre argument för att förenkla gränssnittet. Vanligen använder du den " "Cairo::Context som du får som indata till ritfunktionen som du ställer in med anropen till set_draw_func(). Det är också möjligt att skapa en Cairo::Context genom att anropa funktionerna Gdk::Surface::" "create_cairo_context() och Gdk::CairoContext::cairo_create(). Eftersom Cairo-kontexter är referensräknade " "objekt returnerar cairo_create() ett Cairo::RefPtr<Cairo::Context>-objekt. (Observera " "skillnaden mellan Gdk::CairoContext och Cairo::Context.)" #. (itstool) path: section/para #: C/index-in.docbook:4715 msgid "" "The following example shows how to set up a Cairo context with a foreground color of red and a width of 2. Any drawing functions that use this " "context will use these settings." msgstr "" "Följande exempel visar hur du konfigurerar en Cairo-kontext med förgrundsfärgen röd och bredden 2. Alla ritfunktioner som använder denna " "kontext kommer använda dessa inställningar." #. (itstool) path: section/programlisting #: C/index-in.docbook:4720 #, no-wrap msgid "" "\n" "Gtk::DrawingArea myArea;\n" "auto gdkCairoContext = myArea.get_surface()->create_cairo_context();\n" "auto myContext = gdkCairoContext->cairo_create();\n" "myContext->set_source_rgb(1.0, 0.0, 0.0);\n" "myContext->set_line_width(2.0);\n" " " msgstr "" "\n" "Gtk::DrawingArea myArea;\n" "auto gdkCairoContext = myArea.get_surface()->create_cairo_context();\n" "auto myContext = gdkCairoContext->cairo_create();\n" "myContext->set_source_rgb(1.0, 0.0, 0.0);\n" "myContext->set_line_width(2.0);\n" " " #. (itstool) path: section/para #: C/index-in.docbook:4727 #, fuzzy msgid "" "Each Cairo::Context is associated with a particular Gdk::Surface, so the first line of the above " "example creates a Gtk::DrawingArea widget and the next two lines use its associated Gdk::Surface " "to create a Cairo::Context object. The final two lines change the graphics state of the context." msgstr "" "Varje Cairo::Context associeras med en viss Gdk::Surface, så den första raden i exemplet ovan " "skapar en Gtk::DrawingArea-komponent och de två raderna efter använder dess associerade Gdk::Surface för att skapa ett Cairo::Context-objekt. De sista två radera ändrar kontextens grafiktillstånd." #. (itstool) path: section/para #: C/index-in.docbook:4735 msgid "" "There are a number of graphics state variables that can be set for a Cairo context. The most common context attributes are color (using " "set_source_rgb() or set_source_rgba() for translucent colors), line width (using " "set_line_width()), line dash pattern (using set_dash()), line cap style (using " "set_line_cap()), and line join style (using set_line_join()), and font styles (using " "set_font_size(), set_font_face() and others). There are many other settings as well, such as " "transformation matrices, fill rules, whether to perform antialiasing, and others. For further information, see the cairomm API documentation." msgstr "" "Det finns ett antal grafiktillståndsvariabler som kan ställas in för en Cairo-kontext. De vanligaste kontextattributen är färg (med " "set_source_rgb() eller set_source_rgba() för genomskinliga färger), linjebredd (med " "set_line_width()), linjestreckningsmönster (med set_dash()), stil på linjeände (med " "set_line_cap()), linjesammankopplingsstil (med set_line_join()) och typsnittsstilar (med " "set_font_size(), set_font_face() med flera). Det finns även många andra inställningar, såsom " "transformationsmatriser, fyllnadsregler, huruvida kantutjämning ska utföras med mera. För vidare information kan du se API-dokumentationen för " "cairomm." #. (itstool) path: tip/para #: C/index-in.docbook:4767 msgid "" "It is good practice to put all modifications to the graphics state between save()/restore() " "function calls. For example, if you have a function that takes a Cairo::Context reference as an argument, you might " "implement it as follows:" msgstr "" "Det är god sed att stoppa alla ändringar till grafiktillståndet mellan save()/restore()-" "funktionsanrop. Om du exempelvis har en funktion som tar en Cairo::Context-referens som ett argument kanske du " "implementerar den enligt följande:" #. (itstool) path: tip/programlisting #: C/index-in.docbook:4773 #, no-wrap msgid "" "void doSomething(const Cairo::RefPtr<Cairo::Context>& context, int x)\n" "{\n" " context->save();\n" " // change graphics state\n" " // perform drawing operations\n" " context->restore();\n" "}" msgstr "" "void doSomething(const Cairo::RefPtr<Cairo::Context>& context, int x)\n" "{\n" " context->save();\n" " // ändra grafiktillstånd\n" " // utför ritoperationer\n" " context->restore();\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:4750 #, fuzzy msgid "" "The current state of a Cairo::Context can be saved to an internal stack of saved states and later be restored to the " "state it was in when you saved it. To do this, use the save() method and the restore() " "method. This can be useful if you need to temporarily change the line width and color (or any other graphics setting) in order to draw " "something and then return to the previous settings. In this situation, you could call Cairo::Context::save(), change " "the graphics settings, draw the lines, and then call Cairo::Context::restore() to restore the original graphics state. " "Multiple calls to save() and restore() can be nested; each call to restore() restores the state from the matching paired save(). <_:tip-1/>" msgstr "" "Aktuellt tillstånd för en Cairo::Context kan sparas till en intern stack med sparade tillstånd och sedan återställas " "till tillståndet den var i när du sparade den. För att göra detta använder du metoderna save() och " "restore(). Detta kan vara användbart om du tillfälligt behöver ändra linjebredden och färgen (eller någon annan " "grafikinställning) för att rita något och sedan återgå till de tidigare inställningarna. I denna situation bör du anropa Cairo::" "Context::save(), ändra grafikinställningarna, rita linjerna, och sedan anropa Cairo::Context::restore() " "för att återställa det ursprungliga grafiktillståndet. Flera anrop till save() och restore() " "kan nästas; varje anrop till restore() återställer tillståndet från den matchande save() i " "paret. <_:tip-1/>" #. (itstool) path: section/para #: C/index-in.docbook:4782 msgid "" "The draw function that you set with a call to set_draw_func() is called with a Cairo context that you shall use for " "drawing in the Gtk::DrawingArea widget. It is not necessary to save and restore this Cairo context in the draw function." msgstr "" "Ritfunktionen som du ställer in med ett anrop till set_draw_func() anropas med en Cairo-kontext som du ska använda för " "att rita i Gtk::DrawingArea-komponenten. Det är inte nödvändigt att spara och återställa denna Cairo-kontext i " "ritfunktionen." #. (itstool) path: section/title #: C/index-in.docbook:4790 msgid "Drawing Straight Lines" msgstr "Rita räta linjer" #. (itstool) path: tip/para #: C/index-in.docbook:4799 #, fuzzy msgid "" "Since the Cairo graphics library was written with support for multiple output targets (the X window system, PNG images, OpenGL, etc), there is " "a distinction between user-space and device-space coordinates. The mapping between these two coordinate systems defaults to one-to-one so that " "integer values map roughly to pixels on the screen, but this setting can be adjusted if desired. Sometimes it may be useful to scale the " "coordinates so that the full width and height of a window both range from 0 to 1 (the 'unit square') or some other mapping that works for your " "application. This can be done with the Cairo::Context::scale() function." msgstr "" "Eftersom Cairo-grafikbiblioteket skrivits med stöd för flera utmatningsmål (X-fönstersystemet, PNG-bilder, OpenGL o.s.v.), så görs skillnad " "mellan koordinater i användar- och enhetsrymden. Mappningen mellan dessa två koordinatsystem är som standard ett-till-ett så att heltalsvärden " "grovt motsvarar bildpunkter på skärmen, men denna inställning kan justeras om så önskas. Ibland kan det vara användbart att skala koordinaterna " "så att hela bredden och höjden för ett fönster båda har intervallet 0 till 1 (”enhetskvadraten”) eller någon annan mappning som fungerar för " "ditt program. Detta kan göras med funktionen Cairo::Context::scale()." #. (itstool) path: section/para #: C/index-in.docbook:4791 msgid "" "Now that we understand the basics of the Cairo graphics library, we're almost ready to start drawing. We'll start with the simplest of drawing " "elements: the straight line. But first you need to know a little bit about Cairo's coordinate system. The origin of the Cairo coordinate system " "is located in the upper-left corner of the window with positive x values to the right and positive y values going down. <_:tip-1/>" msgstr "" "Nu då vi förstå grunderna hos Cairo-grafikbiblioteket är vi nästan klara att börja rita. Vi börjar med det enklaste av ritelement: den räta " "linjen. Men först behöver du känna till lite om Cairos koordinatsystem. Origo för Cairos koordinatsystem finns i fönstrets övre vänstra hörn " "med positiva x-värden till höger och positiva y-värden nedåt. <_:tip-1/>" #. (itstool) path: section/para #: C/index-in.docbook:4815 #, fuzzy msgid "" "In this example, we'll construct a small but fully functional gtkmm program and draw some lines into the window. The " "lines are drawn by creating a path and then stroking it. A path is created using the functions Cairo::Context::move_to() and Cairo::Context::line_to(). The function move_to() is similar to the act of " "lifting your pen off of the paper and placing it somewhere else -- no line is drawn between the point you were at and the point you moved to. " "To draw a line between two points, use the line_to() function." msgstr "" "I detta exempel kommer vi konstruera ett litet men fullt fungerande gtkmm-program och rita några linjer i fönstret. " "Linjerna ritas genom att skapa en bana och sedan stryka längs den. En bana skapas med funktionerna Cairo::Context::move_to() och Cairo::Context::line_to(). Funktionen move_to() liknar att lyfta din penna " "från papperet och placera den någon annanstans -- ingen linje ritas mellan punkten du var på och punkten du flyttade till. För att rita en " "linje mellan två punkter använder du funktionen line_to()." #. (itstool) path: section/para #: C/index-in.docbook:4827 #, fuzzy msgid "" "After you've finished creating your path, you still haven't drawn anything visible yet. To make the path visible, you must use the function " "stroke() which will stroke the current path with the line width and style specified in your Cairo::Context object. After stroking, the current path will be cleared so that you can start on your next path." msgstr "" "Efter att du slutat skapa din bana har du fortfarande inte ritat något som är synligt. För att göra banan synlig måste du använda funktionen " "stroke() som kommer stryka den aktuella banan med linjebredden och stilen som angivits i ditt Cairo::" "Context-objekt. Efter att hu strukit kommer den aktuella banan rensas så du kan börja på din nästa bana." #. (itstool) path: tip/para #: C/index-in.docbook:4836 #, fuzzy msgid "" "Many Cairo drawing functions have a _preserve() variant. Normally drawing functions such as clip(), fill(), or stroke() will clear the current path. If you use the " "_preserve() variant, the current path will be retained so that you can use the same path with the next drawing " "function." msgstr "" "Många Cairo-ritfunktioner har en _preserve()-variant. Vanligen kommer ritfunktioner som clip(), fill() eller stroke() rensa den aktuella banan. Om du använder " "_preserve()-varianten kommer den aktuella banan bevaras så du kan använda samma bana med nästa ritfunktion." #. (itstool) path: figure/title #: C/index-in.docbook:4846 C/index-in.docbook:4969 msgid "Drawing Area - Lines" msgstr "Rityta - Linjer" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4848 msgctxt "_" msgid "external ref='figures/drawingarea_lines.png' md5='3e205f8303890e4eb2ea88487e8633e7'" msgstr "external ref='figures/drawingarea_lines.png' md5='3e205f8303890e4eb2ea88487e8633e7'" #. (itstool) path: section/para #: C/index-in.docbook:4852 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:4854 #, fuzzy msgid "" "This program contains a single class, MyArea, which is a subclass of Gtk::DrawingArea and " "contains an on_draw() member function. This function becomes the draw function by a call to " "set_draw_func() in MyArea's constructor. on_draw() is then called " "whenever the image in the drawing area needs to be redrawn. It is passed a Cairo::RefPtr pointer to a Cairo::" "Context that we use for the drawing. The actual drawing code sets the color we want to use for drawing by using " "set_source_rgb() which takes arguments defining the Red, Green, and Blue components of the desired color (valid values " "are between 0 and 1). After setting the color, we created a new path using the functions move_to() and " "line_to(), and then stroked this path with stroke()." msgstr "" "Detta program innehåller en ensam klass, MyArea, som är en underklass till Gtk::DrawingArea och " "innehåller en on_draw()-medlemsfunktion. Denna funktion blir ritfunktionen av ett anrop till " "set_draw_func() i MyAreas konstruktor. on_draw() anropas sedan " "närhelst bilden i ritytan behöver ritas om. Den skickas en Cairo::RefPtr-pekare till en Cairo::Context som vi använder för ritandet. Koden som faktiskt ritar ställer in färgen vi vill använda för ritandet genom att använda " "set_source_rgb() vilken tar argument som definierar komponenterna Red, Green och Blue för den önskade färgen (giltiga " "värden är mellan 0 och 1). Efter att färgen ställts in skapade vi en ny bana med funktionerna move_to() och " "line_to(), och strök sedan denna bana med stroke()." #. (itstool) path: tip/title #: C/index-in.docbook:4873 msgid "Drawing with relative coordinates" msgstr "Rita med relativa koordinater" #. (itstool) path: tip/para #: C/index-in.docbook:4874 msgid "" "In the example above we drew everything using absolute coordinates. You can also draw using relative coordinates. For a straight line, this is " "done with the function Cairo::Context::rel_line_to()." msgstr "" "I exemplet ovan ritade vi allt med absoluta koordinater. Du kan också rita med relativa koordinater. För en rak linje görs detta med funktionen " "Cairo::Context::rel_line_to()." #. (itstool) path: section/title #: C/index-in.docbook:4881 msgid "Line styles" msgstr "Linjestilar" #. (itstool) path: section/para #: C/index-in.docbook:4882 msgid "" "In addition to drawing basic straight lines, there are a number of things that you can customize about a line. You've already seen examples of " "setting a line's color and width, but there are others as well." msgstr "" "Utöver att rita enkla räta linjer så finns det ett antal saker som du kan anpassa med en linje. Du har redan sett exempel på att ställa in en " "linjes färg och bredd, men det finns även annat." # TODO: are show*n* #. (itstool) path: section/para #: C/index-in.docbook:4888 #, fuzzy msgid "" "If you've drawn a series of lines that form a path, you may want them to join together in a certain way. Cairo offers three different ways to " "join lines together: Miter, Bevel, and Round. These are show below:" msgstr "" "Om du ritar en serie linjer som formar en bana så kan du vilja koppla samman dem på ett visst sätt. Cairo erbjuder tre olika sätt att koppla " "samman linjer: Miter, Bevel, och Round. Dessa visas nedan:" #. (itstool) path: figure/title #: C/index-in.docbook:4895 msgid "Different join types in Cairo" msgstr "Olika sammankopplingstyper i Cairo" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4897 msgctxt "_" msgid "external ref='figures/cairo_joins.png' md5='1b1e2a28e976039f1e4a0aa523ac40fb'" msgstr "external ref='figures/cairo_joins.png' md5='1b1e2a28e976039f1e4a0aa523ac40fb'" #. (itstool) path: section/para #: C/index-in.docbook:4900 msgid "The line join style is set using the function Cairo::Context::set_line_join()." msgstr "Linjesammankopplingsstilen ställs in med funktionen Cairo::Context::set_line_join()." #. (itstool) path: section/para #: C/index-in.docbook:4904 #, fuzzy msgid "" "Line ends can have different styles as well. The default style is for the line to start and stop exactly at the destination points of the line. " "This is called a Butt cap. The other options are Round (uses a round ending, with the center of the circle at the end point) or Square (uses a " "squared ending, with the center of the square at the end point). This setting is set using the function Cairo::Context::" "set_line_cap()." msgstr "" "Linjeslut kan också ha olika stilar. Standardstilen är att linjen börjar och slutar exakt på linjens målpunkter. Detta kallas en Butt cap. De " "andra alternativen är Round (använder en rund ände, med cirkelns centrum på ändpunkten) eller Square (använder en kvadratisk ände, med " "kvadratens centrum på ändpunkten). Denna inställning sätts med funktionen Cairo::Context::set_line_cap()." #. (itstool) path: section/para #: C/index-in.docbook:4914 msgid "" "There are other things you can customize as well, including creating dashed lines and other things. For more information, see the Cairo API " "documentation." msgstr "" "Det finns även andra saker du kan anpassa, som att skapa streckade linjer och andra saker. Se Cairos API-dokumentation för mer information." #. (itstool) path: section/title #: C/index-in.docbook:4922 msgid "Drawing thin lines" msgstr "Rita tunna linjer" #. (itstool) path: section/para #: C/index-in.docbook:4923 #, fuzzy msgid "" "If you try to draw one pixel wide lines, you may notice that the line sometimes comes up blurred and wider than it ought to be. This happens " "because Cairo will try to draw from the selected position, to both sides (half to each), so if you're positioned right on the intersection of " "the pixels, and want a one pixel wide line, Cairo will try to use half of each adjacent pixel, which isn't possible (a pixel is the smallest " "unit possible). This happens when the width of the line is an odd number of pixels (not just one pixel)." msgstr "" "Om du försöker rita en bildpunkt breda linjer kan du upptäcka att linjen ibland blir suddig och bredare än den borde vara. Detta inträffar för " "att Cairo kommer försöka rita från den valda positionen, till båda sidor (hälften till båda), så om du är positionerad till höger om " "bildpunkternas mötespunkt, och vill ha en en bildpunkt bred linje, så kommer Cairo försöka använda hälften av varje angränsande bildpunkt, " "vilket inte är möjligt (en bildpunkt är den minsta möjliga enheten). Detta händer när bredden på linjen är ett udda antal bildpunkter (inte " "bara vid en bildpunkt)." #. (itstool) path: section/para #: C/index-in.docbook:4933 #, fuzzy msgid "" "The trick is to position in the middle of the pixel where you want the line to be drawn, and thus guaranteeing you get the desired results. See " "Cairo FAQ." msgstr "" "Tricket är att positionera dig i mitten av bildpunkten där du vill att linjen ska dras, och därmed garantera att du får de önskade resultaten. " "Se frågor och svar om Cairo." #. (itstool) path: figure/title #: C/index-in.docbook:4940 msgid "Drawing Area - Thin Lines" msgstr "Rityta - Tunna linjer" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4942 #, fuzzy msgctxt "_" msgid "external ref='figures/drawingarea_thin_lines.png' md5='589cbad88ee60c46503e89c4318822a1'" msgstr "external ref='figures/drawingarea_thin_lines.png' md5='589cbad88ee60c46503e89c4318822a1'" #. (itstool) path: section/para #: C/index-in.docbook:4946 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4951 #, fuzzy msgid "Drawing Curved Lines" msgstr "Rita krökta linjer" #. (itstool) path: section/para #: C/index-in.docbook:4952 #, fuzzy msgid "" "In addition to drawing straight lines Cairo allows you to easily draw curved lines (technically a cubic Bézier spline) using the " "Cairo::Context::curve_to() and Cairo::Context::rel_curve_to() functions. These functions take " "coordinates for a destination point as well as coordinates for two 'control' points. This is best explained using an example, so let's dive in." msgstr "" "Utöver att rita raka linjer låter Cairo dig lätt rita krökta linjer (tekniskt sett en kubisk Bézier-spline) med funktionerna Cairo::" "Context::curve_to() och Cairo::Context::rel_curve_to(). Dessa funktioner tar koordinater för en målpunkt " "såväl som koordinater för två ”kontroll”-punkter. Detta förklaras bäst med ett exempel, så nu kör vi." #. (itstool) path: section/para #: C/index-in.docbook:4964 #, fuzzy msgid "This simple application draws a curve with Cairo and displays the control points for each end of the curve." msgstr "Detta enkla program ritar en kurva med Cairo och visar kontrollpunkterna för varje ände av kurvan." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4971 msgctxt "_" msgid "external ref='figures/drawingarea_curve.png' md5='1a9cdaaad2b17b89d8450f949c1ddef5'" msgstr "external ref='figures/drawingarea_curve.png' md5='1a9cdaaad2b17b89d8450f949c1ddef5'" #. (itstool) path: section/para #: C/index-in.docbook:4975 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:4976 msgid "" "The only difference between this example and the straight line example is in the on_draw() function, but there are a " "few new concepts and functions introduced here, so let's examine them briefly." msgstr "" "Den enda skillnaden mellan detta exempel och exemplet för räta linjer är i funktionen on_draw(), men några nya koncept " "och funktioner introduceras här, så låt oss kort ta en titt på dem." #. (itstool) path: section/para #: C/index-in.docbook:4982 #, fuzzy msgid "" "We make a call to Cairo::Context::scale(), passing in the width and height of the drawing area. This scales the user-" "space coordinate system such that the width and height of the widget are both equal to 1.0 'units'. There's no particular reason to scale the " "coordinate system in this case, but sometimes it can make drawing operations easier." msgstr "" "Vi gör ett anrop till Cairo::Context::scale(), och skickar med bredden och höjden för ritytan. Detta skalar " "användarrymdens koordinatsystem så att bredden och höjden för komponenten båda motsvarar 1.0 ”enheter”. Det finns ingen specifik orsak att " "skala koordinatsystemet i detta fall, men ibland kan det göra ritoperationer lättare." #. (itstool) path: section/para #: C/index-in.docbook:4991 #, fuzzy msgid "" "The call to Cairo::Context::curve_to() should be fairly self-explanatory. The first pair of coordinates define the " "control point for the beginning of the curve. The second set of coordinates define the control point for the end of the curve, and the last set " "of coordinates define the destination point. To make the concept of control points a bit easier to visualize, a line has been drawn from each " "control point to the end-point on the curve that it is associated with. Note that these control point lines are both translucent. This is " "achieved with a variant of set_source_rgb() called set_source_rgba(). This function takes a " "fourth argument specifying the alpha value of the color (valid values are between 0 and 1)." msgstr "" "Anropet till Cairo::Context::curve_to() bör vara rätt självförklarande. Det första paret koordinater definierar " "kontrollpunkten för början på kurvan. Den andra uppsättningen koordinater definierar kontrollpunkten för slutet på kurvan, och den sista " "uppsättningen koordinater definierar målpunkten. För att göra konceptet med kontrollpunkter lite lättare att visualisera har en linje ritats " "från varje kontrollpunkt till slutpunkten på kurvan som den är associerad med. Observera att dess kontrollpunktslinjer båda är genomskinliga. " "Detta åstadkoms med en variant av set_source_rgb() som kallas set_source_rgba(). Denna " "funktion tar ett fjärde argument som ange alfavärdet för färgen (giltiga värden är mellan 0 och 1)." #. (itstool) path: section/title #: C/index-in.docbook:5010 msgid "Drawing Arcs and Circles" msgstr "Rita bågar och cirklar" #. (itstool) path: section/para #: C/index-in.docbook:5011 #, fuzzy msgid "" "With Cairo, the same function is used to draw arcs, circles, or ellipses: Cairo::Context::arc(). This function takes " "five arguments. The first two are the coordinates of the center point of the arc, the third argument is the radius of the arc, and the final " "two arguments define the start and end angle of the arc. All angles are defined in radians, so drawing a circle is the same as drawing an arc " "from 0 to 2 * M_PI radians. An angle of 0 is in the direction of the positive X axis (in user-space). An angle of M_PI/2 radians (90 degrees) " "is in the direction of the positive Y axis (in user-space). Angles increase in the direction from the positive X axis toward the positive Y " "axis. So with the default transformation matrix, angles increase in a clockwise direction. (Remember that the positive Y axis points downwards.)" msgstr "" "Med Cairo används samma funktion för att rita bågar, cirklar eller ellipser: Cairo::Context::arc(). Denna funktion tar " "fem argument. De första två är koordinaterna för bågen centrum, det tredje argumentet är bågens radie, och de sista två argumenten definierar " "bågens start- och slutvinkel. Alla vinklar definieras i radianer, så att rita en cirkel är det samma som att rita en båge från 0 till 2 * M_PI " "radianer. En vinkel på 0 är i den positive X-axelns riktning (i användarrymden). En vinkel på M_PI/2 radianer (90 grader) är i den positive Y-" "axelns riktning (i användarrymden). Vinklar ökar i riktningen från den positive X-axeln till den positive Y-axeln. Så med " "standardtransformationsmatrisen ökar vinklar i medurs riktning. (Kom ihåg att den positiva Y-axeln pekare nedåt.)" #. (itstool) path: section/para #: C/index-in.docbook:5026 #, fuzzy msgid "" "To draw an ellipse, you can scale the current transformation matrix by different amounts in the X and Y directions. For example, to draw an " "ellipse with center at x, y and size width, height:" msgstr "" "För att rita en ellips kan du skala den aktuella transformationsmatrisen med olika mängder i X- och Y-riktningarna. För att exempelvis rita en " "ellips med centrum i x, y och storleken width, height:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5032 #, fuzzy, no-wrap msgid "" "context->save();\n" "context->translate(x, y);\n" "context->scale(width / 2.0, height / 2.0);\n" "context->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);\n" "context->restore();" msgstr "" "context->save();\n" "context->translate(x, y);\n" "context->scale(width / 2.0, height / 2.0);\n" "context->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);\n" "context->restore();" #. (itstool) path: section/para #: C/index-in.docbook:5040 msgid "Here's an example of a simple program that draws an arc, a circle and an ellipse into a drawing area." msgstr "Här är ett exempel på ett enkelt program som ritar en båge, en cirkel och en ellips på en rityta." #. (itstool) path: figure/title #: C/index-in.docbook:5045 msgid "Drawing Area - Arcs" msgstr "Rityta - Bågar" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5047 msgctxt "_" msgid "external ref='figures/drawingarea_arcs.png' md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" msgstr "external ref='figures/drawingarea_arcs.png' md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" #. (itstool) path: section/para #: C/index-in.docbook:5051 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5053 #, fuzzy msgid "" "There are a couple of things to note about this example code. Again, the only real difference between this example and the previous ones is the " "on_draw() function, so we'll limit our focus to that function. In addition, the first part of the function is nearly " "identical to the previous examples, so we'll skip that portion." msgstr "" "Det finns några saker att observera om denna exempelkod. Den enda riktiga skillnaden mellan detta exempel och det föregående är återigen " "on_draw()-funktionen, så vi kommer begränsa vårt fokus till den funktionen. Vidare är funktionens första del nästan " "identisk med de tidigare exemplen, så vi hoppar över den delen." #. (itstool) path: section/para #: C/index-in.docbook:5061 #, fuzzy msgid "" "Note that in this case, we've expressed nearly everything in terms of the height and width of the window, including the width of the lines. " "Because of this, when you resize the window, everything scales with the window. Also note that there are three drawing sections in the function " "and each is wrapped with a save()/restore() pair so that we're back at a known state after " "each drawing." msgstr "" "Observera att vi i detta fall uttryckt nästan allt i termer av fönstrets höjd och bredd, inklusive linjebredden. På grund av detta så skalas " "allt med fönstret då du ändrar storlek på det. Se också att det finns tre ritfunktioner, och var och en omsluts av ett par save()/restore() så att vi är tillbaka i ett känt tillstånd efter varje utritning." #. (itstool) path: section/para #: C/index-in.docbook:5070 #, fuzzy msgid "" "The section for drawing an arc introduces one new function, close_path(). This function will in effect draw a straight " "line from the current point back to the first point in the path. There is a significant difference between calling close_path() and manually drawing a line back to the starting point, however. If you use close_path(), the lines will " "be nicely joined together. If you use line_to() instead, the lines will end at the same point, but Cairo won't do any " "special joining." msgstr "" "Avsnittet för att rita en båge introducerar en ny funktion, close_path(). Denna funktion kommer praktiskt sett rita en " "rak linje från den aktuella punkten tillbaka till banans först punkt. Det finns dock en betydande skillnad mellan att anropa " "close_path() och att manuellt rita en linje tillbaka till startpunkten. Om du använder close_path() kommer linjerna vara fint ihopkopplade. Om du i stället använder line_to() kommer linjerna sluta på samma " "punkt, men Cairo kommer inte koppla ihop dem på något speciellt sätt." #. (itstool) path: note/title #: C/index-in.docbook:5083 msgid "Drawing counter-clockwise" msgstr "Rita moturs" #. (itstool) path: note/para #: C/index-in.docbook:5084 msgid "" "The function Cairo::Context::arc_negative() is exactly the same as Cairo::Context::arc() but " "the angles go the opposite direction." msgstr "" "Funktionen Cairo::Context::arc_negative() är exakt densamma som Cairo::Context::arc() men " "vinklarna går i motsatt riktning." #. (itstool) path: section/title #: C/index-in.docbook:5096 msgid "Drawing Text" msgstr "Rita text" #. (itstool) path: section/title #: C/index-in.docbook:5099 msgid "Drawing Text with Pango" msgstr "Rita text med Pango" #. (itstool) path: section/para #: C/index-in.docbook:5100 #, fuzzy msgid "" "Text is drawn via Pango Layouts. The easiest way to create a Pango::Layout is to use Gtk::Widget::" "create_pango_layout(). Once created, the layout can be manipulated in various ways, including changing the text, font, etc. " "Finally, the layout can be rendered using the Pango::Layout::show_in_cairo_context() method." msgstr "" "Texten ritas via Pango-layouter. Det lättaste sättet att skapa en Pango::Layout är att använda Gtk::Widget::" "create_pango_layout(). När den skapats kan layouten manipuleras på olika sätt, inklusive att ändra texten, typsnittet o.s.v. " "Slutligen kan layouten renderas med metoden Pango::Layout::show_in_cairo_context()." #. (itstool) path: section/para #: C/index-in.docbook:5113 #, fuzzy msgid "" "Here is an example of a program that draws some text, some of it upside-down. The Printing chapter contains another example of drawing text." msgstr "" "Här kommer ett exempel på ett program som ritar lite text, delar av den upp och ner. Utskriftskapitlet innehåller ett annat exempel på att rita text." #. (itstool) path: figure/title #: C/index-in.docbook:5119 msgid "Drawing Area - Text" msgstr "Rityta - Text" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5121 #, fuzzy msgctxt "_" msgid "external ref='figures/drawingarea_pango_text.png' md5='07c39668c9dda2ac1f9455caf6e4d16a'" msgstr "external ref='figures/drawingarea_pango_text.png' md5='07c39668c9dda2ac1f9455caf6e4d16a'" #. (itstool) path: section/para #: C/index-in.docbook:5125 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:5137 msgid "Drawing Images" msgstr "Rita bilder" #. (itstool) path: section/para #: C/index-in.docbook:5138 #, fuzzy msgid "" "There is a method for drawing from a Gdk::Pixbuf to a Cairo::Context. A Gdk::Pixbuf buffer is a useful wrapper around a collection of pixels, which can be read from files, and manipulated in various ways." msgstr "" "Det finns en metod för att rita från en Gdk::Pixbuf till en Cairo::Context. En Gdk::" "Pixbuf-buffert är ett användbart omslag runt en samling bildpunkter, vilka kan läsas in från filer och manipuleras på olika sätt." #. (itstool) path: section/para #: C/index-in.docbook:5145 #, fuzzy msgid "" "Probably the most common way of creating Gdk::Pixbufs is to use Gdk::Pixbuf::create_from_file() " "or Gdk::Pixbuf::create_from_resource(), which can read an image file, such as a png file into a pixbuf ready for " "rendering." msgstr "" "Det vanligaste sättet att skapa Gdk::Pixbuf-buffertar är troligen att använda Gdk::Pixbuf::" "create_from_file() eller Gdk::Pixbuf::create_from_resource(), vilka kan läsa en bildfil, som en png-fil " "in i en pixbuf som är klar för rendering." #. (itstool) path: section/para #: C/index-in.docbook:5153 #, fuzzy msgid "" "The Gdk::Pixbuf can be rendered by setting it as the source pattern of the Cairo context with Gdk::Cairo::" "set_source_pixbuf(). Then draw the image with either Cairo::Context::paint() (to draw the whole image), " "or Cairo::Context::rectangle() and Cairo::Context::fill() (to fill the specified rectangle). " "set_source_pixbuf() is not a member of Cairo::Context. It takes a Cairo::Context as its first parameter." msgstr "" "Gdk::Pixbuf-bufferten kan renderas genom att ställa in den som källmönstret för Cairo-kontexten med Gdk::" "Cairo::set_source_pixbuf(). Rita sedan bilden med antingen Cairo::Context::paint() (för att rita hela " "bilden), eller Cairo::Context::rectangle() och Cairo::Context::fill() (för att fylla den " "angivna rektangeln). set_source_pixbuf() är inte en medlem av Cairo::Context. Den tar en " "Cairo::Context som sin första parameter." #. (itstool) path: section/para #: C/index-in.docbook:5164 #, fuzzy msgid "" "Here is a small bit of code to tie it all together: (Note that usually you wouldn't load the image every time in the draw signal handler! It's " "just shown here to keep it all together.)" msgstr "" "Här är lite kod som knyter ihop alltsamman: (Observera att vanligen skulle du inte läsa in bilden varje gång i ritsignalhanteraren! Det visas " "bara här för att ha allt på samma ställe.)" #. (itstool) path: section/programlisting #: C/index-in.docbook:5169 #, fuzzy, no-wrap msgid "" "void MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr, int width, int height)\n" "{\n" " auto image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n" " // Draw the image at 110, 90, except for the outermost 10 pixels.\n" " Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n" " cr->rectangle(110, 90, image->get_width()-20, image->get_height()-20);\n" " cr->fill();\n" "}" msgstr "" "void MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr, int width, int height)\n" "{\n" " auto image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n" " // Rita bilden på 110, 90, förutom de yttersta 10 bildpunkterna.\n" " Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n" " cr->rectangle(110, 90, image->get_width()-20, image->get_height()-20);\n" " cr->fill();\n" "}" #. (itstool) path: para/screen #: C/index-in.docbook:5186 #, no-wrap msgid "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml" msgstr "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml" #. (itstool) path: section/para #: C/index-in.docbook:5180 #, fuzzy msgid "" "Here is an example of a simple program that draws an image. The program loads the image from a resource file. See the Gio::Resource and glib-compile-resources section. Use glib-compile-resources to compile the " "resources into a C source file that can be compiled and linked with the C++ code. E.g. <_:screen-1/>" msgstr "" "Här är ett exempel på ett enkelt program som ritar en bild. Programmet läser in bilden från en resursfil. Se avsnittet Gio::Resource och glib-compile-resources. Använd glib-compile-resources för att kompilera " "resurserna till en C-källfil som kan kompileras och länkas med C++-koden. Exempelvis <_:screen-1/>" #. (itstool) path: figure/title #: C/index-in.docbook:5189 msgid "Drawing Area - Image" msgstr "Rityta - Bild" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5191 msgctxt "_" msgid "external ref='figures/drawingarea_image.png' md5='4fbb9f465b7b8b209f295c44dd664d5a'" msgstr "external ref='figures/drawingarea_image.png' md5='4fbb9f465b7b8b209f295c44dd664d5a'" #. (itstool) path: section/para #: C/index-in.docbook:5195 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:5209 msgid "Example Application: Creating a Clock with Cairo" msgstr "Exempelprogram: Skapa en klocka med Cairo" #. (itstool) path: section/para #: C/index-in.docbook:5211 msgid "" "Now that we've covered the basics of drawing with Cairo, let's try to put it all together and create a simple application that actually does " "something. The following example uses Cairo to create a custom Clock widget. The clock has a second hand, a minute hand, " "and an hour hand, and updates itself every second." msgstr "" "Nu då vi täckt grunderna med att rita i Cairo kan vi försöka sätta ihop allting och skapa ett enkelt program som faktiskt gör något. Följande " "exempel använder Cairo för att skapa en anpassad komponent Clock. Klockan har en sekundvisare, en minutvisare och en " "timvisare, och uppdaterar sig själv varje sekund." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5219 #, fuzzy msgctxt "_" msgid "external ref='figures/cairo_clock.png' md5='fceab985fd70bec94b273f78dd481d31'" msgstr "external ref='figures/cairo_clock.png' md5='fceab985fd70bec94b273f78dd481d31'" #. (itstool) path: section/para #: C/index-in.docbook:5221 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5222 #, fuzzy msgid "" "As before, almost all of the interesting stuff is done in the draw function on_draw(). Before we dig into the draw " "function, notice that the constructor for the Clock widget connects a handler function on_timeout() to a timer with a timeout period of 1000 milliseconds (1 second). This means that on_timeout() will get " "called once per second. The sole responsibility of this function is to invalidate the window so that gtkmm will be " "forced to redraw it." msgstr "" "Som tidigare görs nästan allting intressant i ritfunktionen on_draw(). Innan vi sätter tänderna i ritfunktionen kan vi " "se att konstruktorn för Clock-komponenten ansluter en hanterarfunktion on_timeout() till en " "tidtagare med timeoutperioden 1000 millisekunder (1 sekund). Detta betyder att on_timeout() kommer anropas en gång per " "sekund. Denna funktions enda ansvar är att invalidera fönstret så att gtkmm kommer tvingas rita om det." #. (itstool) path: section/para #: C/index-in.docbook:5233 msgid "" "Now let's take a look at the code that performs the actual drawing. The first section of on_draw() should be pretty " "familiar by now. This example again scales the coordinate system to be a unit square so that it's easier to draw the clock as a percentage of " "window size so that it will automatically scale when the window size is adjusted. Furthermore, the coordinate system is scaled over and down so " "that the (0, 0) coordinate is in the very center of the window." msgstr "" "Låt oss nu ta en titt på koden som utför det faktiska ritandet. Den första delen av on_draw() bör vara ganska bekant " "nu. Detta exempel skalar igen koordinatsystemet till en enhetskvadrat så att det är lättare att rita klockan som en procentsats av " "fönsterstorleken, så att den automatiskt kommer skalas när fönsterstorleken justeras. Vidare skalas och flyttas koordinatsystemet så att " "koordinaten (0, 0) är i mitten av fönstret." #. (itstool) path: section/para #: C/index-in.docbook:5243 #, fuzzy msgid "" "The function Cairo::Context::paint() is used here to set the background color of the window. This function takes no " "arguments and fills the current surface (or the clipped portion of the surface) with the source color currently active. After setting the " "background color of the window, we draw a circle for the clock outline, fill it with white, and then stroke the outline in black. Notice that " "both of these actions use the _preserve variant to preserve the current path, and then this same path is clipped to " "make sure that our next lines don't go outside the outline of the clock." msgstr "" "Funktionen Cairo::Context::paint() används här för att ställa in fönstrets bakgrundsfärg. Denna funktion tar inga " "argument och fyller den aktuella ytan (eller den klippta delen av ytan) med den aktiva källfärgen. Efter att ha ställt in fönstrets " "bakgrundsfärg ritar vi en cirkel som klockans kontur, fyller den med vitt, och stryker sedan konturen i svart. Observera att båda dessa " "åtgärder använder varianten _preserve för att bevara den aktuella banan, och sedan klipps denna bana för att " "säkerställa att våra nästa linjer inte går utanför klockans kontur." #. (itstool) path: section/para #: C/index-in.docbook:5255 msgid "" "After drawing the outline, we go around the clock and draw ticks for every hour, with a larger tick at 12, 3, 6, and 9. Now we're finally ready " "to implement the time-keeping functionality of the clock, which simply involves getting the current values for hours, minutes and seconds, and " "drawing the hands at the correct angles." msgstr "" "Efter att ha ritat konturen går vi runt klockan och ritar streck för varje timme, med ett större streck vid 12, 3, 6 och 9. Slutligen är vi " "redo att implementera klockans tidtagande, vilket helt enkelt innefattar att få de aktuella värdena för timmar, minuter och sekunder, och rita " "visarna på rätt vinklar." #. (itstool) path: chapter/para #: C/index-in.docbook:5267 #, fuzzy msgid "" "The Gtk::DragSource and Gtk::DropTarget event controllers have methods and signals which are used " "for Drag and Drop." msgstr "" "Händelsekontrollerna Gtk::DragSource och Gtk::DropTarget har metoder och signaler vilka används " "för dra-och-släpp." #. (itstool) path: section/title #: C/index-in.docbook:5273 msgid "Sources and Targets" msgstr "Källor och mål" # TODO: literal sources och targets? #. (itstool) path: section/para #: C/index-in.docbook:5274 #, fuzzy msgid "" "Things are dragged from sources to be dropped on targets. Each source and target has information about " "the data formats that it can send or receive, provided by Gdk::ContentFormats. A drop target will only accept a dragged " "item if they both share a compatible format. Appropriate signals will then be emitted, telling the signal handlers which format was used." msgstr "" "Saker dras från sources för att släppas på targets. Varje källa och mål har information om dataformaten " "som det kan skicka eller ta emot, tillhandahållet av Gdk::ContentFormats. Ett släppmål kommer endast acceptera ett " "draget objekt om de båda delar ett kompatibelt format. Lämpliga signaler kommer sedan sändas ut, som säger till signalhanterarna vilket format " "som användes." #. (itstool) path: section/para #: C/index-in.docbook:5282 msgid "Gdk::ContentFormats objects contain information about available GTypes and mime types (media types)." msgstr "Gdk::ContentFormats-objekt innehåller information om tillgängliga GType- och mime-typer (mediatyper)." #. (itstool) path: section/para #: C/index-in.docbook:5292 #, fuzzy msgid "" "Widgets can be identified as sources or targets using Gtk::DragSource and Gtk::" "DropTarget event controllers." msgstr "" "Widget-komponenter kan identifieras som källor eller mål med händelsekontrollerna Gtk::DragSource " "och Gtk::DropTarget." #. (itstool) path: section/programlisting #: C/index-in.docbook:5297 #, no-wrap msgid "" "auto source = Gtk::DragSource::create();\n" "m_source_widget.add_controller(source);" msgstr "" "auto source = Gtk::DragSource::create();\n" "m_source_widget.add_controller(source);" #. (itstool) path: listitem/para #: C/index-in.docbook:5304 msgid "" "void set_content(const Glib::RefPtr<Gdk::ContentProvider>& content): Sets a content provider on the drag source." msgstr "" "void set_content(const Glib::RefPtr<Gdk::ContentProvider>& content): Ställer in en innehållstillhandahållare på " "dragkällan." #. (itstool) path: listitem/para #: C/index-in.docbook:5310 msgid "" "void set_actions(Gdk::DragAction actions): Sets the actions on the drag source. For instance Gdk::DragAction::COPY " "| Gdk::DragAction::MOVE." msgstr "" "void set_actions(Gdk::DragAction actions): Ställer in åtgärderna på dragkällan. Till exempel Gdk::DragAction::COPY " "| Gdk::DragAction::MOVE." #. (itstool) path: listitem/para #: C/index-in.docbook:5317 msgid "" "void set_icon(const Glib::RefPtr<const Gdk::Paintable>& paintable, int hot_x, int hot_y): Sets a paintable to use " "as icon during DND operations." msgstr "" "void set_icon(const Glib::RefPtr<const Gdk::Paintable>& paintable, int hot_x, int hot_y): Ställer in en rityta att " "använda som ikon under dra-och-släpp-operationer." #. (itstool) path: section/para #: C/index-in.docbook:5300 msgid "Some DragSource methods: <_:itemizedlist-1/>" msgstr "Några DragSource-metoder: <_:itemizedlist-1/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:5325 #, fuzzy, no-wrap msgid "" "auto target = Gtk::DropTarget::create(gtype, actions);\n" "m_target_widget.add_controller(target);" msgstr "" "auto target = Gtk::DropTarget::create(gtype, actions);\n" "m_target_widget.add_controller(target);" #. (itstool) path: listitem/para #: C/index-in.docbook:5332 msgid "void set_gtypes(const std::vector<GType>& types): Sets the supported types for this drop target." msgstr "void set_gtypes(const std::vector<GType>& types): Ställer in typerna som stöds för detta släppmål." #. (itstool) path: listitem/para #: C/index-in.docbook:5338 msgid "void set_actions(Gdk::DragAction actions): Sets the actions that this drop target supports." msgstr "void set_actions(Gdk::DragAction actions): Ställer in åtgärderna som detta släppmål stöder." #. (itstool) path: listitem/para #: C/index-in.docbook:5344 msgid "Glib::ValueBase get_value() const: Gets the current drop data, as a Glib::Value." msgstr "Glib::ValueBase get_value() const: Erhåller aktuella släppdata, som ett Glib::Value." #. (itstool) path: listitem/para #: C/index-in.docbook:5350 msgid "" "void reject(): Rejects the ongoing drop operation. This function should be used when delaying the decision on whether to " "accept a drag or not until after reading the data." msgstr "" "void reject(): Förkastar den pågående släpp-operationen. Denna funktion bör användas vid fördröjning av beslutet huruvida en " "dragning ska accepteras eller inte förrän data har lästs." #. (itstool) path: section/para #: C/index-in.docbook:5328 msgid "Some DropTarget methods: <_:itemizedlist-1/>" msgstr "Några DropTarget-metoder: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5364 #, fuzzy msgid "" "When a drop target has accepted a dragged item, certain signals will be emitted, depending on what action has been selected. For instance, the " "user might have held down the Shift key to specify a move rather than a copy. Remember " "that the user can only select the actions which you have specified in your calls to Gtk::DragSource::set_actions() and " "Gtk::DropTarget::set_actions()." msgstr "" "När ett släppmål har accepterat ett draget objekt kommer vissa signaler sändas ut, beroende på vilken åtgärd som har valts. Användaren kan " "exempelvis ha hållit ner Skift-tangenten för att ange ett move snarare än ett copy. Kom " "ihåg att användaren endast kan välja åtgärderna som du har angivit i dina anrop till Gtk::DragSource::set_actions() " "och Gtk::DropTarget::set_actions()." #. (itstool) path: listitem/para #: C/index-in.docbook:5377 msgid "drag_begin: Provides a Gdk::Drag." msgstr "drag_begin: Tillhandahåller en Gdk::Drag." #. (itstool) path: listitem/para #: C/index-in.docbook:5378 msgid "" "prepare: Shall return a Gdk::ContentProvider, with the data to use for the drag that is about to " "start." msgstr "" "prepare: Ska returnera en Gdk::ContentProvider, med data att använda för dragningen som håller på att " "börja." #. (itstool) path: listitem/para #: C/index-in.docbook:5380 #, fuzzy msgid "" "drag_end: Provides a Gdk::Drag, and a bool that tells if the drag was performing a " "move and the data should be deleted." msgstr "" "drag_end: Tillhandahåller en Gdk::Drag, och en bool som berättar om dragningen utförde " "ett move och att data ska tas bort." #. (itstool) path: listitem/para #: C/index-in.docbook:5383 msgid "drag_cancel: Emitted on the drag source when a drag has failed." msgstr "drag_cancel: Sänds ut på dragkällan när en dragning har misslyckats." #. (itstool) path: section/para #: C/index-in.docbook:5374 msgid "The source widget will emit these DragSource signals: <_:itemizedlist-1/>" msgstr "Källkomponenten kommer sända ut dessa DragSource-signaler: <_:itemizedlist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:5389 msgid "enter: Provides coordinates. Shall return the preferred Gdk::DragAction." msgstr "enter: Tillhandahåller koordinater. Ska returnera föredragen Gdk::DragAction." # TODO: Description is same as enter? #. (itstool) path: listitem/para #: C/index-in.docbook:5391 msgid "motion: Provides coordinates. Shall return the preferred Gdk::DragAction." msgstr "motion: Tillhandahåller koordinater. Ska returnera föredragen Gdk::DragAction." #. (itstool) path: listitem/para #: C/index-in.docbook:5393 msgid "leave: Emitted on the drop site when the pointer leaves the widget." msgstr "leave: Sänds ut på släpplatsen när pekaren lämnar komponenten." #. (itstool) path: listitem/para #: C/index-in.docbook:5395 msgid "" "accept: Provides a Gdk::Drop. You can call the status() method of the " "Gdk::Drop to indicate which actions will be accepted." msgstr "" "accept: Tillhandahåller en Gdk::Drop. Du kan anropa status()-metoden för " "denna Gdk::Drop för att indikera vilka åtgärder som kommer accepteras." #. (itstool) path: listitem/para #: C/index-in.docbook:5398 msgid "" "drop: Provides the data being dropped and coordinates. Shall return a bool indicating whether the drop was " "accepted." msgstr "" "drop: Tillhandahåller de data som släpps och koordinater. Ska returnera en bool som indikerar huruvida släppet " "accepterades." #. (itstool) path: section/para #: C/index-in.docbook:5386 msgid "The target widget will emit these DropTarget signals: <_:itemizedlist-1/>" msgstr "Målkomponenten kommer sända ut dessa DropTarget-signaler: <_:itemizedlist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:5408 msgid "Gtk::DragSource::signal_prepare()" msgstr "Gtk::DragSource::signal_prepare()" #. (itstool) path: listitem/para #: C/index-in.docbook:5409 msgid "Gtk::DropTarget::signal_enter()" msgstr "Gtk::DropTarget::signal_enter()" #. (itstool) path: listitem/para #: C/index-in.docbook:5410 msgid "Gtk::DropTarget::signal_motion()" msgstr "Gtk::DropTarget::signal_motion()" #. (itstool) path: listitem/para #: C/index-in.docbook:5411 msgid "Gtk::DropTarget::signal_accept()" msgstr "Gtk::DropTarget::signal_accept()" #. (itstool) path: listitem/para #: C/index-in.docbook:5412 msgid "Gtk::DropTarget::signal_drop()" msgstr "Gtk::DropTarget::signal_drop()" #. (itstool) path: section/para #: C/index-in.docbook:5402 msgid "" "The following signals call only one signal handler when emitted. When you connect a handler to such a signal, your signal handler must be " "called before (instead of) the default handler, otherwise it won't be called. Set the after parameter in " "connect() to false. <_:itemizedlist-1/>" msgstr "" "Följande signaler anropar endast en signalhanterare när de sänds ut. När du ansluter en hanterare till en sådan signal måste din " "signalhanterare anropas före (i stället för) standardhanteraren, annars kommer den inte anropas. Ställ in parametern after i " "connect() till false. <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5421 #, fuzzy msgid "Here is a very simple example, demonstrating a drag and drop Copy operation:" msgstr "Här är ett väldigt enkelt exempel som demonstrerar en dra-och-släpp-operation för Copy:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5426 #, fuzzy msgctxt "_" msgid "external ref='figures/drag_and_drop.png' md5='c13dd8b7faa3d523444c101e42572a10'" msgstr "external ref='figures/drag_and_drop.png' md5='c13dd8b7faa3d523444c101e42572a10'" #. (itstool) path: section/para #: C/index-in.docbook:5430 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5432 msgid "There is a more complex example in examples/others/dnd." msgstr "Det finns ett mer komplext exempel i examples/others/dnd." #. (itstool) path: chapter/title #: C/index-in.docbook:5441 #, fuzzy msgid "The Clipboard" msgstr "Urklipp" #. (itstool) path: chapter/para #: C/index-in.docbook:5443 msgid "" "Simple text copy-paste functionality is provided for free by widgets such as Gtk::Entry and Gtk::TextView, but you might need special code to deal with your own data formats. For instance, a drawing program would need special code to " "allow copy and paste within a view, or between documents." msgstr "" "Enkel kopiera/klistra in-funktionalitet för text tillhandahålls på köpet av komponenter som Gtk::Entry och " "Gtk::TextView, men du kan behöva specialkod för att hantera dina egna dataformat. Exempelvis skulle ett ritprogram " "behöva specialkod för att tillåta kopiering och inklistring i en vy, eller mellan dokument." #. (itstool) path: chapter/para #: C/index-in.docbook:5449 #, fuzzy msgid "" "You can get a clipboard instance with Gtk::Widget::get_clipboard() or Gdk::Display::get_clipboard()." msgstr "" "Du kan få en urklippsinstans med Gtk::Widget::get_clipboard() eller Gdk::Display::get_clipboard()." #. (itstool) path: chapter/para #: C/index-in.docbook:5454 #, fuzzy msgid "" "Your application doesn't need to wait for clipboard operations, particularly between the time when the user chooses Copy and then later chooses " "Paste. Many Gdk::Clipboard methods take sigc::slots which specify callback methods. When " "Gdk::Clipboard is ready, it will call these methods, providing the requested data." msgstr "" "Ditt program behöver inte vänta på urklippsoperationer, speciellt mellan tiden när användaren väljer Kopiera och sedan senare väljer Klistra " "in. Många Gdk::Clipboard-metoder tar sigc::slot som anger återanropsmetoder. När Gdk::" "Clipboard är redo kommer det anropa dessa metoder, och tillhandahålla begärda data." #. (itstool) path: chapter/para #: C/index-in.docbook:5462 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:5465 msgid "Formats" msgstr "Format" #. (itstool) path: section/para #: C/index-in.docbook:5467 msgid "" "Different applications contain different types of data, and they might make that data available in a variety of formats. gtkmm calls these data types formats." msgstr "" "Olika program innehåller olika typer av data, och de kan göra dessa data tillgängliga i ett antal olika format. gtkmm kallar dessa datatyper för format." #. (itstool) path: section/para #: C/index-in.docbook:5471 #, fuzzy msgid "" "For instance, gedit can supply and receive the text/plain mime type, so you can paste data into " "gedit from any application that supplies that format. Or two different image editing applications might supply and " "receive a variety of image formats. As long as one application can receive one of the formats that the other supplies then you will be able to " "copy data from one to the other." msgstr "" "Exempelvis kan gedit tillhandahålla och ta emot mime-typen text/plain, så du kan klistra in data " "i gedit från alla program som tillhandahåller det formatet. Eller så kan två olika bildredigeringsprogram " "tillhandahålla och ta emot ett antal bildformat. Så länge som ett program kan ta emot ett av formaten som det andra tillhandahåller så kommer " "du kunna kopiera data från ett till det andra." #. (itstool) path: section/para #: C/index-in.docbook:5479 #, fuzzy msgid "" "Clipboard data can be in a variety of binary formats. This chapter, and the examples, assume that the data is 8-bit text. This would allow us " "to use an XML format for the clipboard data. However this would probably not be appropriate for binary data such as images." msgstr "" "Urklippsdata kan vara i ett antal binära format. Detta kapitel och exemplen antar att data är 8-bitars text, Detta skulle låta oss använda ett " "XML-format för urklippsdata. Detta skulle dock troligen inte var lämpligt för binärdata som bilder." #. (itstool) path: section/para #: C/index-in.docbook:5486 #, fuzzy msgid "" "The Drag and Drop API uses the same mechanism. You should probably use the same data formats for " "both Clipboard and Drag and Drop operations." msgstr "" "Dra och släpp-API:t använder samma mekanism. Du bör troligen använda samma dataformat för både " "urklipps- och ”dra och släpp”-operationer." #. (itstool) path: section/title #: C/index-in.docbook:5491 msgid "Copy" msgstr "Kopiera" #. (itstool) path: section/para #: C/index-in.docbook:5493 #, fuzzy msgid "When the user asks to copy some data, you should copy the data to the Clipboard. For instance," msgstr "När användaren ber dig kopiera data bör du kopiera dessa data till ett Clipboard. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:5497 #, fuzzy, no-wrap msgid "" "void ExampleWindow::on_button_copy()\n" "{\n" " get_clipboard()->set_text(\"example_custom_target\");\n" "}" msgstr "" "void ExampleWindow::on_button_copy()\n" "{\n" " get_clipboard()->set_text(\"example_custom_target\");\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:5505 msgid "Paste" msgstr "Klistra in" #. (itstool) path: section/para #: C/index-in.docbook:5507 #, fuzzy msgid "" "When the user asks to paste data from the Clipboard, you should request a specific format and provide a callback method " "which will be called with the actual data. For instance:" msgstr "" "När användaren ber att klistra in data från Clipboard bör du begära ett specifikt format och tillhandahålla en " "återanropsmetod som kommer anropas med faktiska data. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5512 #, no-wrap msgid "" "void ExampleWindow::on_button_paste()\n" "{\n" " get_clipboard()->read_text_async(sigc::mem_fun(*this,\n" " &ExampleWindow::on_clipboard_received));\n" "}" msgstr "" "void ExampleWindow::on_button_paste()\n" "{\n" " get_clipboard()->read_text_async(sigc::mem_fun(*this,\n" " &ExampleWindow::on_clipboard_received));\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:5518 msgid "Here is an example callback method:" msgstr "Här är ett exempel på en återanropsmetod:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5520 #, fuzzy, no-wrap msgid "" "void ExampleWindow::on_clipboard_received(Glib::RefPtr<Gio::AsyncResult>& result)\n" "{\n" " auto text = get_clipboard()->read_text_finish(result);\n" " //Do something with the pasted data.\n" "}" msgstr "" "void ExampleWindow::on_clipboard_received(Glib::RefPtr<Gio::AsyncResult>& result)\n" "{\n" " auto text = get_clipboard()->read_text_finish(result);\n" " //Gör något med inklistrade data.\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:5527 msgid "Discovering the available formats" msgstr "Upptäcka de tillgängliga formaten" #. (itstool) path: section/para #: C/index-in.docbook:5529 #, fuzzy msgid "" "To find out what formats are currently available on the Clipboard for pasting, call the get_formats() method. Then call a Gdk::ContentFormats method to find out if a format that your application supports is " "available." msgstr "" "För att få reda på vilka format som för närvarande är tillgängliga för inklistring i Clipboard, anropa metoden " "get_formats(). Anropa sedan en Gdk::ContentFormats-metod för att få reda på om ett format som " "ditt program stöder finns tillgängligt." #. (itstool) path: section/title #: C/index-in.docbook:5543 C/index-in.docbook:5929 msgid "Simple" msgstr "Enkelt" #. (itstool) path: section/para #: C/index-in.docbook:5544 #, fuzzy msgid "" "This example allows copy and pasting of application-specific data, using the standard text format. Although this is simple, it's not ideal " "because it does not identify the Clipboard data as being of a particular type." msgstr "" "Detta exempel tillåter kopiering och inklistring av programspecifika data, med standardtextformatet. Även om detta är enkelt är det inte " "idealiskt då det inte identifierar Clipboard-data som varande av en viss typ." #. (itstool) path: figure/title #: C/index-in.docbook:5552 msgid "Clipboard - Simple" msgstr "Urklipp - Enkelt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5554 #, fuzzy msgctxt "_" msgid "external ref='figures/clipboard_simple.png' md5='9eab8350b743743e1571f1d245aea35c'" msgstr "external ref='figures/clipboard_simple.png' md5='9eab8350b743743e1571f1d245aea35c'" #. (itstool) path: section/para #: C/index-in.docbook:5558 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:5563 msgid "Ideal" msgstr "Idealiskt" #. (itstool) path: listitem/simpara #: C/index-in.docbook:5566 msgid "Defines a custom clipboard target, though the format is still text." msgstr "Definierar ett anpassat urklippsmål, men formatet är fortfarande text." #. (itstool) path: listitem/simpara #: C/index-in.docbook:5567 #, fuzzy msgid "" "It uses the Gdk::ContentFormats::signal_changed() signal and disables the Paste button if it can't use anything on the " "clipboard." msgstr "" "Det använder signalen Gdk::ContentFormats::signal_changed() och inaktiverar Paste-knappen om det inte kan använda " "något i urklippet." #. (itstool) path: section/para #: C/index-in.docbook:5564 msgid "This is like the simple example, but it <_:orderedlist-1/>" msgstr "Det här är som det enkla exemplet, men det <_:orderedlist-1/>" #. (itstool) path: figure/title #: C/index-in.docbook:5573 msgid "Clipboard - Ideal" msgstr "Urklipp - Idealiskt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5575 #, fuzzy msgctxt "_" msgid "external ref='figures/clipboard_ideal.png' md5='8f284904600e27efa06d39f0741acc2d'" msgstr "external ref='figures/clipboard_ideal.png' md5='8f284904600e27efa06d39f0741acc2d'" #. (itstool) path: section/para #: C/index-in.docbook:5579 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:5586 msgid "Printing" msgstr "Utskrift" #. (itstool) path: chapter/para #: C/index-in.docbook:5588 #, fuzzy msgid "" "At the application development level, gtkmm's printing API provides dialogs that are consistent across applications " "and allows use of Cairo's common drawing API, with Pango-driven text rendering. In the implementation of this common API, platform-specific " "backends and printer-specific drivers are used." msgstr "" "På programutvecklingsnivån tillhandahåller gtkmm:s utskrifts-API dialogrutor som är konsekventa mellan program och " "tillåter användning av Cairos gemensamma rit-API, med textrendering driven av Pango. I implementationen av detta gemensamma API används " "plattformsspecifika bakändar och skrivarspecifika drivrutiner." #. (itstool) path: section/title #: C/index-in.docbook:5594 msgid "PrintOperation" msgstr "PrintOperation" #. (itstool) path: section/para #: C/index-in.docbook:5596 #, fuzzy msgid "" "The primary object is Gtk::PrintOperation, allocated for each print operation. To handle page drawing connect to its " "signals, or inherit from it and override the default virtual signal handlers. PrintOperation automatically handles all " "the settings affecting the print loop." msgstr "" "Det primära objektet är Gtk::PrintOperation, allokerat för varje utskriftsoperation. Anslut till dess signaler för att " "hantera sidritning, eller ärv från den och åsidosätt de virtuella standardsignalhanterarna. PrintOperation hanterar " "automatiskt alla inställningar som påverkar utskriftsslingan." #. (itstool) path: listitem/para #: C/index-in.docbook:5613 #, fuzzy msgid "" "begin_print: You must handle this signal, because this is where you create and set up a Pango::Layout " "using the provided Gtk::PrintContext, and break up your printing output into pages." msgstr "" "begin_print: Du måste hantera denna signal, för detta är var du skapar och konfigurerar en Pango::Layout med tillhandahållen Gtk::PrintContext, och delar upp dina utskriftsutdata i sidor." #. (itstool) path: listitem/para #: C/index-in.docbook:5623 #, fuzzy msgid "" "paginate: Pagination is potentially slow so if you need to monitor it you can call the PrintOperation::" "set_show_progress() method and handle this signal." msgstr "" "paginate: Paginering kan potentiellt vara långsam, så om du behöver övervaka den kan du anropa metoden " "PrintOperation::set_show_progress() och hantera denna signal." #. (itstool) path: listitem/para #: C/index-in.docbook:5637 #, fuzzy msgid "" "request_page_setup: Provides a PrintContext, page number and Gtk::PageSetup. " "Handle this signal if you need to modify page setup on a per-page basis." msgstr "" "request_page_setup: Tillhandahåller en PrintContext, sidnummer och Gtk::PageSetup. Hantera denna signal om du behöver ändra sidinställningen för enskilda sidor." #. (itstool) path: listitem/para #: C/index-in.docbook:5646 #, fuzzy msgid "" "draw_page: You must handle this signal, which provides a PrintContext and a page number. The " "PrintContext should be used to create a Cairo::Context into which the provided page should be " "drawn. To render text, iterate over the Pango::Layout you created in the begin_print handler." msgstr "" "draw_page: Du måste hantera denna signal som tillhandahåller en PrintContext och ett sidnummer. Denna " "PrintContext ska användas för att skapa en Cairo::Context som den tillhandahållna sidan ska ritas " "i. Iterera över den Pango::Layout du skapade i begin_print-hanteraren för att rendera text." #. (itstool) path: listitem/para #: C/index-in.docbook:5632 msgid "For each page that needs to be rendered, the following signals are emitted: <_:itemizedlist-1/>" msgstr "För varje sida som behöver renderas sänds följande signaler ut: <_:itemizedlist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:5661 #, fuzzy msgid "" "end_print: A handler for it is a safe place to free any resources related to a PrintOperation. If you " "have your custom class that inherits from PrintOperation, it is naturally simpler to do it in the destructor." msgstr "" "end_print: En hanterare för den är ett säkert ställe att frigöra alla resurser relaterade till en PrintOperation. Om du har din egen anpassade klass som ärver från PrintOperation är det förstås enklare att göra det i " "destruktorn." #. (itstool) path: listitem/para #: C/index-in.docbook:5671 #, fuzzy msgid "" "done: This signal is emitted when printing is finished, meaning when the print data is spooled. Note that the provided " "Gtk::PrintOperation::Result may indicate that an error occurred. In any case you probably want to notify the user about the " "final status." msgstr "" "done: Denna signal sänds ut när utskriften är klar, vilket betyder när utskriftsdata har kölagts. Observera att den " "tillhandahållna Gtk::PrintOperation::Result kan indikera att ett fel inträffat. I vilket fall vill du troligen meddela " "användaren om slutlig status." #. (itstool) path: listitem/para #: C/index-in.docbook:5681 #, fuzzy msgid "" "status_changed: Emitted whenever a print job's status changes, until it is finished. Call the PrintOperation::" "set_track_print_status() method to monitor the job status after spooling. To see the status, use get_status() or get_status_string()." msgstr "" "status_changed: Sänds ut närhelst ett utskriftsjobbs status ändras, tills det är klart. Anropa metoden " "PrintOperation::set_track_print_status() för att övervaka jobbstatusen efter köläggning. Använd " "get_status() eller get_status_string() för att se statusen." #. (itstool) path: section/para #: C/index-in.docbook:5607 #, fuzzy msgid "" "The PrintOperation::run() method starts the print loop, during which various signals are emitted: <_:itemizedlist-1/>" msgstr "" "Metoden PrintOperation::run() startar utskriftsslingan, under vilken olika signaler sänds ut: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5694 msgid "Reference" msgstr "Referens" #. (itstool) path: section/title #: C/index-in.docbook:5703 msgid "Page setup" msgstr "Sidinställning" #. (itstool) path: section/para #: C/index-in.docbook:5705 #, fuzzy msgid "" "The PrintOperation class has a method called set_default_page_setup() which selects the default " "paper size, orientation and margins. To show a page setup dialog from your application, use the Gtk::run_page_setup_dialog() method, which returns a Gtk::PageSetup object with the chosen settings. Use this object to update a " "PrintOperation and to access the selected Gtk::PaperSize, Gtk::PageOrientation " "and printer-specific margins." msgstr "" "Klassen PrintOperation har en metod som kallas set_default_page_setup() och väljer " "standardvärde för pappersstorlek, orientering och marginaler. För att visa en sidinställningsdialog från ditt program använder du metoden " "Gtk::run_page_setup_dialog(), vilken returnerar ett Gtk::PageSetup-objekt med de valda " "inställningarna. Använd detta objekt för att uppdatera en PrintOperation och för att komma åt vald Gtk::" "PaperSize, Gtk::PageOrientation och skrivarspecifika marginaler." #. (itstool) path: section/para #: C/index-in.docbook:5715 msgid "You should save the chosen Gtk::PageSetup so you can use it again if the page setup dialog is shown again." msgstr "Du bör spara vald Gtk::PageSetup så du kan använda den igen om sidinställningsdialogen visas igen." #. (itstool) path: section/programlisting #: C/index-in.docbook:5719 #, no-wrap msgid "" "\n" "// Within a class that inherits from Gtk::Window and keeps m_refPageSetup\n" "// and m_refSettings as members...\n" "auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n" "m_refPageSetup = new_page_setup;\n" msgstr "" "\n" "// I en klass som ärver från Gtk::Window och behåller m_refPageSetup\n" "// och m_refSettings som medlemmar...\n" "auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n" "m_refPageSetup = new_page_setup;\n" #. (itstool) path: section/para #: C/index-in.docbook:5726 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:5730 #, fuzzy msgid "" "The Cairo coordinate system, in the draw_page handler, is automatically rotated to the current page orientation. It is " "normally within the printer margins, but you can change that via the PrintOperation::set_use_full_page() method. The " "default measurement unit is device pixels. To select other units, use the PrintOperation::set_unit() method." msgstr "" "Cairo-koordinatsystemet i draw_page-hanteraren roteras automatiskt till aktuell sidorientering. Den är vanligen inom " "skrivarmarginalerna, men du kan ändra det med metoden PrintOperation::set_use_full_page(). Standardmätenheten är " "enhetsbildpunkter. Använd metoden PrintOperation::set_unit() för att välja andra enheter." #. (itstool) path: section/title #: C/index-in.docbook:5742 msgid "Rendering text" msgstr "Rendering av text" #. (itstool) path: section/para #: C/index-in.docbook:5744 #, fuzzy msgid "" "Text rendering is done using Pango. The Pango::Layout object for printing should be created by calling the " "PrintContext::create_pango_layout() method. The PrintContext object also provides the page " "metrics, via get_width() and get_height(). The number of pages can be set with " "PrintOperation::set_n_pages(). To actually render the Pango text in on_draw_page, get a " "Cairo::Context with PrintContext::get_cairo_context() and show the Pango::" "LayoutLines that appear within the requested page number." msgstr "" "Textrendering görs med Pango. Pango::Layout-objektet för utskrift bör skapas genom att anropa metoden " "PrintContext::create_pango_layout(). PrintContext-objektet tillhandahåller också sidmätningar " "via get_width() och get_height(). Antalet sidor kan ställas in med " "PrintOperation::set_n_pages(). För att faktiskt rendera Pango-texten i on_draw_page ordnar du en " "Cairo::Context med PrintContext::get_cairo_context() och visar de Pango::LayoutLine som visas inom det begärda sidantalet." #. (itstool) path: section/para #: C/index-in.docbook:5759 msgid "See an example of exactly how this can be done." msgstr "Se ett exempel på exakt hur detta kan göras." #. (itstool) path: section/title #: C/index-in.docbook:5767 msgid "Asynchronous operations" msgstr "Asynkrona operationer" #. (itstool) path: section/para #: C/index-in.docbook:5769 #, fuzzy msgid "" "By default, PrintOperation::run() returns when a print operation is completed. If you need to run a non-blocking print " "operation, call PrintOperation::set_allow_async(). Note that set_allow_async() is not " "supported on all platforms, however the done signal will still be emitted." msgstr "" "Som standard returnerar PrintOperation::run() när en utskriftsoperation är slutförd. Om du behöver köra en icke-" "blockerande utskriftsoperation anropar du PrintOperation::set_allow_async(). Observera att " "set_allow_async() inte stöds på alla plattformar, men signalen done kommer fortfarande sändas ut." #. (itstool) path: section/para #: C/index-in.docbook:5776 msgid "" "run() may return PrintOperation::Result::IN_PROGRESS. To track status and handle the result or " "error you need to implement signal handlers for the done and status_changed signals:" msgstr "" "run() kan returnera PrintOperation::Result::IN_PROGRESS. För att övervaka status och hantera " "resultatet eller fel behöver du implementera signalhanterare för signalerna done och status_changed:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5784 #, fuzzy, no-wrap msgid "" "\n" "// in class ExampleWindow's method...\n" "auto op = PrintOperation::create();\n" "// ...set up op...\n" "op->signal_done().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_done), op));\n" "// run the op\n" msgstr "" "\n" "// i klassen ExampleWindows metod...\n" "auto op = PrintOperation::create();\n" "// ...konfigurera op...\n" "op->signal_done().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_done), op));\n" "// kör op\n" #. (itstool) path: section/para #: C/index-in.docbook:5793 msgid "Second, check for an error and connect to the status_changed signal. For instance:" msgstr "Kontrollera sedan för fel och anslut till signalen status_changed. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5795 #, no-wrap msgid "" "\n" "void ExampleWindow::on_printoperation_done(Gtk::PrintOperation::Result result,\n" " const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (result == Gtk::PrintOperation::Result::ERROR)\n" " //notify user\n" " else if (result == Gtk::PrintOperation::Result::APPLY)\n" " //Update PrintSettings with the ones used in this PrintOperation\n" "\n" " if (! op->is_finished())\n" " op->signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_status_changed), op));\n" "}\n" msgstr "" "\n" "void ExampleWindow::on_printoperation_done(Gtk::PrintOperation::Result result,\n" " const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (result == Gtk::PrintOperation::Result::ERROR)\n" " //meddela användare\n" " else if (result == Gtk::PrintOperation::Result::APPLY)\n" " //Uppdatera PrintSettings med de som används i denna PrintOperation\n" "\n" " if (! op->is_finished())\n" " op->signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_status_changed), op));\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:5810 msgid "Finally, check the status. For instance," msgstr "Kontrollera slutligen status. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:5811 #, no-wrap msgid "" "\n" "void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (op->is_finished())\n" " //the print job is finished\n" " else\n" " //get the status with get_status() or get_status_string()\n" "\n" " //update UI\n" "}\n" msgstr "" "\n" "void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (op->is_finished())\n" " //utskriftsjobbet är klart\n" " else\n" " //få status med get_status() eller get_status_string()\n" "\n" " //uppdatera användargränssnitt\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:5826 msgid "Export to PDF" msgstr "Exportera till PDF" #. (itstool) path: section/para #: C/index-in.docbook:5828 #, fuzzy msgid "" "The 'Print to file' option is available in the print dialog, without the need for extra implementation. However, it is sometimes useful to " "generate a pdf file directly from code. For instance," msgstr "" "Alternativet ”Skriv ut till fil” är tillgängligt i utskriftsdialogen, utan att någon extra implementation krävs. Det är dock ibland användbart " "att generera en pdf-fil direkt från kod. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:5831 #, fuzzy, no-wrap msgid "" "\n" "auto op = Gtk::PrintOperation::create();\n" "// ...set up op...\n" "op->set_export_filename(\"test.pdf\");\n" "auto res = op->run(Gtk::PrintOperation::Action::EXPORT);\n" msgstr "" "\n" "auto op = Gtk::PrintOperation::create();\n" "// ...konfigurera op...\n" "op->set_export_filename(\"test.pdf\");\n" "auto res = op->run(Gtk::PrintOperation::Action::EXPORT);\n" #. (itstool) path: section/title #: C/index-in.docbook:5841 msgid "Extending the print dialog" msgstr "Utöka utskriftsdialogen" #. (itstool) path: listitem/para #: C/index-in.docbook:5848 #, fuzzy msgid "" "Set the title of the tab via PrintOperation::set_custom_tab_label(), create a new widget and return it from the " "create_custom_widget signal handler. You'll probably want this to be a container widget, packed with some others." msgstr "" "Ställ in titeln för fliken via PrintOperation::set_custom_tab_label(), skapa en ny komponent och returnera den från " "signalhanteraren create_custom_widget. Du kommer troligen vilja att detta är en behållarkomponent som packats med några " "andra." #. (itstool) path: listitem/para #: C/index-in.docbook:5858 #, fuzzy msgid "Get the data from the widgets in the custom_widget_apply signal handler." msgstr "Få data från komponenterna i signalhanteraren custom_widget_apply." #. (itstool) path: section/para #: C/index-in.docbook:5843 msgid "You may add a custom tab to the print dialog: <_:itemizedlist-1/>" msgstr "Du kan lägga till en anpassad flik till utskriftsdialogen: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5866 #, fuzzy msgid "" "Although the custom_widget_apply signal provides the widget you previously created, to simplify things you can keep the " "widgets you expect to contain some user input as class members. For example, let's say you have a Gtk::Entry called " "m_Entry as a member of your CustomPrintOperation class:" msgstr "" "Även om custom_widget_apply-signalen tillhandahåller komponenten du skapat tidigare kan du för att förenkla saker behålla " "komponenterna som du förväntar dig ska innehålla användarindata som klassmedlemmar. Om vi exempelvis säger att du har en Gtk::Entry med namnet m_Entry som en medlem i din CustomPrintOperation-klass:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5873 #, fuzzy, no-wrap msgid "" "\n" "Gtk::Widget* CustomPrintOperation::on_create_custom_widget()\n" "{\n" " set_custom_tab_label(\"My custom tab\");\n" "\n" " auto hbox = new Gtk::Box(Gtk::Orientation::HORIZONTAL, 8);\n" " hbox->set_margin(6);\n" "\n" " auto label = Gtk::make_managed<Gtk::Label>(\"Enter some text: \");\n" " hbox->append(*label);\n" "\n" " hbox->append(m_Entry);\n" "\n" " return hbox;\n" "}\n" "\n" "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n" "{\n" " auto user_input = m_Entry.get_text();\n" " //...\n" "}\n" msgstr "" "\n" "Gtk::Widget* CustomPrintOperation::on_create_custom_widget()\n" "{\n" " set_custom_tab_label(\"Min anpassade flik\");\n" "\n" " auto hbox = new Gtk::Box(Gtk::Orientation::HORIZONTAL, 8);\n" " hbox->set_margin(6);\n" "\n" " auto label = Gtk::make_managed<Gtk::Label>(\"Mata in lite text: \");\n" " hbox->append(*label);\n" "\n" " hbox->append(m_Entry);\n" "\n" " return hbox;\n" "}\n" "\n" "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n" "{\n" " auto user_input = m_Entry.get_text();\n" " //...\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:5896 msgid "The example in examples/book/printing/advanced demonstrates this." msgstr "Exemplet i examples/book/printing/advanced demonstrerar detta." #. (itstool) path: section/title #: C/index-in.docbook:5903 msgid "Preview" msgstr "Förhandsgranskning" #. (itstool) path: section/para #: C/index-in.docbook:5905 #, fuzzy msgid "The native GTK print dialog has a preview button, but you may also start a preview directly from an application:" msgstr "" "Den inhemska GTK-utskriftsdialogen har en knapp för förhandsgranskning, men du kan också starta en förhandsgranskning direkt från ett program:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5909 #, no-wrap msgid "" "\n" "// in a class that inherits from Gtk::Window...\n" "auto op = PrintOperation::create();\n" "// ...set up op...\n" "op->run(Gtk::PrintOperation::Action::PREVIEW, *this);\n" msgstr "" "\n" "// i en klass som ärver från Gtk::Window...\n" "auto op = PrintOperation::create();\n" "// ...konfigurera op...\n" "op->run(Gtk::PrintOperation::Action::PREVIEW, *this);\n" #. (itstool) path: section/para #: C/index-in.docbook:5916 #, fuzzy msgid "" "On Unix, the default preview handler uses an external viewer program. On Windows, the native preview dialog will be shown. If necessary you may " "override this behavior and provide a custom preview dialog. See the example located in /examples/book/printing/advanced." msgstr "" "På Unix använder standardhanteraren för förhandsgranskning ett externt visningsprogram. På Windows kommer den inbyggda " "förhandsgranskningsdialogen visas. Om nödvändigt kan du åsidosätta detta beteende och tillhandahålla en anpassad förhandsgranskningsdialog. Se " "exemplet i /examples/book/printing/advanced." #. (itstool) path: section/para #: C/index-in.docbook:5931 #, fuzzy msgid "" "The following example demonstrates how to print some input from a user interface. It shows how to implement on_begin_print " "and on_draw_page, as well as how to track print status and update the print settings." msgstr "" "Följande exempel demonstrerar hur inmatning från ett användargränssnitt kan skrivas ut. Det visar hur man implementerar " "on_begin_print och on_draw_page, såväl som att spåra utskriftsstatus och uppdatera " "utskriftsinställningarna." #. (itstool) path: figure/title #: C/index-in.docbook:5939 msgid "Printing - Simple" msgstr "Utskrift - Enkel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5941 #, fuzzy msgctxt "_" msgid "external ref='figures/printing.png' md5='d4565328475ec89edf5f2230cb3fc5d0'" msgstr "external ref='figures/printing.png' md5='d4565328475ec89edf5f2230cb3fc5d0'" #. (itstool) path: section/para #: C/index-in.docbook:5945 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:5954 msgid "Recently Used Documents" msgstr "Senast använda dokument" #. (itstool) path: chapter/para #: C/index-in.docbook:5956 msgid "" "gtkmm provides an easy way to manage recently used documents. This functionality is implemented in the " "Gtk::RecentManager class." msgstr "" "gtkmm tillhandahåller ett lätt sätt att hantera senast använda dokument. Denna funktionalitet implementeras i " "klassen Gtk::RecentManager." #. (itstool) path: chapter/para #: C/index-in.docbook:5960 #, fuzzy msgid "" "Each item in the list of recently used files is identified by its URI, and can have associated metadata. The metadata can be used to specify " "how the file should be displayed, a description of the file, its mime type, which application registered it, whether it's private to the " "registering application, and several other things." msgstr "" "Varje objekt i listan över senast använda filer identifieras av sin URI, och kan ha associerade metadata. Dessa metadata kan användas för att " "ange hur filen ska visas, en beskrivning av filen, dess mime-typ, vilket program som registrerat den, huruvida den är privat för det " "registrerande programmet, och flera andra saker." #. (itstool) path: section/title #: C/index-in.docbook:5969 msgid "RecentManager" msgstr "RecentManager" #. (itstool) path: section/para #: C/index-in.docbook:5970 msgid "" "RecentManager acts as a database of recently used files. You use this class to register new files, remove files from the " "list, or look up recently used files. There is one list of recently used files per user." msgstr "" "RecentManager agerar som en databas över senast använda filer. Du använder denna klass för att registrera nya filer, ta " "bort filer från listan, eller slå upp senast använda filer. Det finns en lista över senast använda filer per användare." #. (itstool) path: section/para #: C/index-in.docbook:5976 #, fuzzy msgid "" "You can create a new RecentManager, but you'll most likely just want to use the default one. You can get a reference to " "the default RecentManager with get_default()." msgstr "" "Du kan skapa en ny RecentManager, men du vill mest troligt helt enkelt använda den som används som standard. Du kan få " "en referens till standard-RecentManager med get_default()." #. (itstool) path: section/title #: C/index-in.docbook:5984 #, fuzzy msgid "Adding Items to the List of Recent Files" msgstr "Lägga till objekt i listan över senaste filer" #. (itstool) path: section/para #: C/index-in.docbook:5985 #, fuzzy msgid "To add a new file to the list of recent documents, in the simplest case, you only need to provide the URI. For example:" msgstr "För att lägga till en ny fil till listan över senaste dokument behöver du i det enklaste fallet bara tillhandahålla URI:n. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5989 #, no-wrap msgid "" "auto recent_manager = Gtk::RecentManager::get_default();\n" "recent_manager->add_item(uri);" msgstr "" "auto recent_manager = Gtk::RecentManager::get_default();\n" "recent_manager->add_item(uri);" #. (itstool) path: section/para #: C/index-in.docbook:5991 #, fuzzy msgid "" "If you want to register a file with metadata, you can pass a RecentManager::Data parameter to add_item(). The metadata that can be set on a particular file item is as follows:" msgstr "" "Om du vill registrera en fil med metadata kan du skicka med en RecentManager::Data-parameter till " "add_item(). Metadata som kan ställas in på ett specifikt filobjekt är följande:" #. (itstool) path: listitem/para #: C/index-in.docbook:5999 #, fuzzy msgid "" "app_exec: The command line to be used to launch this resource. This string may contain the \"f\" and \"u\" escape characters " "which will be expanded to the resource file path and URI respectively" msgstr "" "app_exec: Kommandoraden att använda för att köra denna resurs. Denna sträng kan innehålla kontrollsekvenserna \"f\" och " "\"u\" som kommer expanderas till resursens filsökväg respektive URI" #. (itstool) path: listitem/para #: C/index-in.docbook:6005 #, fuzzy msgid "app_name: The name of the application that registered the resource" msgstr "app_name: Namnet på programmet som registrerat resursen" #. (itstool) path: listitem/para #: C/index-in.docbook:6009 msgid "description: A short description of the resource as a UTF-8 encoded string" msgstr "description: En kort beskrivning av resursen som en UTF-8-kodad sträng" #. (itstool) path: listitem/para #: C/index-in.docbook:6013 #, fuzzy msgid "display_name: The name of the resource to be used for display as a UTF-8 encoded string" msgstr "display_name: Namnet på resursen att använda för visning som en UTF-8-kodad sträng" #. (itstool) path: listitem/para #: C/index-in.docbook:6017 #, fuzzy msgid "" "groups: A list of groups associated with this item. Groups are essentially arbitrary strings associated with a particular " "resource. They can be thought of as 'categories' (such as \"email\", \"graphics\", etc) or tags for the resource." msgstr "" "groups: En lista över grupper som är associerade med detta objekt. Grupper är i princip godtyckliga strängar associerade med " "en viss resurs. De kan tänkas på som ”kategorier” (som ”e-post”, ”grafik” o.s.v.) eller taggar för resursen." #. (itstool) path: listitem/para #: C/index-in.docbook:6023 msgid "is_private: Whether this resource should be visible only to applications that have registered it or not" msgstr "is_private: Huruvida denna resurs endast ska vara synlig för program som har registrerat den eller inte" #. (itstool) path: listitem/para #: C/index-in.docbook:6027 msgid "mime_type: The MIME type of the resource" msgstr "mime_type: MIME-typen för resursen" #. (itstool) path: section/para #: C/index-in.docbook:6030 msgid "In addition to adding items to the list, you can also look up items from the list and modify or remove items." msgstr "Utöver att lägga till objekt till listan kan du också slå upp objekt i listan och ändra eller ta bort objekt." #. (itstool) path: section/title #: C/index-in.docbook:6037 msgid "Looking up Items in the List of Recent Files" msgstr "Slå upp objekt i listan över senaste filer" #. (itstool) path: section/para #: C/index-in.docbook:6038 #, fuzzy msgid "" "To look up recently used files, RecentManager provides several functions. To look up a specific item by its URI, you can " "use the lookup_item() function, which will return a RecentInfo class. If the specified URI did " "not exist in the list of recent files, lookup_item() throws a RecentManagerError exception. For " "example:" msgstr "" "RecentManager tillhandahåller flera funktioner för att slå upp senast använda filer. För att slå upp ett visst objekt " "enligt dess URI kan du använda funktionen lookup_item(), vilken kommer returnera en RecentInfo-" "klass. Om den angivna URI:n inte finns i listan över senaste filer kommer lookup_item() kasta ett " "RecentManagerError-undantag. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6047 #, fuzzy, no-wrap msgid "" "Glib::RefPtr<Gtk::RecentInfo> info;\n" "try\n" "{\n" " info = recent_manager->lookup_item(uri);\n" "}\n" "catch(const Gtk::RecentManagerError& ex)\n" "{\n" " std::cerr << \"RecentManagerError: \" << ex.what() << std::endl;\n" "}\n" "if (info)\n" "{\n" " // item was found\n" "}" msgstr "" "Glib::RefPtr<Gtk::RecentInfo> info;\n" "try\n" "{\n" " info = recent_manager->lookup_item(uri);\n" "}\n" "catch(const Gtk::RecentManagerError& ex)\n" "{\n" " std::cerr << \"RecentManagerError: \" << ex.what() << std::endl;\n" "}\n" "if (info)\n" "{\n" " // objektet hittades\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:6060 #, fuzzy msgid "" "A RecentInfo object is essentially an object containing all of the metadata about a single recently-used file. You can " "use this object to look up any of the properties listed above." msgstr "" "Ett RecentInfo-objekt är i princip ett objekt som innehåller alla metadata om en ensam senast använd fil. Du kan använda " "detta objekt för att slå upp vilken som helst av egenskaperna listade ovan." #. (itstool) path: section/para #: C/index-in.docbook:6066 #, fuzzy msgid "" "If you don't want to look for a specific URI, but instead want to get a list of all recently used items, RecentManager " "provides the get_items() function. The return value of this function is a std::vector of all " "recently used files. The following code demonstrates how you might get a list of recently used files:" msgstr "" "Om du inte vill söka en viss URI, utan i stället vill få en lista över alla senast använda filer tillhandahåller RecentManager funktionen get_items(). Returvärdet för denna funktion är en std::vector med alla " "senast använda filer. Följande kod demonstrerar hur du kan få en lista över senast använda filer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6074 #, no-wrap msgid "auto info_list = recent_manager->get_items();" msgstr "auto info_list = recent_manager->get_items();" #. (itstool) path: section/para #: C/index-in.docbook:6075 #, fuzzy msgid "" "The maximum age of items in the recently used files list can be set with Gtk::Settings::property_gtk_recent_files_max_age(). Default value: 30 days." msgstr "" "Den högsta åldern på objekt i listan över senast använda filer kan ställas in med Gtk::Settings::" "property_gtk_recent_files_max_age(). Standardvärde: 30 dagar." #. (itstool) path: section/title #: C/index-in.docbook:6083 #, fuzzy msgid "Modifying the List of Recent Files" msgstr "Modifiera listan över senast använda filer" #. (itstool) path: section/para #: C/index-in.docbook:6084 #, fuzzy msgid "" "There may be times when you need to modify the list of recent files. For instance, if a file is moved or renamed, you may need to update the " "file's location in the recent files list so that it doesn't point to an incorrect location. You can update an item's location by using " "move_item()." msgstr "" "Det kan finnas tillfällen när du behöver ändra listan över senast använda filer. Om exempelvis en fil flyttas eller byter namn så kan du behöva " "uppdatera filens plats i listan över senast använda filer så den inte pekar på en ogiltig plats. Du kan uppdatera ett objekts plats genom att " "använda move_item()." #. (itstool) path: section/para #: C/index-in.docbook:6091 msgid "" "In addition to changing a file's URI, you can also remove items from the list, either one at a time or by clearing them all at once. The former " "is accomplished with remove_item(), the latter with purge_items()." msgstr "" "Utöver att ändra en fils URI kan du också ta bort objekt från listan, antingen ett åt gången eller genom att rensa bort alla samtidigt. Det " "tidigare åstadkoms med remove_item(), det senare med purge_items()." #. (itstool) path: note/para #: C/index-in.docbook:6098 #, fuzzy msgid "" "The functions move_item(), remove_item() and purge_items() have no " "effect on the actual files that are referred to by the URIs, they only modify the list of recent files." msgstr "" "Funktionerna move_item(), remove_item() och purge_items() påverkar " "inte de faktiska filerna som URI:erna hänvisar till, de ändrar bara listan över senaste filer." #. (itstool) path: section/title #: C/index-in.docbook:6110 msgid "FileChooser and FileDialog" msgstr "FileChooser och FileDialog" #. (itstool) path: section/para #: C/index-in.docbook:6112 msgid "" "FileChooser is an interface that can be implemented by widgets displaying a list of files. gtkmm provides three built-in implementations for choosing recent files or other files: FileChooserWidget, " "FileChooserDialog, and FileChooserNative." msgstr "" "FileChooser är ett gränssnitt som kan implementeras av komponenter som visar en lista med filer. gtkmm tillhandahåller tre inbyggda implementationer för att välja senaste filer eller andra filer: FileChooserWidget, FileChooserDialog och FileChooserNative." #. (itstool) path: section/para #: C/index-in.docbook:6121 #, fuzzy msgid "" "FileChooserWidget is a simple widget for displaying a list of recently used files or other files. " "FileChooserWidget is the basic building block for FileChooserDialog, but you can embed it into " "your user interface if you want to." msgstr "" "FileChooserWidget är ett enkelt gränssnitt för att visa en lista med senast använda filer eller andra filer. " "FileChooserWidget är grundblocket för FileChooserDialog, men du kan bädda in den i ditt " "användargränssnitt om du vill." #. (itstool) path: note/para #: C/index-in.docbook:6128 msgid "" "FileChooser and the classes that implement it are deprecated since gtkmm 4.10. They have been " "replaced by FileDialog, which is available since gtkmm 4.10." msgstr "" "FileChooser och klasserna som implementerar den är föråldrade sedan gtkmm 4.10. De har " "ersatts av FileDialog, vilken finns tillgänglig sedan gtkmm 4.10." #. (itstool) path: section/title #: C/index-in.docbook:6134 msgid "Simple FileDialog example" msgstr "Enkelt FileDialog-exempel" #. (itstool) path: section/para #: C/index-in.docbook:6136 #, fuzzy msgid "" "Shown below is a simple example of how to use the FileDialog class in a program. This simple program has a menubar with " "a File Dialog menu item. When you select this menu item, a dialog pops up showing a list of files. If you select " "Recent in the sidebar, the list of recently used files is shown." msgstr "" "Nedan visas ett enkelt exempel på hur du använder FileChooserDialog-klassen i ett program. Detta enkla program har en " "menyrad med ett menyobjekt File Chooser Dialog. När du väljer detta menyobjekt poppar en dialogruta upp som visar en " "fillista. Om du väljer Recent i sidopanelen visas listan över senast använda filer." #. (itstool) path: note/para #: C/index-in.docbook:6146 #, fuzzy msgid "" "If this is the first time you're using a program that uses the Recent Files framework, the dialog may be empty at first. Otherwise it should " "show the list of recently used documents registered by other applications." msgstr "" "Om detta är den första gången du använder ett program som använder senaste filer-ramverket kan dialogrutan till en början vara tom. I andra " "fall bör den visa listan över senast använda dokument som registrerats av andra program." #. (itstool) path: section/para #: C/index-in.docbook:6153 #, fuzzy msgid "" "After selecting the File Dialog menu item and the Recent sidebar item, you should see " "something similar to the following window." msgstr "" "Efter att ha valt menyobjektet File Chooser Dialog och sidopanelsobjektet Recent bör du " "se något liknande följande fönster." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:6159 #, fuzzy msgctxt "_" msgid "external ref='figures/recentfiles.png' md5='2ca280c98b5c8822ad48ca40f7ce0bb4'" msgstr "external ref='figures/recentfiles.png' md5='2ca280c98b5c8822ad48ca40f7ce0bb4'" #. (itstool) path: section/para #: C/index-in.docbook:6161 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:6162 msgid "" "The constructor for ExampleWindow creates the menu and the toolbar using Builder (see for more information). It then adds the menu and the toolbar to the window." msgstr "" "Konstruktorn för ExampleWindow skapar menyn och verktygsfältet med Builder (se for mer information). Den lägger sedan till menyn och verktygsfältet till fönstret." #. (itstool) path: section/title #: C/index-in.docbook:6170 msgid "Filtering Files" msgstr "Filtrera filer" #. (itstool) path: section/para #: C/index-in.docbook:6171 #, fuzzy msgid "" "For any of the FileChooser classes, if you don't wish to display all of the items in the list of files, you can filter " "the list to show only those that you want. You can filter the list with the help of the FileFilter class. This class " "allows you to filter files by their name (add_pattern()), or their mime type (add_mime_type())." msgstr "" "För alla FileChooser-klasser kan du filtrera listan så att bara de objekt som du vill se visas i fillistan. Du kan " "filtrera listan med hjälp av FileFilter-klassen. Denna klass låter dig filtrera filer efter deras namn " "(add_pattern()) eller deras mime-typ (add_mime_type())." #. (itstool) path: section/para #: C/index-in.docbook:6180 #, fuzzy msgid "" "After you've created and set up the filter to match only the items you want, you can apply a filter to a chooser widget with the " "FileChooser::add_filter() function." msgstr "" "Efter att du skapat och konfigurerat filtret så att det bara matchar de objekt du vill ha kan du tillämpa ett filter till en väljarkomponent " "med funktionen FileChooser::add_filter()." #. (itstool) path: chapter/title #: C/index-in.docbook:6190 msgid "Keyboard Events" msgstr "Tangentbordshändelser" #. (itstool) path: chapter/para #: C/index-in.docbook:6191 msgid "" "Event signals differ in some ways from other signals. These differences are described in the Event signals section in the appendix. Here we will use keyboard events to show how events can be used in a program." msgstr "" "Händelsesignaler skiljer sig på några sätt från andra signaler. Dessa skillnader beskrivs i avsnittet Händelsesignaler i bilagan. Här kommer vi använda tangentbordshändelser för att visa hur händelser kan användas i ett " "program." #. (itstool) path: section/title #: C/index-in.docbook:6198 msgid "Overview" msgstr "Översikt" #. (itstool) path: section/para #: C/index-in.docbook:6200 #, fuzzy msgid "" "Whenever you press or release a key, an event is emitted. You can add an event controller and connect a signal handler to handle such events." msgstr "" "Närhelst du trycker på eller släpper en tangent sänds en händelse ut. Du kan lägga till en händelsekontroll och ansluta en signalhanterare för " "att hantera sådana händelser." #. (itstool) path: section/para #: C/index-in.docbook:6204 msgid "" "The event signal handler will receive arguments that depend on the type of event. For key press events the arguments are (guint " "keyval, guint keycode, Gdk::ModifierType state). As " "described in the appendix, the key press event signal handler returns a bool value, to " "indicate that the signal is fully handled (true) or allow event propagation (false)." msgstr "" "Händelsesignalhanteraren kommer ta emot argument som beror på händelsetypen. För tangenttryckshändelser är argumenten (guint " "keyval, guint keycode, Gdk::ModifierType state). Som " "beskrivet i bilagan, returnerar signalhanteraren för tangenttryckshändelsen ett bool-" "värde för att indikera att signalen hanteras fullständigt (true) eller tillåter händelsespridning (false)." #. (itstool) path: section/para #: C/index-in.docbook:6213 #, fuzzy msgid "" "To determine which key was pressed or released, you read the value of the keyval argument and compare it with a constant in " "the <gdk/gdkkeysyms.h> " "header file. The states of modifier keys (shift, ctrl, etc.) are available as bit-flags in state." msgstr "" "För att avgöra vilken tangent som trycktes ned eller släpptes läser du värdet på argumentet keyval och jämför det med en " "konstant i header-filen <gdk/gdkkeysyms.h>. Tillstånden för modifierartangenter (skift, ctrl o.s.v.) finns tillgängliga som bitflaggor i state." #. (itstool) path: section/para #: C/index-in.docbook:6221 C/index-in.docbook:9186 msgid "Here's a simple example:" msgstr "Här är ett enkelt exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6224 #, fuzzy, no-wrap msgid "" "\n" "bool MyClass::on_key_pressed(guint keyval, guint, Gdk::ModifierType state)\n" "{\n" " if (keyval == GDK_KEY_1 &&\n" " (state & (Gdk::ModifierType::SHIFT_MASK | Gdk::ModifierType::CONTROL_MASK |\n" " Gdk::ModifierType::ALT_MASK)) == Gdk::ModifierType::ALT_MASK)\n" " {\n" " handle_alt_press();\n" " return true;\n" " }\n" " return false;\n" "}\n" "\n" "// in MyClass constructor\n" "auto controller = Gtk::EventControllerKey::create();\n" "controller->signal_key_pressed().connect(\n" " sigc::mem_fun(*this, &MyClass::on_key_pressed), false);\n" "add_controller(controller);\n" msgstr "" "\n" "bool MyClass::on_key_pressed(guint keyval, guint, Gdk::ModifierType state)\n" "{\n" " if (keyval == GDK_KEY_1 &&\n" " (state & (Gdk::ModifierType::SHIFT_MASK | Gdk::ModifierType::CONTROL_MASK |\n" " Gdk::ModifierType::ALT_MASK)) == Gdk::ModifierType::ALT_MASK)\n" " {\n" " handle_alt_press();\n" " return true;\n" " }\n" " return false;\n" "}\n" "\n" "// i MyClass-konstruktor\n" "auto controller = Gtk::EventControllerKey::create();\n" "controller->signal_key_pressed().connect(\n" " sigc::mem_fun(*this, &MyClass::on_key_pressed), false);\n" "add_controller(controller);\n" #. (itstool) path: section/para #: C/index-in.docbook:6247 msgid "" "In this example there are three keyboard shortcuts: Alt+1 selects the first radio button, Alt+2 selects the second one, and the Esc key hides (closes) the window." msgstr "" "I detta exempel finns det tre tangentbordsgenvägar: Alt+1 väljer den första radioknappen, Alt+2 väljer den andra, och Esc döljer (stänger) fönstret." #. (itstool) path: figure/title #: C/index-in.docbook:6255 #, fuzzy msgid "Keyboard Events - Simple" msgstr "Tangentbordshändelser - Enkelt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:6257 #, fuzzy msgctxt "_" msgid "external ref='figures/keyboardevents_simple.png' md5='59e69135f7b646af1a9f528eba13a5df'" msgstr "external ref='figures/keyboardevents_simple.png' md5='59e69135f7b646af1a9f528eba13a5df'" #. (itstool) path: section/para #: C/index-in.docbook:6261 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6266 #, fuzzy msgid "Event Propagation" msgstr "Händelsespridning" #. (itstool) path: listitem/simpara #: C/index-in.docbook:6272 C/index-in.docbook:9226 #, fuzzy msgid "Capture phase - runs from the toplevel down to the event widget." msgstr "Fångstfas - körs från toppnivån ner till händelsekomponenten." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6273 C/index-in.docbook:9227 #, fuzzy msgid "Target phase - runs only on the event widget." msgstr "Målfas - körs bara på händelsekomponenten." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6274 C/index-in.docbook:9228 #, fuzzy msgid "Bubble phase - runs from the event widget up to the toplevel." msgstr "Bubbelfas - körs från händelsekomponenten upp till toppnivån." #. (itstool) path: section/para #: C/index-in.docbook:6268 #, fuzzy msgid "As described in the appendix event signals are propagated in 3 phases: <_:orderedlist-1/>" msgstr "Som beskrivs i bilagan sprids händelsesignaler i 3 faser: <_:orderedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:6277 #, fuzzy msgid "" "A keyboard event is first sent to the toplevel window (Gtk::Window), where it will be checked for any keyboard shortcuts " "that may be set (accelerator keys and mnemonics, used for selecting menu items from the keyboard). After this (and assuming the event wasn't " "handled), it is propagated down until it reaches the widget which has keyboard focus. The event will then propagate up until it reaches the top-" "level widget, or until you stop the propagation by returning true from an event handler." msgstr "" "En tangentbordshändelse skickas först till toppnivåfönstret (Gtk::Window), där den kommer kontrolleras för " "tangentbordsgenvägar som kan ha satts (snabbtangenter och kortkommandon, använda för att välja menyobjekt från tangentbordet). Efter detta (och " "om vi antar att händelsen inte hanterats), så sprids den nedåt tills den når komponenten som har tangentbordsfokus. Händelsen kommer sedan " "spridas uppåt tills den når toppnivåkomponenten, eller till du stoppar spridningen genom att returnera true från en " "händelsehanterare." #. (itstool) path: section/para #: C/index-in.docbook:6287 #, fuzzy msgid "Notice, that after canceling an event, no other function will be called (even if it is from the same widget)." msgstr "Observera att efter att ha avbrutit en händelse kommer ingen annan funktion att anropas (även om den är från samma komponent)." #. (itstool) path: section/para #: C/index-in.docbook:6295 #, fuzzy msgid "" "In this example there are 9 EventControllerKeys, 3 in each of a Gtk::Window, a Gtk::" "Box and a Gtk::Label. In each of the widgets there is one event controller for each propagation phase." msgstr "" "I detta exempel finns det 9 EventControllerKey, 3 i varje av ett Gtk::Window, en Gtk::" "Box och en Gtk::Label. I var och en av komponenterna finns en händelsekontroll för varje spridningsfas." #. (itstool) path: section/para #: C/index-in.docbook:6301 #, fuzzy msgid "The purpose of this example is to show the steps the event takes when it is emitted." msgstr "Syftet med detta exempel är att visa stegen som händelsen tar när den sänds ut." #. (itstool) path: section/para #: C/index-in.docbook:6304 #, fuzzy msgid "" "When you write in the label, a key press event will be emitted, which will go first, in the capture phase, to the toplevel window " "(Gtk::Window), then down to its child, the box, then to the box's child, the label with the keyboard focus. In the " "target phase the event goes only to the widget with the keyboard focus (the label). In the bubble phase the event goes first to the widget with " "the keyboard focus (the label), then to its parent (the box), then to the box's parent (the window). If the event propagates all the way down " "to the label and then up to the window without being stopped, the text you're writing will appear in the Label above the " "Label you're writing in." msgstr "" "När du skriver i etiketten kommer en tangenttryckshändelse sändas ut, vilken först i fångstfasen går till toppnivåfönstret (Gtk::" "Window), sedan till dess underordnade box, sedan till boxens underordnade, etiketten med tangentbordsfokus. I målfasen går " "händelsen endast till komponenten med tangentbordsfokus (etiketten). I bubbelfasen går händelsen först till komponenten med tangentbordsfokus " "(etiketten), sedan till dess överordnade (boxen). sedan till boxens överordnade (fönstret). Om händelsen sprids hela vägen till etiketten och " "sedan upp till fönstret utan att stoppas kommer texten du skriver dyka upp i den Label som är ovanför den " "Label du skriver i." #. (itstool) path: figure/title #: C/index-in.docbook:6319 #, fuzzy msgid "Keyboard Events - Event Propagation" msgstr "Tangentbordshändelser - Händelsespridning" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:6321 #, fuzzy msgctxt "_" msgid "external ref='figures/keyboardevents_propagation.png' md5='4250a1b17c413f3243cf11485e7a7bb9'" msgstr "external ref='figures/keyboardevents_propagation.png' md5='4250a1b17c413f3243cf11485e7a7bb9'" #. (itstool) path: section/para #: C/index-in.docbook:6325 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:6331 #, fuzzy msgid "Timeouts, I/O and Idle Functions" msgstr "Timeout, I/O och inaktivitetsfunktioner" #. (itstool) path: section/title #: C/index-in.docbook:6334 msgid "Timeouts" msgstr "Timeout" #. (itstool) path: section/para #: C/index-in.docbook:6336 #, fuzzy msgid "" "You may be wondering how to make gtkmm do useful work while it's idling along. Happily, you have several options. " "Using the following methods you can create a timeout method that will be called every few milliseconds." msgstr "" "Du kanske funderar hur du kan få gtkmm att göra något nyttigt medan det är inaktivt. Lyckligtvis har du flera " "alternativ. Med de följande metoderna kan du skapa en timeout-metod som kommer anropas med några millisekunders intervall." #. (itstool) path: section/programlisting #: C/index-in.docbook:6342 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection Glib::SignalTimeout::connect(const sigc::slot<bool()>& slot,\n" " unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n" msgstr "" "\n" "sigc::connection Glib::SignalTimeout::connect(const sigc::slot<bool()>& slot,\n" " unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n" #. (itstool) path: section/para #: C/index-in.docbook:6347 #, fuzzy msgid "" "The first argument is a slot you wish to have called when the timeout occurs. The second argument is the number of " "milliseconds between calls to that method. You receive a sigc::connection object that can be used to deactivate the " "connection using its disconnect() method:" msgstr "" "Det första argumentet är en slot som du vill ha anropad när timeouten inträffar. Det andra argumentet är antal " "millisekunder mellan anrop till den metoden. Du erhåller ett sigc::connection-objekt som kan användas för att inaktivera " "anslutningen med dess disconnect()-metod:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6355 #, fuzzy, no-wrap msgid "" "\n" "my_connection.disconnect();\n" msgstr "" "\n" "my_connection.disconnect();\n" #. (itstool) path: section/para #: C/index-in.docbook:6359 #, fuzzy msgid "" "Another way of destroying the connection is your signal handler. It has to be of the type sigc::slot<bool()>. As " "you see from the definition your signal handler has to return a value of the type bool. A definition of a sample method " "might look like this:" msgstr "" "Ett annat sätt att förstöra anslutningen är din signalhanterare. Den måste vara av typen sigc::slot<bool()>. Som " "du kan se från definitionen måste din signalhanterare returnera ett värde av typen bool. En definition av en exempelmetod " "kan se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6367 #, fuzzy, no-wrap msgid "" "\n" "bool MyCallback() { std::cout << \"Hello World!\\n\" << std::endl; return true; }\n" msgstr "" "\n" "bool MyCallback() { std::cout << \"Hej världen!\\n\" << std::endl; return true; }\n" #. (itstool) path: section/para #: C/index-in.docbook:6371 #, fuzzy msgid "" "You can stop the timeout method by returning false from your signal handler. Therefore, if you want your method to be called " "repeatedly, it should return true." msgstr "" "Du kan stoppa timeoutmetoden genom att returnera false från din signalhanterare. Om du vill att din method ska anropas " "upprepat bör den därför returnera true." #. (itstool) path: section/para #: C/index-in.docbook:6377 msgid "Here's an example of this technique:" msgstr "Här är ett exempel på denna teknik:" #. (itstool) path: section/para #: C/index-in.docbook:6381 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6386 #, fuzzy msgid "Monitoring I/O" msgstr "Övervaka I/O" #. (itstool) path: section/para #: C/index-in.docbook:6388 #, fuzzy msgid "" "A nifty feature of Glib (one of the libraries underlying gtkmm) is the ability to have it check for data on a file " "descriptor for you. This is especially useful for networking applications. The following method is used to do this:" msgstr "" "En häftig funktion i Glib (ett av biblioteken bakom gtkmm) är förmågan att få det att kontrollera data på en " "filbeskrivare för dig. Detta är speciellt användbart för nätverksprogram. Följande metod används för att göra detta:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6395 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection Glib::SignalIO::connect(const sigc::slot<bool(Glib::IOCondition)>& slot,\n" " Glib::PollFD::fd_t fd, Glib::IOCondition condition,\n" " int priority = Glib::PRIORITY_DEFAULT);\n" msgstr "" "\n" "sigc::connection Glib::SignalIO::connect(const sigc::slot<bool(Glib::IOCondition)>& slot,\n" " Glib::PollFD::fd_t fd, Glib::IOCondition condition,\n" " int priority = Glib::PRIORITY_DEFAULT);\n" #. (itstool) path: section/para #: C/index-in.docbook:6401 #, fuzzy msgid "" "The first argument is a slot you wish to have called when the specified event (see argument 3) occurs on the file descriptor you specify using " "argument two. Argument three may be one or more (using |) of:" msgstr "" "Det första argumentet är ett fack som du vill ska anropas när den angivna händelsen (se argument 3) inträffar på filbeskrivaren du anger med " "argument 2. Argument 3 kan vara en eller flera (med |) av:" #. (itstool) path: listitem/para #: C/index-in.docbook:6410 #, fuzzy msgid "Glib::IOCondition::IO_IN - Call your method when there is data ready for reading on your file descriptor." msgstr "Glib::IOCondition::IO_IN - Anropa din metod när det finns data redo för läsning på din filbeskrivare." #. (itstool) path: listitem/para #: C/index-in.docbook:6416 #, fuzzy msgid "Glib::IOCondition::IO_OUT - Call your method when the file descriptor is ready for writing." msgstr "Glib::IOCondition::IO_OUT - Anropa din metod när filbeskrivaren är redo för skrivning." #. (itstool) path: listitem/para #: C/index-in.docbook:6422 #, fuzzy msgid "Glib::IOCondition::IO_PRI - Call your method when the file descriptor has urgent data to be read." msgstr "Glib::IOCondition::IO_PRI - Anropa din metod när filbeskrivaren har brådskande data för läsning." #. (itstool) path: listitem/para #: C/index-in.docbook:6427 #, fuzzy msgid "Glib::IOCondition::IO_ERR - Call your method when an error has occurred on the file descriptor." msgstr "Glib::IOCondition::IO_ERR - Anropa din metod när ett fel har inträffat på filbeskrivaren." #. (itstool) path: listitem/para #: C/index-in.docbook:6432 #, fuzzy msgid "Glib::IOCondition::IO_HUP - Call your method when hung up (the connection has been broken usually for pipes and sockets)." msgstr "Glib::IOCondition::IO_HUP - Anropa din metod när anslutningen läggs på (anslutningen har brutits, vanligen för rör och uttag)." #. (itstool) path: section/para #: C/index-in.docbook:6438 #, fuzzy msgid "" "The return value is a sigc::connection that may be used to stop monitoring this file descriptor using its " "disconnect() method. The slot signal handler should be declared as follows:" msgstr "" "Returvärdet är en sigc::connection som kan användas för att sluta övervaka denna filbeskrivare med dess " "disconnect()-metod. slot-signalhanteraren ska deklareras enligt följande:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6444 #, fuzzy, no-wrap msgid "" "\n" "bool input_callback(Glib::IOCondition condition);\n" msgstr "" "\n" "bool input_callback(Glib::IOCondition condition);\n" #. (itstool) path: section/para #: C/index-in.docbook:6448 #, fuzzy msgid "" "where condition is as specified above. As usual the slot is created with sigc::mem_fun() (for a " "member method of an object), or sigc::ptr_fun() (for a function). A lambda expression can be used, if you don't need the " "automatic disconnection that sigc::mem_fun() provides when the object goes out of scope." msgstr "" "där condition är som beskrivet ovan. Som vanligt skapas facket med sigc::mem_fun() (för en " "medlemsmetod för ett objekt), eller sigc::ptr_fun() (för en funktion). Ett lambdauttryck kan användas om du inte behöver " "den automatiska frånkopplingen som sigc::mem_fun() tillhandahåller då objektet lämnar räckvidden." #. (itstool) path: section/para #: C/index-in.docbook:6457 #, fuzzy msgid "" "A little example follows. To use the example just execute it from a terminal; it doesn't create a window. It will create a pipe named " "testfifo in the current directory. Then start another shell and execute echo \"Hello\" > testfifo. The " "example will print each line you enter until you execute echo \"Q\" > testfifo." msgstr "" "Ett litet exempel följer. För att använda exemplet kör du det bara från en terminal, det skapar inget fönster. Det kommer skapa ett rör med " "namnet testfifo i aktuell katalog. Starta sedan ett annat skal och exekvera echo \"Hello\" > testfifo. " "Exemplet kommer skriva ut varje rad som du matar in, tills du exekverar echo \"Q\" > testfifo." #. (itstool) path: section/para #: C/index-in.docbook:6466 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6471 #, fuzzy msgid "Idle Functions" msgstr "Inaktivitetsfunktioner" #. (itstool) path: section/para #: C/index-in.docbook:6473 msgid "If you want to specify a method that gets called when nothing else is happening, use the following:" msgstr "Om du vill ange en metod som anropas när inget annat händer använder du följande:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6477 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection Glib::SignalIdle::connect(const sigc::slot<bool()>& slot,\n" " int priority = Glib::PRIORITY_DEFAULT_IDLE);\n" msgstr "" "\n" "sigc::connection Glib::SignalIdle::connect(const sigc::slot<bool()>& slot,\n" " int priority = Glib::PRIORITY_DEFAULT_IDLE);\n" #. (itstool) path: section/para #: C/index-in.docbook:6482 #, fuzzy msgid "" "This causes gtkmm to call the specified method whenever nothing else is happening. You can add a priority (lower " "numbers are higher priorities). There are two ways to remove the signal handler: calling disconnect() on the " "sigc::connection object, or returning false in the signal handler, which should be declared as " "follows:" msgstr "" "Detta får gtkmm att anropa den angivna metoden när inget annat händer. Du kan lägga till en prioritet (lägre tal har " "högre prioritet). Det finns två sätt att ta bort signalhanteraren: anropa disconnect()sigc::connection-objektet, eller returnera false i signalhanteraren, vilket bör deklareras enligt följande:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6491 #, no-wrap msgid "" "\n" "bool idleFunc();\n" msgstr "" "\n" "bool idleFunc();\n" #. (itstool) path: section/para #: C/index-in.docbook:6495 msgid "" "Since this is very similar to the methods above this explanation should be sufficient to understand what's going on. However, here's a little " "example:" msgstr "Eftersom detta är väldigt likt metoderna ovan bör denna förklaring räcka för att förstå vad som pågår. Här kommer dock ett litet exempel:" #. (itstool) path: section/para #: C/index-in.docbook:6500 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:6502 #, fuzzy msgid "" "This example points out the difference of idle and timeout methods a little. If you need methods that are called periodically, and speed is not " "very important, then you want timeout methods. If you want methods that are called as often as possible (like calculating a fractal in " "background), then use idle methods." msgstr "" "Detta exempel pekar på skillnaden mellan inaktivitets- och timeout-metoder lite grann. Om du behöver metoder som anropas med jämna intervall, " "och hastighet inte är så viktigt, så vill du ha timeout-metoder. Om du vill ha metoder som anropas så ofta som möjligt (som att beräkna en " "fraktal i bakgrunden), så använd inaktivitetsmetoder." #. (itstool) path: section/para #: C/index-in.docbook:6510 #, fuzzy msgid "Try executing the example and increasing the system load. The upper progress bar will increase steadily; the lower one will slow down." msgstr "Försök köra exemplet och öka systemets belastning. Den övre förloppsindikatorn kommer öka stadigt, den nedre kommer sakta ner." #. (itstool) path: chapter/title #: C/index-in.docbook:6520 msgid "Memory management" msgstr "Minneshantering" #. (itstool) path: section/title #: C/index-in.docbook:6526 msgid "Normal C++ memory management" msgstr "Vanlig C++-minneshantering" #. (itstool) path: section/para #: C/index-in.docbook:6528 #, fuzzy msgid "" "gtkmm allows the programmer to control the lifetime (that is, the construction and destruction) of any widget in the " "same manner as any other C++ object. This flexibility allows you to use new and delete to create and " "destroy objects dynamically or to use regular class members (that are destroyed automatically when the class is destroyed) or to use local " "instances (that are destroyed when the instance goes out of scope). This flexibility is not present in some C++ GUI toolkits, which restrict " "the programmer to only a subset of C++'s memory management features." msgstr "" "gtkmm tillåter programmeraren att styra livstiden (det vill säga konstruktionen och förstörandet) av alla " "komponenter på samma sätt som andra C++-objekt. Denna flexibilitet låter dig använda new och delete för " "att skapa och förstöra objekt dynamiskt eller använda vanliga klassmedlemmar (som förstörs automatiskt när klassen förstörs) eller använda " "lokala instanser (som förstörs när instansen lämnar räckvidden). Denna flexibilitet finns inte i vissa C++-GUI-verktygslådor, vilket begränsar " "programmeraren till bara en delmängd av C++:s minneshanteringsfunktioner." #. (itstool) path: section/para #: C/index-in.docbook:6540 msgid "Here are some examples of normal C++ memory management:" msgstr "Här är några exempel på vanlig C++-minneshantering:" #. (itstool) path: section/title #: C/index-in.docbook:6543 #, fuzzy msgid "Class Scope widgets" msgstr "Klassräckviddskomponenter" #. (itstool) path: section/para #: C/index-in.docbook:6545 #, fuzzy msgid "" "If a programmer does not need dynamic memory allocation, automatic widgets in class scope may be used. One advantage of automatic widgets in " "class scope is that memory management is grouped in one place. The programmer does not risk memory leaks from failing to delete a widget." msgstr "" "Om en programmerare inte behöver dynamisk minnesallokering kan automatiska komponenter i klassräckvidd användas. En fördel med automatiska " "komponenter i klassräckvidd är att minneshantering grupperas på ett ställe. Programmeraren behöver inte riskera minnesläckor från att missa " "delete för en komponent." #. (itstool) path: section/para #: C/index-in.docbook:6552 #, fuzzy msgid "" "The primary disadvantage of using class scope widgets is revealing the class implementation rather than the class interface in the class header." msgstr "" "Den primära fördelen med att använda klassräckviddskomponenter är att avslöja klassimplementationen snarare än klassgränssnittet i klasshuvudet." #. (itstool) path: section/programlisting #: C/index-in.docbook:6557 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "#include <gtkmm/window.h>\n" "class Foo : public Gtk::Window\n" "{\n" "private:\n" " Gtk::Button theButton;\n" " // will be destroyed when the Foo object is destroyed\n" "};\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "#include <gtkmm/window.h>\n" "class Foo : public Gtk::Window\n" "{\n" "private:\n" " Gtk::Button theButton;\n" " // kommer förstöras när objektet Foo förstörs\n" "};\n" #. (itstool) path: section/title #: C/index-in.docbook:6570 #, fuzzy msgid "Function scope widgets" msgstr "Funktionsräckviddskomponenter" #. (itstool) path: section/para #: C/index-in.docbook:6572 #, fuzzy msgid "" "If a programmer does not need a class scope widget, a function scope widget may also be used. The advantages to function scope over class scope " "are the increased data hiding and reduced dependencies." msgstr "" "Om en programmerare inte behöver en klassräckviddskomponent kan en funktionsräckviddskomponent också användas. Fördelarna med funktionsräckvidd " "över klassräckvidd är det ökade datadöljandet och minskade beroendena." #. (itstool) path: section/programlisting #: C/index-in.docbook:6577 #, no-wrap msgid "" "\n" "{\n" " Gtk::Button aButton;\n" " aButton.set_visible(true);\n" " ...\n" " app->run();\n" "}\n" msgstr "" "\n" "{\n" " Gtk::Button aButton;\n" " aButton.set_visible(true);\n" " ...\n" " app->run();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6585 #, fuzzy msgid "" "However, this technique is rarely useful. Most widgets can't safely be created before the application has been registered or activated. They " "can't safely be deleted after Gtk::Application::run() or Gtk::Application::make_window_and_run() returns." msgstr "" "Denna teknik är dock sällan användbar. De flesta komponenter kan inte på ett säkert sätt skapas innan programmet har registrerats eller " "aktiverats. De kan inte på ett säkert sätt tas bort efter att Gtk::Application::run() eller Gtk::" "Application::make_window_and_run() returnerar." #. (itstool) path: section/title #: C/index-in.docbook:6595 msgid "Dynamic allocation with new and delete" msgstr "Dynamisk allokering med new och delete" #. (itstool) path: para/programlisting #: C/index-in.docbook:6605 #, no-wrap msgid "" "\n" "auto pButton = new Gtk::Button(\"Test\");\n" "\n" "// do something useful with pButton\n" "\n" "delete pButton;\n" msgstr "" "\n" "auto pButton = new Gtk::Button(\"Test\");\n" "\n" "// gör något användbart med pButton\n" "\n" "delete pButton;\n" #. (itstool) path: section/para #: C/index-in.docbook:6597 msgid "" "Usually, the programmer will prefer to allow containers to automatically destroy their children by creating them using Gtk::" "make_managed() (see below). This is not strictly required, as the new and delete operators may " "also be used, but modern C++ style discourages those in favor of safer models of memory management, so it is better to create widgets using " "Gtk::make_managed() and let their parent destroy them, than to manually perform dynamic allocation. <_:programlisting-1/> " "Here, the programmer deletes pButton to prevent a memory leak." msgstr "" "Vanligen kommer programmeraren föredra att tillåta behållare att automatiskt förstöra sina underordnade genom att skapa dem med Gtk::" "make_managed() (se nedan). Detta är inte strikt nödvändigt då operatorerna new och delete " "också kan användas, men modern C++-stil avråder från dessa till förmån för säkrare minneshanteringsmodeller, så det är bättre att skapa " "komponenter med Gtk::make_managed() och låta deras överordnade förstöra dem än att manuellt utföra dynamisk allokering. <_:" "programlisting-1/> Här tar programmeraren bort pButton för att förhindra en minnesläcka." #. (itstool) path: section/title #: C/index-in.docbook:6619 msgid "Managed Widgets" msgstr "Hanterade komponenter" #. (itstool) path: section/para #: C/index-in.docbook:6621 #, fuzzy msgid "" "Alternatively, you can let a widget's container control when the widget is destroyed. In most cases, you want a widget to last only as long as " "the container it is in. To delegate the management of a widget's lifetime to its container, create it with Gtk::make_managed() and then pack it into its container with Gtk::Box::append() or a similar method. Now the widget will be " "destroyed whenever its container is destroyed." msgstr "" "Alternativt kan du låta en komponents behållare styra när komponenten förstörs. I de flesta fall vill du att en komponent ska finnas lika länge " "som behållaren den är i. För att delegera hanteringen av en komponents livstid till dess behållare skapar du den med Gtk::" "make_managed() och packar sedan in den i dess behållare med Gtk::Box::append() eller en liknande metod. Nu " "kommer komponenten förstöras närhelst dess behållare förstörs." #. (itstool) path: section/title #: C/index-in.docbook:6631 msgid "Dynamic allocation with make_managed() and append()" msgstr "Dynamisk allokering med make_managed() och append()" #. (itstool) path: section/para #: C/index-in.docbook:6633 #, fuzzy msgid "" "gtkmm provides ways including the make_managed() function and Gtk::Box::append() method to simplify creation and destruction of widgets whose lifetime can be managed by a parent." msgstr "" "gtkmm tillhandahåller sätt som make_managed()-funktionen och Gtk::Box::append()-metoden för att förenkla skapande och förstörande av komponenter vars livstid kan hanteras av en överordnad." #. (itstool) path: section/para #: C/index-in.docbook:6639 #, fuzzy msgid "" "Every widget except a top-level window must be added to a parent container in order to be displayed. The manage() function " "marks a widget so that when that widget is added to a parent container, said container becomes responsible for deleting the widget, meaning the " "user no longer needs to do so. The original way to create widgets whose lifetime is managed by their parent in this way was to call " "manage(), passing in the result of a new expression that created a dynamically allocated widget." msgstr "" "Varje komponent förutom en toppnivåkomponent måste läggas till i en överordnad behållare för att visas. Funktionen manage() markerar en komponent så att när den komponenten läggs till i en överordnad behållare så blir denna behållare ansvarig för att ta " "bort komponenten, vilket betyder att användaren inte behöver göra det. Det ursprungliga sättet att skapa komponenter vars livstid hanteras av " "deras överordnade på detta sätt var att anropa manage(), och skicka med resultatet av ett new-uttryck " "som skapat en dynamiskt allokerad komponent." #. (itstool) path: section/para #: C/index-in.docbook:6649 #, fuzzy msgid "" "However, usually, when you create such a widget, you will already know that its parent container should be responsible for destroying it. In " "addition, modern C++ style discourages use of the new operator, which was required when passing a newly created widget to " "manage(). Therefore, gtkmm has added make_managed(), which combines " "creation and marking with manage() into a single step. This avoids you having to write new, which is " "discouraged in modern C++ style, and more clearly expresses intent to create a managed widget." msgstr "" "Oftast kommer du dock när du skapar en sådan komponent redan veta att dess överordnade behållare ska vara ansvarig för att förstöra den. Vidare " "avråder modern C++-stil från användning av new-operatorn, vilken krävdes då en nyss skapad komponent skickades till " "manage(). gtkmm har därför lagt till make_managed() som kombinerar " "skapande och markerande med manage() till ett enda steg. Detta undviker att du behöver skriva new, " "vilket avrådes från i modern C++-stil, och mer tydligt uttrycker avsikten att skapa en hanterad komponent." #. (itstool) path: section/programlisting #: C/index-in.docbook:6660 #, no-wrap msgid "" "\n" "MyContainer::MyContainer()\n" "{\n" " auto pButton = Gtk::make_managed<Gtk::Button>(\"Test\");\n" " append(*pButton); //add *pButton to MyContainer\n" "}\n" msgstr "" "\n" "MyContainer::MyContainer()\n" "{\n" " auto pButton = Gtk::make_managed<Gtk::Button>(\"Test\");\n" " append(*pButton); //lägg till *pButton till MyContainer\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6667 #, fuzzy msgid "" "Now, when objects of type MyContainer are destroyed, the button will also be deleted. It is no longer necessary to " "delete pButton to free the button's memory; its deletion has been delegated to the MyContainer object." msgstr "" "När objekt av typen MyContainer nu förstörs kommer även knappen tas bort. Det är inte längre nödvändigt att ta bort " "pButton för att frigöra knappens minne. Dess borttagning har delegerats till MyContainer-objektet." #. (itstool) path: section/para #: C/index-in.docbook:6674 msgid "" "If you never added the widget to any parent container, it's your responsibility to delete it. If you add it to a container widget, and later " "remove it (for instance with Gtk::Box::remove()), it's deleted by the container." msgstr "" "Om du aldrig la till komponenten till någon överordnad behållare så är det ditt ansvar att ta bort den. Om du lägger till den till en " "behållarkomponent, och sedan tar bort den (exempelvis med Gtk::Box::remove()), så tas den bort av behållaren." #. (itstool) path: section/para #: C/index-in.docbook:6681 #, fuzzy msgid "" "Of course, a top-level container will not be added to another container. The programmer is responsible for destroying the top-level container " "using one of the traditional C++ techniques. Or you can let Gtk::Application::make_window_and_run() create a top-level " "window and delete it when it's hidden." msgstr "" "En toppnivåbehållare kommer förstås inte läggas till i en annan behållare. Programmeraren är ansvarig att förstöra toppnivåbehållaren med en av " "de traditionella C++-teknikerna. Eller så kan du låta Gtk::Application::make_window_and_run() skapa ett " "toppnivåfönster och ta bort det då det döljs." #. (itstool) path: section/title #: C/index-in.docbook:6693 msgid "Shared resources" msgstr "Delade resurser" #. (itstool) path: section/para #: C/index-in.docbook:6695 #, fuzzy msgid "" "Some objects, such as Gdk::Pixbufs and Pango::Fonts, are obtained from a shared store. Therefore " "you cannot instantiate your own instances. These classes typically inherit from Glib::Object. Rather than requiring you " "to reference and unreference these objects, gtkmm uses the Glib::RefPtr<> smartpointer. " "Cairomm has its own smartpointer, Cairo::RefPtr<>." msgstr "" "Vissa objekt, som Gdk::Pixbuf och Pango::Font erhålls från en delad lagring. Du kan därför inte " "instansiera dina egna instanser. Dessa klasser ärver typiskt från Glib::Object. Snarare än att kräva att du refererar " "och derefererar dessa objekt använder gtkmm smartpekaren Glib::RefPtr<>. Cairomm har " "sin egen smartpekare, Cairo::RefPtr<>." #. (itstool) path: section/para #: C/index-in.docbook:6705 msgid "" "Objects such as Gdk::Pixbuf can only be instantiated with a create() function. For instance," msgstr "Objekt som Gdk::Pixbuf kan endast instansieras med en create()-funktion. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6709 #, fuzzy, no-wrap msgid "" "\n" "auto pixbuf = Gdk::Pixbuf::create_from_file(filename);\n" msgstr "" "\n" "auto pixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" #. (itstool) path: section/para #: C/index-in.docbook:6713 #, fuzzy msgid "" "You have no way of getting a bare Gdk::Pixbuf. In the example, pixbuf is a smart pointer, so you can " "do this, much like a normal pointer:" msgstr "" "Du kan inte erhålla en naken Gdk::Pixbuf. I exemplet är pixbuf en smartpekare, så du kan göra detta i " "stort sett som en vanlig pekare:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6718 #, no-wrap msgid "" "\n" "auto width = 0;\n" "if(pixbuf)\n" "{\n" " width = pixbuf->get_width();\n" "}\n" msgstr "" "\n" "auto width = 0;\n" "if(pixbuf)\n" "{\n" " width = pixbuf->get_width();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6726 #, fuzzy msgid "" "When pixbuf goes out of scope an unref() will happen in the background and you don't need to worry " "about it anymore. There's no new so there's no delete." msgstr "" "När pixbuf lämnar räckvidden kommer en unref() hända i bakgrunden så behöver du inte oroa dig om " "det längre. Det finns inget new, så det finns inget delete." #. (itstool) path: para/programlisting #: C/index-in.docbook:6734 #, no-wrap msgid "" "\n" "auto pixbuf2 = pixbuf;\n" msgstr "" "\n" "auto pixbuf2 = pixbuf;\n" #. (itstool) path: section/para #: C/index-in.docbook:6732 #, fuzzy msgid "" "If you copy a RefPtr, for instance <_:programlisting-1/> , or if you pass it as a method argument or a return type, then " "RefPtr will do any necessary referencing to ensure that the instance will not be destroyed until the last " "RefPtr has gone out of scope." msgstr "" "Om du kopierar en RefPtr, till exempel <_:programlisting-1/> , eller om du skickar det som ett metodargument eller en " "returtyp så kommer RefPtr göra all nödvändig refererering för att säkerställa att instansen inte kommer förstöras innan " "den sista RefPtr har lämnat räckvidden." #. (itstool) path: section/para #: C/index-in.docbook:6742 #, fuzzy msgid "See the appendix for detailed information about RefPtr." msgstr "Se bilagan för detaljerad information om RefPtr." #. (itstool) path: listitem/para #: C/index-in.docbook:6747 msgid "Bjarne Stroustrup, \"The C++ Programming Language\" Fourth Edition - section 34.3" msgstr "Bjarne Stroustrup, ”The C++ Programming Language”, 4:e utgåvan - avsnitt 34.3" #. (itstool) path: listitem/para #: C/index-in.docbook:6750 msgid "Nicolai M. Josuttis, \"The C++ Standard Library\" - section 4.2" msgstr "Nicolai M. Josuttis, ”The C++ Standard Library” - avsnitt 4.2" #. (itstool) path: section/para #: C/index-in.docbook:6743 msgid "If you wish to learn more about smartpointers, you might look in these books: <_:itemizedlist-1/>" msgstr "Om du vill lära dig mer om smartpekare kan du titta i dessa böcker: <_:itemizedlist-1/>" #. (itstool) path: chapter/title #: C/index-in.docbook:6761 msgid "Glade and Gtk::Builder" msgstr "Glade och Gtk::Builder" #. (itstool) path: chapter/para #: C/index-in.docbook:6763 #, fuzzy msgid "" "Although you can use C++ code to instantiate and arrange widgets, this can soon become tedious and repetitive. And it requires a recompilation " "to show changes. The Glade application allows you to layout widgets on screen and then save an XML description of " "the arrangement. Your application can then use the Gtk::Builder API to load that XML file at runtime and obtain a " "pointer to specifically named widget instances." msgstr "" "Även om du kan använda C++-koden för att instansiera och arrangera komponenter kan detta snabbt bli tidskrävande och upprepande. Det kräver " "även en omkompilering för att visa ändringar. Programmet Glade låter dig skapa en layout för komponenter på skärmen " "och sedan spara en XML-beskrivning av arrangemanget. Ditt program kan sedan använda Gtk::Builder-API:t för att läsa " "in den XML-filen vid körning och erhålla en pekare till specifikt namngivna komponentinstanser." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6776 msgid "Less C++ code is required." msgstr "Mindre C++-kod behöver skrivas." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6777 msgid "UI changes can be seen more quickly, so UIs are able to improve." msgstr "Ändringar i användargränssnitten kan ses snabbare, så de kan förbättras." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6778 msgid "Designers without programming skills can create and edit UIs." msgstr "Designers utan programmeringskunskap kan skapa och redigera användargränssnitt." #. (itstool) path: chapter/para #: C/index-in.docbook:6773 msgid "This has the following advantages: <_:orderedlist-1/>" msgstr "Detta har följande fördelar: <_:orderedlist-1/>" #. (itstool) path: chapter/para #: C/index-in.docbook:6782 #, fuzzy msgid "" "You still need C++ code to deal with User Interface changes triggered by user actions, but using Gtk::Builder for " "the widget layout allows you to focus on implementing that functionality." msgstr "" "Du behöver fortfarande C++-kod för att hantera ändringar i användargränssnittet som utlöses av användaråtgärder, men att använda " "Gtk::Builder för komponentlayouten låter dig fokusera på att implementera den funktionaliteten." #. (itstool) path: section/title #: C/index-in.docbook:6789 msgid "Loading the .glade file" msgstr "Läsa in .glade-filen" #. (itstool) path: para/programlisting #: C/index-in.docbook:6795 #, no-wrap msgid "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n" msgstr "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n" #. (itstool) path: section/para #: C/index-in.docbook:6791 msgid "" "Gtk::Builder must be used via a Glib::RefPtr. Like all such classes, you need to use a " "create() method to instantiate it. For instance, <_:programlisting-1/> This will instantiate the windows defined in " "the .glade file." msgstr "" "Gtk::Builder måste användas via en Glib::RefPtr. Som alla andra sådana klasser behöver du använda " "en create()-metod för att instansiera den. Till exempel, <_:programlisting-1/> Detta kommer instansiera fönstren som " "definieras i .glade-filen." #. (itstool) path: section/para #: C/index-in.docbook:6801 msgid "" "To instantiate just one window, or just one of the child widgets, you can specify the name of a widget as the second parameter. For instance," msgstr "" "För att bara instansiera ett fönster, eller bara en av de underordnade komponenterna, kan du ange namnet på en komponent som den andra " "parametern. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6803 #, fuzzy, no-wrap msgid "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n" msgstr "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"trädvyprodukter\");\n" #. (itstool) path: section/title #: C/index-in.docbook:6810 msgid "Accessing widgets" msgstr "Komma åt komponenter" #. (itstool) path: section/para #: C/index-in.docbook:6812 #, fuzzy msgid "" "To access a widget, for instance to show a dialog, use the get_widget() method, providing the widget's name. This name " "should be specified in the Glade Properties window. If the widget could not be found, or is of the wrong type, then " "the pointer will be set to nullptr." msgstr "" "För att komma åt en komponent, exempelvis för att visa en dialogruta, använder du metoden get_widget() och " "tillhandahåller komponentens namn. Detta namn bör anges i Glades egenskapsfönster. Om komponenten inte kunde hittas " "eller är av fel typ så kommer pekaren sättas till nullptr." #. (itstool) path: section/para #: C/index-in.docbook:6819 msgid "" "The dialogs in this chapter are derived from Gtk::Window because Gtk::Dialog is deprecated since " "gtkmm 4.10." msgstr "" "Dialogrutorna i detta kapitel är härledda från Gtk::Window eftersom Gtk::Dialog är föråldrat " "sedan gtkmm 4.10." #. (itstool) path: section/programlisting #: C/index-in.docbook:6823 #, fuzzy, no-wrap msgid "" "\n" "auto pDialog = builder->get_widget<Gtk::Window>(\"DialogBasic\");\n" msgstr "" "\n" "auto pDialog = builder->get_widget<Gtk::Dialog>(\"DialogBasic\");\n" #. (itstool) path: section/para #: C/index-in.docbook:6827 #, fuzzy msgid "" "Gtk::Builder checks for a null pointer, and checks that the widget is of the expected type, and will show warnings on " "the command line about these." msgstr "" "Gtk::Builder tittar efter en null-pekare, och kontrollerar att komponenten är av förväntad typ, och kommer visa " "varningar på kommandoraden om dessa." #. (itstool) path: section/para #: C/index-in.docbook:6833 #, fuzzy msgid "" "Remember that you are not instantiating a widget with get_widget(), you are just obtaining a pointer to one that " "already exists. You will always receive a pointer to the same instance when you call get_widget() on the same " "Gtk::Builder, with the same widget name. The widgets are instantiated during Gtk::Builder::" "create_from_file()." msgstr "" "Kom ihåg att du inte instansierar en komponent med get_widget(), utan bara erhållare en pekare till en som redan " "finns. Du kommer alltid erhålla en pekare till samma instans när du anropar get_widget() på samma Gtk::" "Builder med samma komponentnamn. Komponenterna instansieras under Gtk::Builder::create_from_file()." #. (itstool) path: section/para #: C/index-in.docbook:6842 #, fuzzy msgid "" "get_widget() returns child widgets that are manage()ed (see the Memory Management chapter), so they will be deleted when their parent container is deleted. Windows " "(such as Dialogs) cannot be managed because they have no parent container, so you must delete them at some point. The " "documentation of Gtk::Builder has more to say about the memory management of different kinds of objects." msgstr "" "get_widget() returnerar underordnade komponenter som hanteras med manage() (se kapitlet Minneshantering), så de kommer tas bort när den överordnade behållaren tas bort. Window (som Dialog) kan inte hanteras för de har ingen överordnad behållare, så du måste ta bort dem vid något " "tillfälle. Dokumentationen för Gtk::Builder har mer att säga om minneshanteringen för olika sorters objekt." #. (itstool) path: section/para #: C/index-in.docbook:6852 msgid "Reference" msgstr "Referens" #. (itstool) path: section/para #: C/index-in.docbook:6857 #, fuzzy msgid "" "This simple example shows how to load a Glade file at runtime and access the widgets with Gtk::Builder." msgstr "" "Detta enkla exempel visar hur du läser in en Glade-fil vid körning och kommer åt komponenterna med Gtk::" "Builder." #. (itstool) path: section/para #: C/index-in.docbook:6862 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6869 msgid "Using derived widgets" msgstr "Använda härledda komponenter" #. (itstool) path: section/para #: C/index-in.docbook:6871 #, fuzzy msgid "" "You can use Gtk::Builder and Glade to layout your own custom widgets derived from " "gtkmm widget classes. This keeps your code organized and encapsulated, separating declarative presentation from " "business logic, avoiding having most of your source just be setting properties and packing in containers." msgstr "" "Du kan använda Gtk::Builder och Glade för att göra en layout för dina egna anpassade " "komponenter härledda från gtkmm-komponentklasser. Detta håller din kod organiserad och inkapslad, skiljer på " "deklarativ presentation från affärslogik, och undviker att det mesta av din kod bara ställer in egenskaper och packning i behållare." #. (itstool) path: section/para #: C/index-in.docbook:6879 #, fuzzy msgid "Use Gtk::Builder::get_widget_derived() like so:" msgstr "Använd Gtk::Builder::get_widget_derived() så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6881 #, fuzzy, no-wrap msgid "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\");\n" msgstr "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\");\n" #. (itstool) path: section/para #: C/index-in.docbook:6885 #, fuzzy msgid "" "Your derived class must have a constructor that takes a pointer to the underlying C type, and the Gtk::Builder instance. " "All relevant classes of gtkmm typedef their underlying C type as BaseObjectType " "(Gtk::Window typedefs BaseObjectType as GtkWindow, for instance)." msgstr "" "Din härledda klass måste ha en konstruktor som tar en pekare till den underliggande C-typen och Gtk::Builder-instansen. " "Alla relevanta klasser av gtkmm typdefinierar deras underliggande C-typ som BaseObjectType " "(Gtk::Dialog typdefinierar exempelvis BaseObjectType som GtkDialog)." #. (itstool) path: section/para #: C/index-in.docbook:6892 msgid "You must call the base class's constructor in the initialization list, providing the C pointer. For instance," msgstr "Du måste anropa basklassens konstruktor i initieringslistan och tillhandahålla C-pekaren. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6896 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" #| ": Gtk::Dialog(cobject)\n" #| "{\n" #| "}\n" msgid "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Window(cobject)\n" "{\n" "}\n" msgstr "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Dialog(cobject)\n" "{\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6903 #, fuzzy msgid "" "You could then encapsulate the manipulation of the child widgets in the constructor of the derived class, maybe using get_widget() or get_widget_derived() again. For instance," msgstr "" "Du kan sedan kapsla in manipuleringen av de underordnade komponenterna i konstruktorn av den härledda klassen, kanske genom att använda " "get_widget() eller get_widget_derived() igen. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6908 #, fuzzy, no-wrap msgid "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Window(cobject),\n" " m_builder(builder),\n" " //Get the Glade-instantiated Button, and connect a signal handler:\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " if (m_pButton)\n" " {\n" " m_pButton->signal_clicked().connect( sigc::mem_fun(*this, &DerivedDialog::on_button_quit) );\n" " }\n" "}\n" msgstr "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Dialog(cobject),\n" " m_builder(builder),\n" " //Få Glade-instansierad Button, och anslut en signalhanterare:\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " if(m_pButton)\n" " {\n" " m_pButton->signal_clicked().connect( sigc::mem_fun(*this, &DerivedDialog::on_button_quit) );\n" " }\n" "}\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:6926 #, fuzzy, no-wrap msgid "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\", true);\n" msgstr "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\", true);\n" #. (itstool) path: section/para #: C/index-in.docbook:6922 msgid "" "It's possible to pass additional arguments from get_widget_derived() to the constructor of the derived widget. For " "instance, this call to get_widget_derived() <_:programlisting-1/> can invoke this constructor" msgstr "" "Det är möjligt att skicka ytterligare argument från get_widget_derived() till konstruktorn för den härledda " "komponenten. Exempelvis kan detta anrop till get_widget_derived() <_:programlisting-1/> starta denna konstruktor" #. (itstool) path: section/programlisting #: C/index-in.docbook:6931 #, fuzzy, no-wrap msgid "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject,\n" " const Glib::RefPtr<Gtk::Builder>& builder, bool warning)\n" ": Gtk::Window(cobject),\n" " m_builder(builder),\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " // ....\n" "}\n" msgstr "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder, bool warning)\n" ": Gtk::Dialog(cobject),\n" " m_builder(builder),\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " // ....\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:6943 msgid "Gtk::Builder and Glib::Property" msgstr "Gtk::Builder och Glib::Property" #. (itstool) path: section/para #: C/index-in.docbook:6945 #, fuzzy msgid "" "If your derived widget uses Glib::Property, it becomes slightly more complicated. A derived widget that contains " "Glib::Property members must be registered with its own name in the GType system. It must be registered " "before any of the create_from_*() or add_from_*() methods are called, meaning that you may " "have to create an instance of your derived widget just to have its class registered. Your derived widget must have a constructor that has the " "parameters required by get_widget_derived() and calls the Glib::ObjectBase constructor to " "register the GType." msgstr "" "Om din härledda komponent använder Glib::Property blir det lite mer komplicerat. En härledd komponent som innehåller " "Glib::Property-medlemmar måste registreras med sitt eget namn i GType-systemet. Den måste registreras innan " "någon av create_from_*()- eller add_from_*()-metoderna anropas, vilket betyder att du kan " "behöva skapa en instans av din härledda komponent bara för att dess klass ska registreras. Din härledda komponent måste ha en konstruktor som " "har parametrarna som krävs av get_widget_derived() och anropar Glib::ObjectBase-konstruktorn " "för att registrera GType-typen." #. (itstool) path: section/programlisting #: C/index-in.docbook:6956 #, fuzzy, no-wrap msgid "" "\n" "DerivedButton::DerivedButton(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Glib::ObjectBase(\"MyButton\"), // The GType name will be gtkmm__CustomObject_MyButton.\n" " Gtk::Button(cobject),\n" " prop_ustring(*this, \"button-ustring\"),\n" " prop_int(*this, \"button-int\", 10)\n" "{\n" " // ....\n" "}\n" msgstr "" "\n" "DerivedButton::DerivedButton(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Glib::ObjectBase(\"MyButton\"), // GType-namnet kommer vara gtkmm__CustomObject_MyButton.\n" " Gtk::Button(cobject),\n" " prop_ustring(*this, \"button-ustring\"),\n" " prop_int(*this, \"button-int\", 10)\n" "{\n" " // ....\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6966 msgid "" "When using gtkmm with a version of glibmm from 2.62 onwards, it is possible also to " "specify properties of derived widgets, declared in C++ using gtkmm, within .glade files and " "load/set these using Gtk::Builder. See the documentation of Gtk::Builder for more details on how " "to achieve this. Glade won’t recognize such properties as-is, but it should be able to through use of property class definitions and a catalog declaring those new properties." msgstr "" "När gtkmm används med en version av glibmm som är 2.62 och högre är det även möjligt att " "ange egenskaper för härledda komponenter, deklarerade i C++ med gtkmm, i .glade-filer och läsa " "in/sätta dessa med Gtk::Builder. Se dokumentationen för Gtk::Builder för mer detaljer om hur " "detta kan uppnås. Glade kommer inte känna igen sådana egenskaper som de är, men bör kunna göra det genom användning av egenskapsklassdefinitioner och en katalog som deklarerar dessa " "nya egenskaper." #. (itstool) path: section/para #: C/index-in.docbook:6981 msgid "This example shows how to load a Glade file at runtime and access the widgets via derived classes." msgstr "" "Detta exempel visar hur du läser in en Glade-fil vid körning och kommer åt komponenterna genom härledda klasser." #. (itstool) path: section/para #: C/index-in.docbook:6985 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:6994 msgid "Internationalization and Localization" msgstr "Internationalisering och lokalisering" #. (itstool) path: chapter/para #: C/index-in.docbook:6996 msgid "" "gtkmm applications can easily support multiple languages, including non-European languages such as Chinese and right-" "to-left languages such as Arabic. An appropriately-written and translated gtkmm application will use the appropriate " "language at runtime based on the user's environment." msgstr "" "gtkmm-program kan lätt stödja flera språk, inklusive icke-europeiska språk som kinesiska och höger-till-vänster-" "språk som arabiska. Ett korrekt skrivet och översatt gtkmm-program kommer använda lämpligt språk vid körning " "beroende på användarens miljö." #. (itstool) path: chapter/para #: C/index-in.docbook:7002 msgid "" "You might not anticipate the need to support additional languages, but you can never rule it out. And it's easier to develop the application " "properly in the first place rather than retrofitting later." msgstr "" "Du kanske inte förutser något behov av att stödja ytterligare språk, men du kan aldrig utesluta det. Det är även lättare att utveckla " "programmet korrekt till att börja med än att skriva om det senare." #. (itstool) path: chapter/para #: C/index-in.docbook:7008 #, fuzzy msgid "" "The process of writing source code that allows for translation is called internationalization, often abbreviated to " "i18n. The Localization process, sometimes abbreviated as l10n, provides translated " "text for other languages, based on that source code." msgstr "" "Processen med att skriva källkod som tillåter översättning kallas internationalisering, ofta förkortat till i18n. Processen med lokalisering, ibland förkortad som l10n, tillhandahåller översatt text för andra " "språk, baserat på den källkoden." #. (itstool) path: chapter/para #: C/index-in.docbook:7016 #, fuzzy msgid "" "The main activity in the internationalization process is finding strings seen by users and marking them for translation. You do not need to do " "it all at once - if you set up the necessary project infrastructure correctly then your application will work normally regardless of how many " "strings you've covered." msgstr "" "Huvudaktiviteten i internationaliseringsprocessen är att hitta strängar som användare ser och markera dem för översättning. Du behöver inte " "göra allt på en gång - om du konfigurerar den nödvändiga projektinfrastrukturen rätt kommer ditt program fungera som vanligt oavsett hur många " "strängar du täckt." #. (itstool) path: chapter/para #: C/index-in.docbook:7024 #, fuzzy msgid "" "String literals should be typed in the source code in English, but surrounded by a macro. The gettext (or intltool) " "utility can then extract the marked strings for translation, and substitute the translated text at runtime." msgstr "" "Stränglitteraler bör skrivas in i källkoden på engelska, men omges av ett makro. Verktyget gettext (eller intltool) " "kan sedan extrahera de markerade strängarna för översättning, och ersätta den översatta texten vid körning." #. (itstool) path: section/title #: C/index-in.docbook:7032 msgid "Preparing your project" msgstr "Förbereda ditt projekt" #. (itstool) path: note/para #: C/index-in.docbook:7035 #, fuzzy msgid "" "In the instructions below we will assume that you will not be using gettext directly, but intltool, which was written specifically for GNOME. intltool uses gettext(), which extracts strings from source code, but intltool can also combine strings from other files, for " "example from desktop menu details, and GUI resource files such as Glade files, into standard gettext .pot/.po files." msgstr "" "I instruktionerna nedan kommer vi anta att du inte kommer använda gettext direkt, utan intltool som skrevs specifikt för GNOME. intltool använder gettext() " "vilket extraherar strängar från källkod, men intltool kan också kombinera strängar från andra filer, exempelvis från " "skrivbordsmenydetaljer, och GUI-resursfiler som Glade-files, till gettexts ." "pot/.po-standardfiler." #. (itstool) path: note/para #: C/index-in.docbook:7046 msgid "" "We also assume that you are using autotools (automake and autoconf) to build your project " "(although autotools is not recommended for new applications), and that you are using ./autogen.sh from gnome-common or a similar " "autogen.sh file, which, among other things, takes care of some intltool initialization." msgstr "" "Vi antar också att du använder autotools (automake och autoconf) för att bygga ditt " "projekt (även om autotools inte rekommenderas för nya program), och att du använder ./autogen.sh från gnome-common eller en liknande " "autogen.sh-fil som bland annat tar hand om viss intltool-initiering." # TODO: Suggest "Localization" upstream? #. (itstool) path: note/para #: C/index-in.docbook:7058 msgid "" "If you are using meson (recommended), see the Localisation chapter in Meson's manual. You can then skip this section." msgstr "" "Om du använder meson (rekommenderas), se kapitlet Lokalisering i handboken för Meson. Du kan sedan hoppa över detta avsnitt." #. (itstool) path: section/para #: C/index-in.docbook:7065 msgid "An alternative to gnome-common's autogen.sh may look like this:" msgstr "Ett alternativ till autogen.sh från gnome-common kan se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7069 #, no-wrap msgid "" "#! /bin/sh -e\n" "test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n" "test -n \"$srcdir\" || srcdir=.\n" "\n" "autoreconf --force --install --verbose --warnings=all \"$srcdir\"\n" "echo \"Running intltoolize --copy --force --automake\"\n" "intltoolize --copy --force --automake\n" "test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\"" msgstr "" "#! /bin/sh -e\n" "test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n" "test -n \"$srcdir\" || srcdir=.\n" "\n" "autoreconf --force --install --verbose --warnings=all \"$srcdir\"\n" "echo \"Running intltoolize --copy --force --automake\"\n" "intltoolize --copy --force --automake\n" "test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\"" #. (itstool) path: section/para #: C/index-in.docbook:7078 #, fuzzy msgid "" "Create a sub-directory named po in your project's root directory. This directory will eventually contain all of your " "translations. Within it, create a file named LINGUAS and a file named POTFILES.in. It is common practice " "to also create a ChangeLog file in the po directory so that translators can keep track of translation " "changes." msgstr "" "Skapa en underkatalog med namnet po i ditt projekts rotkatalog. Denna katalog kommer i slutändan innehålla alla dina " "översättningar. Skapa i den en fil med namnet LINGUAS och en fil med namnet POTFILES.in. Det är även även " "vanligt att skapa en ChangeLog-fil i po-katalogen så att översättningar kan hålla koll på " "översättningsändringar." #. (itstool) path: section/para #: C/index-in.docbook:7088 msgid "" "LINGUAS contains an alphabetically sorted list of codes identifying the languages for which your program is translated " "(comment lines starting with a # are ignored). Each language code listed in the LINGUAS file must have a " "corresponding .po file. So, if your program has German and Japanese translations, your LINGUAS file would " "look like this:" msgstr "" "LINGUAS innehåller en alfabetiskt sorterad lista med koder som identifierar språken som ditt program översatts till " "(kommentarsrader startar med # och ignoreras). Varje språkkod som listas i LINGUAS-filen måste ha en " "motsvarande .po-fil. Så om ditt program har tyska och japanska översättningar så skulle din LINGUAS-fil " "se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7097 #, no-wrap msgid "" "# keep this file sorted alphabetically, one language code per line\n" "de\n" "ja" msgstr "" "# keep this file sorted alphabetically, one language code per line\n" "de\n" "ja" #. (itstool) path: section/para #: C/index-in.docbook:7100 msgid "" "(In addition, you'd have the files de.po and ja.po in your po directory which contain " "the German and Japanese translations, respectively.)" msgstr "" "(Dessutom skulle du ha filerna de.po och ja.po i din po-katalog som innehåller de " "tyska respektive japanska översättningarna.)" #. (itstool) path: section/para #: C/index-in.docbook:7107 msgid "" "POTFILES.in is a list of paths to all files which contain strings marked up for translation, starting from the project root " "directory. So for example, if your project sources were located in a subdirectory named src, and you had two files that " "contained strings that should be translated, your POTFILES.in file might look like this:" msgstr "" "POTFILES.in är en lista över sökvägar till alla filer som innehåller strängar som markerats för översättning, med start i " "projektets rotkatalog. Så om ditt projekts källkod fanns i en underkatalog med namnet src, och du hade två filer som " "innehöll strängar som ska översättas, så skulle din POTFILES.in-fil kunna se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7116 #, no-wrap msgid "" "src/main.cc\n" "src/other.cc" msgstr "" "src/main.cc\n" "src/other.cc" #. (itstool) path: section/para #: C/index-in.docbook:7119 #, fuzzy msgid "" "If you are using gettext directly, you can only mark strings for translation if they are in source code file. " "However, if you use intltool, you can mark strings for translation in a variety of other file formats, including " "Glade UI files, xml, .desktop " "files and several more. So, if you have designed some of the application UI in Glade then also add your " ".glade files to the list in POTFILES.in." msgstr "" "Om du använder gettext direkt kan du endast markera strängar för översättning om de är i källkodsfiler. Om du " "använder intltool kan du dock markera strängar för översättning i ett antal andra filformat, inklusive " "Glades UI-filer, xml, .desktop-" "filer och flera till. Så om du har designat delar av programmets användargränssnitt i Glade så lägger du " "också till dina .glade-filer till listan i POTFILES.in." #. (itstool) path: section/para #: C/index-in.docbook:7131 msgid "" "Now that there is a place to put your translations, you need to initialize intltool and gettext. Add the following code to your configure.ac, substituting 'programname' with the name of your program:" msgstr "" "Nu då det finns en plats att lägga dina översättningar behöver du initiera intltool och gettext. Lägg till följande kod till din configure.ac och ersätt ”programnamn” med namnet på ditt program:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7138 #, fuzzy, no-wrap msgid "" "IT_PROG_INTLTOOL([0.35.0])\n" "\n" "GETTEXT_PACKAGE=programname\n" "AC_SUBST(GETTEXT_PACKAGE)\n" "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n" " [The domain to use with gettext])\n" "AM_GNU_GETTEXT([external])\n" "AM_GNU_GETTEXT_VERSION([0.17])\n" "\n" "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n" "AC_SUBST(PROGRAMNAME_LOCALEDIR)" msgstr "" "IT_PROG_INTLTOOL([0.35.0])\n" "\n" "GETTEXT_PACKAGE=programnamn\n" "AC_SUBST(GETTEXT_PACKAGE)\n" "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n" " [Domänen att använda med gettext])\n" "AM_GNU_GETTEXT([external])\n" "AM_GNU_GETTEXT_VERSION([0.17])\n" "\n" "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n" "AC_SUBST(PROGRAMNAME_LOCALEDIR)" #. (itstool) path: section/para #: C/index-in.docbook:7150 msgid "" "This PROGRAMNAME_LOCALEDIR variable will be used later in the Makefile.am file, to define a macro that " "will be used when you initialize gettext in your source code." msgstr "" "Denna variabel PROGRAMNAME_LOCALEDIR kommer användas senare i Makefile.am-filen för att definiera ett " "makro som kommer användas när du initierar gettext i din källkod." #. (itstool) path: section/para #: C/index-in.docbook:7157 msgid "" "AM_GLIB_GNU_GETTEXT has been an alternative to AM_GNU_GETTEXT and AM_GNU_GETTEXT_VERSION, but AM_GLIB_GNU_GETTEXT is now deprecated, and shall not be used in new code." msgstr "" "AM_GLIB_GNU_GETTEXT har varit ett alternativ till AM_GNU_GETTEXT och AM_GNU_GETTEXT_VERSION, men AM_GLIB_GNU_GETTEXT är nu föråldrat, och ska inte användas i ny kod." #. (itstool) path: listitem/para #: C/index-in.docbook:7168 msgid "" "Add po to the SUBDIRS variable. Without this, your translations won't get built and installed when you " "build the program" msgstr "" "Lägg till po till variabeln SUBDIRS. Utan detta kommer dina översättningar inte byggas och installeras " "när du bygger programmet" #. (itstool) path: para/programlisting #: C/index-in.docbook:7175 #, no-wrap msgid "" "INTLTOOL_FILES = intltool-extract.in \\\n" " intltool-merge.in \\\n" " intltool-update.in" msgstr "" "INTLTOOL_FILES = intltool-extract.in \\\n" " intltool-merge.in \\\n" " intltool-update.in" #. (itstool) path: listitem/para #: C/index-in.docbook:7173 msgid "Define INTLTOOL_FILES as: <_:programlisting-1/>" msgstr "Definiera INTLTOOL_FILES som: <_:programlisting-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:7181 #, fuzzy msgid "" "Add INTLTOOL_FILES to the EXTRA_DIST list of files. This ensures that when you do a make dist, these files will be included in the source tarball." msgstr "" "Lägg till INTLTOOL_FILES till fillistan EXTRA_DIST. Detta säkerställer att när du kör make dist så kommer dessa filer inkluderas i käll-tarbollen." #. (itstool) path: para/programlisting #: C/index-in.docbook:7191 #, no-wrap msgid "" "DISTCLEANFILES = ... intltool-extract \\\n" " intltool-merge \\\n" " intltool-update \\\n" " po/.intltool-merge-cache" msgstr "" "DISTCLEANFILES = ... intltool-extract \\\n" " intltool-merge \\\n" " intltool-update \\\n" " po/.intltool-merge-cache" #. (itstool) path: listitem/para #: C/index-in.docbook:7189 msgid "Update your DISTCLEANFILES: <_:programlisting-1/>" msgstr "Uppdatera din DISTCLEANFILES: <_:programlisting-1/>" #. (itstool) path: para/programlisting #: C/index-in.docbook:7201 #, fuzzy, no-wrap msgid "" "desktopdir = $(datadir)/applications\n" "desktop_in_files = programname.desktop.in\n" "desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n" "@INTLTOOL_DESKTOP_RULE@" msgstr "" "desktopdir = $(datadir)/applications\n" "desktop_in_files = programnamn.desktop.in\n" "desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n" "@INTLTOOL_DESKTOP_RULE@" #. (itstool) path: listitem/para #: C/index-in.docbook:7198 msgid "Depending on the types of files that contain translatable strings, add code such as <_:programlisting-1/>" msgstr "Beroende på typerna av filer som innehåller översättbara strängar lägger du till kod som <_:programlisting-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7164 msgid "In the top-level Makefile.am: <_:itemizedlist-1/>" msgstr "I Makefile.am på toppnivån: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7210 #, fuzzy msgid "In your src/Makefile.am, update your AM_CPPFLAGS to add the following preprocessor macro definition:" msgstr "" "Uppdatera AM_CPPFLAGS i din src/Makefile.am så att du lägger till följande preprocessormakrodefinition:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7215 #, fuzzy, no-wrap msgid "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAME_LOCALEDIR}\\\"" msgstr "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAMN_LOCALEDIR}\\\"" #. (itstool) path: section/para #: C/index-in.docbook:7216 msgid "This macro will be used when you initialize gettext in your source code." msgstr "Detta makro kommer användas när du initierar gettext i din källkod." #. (itstool) path: section/title #: C/index-in.docbook:7223 msgid "Marking strings for translation" msgstr "Markera strängar för översättning" #. (itstool) path: section/para #: C/index-in.docbook:7225 #, fuzzy msgid "" "String literals should be typed in the source code in English, but they should be surrounded by a call to the gettext() " "function. These strings will be extracted for translation and the translations may be used at runtime instead of the original English strings." msgstr "" "Stränglitterarer bör typas i källkoden på engelska, men de bör omgärdas av ett anrop till gettext()-funktionen. Dessa " "strängar kommer extraheras för översättning och översättningarna kan användas vid körning i stället för de ursprungliga engelska strängarna." #. (itstool) path: section/para #: C/index-in.docbook:7233 msgid "" "The GNU gettext package allows you to mark strings in source code, extract those strings for translation, and use " "the translated strings in your application." msgstr "" "Paketet GNU gettext låter dig markera strängar i källkod, extrahera dessa strängar för översättning, och använda de " "översatta strängarna i ditt program." #. (itstool) path: para/programlisting #: C/index-in.docbook:7245 #, fuzzy, no-wrap msgid "display_message(\"Getting ready for i18n.\");" msgstr "display_message(\"Getting ready for i18n.\");" #. (itstool) path: para/programlisting #: C/index-in.docbook:7247 #, fuzzy, no-wrap msgid "display_message(_(\"Getting ready for i18n.\"));" msgstr "display_message(_(\"Getting ready for i18n.\"));" #. (itstool) path: section/para #: C/index-in.docbook:7239 #, fuzzy msgid "" "However, Glib defines gettext() support macros which are shorter wrappers in an easy-to-use " "form. To use these macros, include <glibmm/i18n.h>, and then, for example, substitute: <_:programlisting-1/> with: <_:" "programlisting-2/>" msgstr "" "Glib definierar dock gettext()-stödmakron som är kortare omslag i en lättanvänd form. För att " "använda dessa makron inkluderar du <glibmm/i18n.h> och ersätter exempelvis: <_:programlisting-1/> med: <_:" "programlisting-2/>" #. (itstool) path: section/para #: C/index-in.docbook:7250 #, fuzzy msgid "" "For reference, it is possible to generate a file which contains all strings which appear in your code, even if they are not marked for " "translation, together with file name and line number references. To generate such a file named my-strings, execute the " "following command, within the source code directory:" msgstr "" "För referens är det möjligt att generera en fil som innehåller alla strängar som dyker upp i din kod även om de inte markerats för " "översättning, tillsammans med referenser till filnamn och radnummer. För att generera en sådan fil med namnet my-strings kör " "du följande kommando i källkodskatalogen:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7259 #, fuzzy, no-wrap msgid "xgettext -a -o my-strings --omit-header *.cc *.h" msgstr "xgettext -a -o my-strings --omit-header *.cc *.h" #. (itstool) path: section/para #: C/index-in.docbook:7261 msgid "" "Finally, to let your program use the translation for the current locale, add this code to the beginning of your main.cc " "file, to initialize gettext." msgstr "" "För att slutligen låta ditt program använda översättningen för aktuell lokal lägger du till denna kod i början av din main.cc-fil för att initiera gettext." #. (itstool) path: section/programlisting #: C/index-in.docbook:7266 #, fuzzy, no-wrap msgid "" "bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n" "bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n" "textdomain(GETTEXT_PACKAGE);" msgstr "" "bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n" "bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n" "textdomain(GETTEXT_PACKAGE);" #. (itstool) path: section/title #: C/index-in.docbook:7271 msgid "How gettext works" msgstr "Hur gettext fungerar" #. (itstool) path: section/para #: C/index-in.docbook:7273 #, fuzzy msgid "" "The intltool-update or xgettext script extracts the strings and puts them in a " "mypackage.pot file. The translators of your application create their translations by first copying this .pot file to a localename.po file. A locale identifies a language and an encoding for that language, including date " "and numerical formats. Later, when the text in your source code has changed, the msgmerge or intltool-" "update script is used to update the localename.po files from the regenerated .pot file." msgstr "" "Skripten intltool-update eller xgettext extraherar strängarna och stoppar dem i en fil " "mypackage.pot. Översättarna av ditt program skapar sina översättningar genom att först kopiera denna .pot-fil till en fil lokalnamn.po. En lokal identifierar ett språk och en kodning för det språket, inklusive " "datumformat och numeriska format. Senare när texten i din källkod har ändrats används skripten msgmerge eller " "intltool-update för att uppdatera lokalnamn.po-filerna från den på nytt genererade ." "pot-filen." #. (itstool) path: section/para #: C/index-in.docbook:7287 #, fuzzy msgid "" "At install time, the .po files are converted to a binary format (with the extension .mo) and placed " "in a system-wide directory for locale files, for example /usr/share/locale/." msgstr "" "Vid installeringstid konverteras .po-filerna till ett binärt format (med ändelsen .mo) och placeras i " "en systemomfattande katalog för lokalfiler, exempelvis /usr/share/locale/." #. (itstool) path: section/para #: C/index-in.docbook:7294 #, fuzzy msgid "" "When the application runs, the gettext library checks the system-wide directory to see if there is a .mo file for the user's locale environment (you can set the locale with, for instance, \"export LANG=de_DE.UTF-8\" from a bash console). " "Later, when the program reaches a gettext call, it looks for a translation of a particular string. If none is found, the " "original string is used." msgstr "" "När programmet körs kontrollerar gettext-biblioteket den systemomfattande katalogen för att se om det finns en " ".mo-fil för användarens lokalmiljö (du kan exempelvis ställa in lokalen med \"export LANG=de_DE.UTF-8\" från en bash-" "konsol). När programmet senare når ett gettext-anrop söker det en översättning för en viss sträng. Om ingen hittas används " "originalsträngen." #. (itstool) path: section/title #: C/index-in.docbook:7306 msgid "Testing and adding translations" msgstr "Testa och lägga till översättningar" #. (itstool) path: section/para #: C/index-in.docbook:7308 #, fuzzy msgid "" "To convince yourself that you've done well, you may wish to add a translation for a new locale. In order to do that, go to the po subdirectory of your project and execute the following command:" msgstr "" "För att försäkra dig om att du lyckats kan du vilja lägga till en översättning för en ny lokal. För att göra detta går du till underkatalogen " "po för ditt projekt och kör följande kommando:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7314 #, no-wrap msgid "intltool-update --pot" msgstr "intltool-update --pot" #. (itstool) path: section/para #: C/index-in.docbook:7316 #, fuzzy msgid "" "That will create a file named programname.pot. Now copy that file to languagecode.po, such as " "de.po or hu.po. Also add that language code to LINGUAS. The .po file contains a header and a list of English strings, with space for the translated strings to be entered. Make sure you set the " "encoding of the .po file (specified in the header, but also as content) to UTF-8." msgstr "" "Du kommer skapa en fil med namnet programnamn.pot. Kopiera nu den filen till språkkod.po, som " "de.po eller hu.po. Lägg också till språkkoden till LINGUAS. .po-filen innehåller ett huvud och en lista över engelska strängar, med utrymme för de översatta strängarna att matas in. Se till att du " "ställer in kodningen för .po-filen (angiven i huvudet, men också som innehåll) till UTF-8." #. (itstool) path: note/para #: C/index-in.docbook:7329 #, fuzzy msgid "" "It's possible that certain strings will be marked as fuzzy in the .po file. These translations will not " "substitute the original string. To make them appear, simply remove the fuzzy tag. A fuzzy tag appears if " "a string content changed, but the location is still the same." msgstr "" "Det är möjligt att vissa strängar kommer markeras fuzzy i .po-filen. Dessa översättningar kommer inte " "ersätta originalsträngen. För att de ska visas tar du helt enkelt bort fuzzy-taggen. En fuzzy-tagg dyker " "läggs till om en strängs innehåll har ändrats men lokaliseringen fortfarande är densamma." #. (itstool) path: section/title #: C/index-in.docbook:7341 msgid "Resources" msgstr "Resurser" #. (itstool) path: listitem/para #: C/index-in.docbook:7349 msgid " L10N Guidelines for Developers" msgstr " L10N-riktlinjer för utvecklare" #. (itstool) path: listitem/para #: C/index-in.docbook:7356 msgid "Intltool README" msgstr "README för Intltool" #. (itstool) path: listitem/para #: C/index-in.docbook:7362 msgid "How to use Git for GNOME translators" msgstr "Använda Git för GNOME-översättare" #. (itstool) path: listitem/para #: C/index-in.docbook:7368 msgid "gettext manual" msgstr "Handbok för gettext" #. (itstool) path: listitem/para #: C/index-in.docbook:7374 msgid "gtkmm_hello example package" msgstr "Exempelpaketet gtkmm_hello" #. (itstool) path: listitem/para #: C/index-in.docbook:7380 msgid "gnomemm_hello example package" msgstr "Exempelpaketet gnomemm_hello" #. (itstool) path: section/para #: C/index-in.docbook:7343 #, fuzzy msgid "" "More information about what lies behind the internationalization and localization process is presented and demonstrated in: <_:itemizedlist-1/>" msgstr "" "Mer information om vad som ligger bakom internationaliserings- och lokalanpassningsprocessen presenteras och demonstreras i: <_:itemizedlist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:7391 msgid "Expecting UTF8" msgstr "Förvänta sig UTF8" #. (itstool) path: section/para #: C/index-in.docbook:7393 msgid "" "A properly internationalized application will not make assumptions about the number of bytes in a character. That means that you shouldn't use " "pointer arithmetic to step through the characters in a string, and it means you shouldn't use std::string or standard C " "functions such as strlen() because they make the same assumption." msgstr "" "Ett ordentligt internationaliserat program kommer inte göra antaganden om antalet byte i ett tecken. Detta betyder att du inte ska använda " "pekararitmetik för att stega genom tecknen i en sträng, och det betyder att du inte ska använda std::string eller C-" "standardfunktioner som strlen() för att de gör samma antagande." #. (itstool) path: section/para #: C/index-in.docbook:7400 #, fuzzy msgid "" "However, you probably already avoid bare char* arrays and pointer arithmetic by using std::string, so you just need to " "start using Glib::ustring instead. See the Basics chapter about " "Glib::ustring." msgstr "" "Du undviker dock troligen redan nakna char*-arrayer och pekararitmetik genom att använda std::string, så du behöver bara " "börja använda Glib::ustring i stället. Se i avsnittet Grunder om " "Glib::ustring." #. (itstool) path: section/title #: C/index-in.docbook:7408 msgid "Glib::ustring and std::iostreams" msgstr "Glib::ustring och std::iostreams" #. (itstool) path: section/para #: C/index-in.docbook:7411 #, fuzzy msgid "" "Unfortunately, the integration with the standard iostreams is not completely foolproof. gtkmm converts " "Glib::ustrings to a locale-specific encoding (which usually is not UTF-8) if you output them to an ostream with operator<<. Likewise, retrieving Glib::ustrings from istream with operator>> causes a conversion in the opposite direction. But this scheme breaks down if you go " "through a std::string, e.g. by inputting text from a stream to a std::string and then implicitly " "converting it to a Glib::ustring. If the string contained non-ASCII characters and the current locale is not UTF-8 " "encoded, the result is a corrupted Glib::ustring. You can work around this with a manual conversion. For instance, to " "retrieve the std::string from a ostringstream:" msgstr "" "Tyvärr är integrationen med iostream-standardströmmar inte helt idiotsäker. gtkmm konverterar Glib::" "ustring-strängar till en lokalspecifik kodning (vilken vanligen inte är UTF-8) om du matar ut dem till en ostream med operator<<. På samma sätt orsakar hämtning av Glib::ustring-strängar från " "istream med operator>> en konvertering i motsatt riktning. Men detta schema går sönder om du " "går genom en std::string, t.ex. genom att mata in text från en ström till en std::string och " "sedan implicit konvertera den till en Glib::ustring. Om strängen innehöll tecken som inte är ASCII och den aktuella " "lokalen inte är UTF-8-kodad, kommer resultatet vara en trasig Glib::ustring. Du kan arbeta runt detta med en manuell " "konvertering. För att exempelvis erhålla std::string-strängen från en ostringstream:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7427 #, fuzzy, no-wrap msgid "" "std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n" " // Usually unnecessary here, because Glib::init()\n" " // or Gtk::Application::create() does it for you.\n" "std::ostringstream output;\n" "output << percentage << \" % done\";\n" "label->set_text(Glib::locale_to_utf8(output.str()));" msgstr "" "std::locale::global(std::locale(\"\")); // Sätt den globala lokalen till användarens föredragna lokal.\n" " // Vanligen onödigt här, för Glib::init()\n" " // eller Gtk::Application::create() gör det åt dig.\n" "std::ostringstream output;\n" "output << percentage << \" % klar\";\n" "label->set_text(Glib::locale_to_utf8(output.str()));" #. (itstool) path: section/title #: C/index-in.docbook:7438 msgid "Pitfalls" msgstr "Fallgropar" #. (itstool) path: section/para #: C/index-in.docbook:7440 msgid "There are a few common mistakes that you would discover eventually yourself. But this section might help you to avoid them." msgstr "Det finns några vanliga misstag som du så småningom skulle upptäcka själv. Men det här avsnittet kanske hjälper dig undvika dem." #. (itstool) path: section/title #: C/index-in.docbook:7443 #, fuzzy msgid "Same strings, different semantics" msgstr "Samma strängar, olika semantik" #. (itstool) path: section/para #: C/index-in.docbook:7445 msgid "" "Sometimes two English strings are identical but have different meanings in different contexts, so they would probably not be identical when " "translated. Since the English strings are used as look-up keys, this causes problems." msgstr "" "Ibland är två strängar på engelska identiska men har olika betydelse i olika kontexter, så de skulle troligen inte vara identiska då de " "översätts. Då de engelska strängarna används som nycklar för uppslagning så orsakar detta problem." #. (itstool) path: section/para #: C/index-in.docbook:7449 #, fuzzy msgid "" "In these cases, you should add extra characters to the strings. For instance, use \"jumps[noun]\" and " "\"jumps[verb]\" instead of just \"jumps\" and strip them again outside the gettext " "call. If you add extra characters you should also add a comment for the translators before the gettext call. Such comments " "will be shown in the .po files. For instance:" msgstr "" "I dessa fall bör du lägga till extra tecken till strängarna. Använd exempelvis \"jumps[noun]\" och \"jumps[verb]\" i stället för bara \"jumps\" och ta bort dem igen utanför gettext-anropet. Om du lägger till " "extra tecken ska du också lägga till en kommentar för översättarna innan gettext-anropet. Sådana kommentarer kommer visas " "i .po-filerna. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7458 #, no-wrap msgid "" "// note to translators: don't translate the \"[noun]\" part - it is\n" "// just here to distinguish the string from another \"jumps\" string\n" "text = strip(gettext(\"jumps[noun]\"), \"[noun]\");" msgstr "" "// note to translators: don't translate the \"[noun]\" part - it is\n" "// just here to distinguish the string from another \"jumps\" string\n" "text = strip(gettext(\"jumps[noun]\"), \"[noun]\");" #. (itstool) path: section/para #: C/index-in.docbook:7462 msgid "" "If you use Glib's support macros, it's easier. Use C_() instead of _(). " "For instance:" msgstr "" "Om du använder Glibs stödmakron är det enklare. Använd C_() i stället för _(). Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7466 #, no-wrap msgid "GLib::ustring text(C_(\"noun\", \"jumps\"));" msgstr "GLib::ustring text(C_(\"noun\", \"jumps\"));" #. (itstool) path: section/title #: C/index-in.docbook:7471 msgid "Composition of strings" msgstr "Sammansättning av strängar" #. (itstool) path: section/para #: C/index-in.docbook:7473 msgid "" "C programmers use sprintf() to compose and concatenate strings. C++ favors streams, but unfortunately, this approach makes " "translation difficult, because each fragment of text is translated separately, without allowing the translators to rearrange them according to " "the grammar of the language." msgstr "" "C-programmerare använder sprintf() för att komponera och konkatenera strängar. C++ föredrar strömmar, men detta " "angreppssätt gör tyvärr översättning svår, för varje textfragment översätts separat utan att låta översättarna arrangera om dem enligt språkets " "grammatik." #. (itstool) path: section/para #: C/index-in.docbook:7480 msgid "For instance, this code would be problematic:" msgstr "Exempelvis skulle denna kod vara problematisk:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7482 #, no-wrap msgid "" "std::cout << _(\"Current amount: \") << amount\n" " << _(\" Future: \") << future << std::endl;\n" "\n" "label.set_text(_(\"Really delete \") + filename + _(\" now?\"));" msgstr "" "std::cout << _(\"Current amount: \") << amount\n" " << _(\" Future: \") << future << std::endl;\n" "\n" "label.set_text(_(\"Really delete \") + filename + _(\" now?\"));" #. (itstool) path: section/para #: C/index-in.docbook:7487 #, fuzzy #| msgid "" #| "So you should either avoid this situation or use Glib::ustring::compose() which supports syntax such as:" msgid "" "So you should either avoid this situation or use Glib::ustring::compose() which supports syntax such as:" msgstr "" "Så du bör antingen undvika denna situation eller använda Glib::ustring::compose() som stöder syntax som:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7492 #, no-wrap msgid "" "std::cout << Glib::ustring::compose(\n" " _(\"Current amount: %1 Future: %2\"), amount, future) << std::endl;\n" "\n" "label.set_text(Glib::ustring::compose(_(\"Really delete %1 now?\"), filename));" msgstr "" "std::cout << Glib::ustring::compose(\n" " _(\"Current amount: %1 Future: %2\"), amount, future) << std::endl;\n" "\n" "label.set_text(Glib::ustring::compose(_(\"Really delete %1 now?\"), filename));" #. (itstool) path: section/title #: C/index-in.docbook:7499 msgid "Assuming the displayed size of strings" msgstr "Anta den visade storleken för strängar" #. (itstool) path: section/para #: C/index-in.docbook:7501 msgid "" "You never know how much space a string will take on screen when translated. It might very possibly be twice the size of the original English " "string. Luckily, most gtkmm widgets will expand at runtime to the required size." msgstr "" "Du vet aldrig hur mycket utrymme en sträng kommer ta på skärmen då den översätts. Den kan mycket väl vara dubbla storleken mot för den " "ursprungliga engelska strängen. Lyckligtvis kommer de flesta gtkmm-komponenter vid körning expanderas till storleken " "som krävs." #. (itstool) path: section/title #: C/index-in.docbook:7505 msgid "Unusual words" msgstr "Ovanliga ord" #. (itstool) path: section/para #: C/index-in.docbook:7507 #, fuzzy msgid "" "You should avoid cryptic abbreviations, slang, or jargon. They are usually difficult to translate, and are often difficult for even native " "speakers to understand. For instance, prefer \"application\" to \"app\"" msgstr "" "Du bör undvika kryptiska förkortningar, slang eller jargong. De är oftast svåra att översätta, och är ofta svåra att förstå även för personer " "som har det som modersmål. Använd exempelvis hellre ”application” än ”app”" #. (itstool) path: section/title #: C/index-in.docbook:7513 msgid "Using non-ASCII characters in strings" msgstr "Använda tecken som inte är ASCII i strängar" # TODO: Is this still true?? #. (itstool) path: section/para #: C/index-in.docbook:7515 msgid "" "Currently, gettext does not support non-ASCII characters (i.e. any characters with a code above 127) in source code. " "For instance, you cannot use the copyright sign (©)." msgstr "" "För närvarande stöder gettext inte tecken som inte är ASCII (d.v.s. tecken med en kod ovanför 127) i källkod. Du kan " "exempelvis inte använda upphovsrättstecknet (©)." #. (itstool) path: section/para #: C/index-in.docbook:7521 msgid "" "To work around this, you could write a comment in the source code just before the string, telling the translators to use the special character " "if it is available in their languages. For English, you could then make an American English en_US.po translation which " "used that special character." msgstr "" "För att arbeta runt detta skulle du kunna skriva en kommentar i källkoden just innan strängen, och säga till översättarna att använda det " "speciella tecknet om det finns tillgängligt på deras språk. För engelska skulle du sedan kunna göra en en_US.po-" "översättning för amerikansk engelska som använder det speciella tecknet." #. (itstool) path: section/title #: C/index-in.docbook:7529 msgid "Getting help with translations" msgstr "Få hjälp med översättningar" #. (itstool) path: section/para #: C/index-in.docbook:7531 msgid "" "If your program is free software, there is a whole GNOME subproject devoted to helping you make translations, the GNOME Translation Project." msgstr "" "Om ditt program är fri programvara så finns det ett helt GNOME-underprojekt som är avsett för att hjälpa dig översätta, " "GNOME Translation Project." #. (itstool) path: section/para #: C/index-in.docbook:7536 msgid "" "The way it works is that you upload your source code to a git repository where translators can access it, then contact the gnome-i18n mailing " "list and ask to have your program added to the list of modules to translate." msgstr "" "Sättet detta fungerar är att du kan placera din källkod i ett git-arkiv där översättare kan komma åt den, och sedan kontakta sändlistan gnome-" "i18n och be att ditt program ska läggas till i listan över moduler att översätta." #. (itstool) path: section/para #: C/index-in.docbook:7541 msgid "" "Then you make sure you update the file POTFILES.in in the po/ subdirectory (intltool-update -" "m can help with this) so that the translators always access updated myprogram.pot files, and simply freeze the " "strings at least a couple of days before you make a new release, announcing it on gnome-i18n. Depending on the number of strings your program " "contains and how popular it is, the translations will then start to tick in as languagename.po files." msgstr "" "Sedan ser du till att du uppdaterar filen POTFILES.in i underkatalogen po/ (intltool-update -" "m kan hjälpa dig med detta) så att översättarna alltid kommer åt uppdaterade mittprogram.pot-filer, och fryser " "helt enkelt strängarna åtminstone några dagar innan du släpper en ny utgåva, och meddelar det på gnome-i18n. Beroende på antalet strängar ditt " "program innehåller och på hur populärt det är kommer sedan översättningarna börja rassla in som språknamn.po-filer." #. (itstool) path: section/para #: C/index-in.docbook:7553 msgid "" "Note that most language teams only consist of 1-3 persons, so if your program contains a lot of strings, it might last a while before anyone " "has the time to look at it. Also, most translators do not want to waste their time (translating is a very time-consuming task) so if they do " "not assess your project as being really serious (in the sense that it is polished and being maintained) they may decide to spend their time on " "some other project." msgstr "" "Observera att de flesta språkgrupperna endast består av 1-3 personer, så om ditt program innehåller många strängar kan det dröja länge innan " "någon har tid att titta på det. De flesta översättare vill heller inte slösa bort sin tid (översättning är en väldigt tidskrävande uppgift) så " "om de inte bedömer ditt projekt som seriöst (i betydelsen att det är välpolerat och underhålls) så kan de bestämma sig för att lägga sin tid på " "något annat projekt." #. (itstool) path: chapter/title #. (itstool) path: section/title #: C/index-in.docbook:7565 C/index-in.docbook:7647 msgid "Custom Widgets" msgstr "Anpassade komponenter" #. (itstool) path: chapter/para #: C/index-in.docbook:7567 #, fuzzy msgid "" "gtkmm makes it very easy to derive new widgets by inheriting from an existing widget class, either by deriving from " "a container and adding child widgets, or by deriving from a single-item widget, and changing its behavior. But you might occasionally find that " "no suitable starting point already exists. In this case, you can implement a widget from scratch." msgstr "" "gtkmm gör det väldigt lätt att härleda nya komponenter genom arv från en befintlig komponentklass, antingen genom " "att härleda från en behållare och lägga till underordnade komponenter, eller genom att härleda från en enobjektskomponent och ändra dess " "beteende. Men emellanåt kan du upptäcka att ingen lämplig startpunkt finns. I så fall kan du implementera en komponent från grunden." #. (itstool) path: section/title #: C/index-in.docbook:7574 msgid "Custom Containers" msgstr "Anpassade behållare" #. (itstool) path: listitem/para #: C/index-in.docbook:7579 msgid "get_request_mode_vfunc(): Return what Gtk::SizeRequestMode is preferred by the container." msgstr "get_request_mode_vfunc(): Returnera vilket Gtk::SizeRequestMode som föredras av behållaren." #. (itstool) path: listitem/para #: C/index-in.docbook:7580 #, fuzzy msgid "measure_vfunc(): Calculate the minimum and natural width or height of the container." msgstr "measure_vfunc(): Beräkna minsta och naturlig bredd eller höjd på behållaren." #. (itstool) path: listitem/para #: C/index-in.docbook:7581 #, fuzzy msgid "" "size_allocate_vfunc(): Position the child widgets, given the height and width that the container has actually been " "given." msgstr "" "size_allocate_vfunc(): Positionera de underordnade komponenterna, givet höjden och bredden som behållaren faktiskt " "givits." #. (itstool) path: section/para #: C/index-in.docbook:7576 #, fuzzy msgid "" "When deriving a custom container widget directly from Gtk::Widget, you should override the following virtual methods: <_:" "itemizedlist-1/>" msgstr "" "När du härleder en anpassad behållarkomponent direkt från Gtk::Widget bör du åsidosätta följande virtuella metoder: <_:" "itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7585 #, fuzzy msgid "" "The get_request_mode_vfunc(), measure_vfunc(), and size_allocate_vfunc() virtual methods control the layout of the child widgets. For instance, if your container has 2 child widgets, with one below the " "other, your get_request_mode_vfunc() might request height-for-width layout. Then your measure_vfunc() might report the maximum of the widths of the child widgets when asked to report width, and it might report the sum of their " "heights when asked to report height. If you want padding between the child widgets then you would add that to the width and height too. Your " "widget's container will use this result to ensure that your widget gets enough space, and not less. By examining each widget's parent, and its " "parent, this logic will eventually decide the size of the top-level window." msgstr "" "De virtuella metoderna get_request_mode_vfunc(), measure_vfunc() och " "size_allocate_vfunc() styr layouten för de underordnade komponenterna. Om exempelvis din behållare har 2 underordnade " "komponenter, en under den andra, kanske din get_request_mode_vfunc() begär layouten height-for-width. Då kanske din " "measure_vfunc() rapporterar maximum av bredderna för de underordnade komponenterna då den ombes rapportera bredd, och " "rapportera summan av deras höjder då den ombes rapportera höjd. Om du vill ha utfyllnad mellan de underordnade komponenterna ska du lägga till " "även det till bredden och höjden. Din komponents behållare kommer använda detta resultat för att säkerställa att din komponent från " "tillräckligt utrymme och inte mindre än så. Genom att undersöka varje komponents överordnad, och dess överordnad, kommer denna logik i " "slutändan bestämma storleken på toppnivåfönstret." #. (itstool) path: section/para #: C/index-in.docbook:7602 #, fuzzy msgid "" "You are not guaranteed to get the Gtk::SizeRequestMode that you request. Therefore measure_vfunc() " "must return sensible values for all reasonable values of its input parameters. For a description of measure_vfunc()'s " "parameters see also the description of Gtk::Widget::measure(), which may be better documented than " "measure_vfunc()." msgstr "" "Du är inte garanterad att få det Gtk::SizeRequestMode som du begär. Därför måste measure_vfunc() " "returnera rimliga värden för alla vettiga värden på dess indataparametrar. För en beskrivning av measure_vfunc():s " "parametrar kan du även se beskrivningen av Gtk::Widget::measure(), som kan vara bättre dokumenterad än " "measure_vfunc()." #. (itstool) path: section/para #: C/index-in.docbook:7609 #, fuzzy msgid "" "size_allocate_vfunc() receives the actual height and width that the parent container has decided to give to your " "widget. This might be more than the minimum, or even more than the natural size, for instance if the top-level window has been expanded. You " "might choose to ignore the extra space and leave a blank area, or you might choose to expand your child widgets to fill the space, or you might " "choose to expand the padding between your widgets. It's your container, so you decide." msgstr "" "size_allocate_vfunc() tar emot den faktiska höjden och bredden som den överordnade behållaren bestämt sig för att ge " "din komponent. Detta kan vara mer än minimum, eller till och med mer än den naturliga storleken, exempelvis om toppnivåfönstret har " "expanderats. Du kan välja att ignorera det extra utrymmet och lämna tomt utrymme, eller så kan du välja att expandera dina underordnade " "komponenter så de fyller utrymmet, eller så kan du välja att expandera utfyllnaden mellan dina komponenter. Det är din behållare, så valet är " "ditt." #. (itstool) path: section/para #: C/index-in.docbook:7618 #, fuzzy msgid "" "Your container must unparent its children before the underlying C object (a gtkmm__GtkWidget) is finalized. If your " "container is used as a managed widget, it shall unparent its children in a Gtk::Widget::signal_destroy() handler " "(available since gtkmm 4.8). If your container is not managed, that signal handler is not called. Instead the " "children shall be unparented in the C++ destructor. If you want your container to be useful both ways, unparent the children both in the " "destructor and in a signal handler. See the example code." msgstr "" "Din behållare måste avföräldra sina underordnade innan det underliggande C-objektet (en gtkmm__GtkWidget) finaliseras. " "Om din behållare används som en hanterad komponent ska den avföräldra sina underordnade i en Gtk::Widget::signal_destroy()-hanterare (tillgänglig sedan gtkmm 4.8.0). Om din behållare inte hanteras anropas inte den " "signalhanteraren. I stället ska de underordnade avföräldras i C++-destruktorn. Om du vill att din behållare ska bara användbar på båda sätt så " "avföräldrar du de underordnade både i destruktorn och i en signalhanterare. Se exempelkoden." #. (itstool) path: section/para #: C/index-in.docbook:7630 #, fuzzy msgid "" "This example implements a container with child widgets, one above the other. Of course, in this case it would be far simpler just to use a " "vertical Gtk::Box or Gtk::Grid." msgstr "" "Detta exempel implementerar en behållare med två underordnade komponenter, en ovanför den andra. I detta fall skulle det förstås vara mycket " "enklare att bara använda en vertikal Gtk::Box eller Gtk::Grid." #. (itstool) path: figure/title #: C/index-in.docbook:7635 msgid "Custom Container" msgstr "Anpassad behållare" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:7637 #, fuzzy msgctxt "_" msgid "external ref='figures/custom_container.png' md5='865833944746eeb806eae028f0b2a25b'" msgstr "external ref='figures/custom_container.png' md5='5b4ae318725b6efbf5c6e1f7c94e6e04'" #. (itstool) path: section/para #: C/index-in.docbook:7641 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:7649 #, fuzzy msgid "" "By deriving directly from Gtk::Widget you can do all the drawing for your widget directly, instead of just arranging " "child widgets. For instance, a Gtk::Label draws the text of the label, but does not do this by using other widgets." msgstr "" "Genom att härleda direkt från Gtk::Widget kan du göra all ritning för din komponent direkt i stället för att bara " "arrangera underordnade komponenter. Exempelvis ritar en Gtk::Label texten för etiketten, men gör inte detta genom att " "använda andra komponenter." #. (itstool) path: listitem/para #: C/index-in.docbook:7660 #, fuzzy msgid "" "get_request_mode_vfunc(): (optional) Return what Gtk::SizeRequestMode is preferred by the widget." msgstr "" "get_request_mode_vfunc(): (valfri) Returnera vilket Gtk::SizeRequestMode som föredras av " "komponenten." #. (itstool) path: listitem/para #: C/index-in.docbook:7661 #, fuzzy msgid "measure_vfunc(): Calculate the minimum and natural width or height of the widget." msgstr "measure_vfunc(): Beräkna den minsta och naturliga bredden eller höjden för komponenten." #. (itstool) path: listitem/para #: C/index-in.docbook:7662 #, fuzzy msgid "" "size_allocate_vfunc(): (optional) Position the widget, given the height and width that it has actually been given." msgstr "size_allocate_vfunc(): (valfri) Positionera komponenten, givet den höjd och bredd som den faktiskt har givits." #. (itstool) path: listitem/para #: C/index-in.docbook:7663 msgid "on_realize(): (optional)" msgstr "on_realize(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7664 msgid "on_unrealize(): (optional)" msgstr "on_unrealize(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7665 msgid "on_map(): (optional)" msgstr "on_map(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7666 msgid "on_unmap(): (optional)" msgstr "on_unmap(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7667 #, fuzzy msgid "snapshot_vfunc(): Create a render node, e.g. a Cairo::Context node, and draw on it." msgstr "snapshot_vfunc(): Skapa en renderingsnod, t.ex. en Cairo::Context-nod, och rita på den." #. (itstool) path: section/para #: C/index-in.docbook:7655 #, fuzzy msgid "" "When deriving from Gtk::Widget, you should override the following virtual methods. The methods marked (optional) need " "not be overridden in all custom widgets. The base class's methods may be appropriate. <_:itemizedlist-1/>" msgstr "" "När du härleder från Gtk::Widget bör du åsidosätta följande virtuella metoder. Metoderna som markerats (valfri) behöver " "inte åsidosättas i alla anpassade komponenter. Basklassens metoder kan vara lämpliga. <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7671 #, fuzzy msgid "" "The first 3 methods in the previous table are also overridden in custom containers. They are briefly described in the Custom Containers section." msgstr "" "De tre första metoderna i föregående tabell åsidosätts också i anpassade behållare. De beskrivs kort i avsnittet Anpassade behållare." #. (itstool) path: section/title #: C/index-in.docbook:7677 #, fuzzy msgid "Class Init and Instance Init Functions" msgstr "Initieringsfunktioner för klasser och instanser" #. (itstool) path: section/para #: C/index-in.docbook:7679 #, fuzzy msgid "" "Some GTK functions, if called at all, must be called from the class init function. Some other GTK functions, if called, must be called from the instance init function. If your custom widget must call any of those functions, you " "can derive a class from Glib::ExtraClassInit and derive your custom class from that class. The custom CSS name example shows how that's done." msgstr "" "Vissa GTK-funktioner måste, om de anropas över huvud taget, anropas från klassens init-funktion. Några andra " "GTK-funktioner måste, om de anropas, anropas från instansens init-funktion. Om din anpassade komponent måste anropa " "någon av dessa funktioner kan du härleda en klass från Glib::ExtraClassInit och härleda din anpassade klass från den " "klassen. Exemplet för anpassat CSS-namn visar hur detta görs." #. (itstool) path: section/para #: C/index-in.docbook:7691 msgid "This example implements a widget which draws Penrose triangles." msgstr "Detta exempel implementerar en komponent som ritar Penrose-trianglar." #. (itstool) path: figure/title #: C/index-in.docbook:7694 msgid "Custom Widget" msgstr "Anpassad komponent" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:7696 #, fuzzy msgctxt "_" msgid "external ref='figures/custom_widget.png' md5='30f9b406a95d5b0d17b6fc081c359b98'" msgstr "external ref='figures/custom_widget.png' md5='30f9b406a95d5b0d17b6fc081c359b98'" #. (itstool) path: section/para #: C/index-in.docbook:7700 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:7705 msgid "Custom CSS Names" msgstr "Anpassade CSS-namn" #. (itstool) path: section/para #: C/index-in.docbook:7707 #, fuzzy msgid "" "Many aspects of the look of widgets are controlled by CSS (Cascading Style Sheet) files. With CSS files you can choose color, font, line " "thickness, etc. If you give some widgets their own names or their own CSS classes, you can define CSS rules that apply only to those widgets, " "for instance certain buttons, without affecting other similar widgets." msgstr "" "Många aspekter hos komponenters utseende styrs av CSS-filer (Cascading Style Sheet). Med CSS-filer kan du välja färg, typsnitt, linjetjocklek " "och så vidare. Om du ger några komponenter egna namn eller egna CSS-klasser så kan du definiera CSS-regler som endast tillämpas på dessa " "komponenter, exempelvis vissa knappar, utan att påverka andra liknande komponenter." #. (itstool) path: section/title #: C/index-in.docbook:7714 msgid "CSS Node Name, Widget Name, CSS Class Name" msgstr "CSS-nodnamn, Komponentnamn, CSS-klassnamn" #. (itstool) path: listitem/para #: C/index-in.docbook:7718 #, fuzzy msgid "" "gtk_widget_class_set_css_name() can only be called from the class init function. It sets the CSS node name of all " "instances of a class (a GType). See the Class Init and Instance Init Functions section." msgstr "" "gtk_widget_class_set_css_name() kan endast anropas från klassens init-funktion. Den ställer in CSS-nodnamnet för alla " "instanser av en klass (en GType). Se avsnittet Initieringsfunktioner för klasser och instanser." #. (itstool) path: listitem/para #: C/index-in.docbook:7722 msgid "Gtk::Widget::set_name() can be called from a C++ constructor. It sets the name of a widget instance." msgstr "Gtk::Widget::set_name() kan anropas från en C++-konstruktor. Den ställer in namnet för en komponentinstans." #. (itstool) path: listitem/para #: C/index-in.docbook:7725 msgid "" "Gtk::Widget::add_class_name() can be called from a C++ constructor. It adds the name of a CSS class, used by a widget " "instance." msgstr "" "Gtk::Widget::add_class_name() kan anropas från en C++-konstruktor. Den lägger till namnet för en CSS-klass, använd av " "en komponentinstans." #. (itstool) path: section/para #: C/index-in.docbook:7716 #, fuzzy msgid "" "There are three ways of referring from a widget to data in a CSS file: <_:itemizedlist-1/> The following example shows a button with its own " "CSS node name, a label with a widget name and a label that uses its own CSS class." msgstr "" "Det finns tre sätt att referera från en komponent till data i en CSS-fil: <_:itemizedlist-1/> Följande exempel visar en knapp med eget CSS-" "nodnamn, en etikett med ett komponentnamn och en etikett som använder sin egen CSS-klass." #. (itstool) path: section/title #: C/index-in.docbook:7734 msgid "Custom Style Information" msgstr "Anpassad stilinformation" #. (itstool) path: section/para #: C/index-in.docbook:7736 msgid "" "To add a style sheet to an application, use one of the Gtk::CssProvider::load_from_*() methods. Then add it with " "Gtk::StyleProvider::add_provider_for_display() (available since gtkmm 4.10) or " "Gtk::StyleContext::add_provider_for_display(). Gtk::StyleContext also contains methods to read " "some style information, but this class is deprecated since gtkmm 4.10." msgstr "" "För att lägga till en stilmall till ett program använder du en av Gtk::CssProvider::load_from_*()-metoderna. Lägg " "sedan till den med Gtk::StyleProvider::add_provider_for_display() (tillgänglig sedan gtkmm " "4.10) eller Gtk::StyleContext::add_provider_for_display(). Gtk::StyleContext innehåller också " "metoder för att läsa viss stilinformation, men denna klass är föråldrad sedan gtkmm 4.10." #. (itstool) path: section/para #: C/index-in.docbook:7743 msgid "CSS files are described in the documentation of GTK." msgstr "CSS-filer beskrivs i dokumentationen för GTK." #. (itstool) path: section/para #: C/index-in.docbook:7749 msgid "This example implements a button and two labels with custom style information." msgstr "Detta exempel implementerar en knapp och två etiketter med anpassad stilinformation." #. (itstool) path: figure/title #: C/index-in.docbook:7752 msgid "Custom CSS Name" msgstr "Anpassat CSS-namn" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:7754 #, fuzzy msgctxt "_" msgid "external ref='figures/custom_css_name.png' md5='fb3d968b1fd40eb219e5a78946adff0f'" msgstr "external ref='figures/custom_css_name.png' md5='fb3d968b1fd40eb219e5a78946adff0f'" #. (itstool) path: section/para #: C/index-in.docbook:7758 msgid "" "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:7765 msgid "Multi-threaded programs" msgstr "Flertrådade program" #. (itstool) path: section/title #: C/index-in.docbook:7768 msgid "The constraints" msgstr "Begränsningarna" #. (itstool) path: footnote/para #: C/index-in.docbook:7779 #, fuzzy msgid "" "These interactions arise from the fact that, amongst other things, a class inheriting from sigc::trackable will, via " "that inheritance, have a std::list object keeping track of slots created by calls to sigc::mem_fun() representing any of its non-static methods (more particularly it keeps a list of callbacks which will null the connected slots on its " "destruction). Each sigc::slot object also keeps, via sigc::slot_rep, its own sigc::" "trackable object to track any sigc::connection objects which it needs to inform about its demise, and also " "has a function to deregister itself from any sigc::trackable on disconnection or destruction. sigc::signal objects also keep lists of slots, which will be updated by a call to their connect() method or calls to any " "sigc::connection object relating to such a connection." msgstr "" "Dessa interaktioner kommer från det faktum att, bland annat, en klass som ärver från sigc::trackable kommer via det " "arvet ha ett std::list-objekt som håller koll på fack som skapas av anrop till sigc::mem_fun() som " "representerar dess icke-statiska metoder (mer specifikt behåller det en lista över återanrop som kommer sätta de anslutna till facken till null " "vid dess förstörelse). Varje sigc::slot-objekt behåller också, via sigc::slot_rep, sitt eget " "sigc::trackable-objekt för att spåra sigc::connection-objekt som det behöver informera om sitt " "frånfälle, och också har en funktion för att avregistrera sig själv från alla sigc::trackable vid frånkopplande eller " "förstörelse. sigc::signal-objekt behåller också en lista över fack som kommer uppdateras av ett anrop till deras " "connect()-metod eller anrop till sigc::connection-objekt som är relaterade till en sådan " "anslutning." #. (itstool) path: section/para #: C/index-in.docbook:7770 #, fuzzy msgid "" "Care is required when writing programs based on gtkmm using multiple threads of execution, arising from the fact " "that libsigc++, and in particular sigc::trackable, are not thread-safe. That's because none " "of the complex interactions that occur behind the scenes when using libsigc++ are protected by a mutex or other " "means of synchronization. <_:footnote-1/>" msgstr "" "Omsorg krävs vid skrivning av program som är baserade på att gtkmm använder flera exekveringstrådar, vilket kommer " "från faktumet att libsigc++, och i synnerhet sigc::trackable, inte är trådsäkert. Detta är " "för att ingen av de komplexa interaktioner som sker bakom scenen när libsigc++ används skyddas av ett mutex eller " "någon annan sorts synkronisering. <_:footnote-1/>" #. (itstool) path: section/title #: C/index-in.docbook:7803 msgid "The rules" msgstr "Reglerna" #. (itstool) path: section/para #: C/index-in.docbook:7805 #, fuzzy msgid "" "This requires a number of rules to be observed when writing multi-threaded programs using gtkmm. These are set out " "below, but one point to note is that extra care is required when deriving classes from sigc::trackable, because the " "effects are unintuitive (see particularly points 4 and 5 below)." msgstr "" "Detta kräver att ett antal regler följs när flertrådade program skrivs med gtkmm. Dessa beskrivs nedan, men punkt " "att notera är att extra försiktighet krävs vid härledning av klasser från sigc::trackable för att effekterna inte är " "intuitiva (se främst punkterna 4 och 5 nedan)." #. (itstool) path: listitem/para #: C/index-in.docbook:7816 #, fuzzy msgid "" "Use Glib::Dispatcher to invoke gtkmm functions from worker threads (this is dealt with in " "more detail in the next section)." msgstr "" "Använd Glib::Dispatcher för att köra gtkmm-funktioner från arbetartrådar (detta hanteras mer " "detaljerat i nästa avsnitt)." # TODO: operator() ? #. (itstool) path: listitem/para #: C/index-in.docbook:7824 #, fuzzy msgid "" "A sigc::signal object should be regarded as owned by the thread which created it. Only that thread should connect a " "sigc::slot object to the signal object, and only that thread should emit() or call " "operator()() on the signal, or null any connected sigc::slot object. It follows (amongst other " "things) that any signal object provided by a gtkmm widget should only be operated on in the main GUI thread and any " "object deriving from sigc::trackable having its non-static methods referenced by slots connected to the signal object " "should only be destroyed in that thread." msgstr "" "Ett sigc::signal-objekt ska anses som ägt av tråden som skapade det. Endast den tråden ska ansluta ett sigc::" "slot-objekt till signalobjektet, och endast den tråden ska anropa emit() eller operator()() på signalen, eller göra några anslutna sigc::slot-objekt till null. Det följer (bland annat) att varje " "signalobjekt som tillhandahålls av en gtkmm-komponent endast ska opereras på i GUI-huvudtråden och att alla objekt " "som härleder från sigc::trackable och som har sina icke-statiska metoder refererade till av fack anslutna till " "signalobjektet endast ska förstöras i den tråden." #. (itstool) path: listitem/para #: C/index-in.docbook:7840 #, fuzzy msgid "" "Any sigc::connection object should be regarded as owned by the thread in which the method returning the sigc::" "connection object was called. Only that thread should call sigc::connection methods on the object." msgstr "" "Alla sigc::connection-objekt ska anses ägas av tråden i vilken metoden som returnerar sigc::connection-objektet anropades. Endast den tråden ska anropa sigc::connection-metoder på objektet." #. (itstool) path: listitem/para #: C/index-in.docbook:7850 #, fuzzy msgid "" "A sigc::slot object created by a call to sigc::mem_fun() which references a method of a class " "deriving from sigc::trackable should never be copied to another thread, nor destroyed by a different thread than the one " "which created it." msgstr "" "Ett sigc::slot-objekt skapat av ett anrop till sigc::mem_fun() som refererar en metod av en klass " "som härleds från sigc::trackable bör aldrig kopieras till en annan tråd, och inte heller förstöras av en annan tråd än " "den som skapade det." #. (itstool) path: listitem/para #: C/index-in.docbook:7860 #, fuzzy msgid "" "If a particular class object derives from sigc::trackable, only one thread should create sigc::slot objects representing any of the class's non-static methods by calling sigc::mem_fun(). The first thread to " "create such a slot should be regarded as owning the relevant object for the purpose of creating further slots referencing any of its non-static methods using that function, or nulling those slots by disconnecting them or destroying the trackable object." msgstr "" "Om ett visst klassobjekt härleds från sigc::trackable ska bara en tråd skapa sigc::slot-objekt " "som representerar någon av klassens icke-statiska metoder genom att anropa sigc::mem_fun(). Den första tråden som skapar " "ett sådant fack ska anses äga det relevanta objektet i syfte att skapa vidare fack som refererar något av dess icke-" "statiska metoder som använder den funktionen, eller göra dessa fack till null genom att koppla från dem eller förstöra det spårbara objektet." #. (itstool) path: listitem/para #: C/index-in.docbook:7874 #, fuzzy msgid "" "Although glib is itself thread-safe, any glibmm wrappers which use libsigc+" "+ will not be. So for example, only the thread in which a main loop runs should call Glib::SignalIdle::connect(), Glib::SignalIO::connect(), Glib::SignalTimeout::connect(), Glib::" "SignalTimeout::connect_seconds for that main loop, or manipulate any sigc::connection object returned by " "them." msgstr "" "Även om glib i sig är trådsäkert så kommer glibmm-omslag som använder " "libsigc++ inte vara det. Så exempelvis bör endast tråden som en huvudslinga körs anropa Glib::" "SignalIdle::connect(), Glib::SignalIO::connect(), Glib::SignalTimeout::connect(), Glib::SignalTimeout::connect_seconds för den huvudslingan, eller manipulera några sigc::" "connection-objekt som returneras av dem." #. (itstool) path: listitem/para #: C/index-in.docbook:7886 #, fuzzy msgid "" "The connect*_once() variants, Glib::SignalIdle::connect_once(), Glib::SignalTimeout::connect_once(), Glib::SignalTimeout::connect_seconds_once(), are thread-safe for any case where the slot is not created " "by a call to sigc::mem_fun() which represents a method of a class deriving from sigc::trackable." msgstr "" "connect*_once()-varianterna, Glib::SignalIdle::connect_once(), Glib::SignalTimeout::connect_once(), Glib::SignalTimeout::connect_seconds_once() är trådsäkra för alla fall där facket inte skapas av ett " "anrop till sigc::mem_fun() som representerar en metod av en klass som härleds från sigc::trackable." #. (itstool) path: section/title #: C/index-in.docbook:7904 msgid "Using Glib::Dispatcher" msgstr "Använda Glib::Dispatcher" # TODO: operator() ? #. (itstool) path: section/para #: C/index-in.docbook:7906 #, fuzzy msgid "" "The slots connected to sigc::signal objects execute in the thread which calls emit() or " "operator()() on the signal. Glib::Dispatcher does not behave this way: instead its connected " "slots execute in the thread in which the Glib::Dispatcher object was constructed (which must have a glib main loop). If " "a Glib::Dispatcher object is constructed in the main GUI thread (which will therefore be the receiver thread), any " "worker thread can emit on it and have the connected slots safely execute gtkmm functions." msgstr "" "Facken anslutna till sigc::signal-objekt exekverar i tråden som anropar emit() eller " "operator()() på signalen. Glib::Dispatcher beter sig inte på detta sätt: i stället exekverar " "dess anslutna fack i tråden i vilken Glib::Dispatcher-objektet konstruerades (vilken måste ha en glib-mainloop). Om ett " "Glib::Dispatcher-objekt konstrueras i GUI-huvudtråden (vilken därför kommer vara mottagartråden), kommer alla " "arbetartrådar kunna sända ut på det och ha att de anslutna facken på ett säkert sätt kan exekvera gtkmm-funktioner." #. (itstool) path: section/para #: C/index-in.docbook:7920 #, fuzzy msgid "" "Some thread safety rules on the use of Glib::Dispatcher still apply. As mentioned, a Glib::Dispatcher object must be constructed in the receiver thread (the thread in whose main loop it will execute its connected slots). By default " "this is the main program thread, although there is a Glib::Dispatcher constructor which can take the Glib::" "MainContext object of any thread which has a main loop. Only the receiver thread should call connect() on " "the Glib::Dispatcher object, or manipulate any related sigc::connection object, unless additional " "synchronization is employed. However, any worker thread can safely emit on the Glib::Dispatcher object without any " "locking once the receiver thread has connected the slots, provided that it is constructed before the worker thread is started (if it is " "constructed after the thread has started, additional synchronization will normally be required to ensure visibility)." msgstr "" "Några trådsäkerhetsregler för användningen av Glib::Dispatcher gäller fortfarande. Som nämnt måste ett Glib::" "Dispatcher-objekt konstrueras i mottagartråden (tråden i vars huvudslinga den kommer exekvera sina ansluta fack). Som standard är " "detta huvudprogramtråden, men det finns en Glib::Dispatcher-konstruktor som kan ta Glib::MainContext-objektet för vilken tråd som helst som har en huvudslinga. Endast mottagartråden ska anropa connect() på " "Glib::Dispatcher-objektet eller manipulera något relaterat sigc::connection-objekt, om inte " "ytterligare synkronisering utförs. Alla arbetartrådar kan dock säkert sända ut på Glib::Dispatcher-objektet utan någon " "låsning när mottagartråden har anslutit facken, förutsatt att den konstruerats innan arbetartråden startats (om den har konstruerats efter " "arbetartråden startats kommer ytterligare synkronisering vanligen behövas för att försäkra synlighet)." #. (itstool) path: section/para #: C/index-in.docbook:7940 #, fuzzy msgid "" "Aside from the fact that connected slots always execute in the receiver thread, Glib::Dispatcher objects are similar to " "sigc::signal<void()> objects. They therefore cannot pass unbound arguments nor return a value. The best way to " "pass unbound arguments is with a thread-safe (asynchronous) queue. At the time of writing glibmm does not have one, " "although most people writing multi-threaded code will have one available to them (they are relatively easy to write although there are " "subtleties in combining thread safety with strong exception safety)." msgstr "" "Förutom faktum att anslutna fack alltid exekverar i mottagartråden så liknar Glib::Dispatcher-objekts sigc::" "signal<void()>-objekt. De kan därför varken skicka obundna argument eller returnera ett värde. Det bästa sättet att skicka " "obundna argument är med en trådsäker (asynkron) kö. I skrivande stund har glibmm inte någon, även om de flesta som " "skriver flertrådad kod kommer ha en tillgänglig (de är relativt lätta att skriva även om det finns subtila saker att tänka på vid kombination " "av trådsäkerhet med stark undantagssäkerhet)." # TODO: emitted on by?? #. (itstool) path: section/para #: C/index-in.docbook:7953 #, fuzzy msgid "" "A Glib::Dispatcher object can be emitted on by the receiver thread as well as by a worker thread, although this should " "be done within reasonable bounds. On unix-like systems Glib::Dispatcher objects share a single common pipe, which could " "in theory at least fill up on a very heavily loaded system running a program with a very large number of Dispatcher " "objects in use. Were the pipe to fill up before the receiver thread's main loop has had an opportunity to read from it to empty it, and the " "receiver thread attempt to emit and so write to it when it is in that condition, the receiver thread would block on the write, so deadlocking. " "Where the receiver thread is to emit, a normal sigc::signal<void()> object could of course be used instead." msgstr "" "Ett Glib::Dispatcher-objekt kan sändas ut av mottagartråden såväl som av en arbetartråd, även om detta ska göras inom " "rimliga gränser. På unix-liknande system delar Glib::Dispatcher-objekt ett gemensamt rör, vilket i alla fall i teorin " "skulle kunna bli fullt på ett system under väldigt tung belastning som kör ett program med ett väldigt stort antal Dispatcher-objekt som används. Om röret skulle fyllas innan mottagartrådens huvudslinga har haft en chans att läsa från det för att tömma det, " "och mottagartråden försöker att sända ut och skriva till det när det är i det tillståndet, så skulle mottagartråden blockera på skrivningen, " "vilket ger ett dödläge. Där mottagartråden ska sända ut skulle förstås ett vanligt sigc::signal<void()>-objekt " "användas i stället." #. (itstool) path: section/para #: C/index-in.docbook:7974 #, fuzzy msgid "" "This is an example program with two threads, one GUI thread, like in all gtkmm programs, and one worker thread. The " "worker thread is created when you press the Start work button. It is deleted when the work is finished, when you press the " "Stop work button, or when you press the Quit button." msgstr "" "Detta är ett exempelprogram med två trådar, en GUI-tråd, som i alla gtkmm-program, och en arbetartråd. Arbetartråden " "skapas när du trycker på knappen Start work. Den tas bort när arbetet är slutfört, när du trycker på knappen Stop " "work eller när du trycker på knappen Quit." #. (itstool) path: section/para #: C/index-in.docbook:7982 #, fuzzy msgid "" "A Glib::Dispatcher is used for sending notifications from the worker thread to the GUI thread. The " "ExampleWorker class contains data which is accessed by both threads. This data is protected by a std::mutex. Only the GUI thread updates the GUI." msgstr "" "En Glib::Dispatcher används för att skicka aviseringar från arbetartråden till GUI-tråden. Klassen " "ExampleWorker innehåller data som koms åt av båda trådar. Dessa data skuddas av en std::mutex. " "Endast GUI-tråden uppdaterar GUI:t." #. (itstool) path: section/para #: C/index-in.docbook:7990 #, fuzzy msgid "" "Compiling and linking a multi-threaded program can require special compiler and linker options. If you use the g++ " "compiler, add the -pthread option. Other compilers may require other options. If you build with meson, it handles the multi-threading complications for you, if you add dependency('threads')." msgstr "" "Kompilering och länkning av ett flertrådat program kan kräva speciella kompilator- och länkar-flaggor. Om du använder kompilatorn " "g++ lägger du till flaggan -pthread. Andra kompilatorer kan kräva andra flaggor. Om du bygger med " "meson hanterar det komplikationerna med flertrådning åt dig om du lägger till dependency('threads')." #. (itstool) path: figure/title #: C/index-in.docbook:7999 msgid "Multi-Threaded Program" msgstr "Flertrådat program" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8001 #, fuzzy msgctxt "_" msgid "external ref='figures/multithread.png' md5='acc87c2afb17321ab098b7f0b8a46b27'" msgstr "external ref='figures/multithread.png' md5='acc87c2afb17321ab098b7f0b8a46b27'" #. (itstool) path: section/para #: C/index-in.docbook:8005 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:8012 msgid "Recommended Techniques" msgstr "Rekommenderade tekniker" #. (itstool) path: chapter/para #: C/index-in.docbook:8014 msgid "" "This section is simply a gathering of wisdom, general style guidelines and hints for creating gtkmm applications." msgstr "Detta avsnitt är helt enkelt samlad kunskap, allmänna stilriktlinjer och tips för att skapa gtkmm-program." #. (itstool) path: chapter/para #: C/index-in.docbook:8018 #, fuzzy msgid "" "Use Meson! It is your friend :) It examines C and C++ files, determines how they depend on each other, and generates " "build.ninja or an equivalent file so the files can be compiled in the correct order. Meson " "permits automatic configuration of software installation, handling a large number of system quirks to increase portability." msgstr "" "AnvändMeson! Det är din vän :) Det undersöker C- och C++-filer, avgör hur de beror på varandra, och genererar " "build.ninja eller en motsvarande fil så att filerna kan kompileras i rätt ordning. Meson " "tillåter automatisk konfiguration av programvaruinstallation, och hanterar ett stort antal systemabrovinkar för att öka portabilitet." #. (itstool) path: chapter/para #: C/index-in.docbook:8026 #, fuzzy msgid "" "Subclass Widgets to better organize your code. You should probably subclass your main Window at least. Then you can make " "your child Widgets and signal handlers members of that class." msgstr "" "Gör underklasser till Widget-komponenter för att bättre organisera din kod. Du bör troligen åtminstone göra en underklass till ditt " "Window. Sedan kan du göra dina underordnade Widget och signalhanterare till medlemmar av den klassen." #. (itstool) path: chapter/para #: C/index-in.docbook:8031 #, fuzzy msgid "" "Create your own signals instead of passing pointers around. Objects can communicate with each other via signals and signal handlers. This is " "much simpler than objects holding pointers to each other and calling each other's methods. gtkmm's classes use " "special versions of sigc::signal, but you should use normal sigc::signals, as described in the " "libsigc++ documentation." msgstr "" "Skapa dina egna signaler i stället för att skicka runt pekare. Objekt kan kommunicera med varandra via signaler och signalhanterare. Detta är " "mycket enklare än objekt som håller pekare till varandra och anropar varandras metoder. gtkmms klasser använder " "specialversioner av sigc::signal, men du bör använda vanliga sigc::signal-signaler, som beskrivet " "i libsigc++-dokumentationen." #. (itstool) path: section/title #: C/index-in.docbook:8040 msgid "Application Lifetime" msgstr "Livslängd för program" #. (itstool) path: section/para #: C/index-in.docbook:8041 #, fuzzy msgid "" "Most applications will have only one Window, or only one main window. These applications can use Gtk::" "Application::make_window_and_run(int argc, char** argv, T_Args&&... args). It creates and shows a window. When the window " "is hidden, make_window_and_run() deletes the window and returns to the caller. This might happen when the user closes " "the window, or when your code decides to hide the window with set_visible(false). You can prevent the user from " "closing the window (for instance, if there are unsaved changes) by overriding Gtk::Window::on_close_request()." msgstr "" "De flesta program kommer endast ha ett Window, eller endast ett huvudfönster. Dessa program kan använda Gtk::" "Application::make_window_and_run(int argc, char** argv, T_Args&&... args). Det skapar och visar ett fönster. När fönstret " "är dolt tar make_window_and_run() bort fönstret och returnerar till anroparen. Detta kan hända när användaren stänger " "fönstret, eller när din kod bestämmer sig för att dölja fönstret med set_visible(false). Du kan förhindra användaren " "från att stränga fönstret (exempelvis om det finns osparade ändringar) genom att åsidosätta Gtk::Window::on_close_request()." #. (itstool) path: section/para #: C/index-in.docbook:8050 msgid "Most of our examples use this technique." msgstr "De flesta av våra exempel använder denna teknik." #. (itstool) path: section/title #: C/index-in.docbook:8054 msgid "Using a gtkmm widget" msgstr "Använda en gtkmm-komponent" #. (itstool) path: section/para #: C/index-in.docbook:8056 msgid "Our examples all tend to have the same structure. They follow these steps for using a Widget:" msgstr "Våra exempel tenderar att ha samma struktur. De följer dessa steg för att använda en Widget:" #. (itstool) path: listitem/para #: C/index-in.docbook:8065 #, fuzzy msgid "" "Declare a variable of the type of Widget you wish to use, generally as member variable of a derived container class. You " "could also declare a pointer to the widget type, and then create it with new or Gtk::make_managed() in " "your code." msgstr "" "Deklarera en variabel av typen av Widget som du vill använda, allmänt som medlemsvariabel av en härledd behållarklass. " "Du skulle också kunna deklarera en pekare till komponenttypen och sedan skapa den med new eller Gtk::" "make_managed() i din kod." #. (itstool) path: listitem/para #: C/index-in.docbook:8074 #, fuzzy msgid "" "Set the attributes of the widget. If the widget has no default constructor, then you will need to initialize the widget in the initializer list " "of your container class's constructor." msgstr "" "Ställ in komponentens attribut. Om komponenten inte har någon standardkonstruktor kommer du behöva initiera komponenten i initierarlistan för " "din behållarklass konstruktor." #. (itstool) path: listitem/para #: C/index-in.docbook:8082 msgid "Connect any signals you wish to use to the appropriate handlers." msgstr "Anslut alla signaler som du vill använda till lämpliga hanterare." #. (itstool) path: listitem/para #: C/index-in.docbook:8088 msgid "Pack the widget into a container using the appropriate call, e.g. Gtk::Box::append()." msgstr "Packa komponenten i en behållare med lämpligt anrop, t.ex. Gtk::Box::append()." #. (itstool) path: section/para #: C/index-in.docbook:8098 msgid "" "If you don't want all widgets to be shown, call Gtk::Widget::set_visible(false) on the widgets that you don't want to " "show. If a container widget is hidden, all of its child widgets are also hidden, even if set_visible(false) is not " "called on the child widgets." msgstr "" "Om du inte vill att alla komponenter ska visas anropar du Gtk::Widget::set_visible(false) på komponenterna som du inte " "vill ska visas. Om en behållarkomponent är dold så är även alla dess underordnade komponenter dolda, även om set_visible(false) inte anropas på de underordnade komponenterna." #. (itstool) path: chapter/title #: C/index-in.docbook:8109 msgid "Building applications" msgstr "Bygga program" #. (itstool) path: chapter/para #: C/index-in.docbook:8111 #, fuzzy msgid "" "This chapter is similar to Building applications and following sections in the Getting Started chapter in the GTK documentation. The same application is built, but gtkmm is used instead of GTK." msgstr "" "Detta kapitel liknar Bygga program och följande avsnitt i Komma igång-kapitlet i GTK-dokumentationen. Samma program byggs, men gtkmm används i stället för " "GTK." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8121 msgid "The binary file" msgstr "Binärfilen" #. (itstool) path: listitem/para #: C/index-in.docbook:8122 msgid "This gets installed in /usr/bin." msgstr "Denna installeras i /usr/bin." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8125 #, fuzzy msgid "A desktop file" msgstr "En desktop-fil" #. (itstool) path: listitem/para #: C/index-in.docbook:8126 #, fuzzy msgid "" "The desktop file provides important information about the application to the desktop shell, such as its name, icon, D-Bus name, commandline to " "launch it, etc. It is installed in /usr/share/applications." msgstr "" "Desktop-filen tillhandahåller viktig information om programmet till skrivbordsskalet, som dess namn, ikon, D-Bus-namn, kommandorad för att köra " "den o.s.v. Den installeras i /usr/share/applications." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8131 msgid "An icon" msgstr "En ikon" #. (itstool) path: listitem/para #: C/index-in.docbook:8132 msgid "" "The icon gets installed in /usr/share/icons/hicolor/48x48/apps, where it will be found regardless of the current theme." msgstr "Ikonen installeras i /usr/share/icons/hicolor/48x48/apps, där den kommer hittas oavsett aktuellt tema." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8136 msgid "A settings schema" msgstr "Ett inställningsschema" #. (itstool) path: listitem/para #: C/index-in.docbook:8137 msgid "" "If the application uses Gio::Settings, it will install its schema in /usr/share/glib-2.0/schemas, " "so that tools like dconf-editor can find it." msgstr "" "Om programmet använder Gio::Settings kommer det installera sitt schema i /usr/share/glib-2.0/schemas så att verktyg som dconf-editor kan hitta det." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8142 msgid "Other resources" msgstr "Andra resurser" #. (itstool) path: listitem/para #: C/index-in.docbook:8143 #, fuzzy msgid "" "Other files, such as Gtk::Builder ui files, are best loaded from resources stored in the application binary itself. This " "eliminates the need for most of the files that would traditionally be installed in an application-specific location in /usr/share." msgstr "" "Andra filer som Gtk::Builder-ui-filer läses bäst in från resurser som lagras i själva programbinären. Detta eliminerar " "behovet av de flesta filer som traditionellt skulle installeras på en programspecifik plats i /usr/share." #. (itstool) path: chapter/para #: C/index-in.docbook:8117 msgid "An application consists of a number of files: <_:variablelist-1/>" msgstr "Ett program består av ett antal filer: <_:variablelist-1/>" #. (itstool) path: chapter/para #: C/index-in.docbook:8151 #, fuzzy msgid "" "gtkmm includes application support that is built on top of Gio::Application. In this chapter " "we'll build a simple application by starting from scratch, adding more and more pieces over time. Along the way, we'll learn about " "Gtk::Application, Gtk::Builder, resources, menus, settings, Gtk::HeaderBar, Gtk::Stack, Gtk::SearchBar, Gtk::ListBox, and more." msgstr "" "gtkmm inkluderar programstöd som byggts på Gio::Application. I detta kapitel kommer vi bygga " "ett enkelt program genom att starta från grunden och stegvis lägga till fler och fler bitar. På vägen kommer vi lära oss om Gtk::" "Application, Gtk::Builder, resurser, menyer, inställningar, Gtk::HeaderBar, " "Gtk::Stack, Gtk::SearchBar, Gtk::ListBox med mera." #. (itstool) path: chapter/para #: C/index-in.docbook:8160 #, fuzzy msgid "" "The full, buildable sources for these examples can be found in the examples/book/buildapp directory of the " "gtkmm-documentation source distribution, or online in the gtkmm-documentation git repository. You can build each " "example separately by using meson and ninja with the meson.build file or by using " "make with the Makefile.example file. For more information, see the README included " "in the buildapp directory." msgstr "" "De fullständiga byggbara källorna för dessa exempel kan hittas i katalogen examples/book/buildapp för " "källkodsdistributionen av gtkmm-documentation, eller på nätet i git-arkivet för gtkmm-documentation. Du kan bygga " "varje exempel separat genom att använda meson och ninja med filen meson.build eller " "genom att använda make med filen Makefile.example. För mer information kan du se README som finns i katalogen buildapp." #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8173 C/index-in.docbook:8217 msgid "A trivial application" msgstr "Ett simpelt program" #. (itstool) path: section/para #: C/index-in.docbook:8175 #, fuzzy msgid "" "When using Gtk::Application, the main() function can be very simple. We just call Gtk::" "Application::run() on an instance of our application class." msgstr "" "När Gtk::Application används kan main()-funktionen vara väldigt enkel. Vi anropar helt enkelt " "Gtk::Application::run() på en instans av vår programklass." #. (itstool) path: section/para #: C/index-in.docbook:8181 #, fuzzy msgid "" "All the application logic is in the application class, which is a subclass of Gtk::Application. Our example does not yet " "have any interesting functionality. All it does is open a window when it is activated without arguments, and open the files it is given, if it " "is started with arguments. (Or rather, our application class tries to open the files, but our subclassed application window does not yet do " "what it's told to do.)" msgstr "" "All programlogik är i programklassen, vilket är en underklass till Gtk::Application. Vårt exempel har ännu inte någon " "intressant funktionalitet. Allt det gör är att öppna ett fönster när det aktiveras utan argument, och öppna filerna som det ges om det startas " "med argument. (Eller snarare försöker vår programklass öppna filerna, men vårt underklassade programfönster gör inte ännu vad det ombes att " "göra.)" #. (itstool) path: section/para #: C/index-in.docbook:8190 #, fuzzy msgid "" "To handle these two cases, we override signal_activate()'s default handler, which gets called when the application is " "launched without commandline arguments, and signal_open()'s default handler, which gets called when the application is " "launched with commandline arguments." msgstr "" "För att hantera dessa två fall åsidosätter vi signal_activate():s standardhanterare, som anropas när programmet körs " "utan kommandoradsargument, och signal_open():s standardhanterare, som anropas när programmet körs med " "kommandoradsargument." #. (itstool) path: section/para #: C/index-in.docbook:8197 msgid "Gio::Application Reference" msgstr "Referens för Gio::Application" #. (itstool) path: section/para #: C/index-in.docbook:8198 msgid "Gtk::Application Reference" msgstr "Referens för Gtk::Application" #. (itstool) path: section/para #: C/index-in.docbook:8200 #, fuzzy msgid "" "Another important class that is part of the application support in gtkmm is Gtk::ApplicationWindow. It is typically subclassed as well. Our subclass does not do anything yet, so we will just get an empty window." msgstr "" "En annan viktig klass som är del av programstödet i gtkmm is Gtk::ApplicationWindow. Den " "underklassas vanligen också. Vår underklass gör inte något ännu, så vi får bara ett tomt fönster." #. (itstool) path: section/para #: C/index-in.docbook:8206 #, fuzzy msgid "" "As part of the initial setup of our application, we also create an icon and a desktop file. Note that @bindir@ in the desktop file needs to be " "replaced with the actual path to the binary before this desktop file can be used." msgstr "" "Som del av den initiala konfigurationen av ditt program skapar vi även en ikon och en desktop-fil. Observera att @bindir@ i desktop-filen " "behöver ersättas med den faktiska sökvägen till binären innan denna desktop-fil kan användas." #. (itstool) path: section/para #: C/index-in.docbook:8212 msgid "Here is what we've achieved so far:" msgstr "Här är vad vi har uppnått så här långt:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8219 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_trivial_app.png' md5='fe94e3d80cb888d1827912f49af7a6f3'" msgstr "external ref='figures/buildapp_trivial_app.png' md5='fe94e3d80cb888d1827912f49af7a6f3'" #. (itstool) path: section/para #: C/index-in.docbook:8223 #, fuzzy msgid "" "This does not look very impressive yet, but our application is already presenting itself on the session bus, it has single-instance semantics, " "and it accepts files as commandline arguments." msgstr "" "Det här ser inte ut så imponerande än, men vårt program presenterar sig redan på sessionsbussen, har enkelinstanssemantik och accepterar filer " "som kommandoradsargument." #. (itstool) path: section/para #: C/index-in.docbook:8228 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8233 C/index-in.docbook:8276 #, fuzzy msgid "Populating the window" msgstr "Fylla fönstret" #. (itstool) path: section/para #: C/index-in.docbook:8235 #, fuzzy msgid "" "In this step, we use a Gtk::Builder instance to associate a Gtk::Builder ui file with our " "application window class." msgstr "" "I detta steg använder vi en Gtk::Builder-instans för att associera en Gtk::Builder-ui-fil med vår " "programfönsterklass." #. (itstool) path: section/para #: C/index-in.docbook:8240 #, fuzzy msgid "Our simple ui file gives the window a title, and puts a Gtk::Stack widget as the main content." msgstr "Vår enkla ui-fil ger fönstret en titel och sätter en Gtk::Stack-komponent som huvudinnehållet." #. (itstool) path: section/para #: C/index-in.docbook:8245 #, fuzzy msgid "" "To make use of this file in our application, we revisit our Gtk::ApplicationWindow subclass, and call Gtk::" "Builder::create_from_resource() and Gtk::Builder::get_widget_derived() from the " "ExampleAppWindow::create() method to get an instance of our subclassed Gtk::ApplicationWindow. " "See the Using derived widgets section for more information about " "get_widget_derived()." msgstr "" "För att använda denna fil i vårt program besöker vi åter vår underklass Gtk::ApplicationWindow, och anropar " "Gtk::Builder::create_from_resource() och Gtk::Builder::get_widget_derived() från metoden " "ExampleAppWindow::create() för att får en instans av vårt underklassade Gtk::ApplicationWindow. " "Se avsnittet Använda härledda komponenter för mer information om " "get_widget_derived()." #. (itstool) path: para/screen #: C/index-in.docbook:8264 #, fuzzy, no-wrap msgid "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml" msgstr "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml" #. (itstool) path: section/para #: C/index-in.docbook:8256 #, fuzzy msgid "" "You may have noticed that we use the _from_resource() variant of the method that reads the ui file. Now we need to use " "GLib's resource functionality to include the ui file in the binary. This is commonly done by listing all resources " "in a .gresource.xml file. This file has to be converted into a C source file that will be compiled and linked into the application together " "with the other source files. To do so, we use the glib-compile-resources utility: <_:screen-1/> The Gio::Resource and glib-compile-resources section contains more information about resource files. If you " "build with Meson, use the compile_resources() function in Meson's GNOME module." msgstr "" "Du kan ha upptäckt att vi använder varianten _from_resource() för metoden som läser ui-filen. Nu behöver vi använda " "GLibs resursfunktionalitet för att inkludera ui-filen i binären. Detta görs vanligen genom att lista alla resurser i " "en .gresource.xml-fil. Denna fil måste konverteras till en C-källfil som kommer kompileras och länkas till av programmet tillsammans med de " "andra källfilerna. För att göra det använder vi verktyget glib-compile-resources: <_:screen-1/> Avsnittet Gio::Resource och glib-compile-resources innehåller mer information om resursfiler. Om du bygger med Meson " "använder du funktionen compile_resources() i Mesons GNOME-" "modul." #. (itstool) path: section/para #: C/index-in.docbook:8271 msgid "Our application now looks like this:" msgstr "Vårt program ser nu ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8278 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_populating_window.png' md5='4af45b6a60b3973334ac91eb3f1dcf91'" msgstr "external ref='figures/buildapp_populating_window.png' md5='4af45b6a60b3973334ac91eb3f1dcf91'" #. (itstool) path: section/para #: C/index-in.docbook:8282 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8287 C/index-in.docbook:8323 msgid "Opening files" msgstr "Öppna filer" #. (itstool) path: section/para #: C/index-in.docbook:8289 msgid "In this step, we make our application show the contents of all the files that it is given on the commandline." msgstr "I detta steg får vi vårt program att visa innehållet för alla filer som det fått på kommandoraden." #. (itstool) path: section/para #: C/index-in.docbook:8294 #, fuzzy msgid "" "To this end, we add a data member to our application window and keep a pointer to the Gtk::Stack there. We get the " "pointer with a call to Gtk::Builder::get_widget() in the application window's constructor." msgstr "" "För detta lägger vi till en datamedlem till vårt programfönster och behåller en pekare till vår Gtk::Stack där. Vi får " "pekaren med ett anrop till Gtk::Builder::get_widget() i programfönstrets konstruktor." #. (itstool) path: section/para #: C/index-in.docbook:8300 #, fuzzy msgid "" "Now we revisit the ExampleAppWindow::open_file_view() method that is called for each commandline argument, and " "construct a Gtk::TextView that we then add as a page to the stack." msgstr "" "Nu besöker vi åter metoden ExampleAppWindow::open_file_view() som anropas för varje kommandoradsargument, och " "konstruerar en Gtk::TextView som vi sedan lägger till som en sida i stacken." #. (itstool) path: section/para #: C/index-in.docbook:8306 #, fuzzy msgid "" "Lastly, we add a Gtk::StackSwitcher to the titlebar area in the ui file, and we tell it to display information about our " "stack." msgstr "" "Slutligen lägger vi till en Gtk::StackSwitcher till namnlistsområdet i ui-filen, och säger till den att visa information " "om vår stack." #. (itstool) path: section/para #: C/index-in.docbook:8311 #, fuzzy msgid "" "The stack switcher gets all its information it needs to display tabs from the stack that it belongs to. Here, we are passing the label to show " "for each file as the last argument to the Gtk::Stack::add() method." msgstr "" "Stackväxlaren får all information den behöver för att visa flika rån stacken som den hör till. Här skickar vi etiketten att visa för varje fil " "som det sista argumentet till Gtk::Stack::add()-metoden." #. (itstool) path: section/para #: C/index-in.docbook:8318 msgid "Our application is beginning to take shape:" msgstr "Vårt program börjar få form:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8325 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_opening_files.png' md5='ad2373e10879d9724c91408aa6dbd4c3'" msgstr "external ref='figures/buildapp_opening_files.png' md5='ad2373e10879d9724c91408aa6dbd4c3'" #. (itstool) path: section/para #: C/index-in.docbook:8329 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8334 C/index-in.docbook:8369 msgid "A menu" msgstr "En meny" #. (itstool) path: section/para #: C/index-in.docbook:8336 msgid "The menu is shown at the right side of the headerbar. It is meant to collect infrequently used actions that affect the whole application." msgstr "Menyn visas på höger sida av rubrikraden. Den är tänkt att samla mer sällan använda åtgärder som påverkar hela programmet." #. (itstool) path: section/para #: C/index-in.docbook:8341 #, fuzzy msgid "Just like the application window, we specify our menu in a ui file, and add it as a resource to our binary." msgstr "Precis som programfönstret specificerar vi vår meny i en ui-fil, och lägger till den som en resurs till vår binär." #. (itstool) path: section/para #: C/index-in.docbook:8346 #, fuzzy msgid "" "To make the menu appear, we have to load the ui file and associate the resulting menu model with the menu button that we've added to the " "headerbar. Since menus work by activating Gio::Actions, we also have to add a suitable set of actions to our application." msgstr "" "För att få menyn att dyka upp måste vi läsa in ui-filen och associera den resulterande menymodellen med menyknappen som vi lagt till i " "rubrikraden. Då menyer fungerar genom att aktivera Gio::Action-åtgärder så måste vi också lägga till en lämplig " "uppsättning åtgärder till vårt program." #. (itstool) path: section/para #: C/index-in.docbook:8353 #, fuzzy msgid "" "Adding the actions is best done in the on_startup() default signal handler, which is guaranteed to be called once for " "each primary application instance." msgstr "" "Att lägga till åtgärderna görs bäst i standardsignalhanteraren on_startup(), vilken är garanterad att anropas en gång " "för varje primär programinstans." #. (itstool) path: section/para #: C/index-in.docbook:8358 #, fuzzy msgid "" "Our preferences menu item does not do anything yet, but the Quit menu item is fully functional. It can also be activated by the usual Ctrl-Q " "shortcut. The shortcut is added with Gtk::Application::set_accel_for_action()." msgstr "" "Vårt inställningsmenyobjekt gör inte något ännu, men Quit-menyobjektet fungerar. Det kan också aktiveras genom det vanliga kortkommandot Ctrl-" "Q. Kortkommandot läggs till med Gtk::Application::set_accel_for_action()." #. (itstool) path: section/para #: C/index-in.docbook:8364 msgid "The menu looks like this:" msgstr "Menyn ser ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8371 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_menu.png' md5='a9d0d291ab0f472a7cd9c38c01130d8d'" msgstr "external ref='figures/buildapp_menu.png' md5='a9d0d291ab0f472a7cd9c38c01130d8d'" #. (itstool) path: section/para #: C/index-in.docbook:8375 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8380 C/index-in.docbook:8453 msgid "A preference dialog" msgstr "En inställningsdialog" #. (itstool) path: section/para #: C/index-in.docbook:8382 msgid "" "A typical application will have some preferences that should be remembered from one run to the next. Even for our simple example application, " "we may want to change the font that is used for the content." msgstr "" "Ett typiskt program kommer ha några inställningar som ska kommas ihåg från en körning till den andra. Även för vårt enkla exempelprogram kan vi " "vilja ändra typsnittet som används för innehållet." #. (itstool) path: section/para #: C/index-in.docbook:8388 #, fuzzy msgid "" "We are going to use Gio::Settings to store our preferences. Gio::Settings requires a schema that " "describes our settings, in our case the org.gtkmm.exampleapp.gschema.xml file." msgstr "" "Vi kommer använda Gio::Settings för att lagra våra inställningar. Gio::Settings kräver ett schema " "som beskriver våra inställningar, i vårt fall filen org.gtkmm.exampleapp.gschema.xml." #. (itstool) path: section/para #: C/index-in.docbook:8394 #, fuzzy msgid "" "Before we can make use of this schema in our application, we need to compile it into the binary form that Gio::Settings " "expects. GIO provides macros to do this in autotools-based projects. See the description of GSettings. Meson provides the compile_schemas() function in the GNOME module." msgstr "" "Innan vi kan använda detta schema i vårt program behöver vi kompilera det till den binärform som Gio::Settings förväntar " "sig. GIO tillhandahåller makron för att göra detta i autotools-baserade projekt. Se beskrivningen av GSettings. Meson tillhandahåller funktionen compile_schemas() i GNOME-modulen." #. (itstool) path: section/para #: C/index-in.docbook:8403 #, fuzzy msgid "" "Next, we need to connect our settings to the widgets that they are supposed to control. One convenient way to do this is to use " "Gio::Settings::bind() to bind settings keys to object properties, as we do for the transition setting in " "ExampleAppWindow's constructor." msgstr "" "Härnäst behöver vi ansluta våra inställningar till komponenterna som de förväntas styra. Ett praktiskt sätt att göra detta är att använda " "Gio::Settings::bind() för att binda inställningstangenter som vi gör för övergångsinställningen i " "ExampleAppWindows konstruktor." #. (itstool) path: section/programlisting #: C/index-in.docbook:8409 #, fuzzy, no-wrap msgid "" "\n" "m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n" "m_settings->bind(\"transition\", m_stack->property_transition_type());\n" msgstr "" "\n" "m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n" "m_settings->bind(\"transition\", m_stack->property_transition_type());\n" #. (itstool) path: section/para #: C/index-in.docbook:8414 #, fuzzy msgid "" "The code to connect the font setting is a little more involved, since it corresponds to an object property in a Gtk::TextTag that we must first create. The code is in ExampleAppWindow::open_file_view()." msgstr "" "Koden för att ansluta till typsnittsinställningen är lite mer avancerad då den motsvarar en objektegenskap i en Gtk::TextTag som vi först måste skapa. Koden finns i ExampleAppWindow::open_file_view()." #. (itstool) path: section/programlisting #: C/index-in.docbook:8419 #, fuzzy, no-wrap msgid "" "\n" "auto tag = buffer->create_tag();\n" "m_settings->bind(\"font\", tag->property_font());\n" "buffer->apply_tag(tag, buffer->begin(), buffer->end());\n" msgstr "" "\n" "auto tag = buffer->create_tag();\n" "m_settings->bind(\"font\", tag->property_font());\n" "buffer->apply_tag(tag, buffer->begin(), buffer->end());\n" #. (itstool) path: section/para #: C/index-in.docbook:8425 #, fuzzy msgid "" "At this point, the application will already react if you change one of the settings, e.g. using the gsettings commandline " "tool. Of course, we expect the application to provide a preference dialog for these. So lets do that now. Our preference dialog will be a " "subclass of Gtk::Window, and we'll use the same techniques that we've already seen in ExampleAppWindow: a Gtk::Builder ui file and settings bindings. In this case the bindings are more involved, though. We use " "Gtk::FontDialogButton and Gtk::DropDown in the preference dialog. The types of the properties in " "these classes can't be automatically converted to the string type that Gio::Settings requires." msgstr "" "Vid denna punkt kommer programmet redan reagera om du ändrar en av inställningarna, exempelvis genom att använda kommandoradsverktyget " "gsettings. Vi förväntar oss förstås att programmet tillhandahåller en inställningsdialog för dessa. Så låt oss göra så nu. " "Vår inställningsdialog kommer vara en underklass av Gtk::Dialog, och vi kommer använda samma tekniker som vi redan sett " "i ExampleAppWindow: en Gtk::Builder-ui-fil och inställningsbindningar. I detta fall är dock " "bindningarna mer avancerade. Vi använder Gtk::FontDialogButton och Gtk::DropDown i " "inställningsdialogen. Typerna för egenskaperna i dessa klasser kan inte automatiskt konverteras till den strängtyp som Gio::" "Settings kräver." #. (itstool) path: section/para #: C/index-in.docbook:8438 #, fuzzy msgid "" "When we've created the prefs.ui file and the ExampleAppPrefs class, we revisit the " "ExampleApplication::on_action_preferences() method in our application class, and make it open a new preference dialog." msgstr "" "När vi skapat filen prefs.ui och klassen ExampleAppPrefs besöker vi åter metoden " "ExampleApplication::on_action_preferences() i vår programklass, och får den att öppna en ny inställningsdialog." #. (itstool) path: section/programlisting #: C/index-in.docbook:8443 #, no-wrap msgid "" "\n" "auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n" "prefs_dialog->present();\n" msgstr "" "\n" "auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n" "prefs_dialog->present();\n" #. (itstool) path: section/para #: C/index-in.docbook:8448 msgid "After all this work, our application can now show a preference dialog like this:" msgstr "Efter allt detta arbete kan vårt program nu visa en sådan här inställningsdialog:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8455 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_pref_dialog.png' md5='ecc7fa5d31086c536a5ad279eddfbf23'" msgstr "external ref='figures/buildapp_pref_dialog.png' md5='ecc7fa5d31086c536a5ad279eddfbf23'" #. (itstool) path: section/para #: C/index-in.docbook:8459 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8464 C/index-in.docbook:8507 msgid "Adding a search bar" msgstr "Lägga till en sökrad" #. (itstool) path: section/para #: C/index-in.docbook:8466 #, fuzzy msgid "" "We continue to flesh out the functionality of our application. For now, we add search. gtkmm supports this with " "Gtk::SearchEntry and Gtk::SearchBar. The search bar is a widget that can slide in from the top to " "present a search entry." msgstr "" "Vi fortsätter fylla ut vårt programs funktionalitet. Nu lägger vi till sökning. gtkmm stöder detta med " "Gtk::SearchEntry och Gtk::SearchBar. Sökraden är en komponent som kan glida ner från toppen för " "att visa ett sökfält." #. (itstool) path: section/para #: C/index-in.docbook:8472 #, fuzzy msgid "" "We add a toggle button to the header bar, which can be used to slide out the search bar below the header bar. The new widgets are added in the " "window.ui file." msgstr "" "Vi lägger till en växlingsknapp till rubrikraden, som kan användas för att glida ut sökraden nedanför rubrikraden. De nya komponenterna läggs " "till i filen window.ui." #. (itstool) path: section/para #: C/index-in.docbook:8477 #, fuzzy msgid "" "Implementing the search needs quite a few code changes that we are not going to completely go over here. The central piece of the search " "implementation is a signal handler that listens for text changes in the search entry, shown here without error handling." msgstr "" "Att implementera sökningen kräver ganska många kodändringar som vi inte fullständigt kommer beskriva här. Den centrala delen av " "sökimplementationen är en signalhanterare som lyssnar på textändringar i sökfältet, visat här utan felhantering." #. (itstool) path: section/programlisting #: C/index-in.docbook:8482 #, no-wrap msgid "" "\n" "void ExampleAppWindow::on_search_text_changed()\n" "{\n" " const auto text = m_searchentry->get_text();\n" " auto tab = dynamic_cast<Gtk::ScrolledWindow*>(m_stack->get_visible_child());\n" " auto view = dynamic_cast<Gtk::TextView*>(tab->get_child());\n" "\n" " // Very simple-minded search implementation.\n" " auto buffer = view->get_buffer();\n" " Gtk::TextIter match_start;\n" " Gtk::TextIter match_end;\n" " if (buffer->begin().forward_search(text, Gtk::TextSearchFlags::CASE_INSENSITIVE,\n" " match_start, match_end))\n" " {\n" " buffer->select_range(match_start, match_end);\n" " view->scroll_to(match_start);\n" " }\n" "}\n" msgstr "" "\n" "void ExampleAppWindow::on_search_text_changed()\n" "{\n" " const auto text = m_searchentry->get_text();\n" " auto tab = dynamic_cast<Gtk::ScrolledWindow*>(m_stack->get_visible_child());\n" " auto view = dynamic_cast<Gtk::TextView*>(tab->get_child());\n" "\n" " // Väldigt enkel sökimplementation.\n" " auto buffer = view->get_buffer();\n" " Gtk::TextIter match_start;\n" " Gtk::TextIter match_end;\n" " if (buffer->begin().forward_search(text, Gtk::TextSearchFlags::CASE_INSENSITIVE,\n" " match_start, match_end))\n" " {\n" " buffer->select_range(match_start, match_end);\n" " view->scroll_to(match_start);\n" " }\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:8502 msgid "With the search bar, our application now looks like this:" msgstr "Med sökraden ser vårt program nu ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8509 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_search_bar.png' md5='ca0d7fdb0f37cbd592f2c55904bb6f3f'" msgstr "external ref='figures/buildapp_search_bar.png' md5='ca0d7fdb0f37cbd592f2c55904bb6f3f'" #. (itstool) path: section/para #: C/index-in.docbook:8513 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8518 C/index-in.docbook:8553 msgid "Adding a side bar" msgstr "Lägga till en sidopanel" #. (itstool) path: section/para #: C/index-in.docbook:8520 #, fuzzy msgid "" "As another piece of functionality, we are adding a sidebar, which demonstrates Gtk::Revealer and Gtk::" "ListBox. The new widgets are added in the window.ui file." msgstr "" "Som en annan funktionalitetsdel lägger vi till en sidopanel som demonstrerar Gtk::Revealer och Gtk::ListBox. De nya komponenterna läggs till i filen window.ui." #. (itstool) path: section/para #: C/index-in.docbook:8526 #, fuzzy msgid "" "The code to populate the sidebar with buttons for the words found in each file is a little too involved to go into here. But we'll look at the " "code to add a checkbutton for the new feature to the menu. A menu item is added to the ui file gears_menu.ui." msgstr "" "Koden för att fylla sidopanelen med knappar för orden som hittas i varje fil är lite för avancerad för att gå in på här. Men vi kommer titta på " "koden för att lägga till en kryssruta för den nya funktionen i menyn. Ett menyobjetk läggs till i ui-filen gears_menu.ui." #. (itstool) path: section/para #: C/index-in.docbook:8533 #, fuzzy msgid "" "To connect the menu item to the new show-words setting, we use a Gio::Action corresponding to the " "given Gio::Settings key. In ExampleAppWindow's constructor:" msgstr "" "För att ansluta menyobjektet till den nya inställningen show-words använder vi en Gio::Action som " "motsvarar den angivna Gio::Settings-nyckeln. I ExampleAppWindows konstruktor:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8538 #, fuzzy, no-wrap msgid "" "\n" "// Connect the menu to the MenuButton m_gears, and bind the show-words setting\n" "// to the win.show-words action and the \"Words\" menu item.\n" "// (The connection between action and menu item is specified in gears_menu.ui.)\n" "auto menu_builder = Gtk::Builder::create_from_resource(\"/org/gtkmm/exampleapp/gears_menu.ui\");\n" "auto menu = menu_builder->get_object<Gio::MenuModel>(\"menu\");\n" "m_gears->set_menu_model(menu);\n" "add_action(m_settings->create_action(\"show-words\"));\n" msgstr "" "\n" "// Anslut menyn till MenuButton-knappen m_gears, och bind inställningen show-words\n" "// till åtgärden win.show-words och menyobjektet ”Words”.\n" "// (Anslutningen mellan åtgärd och menyobjekt anges i gears_menu.ui.)\n" "auto menu_builder = Gtk::Builder::create_from_resource(\"/org/gtkmm/exampleapp/gears_menu.ui\");\n" "auto menu = menu_builder->get_object<Gio::MenuModel>(\"menu\");\n" "m_gears->set_menu_model(menu);\n" "add_action(m_settings->create_action(\"show-words\"));\n" #. (itstool) path: section/para #: C/index-in.docbook:8548 msgid "What our application looks like now:" msgstr "Hur vårt program ser ut nu:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8555 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_side_bar.png' md5='e13a4b6ebbcf73692dc59a0ba08e59e7'" msgstr "external ref='figures/buildapp_side_bar.png' md5='e13a4b6ebbcf73692dc59a0ba08e59e7'" #. (itstool) path: section/para #: C/index-in.docbook:8559 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8564 C/index-in.docbook:8606 msgid "Properties" msgstr "Egenskaper" #. (itstool) path: section/para #: C/index-in.docbook:8566 #, fuzzy msgid "" "Widgets and other objects have many useful properties. Here we show some ways to use them in new and flexible ways, by wrapping them in actions " "with Gio::PropertyAction or by binding them with Glib::Binding." msgstr "" "Komponenter och andra objekt har många användbara egenskaper. Här visar vi några sätt att använda dem på nya och flexibla sätt genom att " "omsluta dem i åtgärder med Gio::PropertyAction eller genom att binda dem med Glib::Binding." #. (itstool) path: section/para #: C/index-in.docbook:8572 #, fuzzy msgid "" "To set this up, we add two labels to the header bar in our window.ui file, named lines_label and " "lines, and get pointers to them in the application window's constructor, as we've seen a couple of times by now. We add a " "new \"Lines\" menu item to the gears menu, which triggers the show-lines action." msgstr "" "För att konfigurera detta lägger vi till två etiketter till rubrikraden i vår window.ui-fil, med namnen " "lines_label och lines, och får pekare till dem i programfönstrets konstruktor, som vi sett några gånger " "nu. Vi lägger till ett nytt menyobjekt ”Lines” vilket utlöser åtgärden show-lines till kugghjulsmenyn." #. (itstool) path: section/para #: C/index-in.docbook:8580 #, fuzzy msgid "" "To make this menu item do something, we create a property action for the visible property of the lines " "label, and add it to the actions of the window. The effect of this is that the visibility of the label gets toggled every time the action is " "activated. Since we want both labels to appear and disappear together, we bind the visible property of the " "lines_label widget to the same property of the lines widget. In ExampleAppWindow's " "constructor:" msgstr "" "För att få detta menyobjekt att göra något skapar vi en egenskapsåtgärd för egenskapen visible för etiketten lines, och lägger till den till fönstrets åtgärder. Effekten av detta är avv synligheten för etiketten växlas varje gång åtgärden aktiveras. " "Då vi vill att båda etiketterna ska visas och försvinna samtidigt binder vi egenskapen visible för komponenten " "lines_label till samma egenskap för komponenten lines. I ExampleAppWindows " "konstruktor:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8590 #, no-wrap msgid "" "add_action(Gio::PropertyAction::create(\"show-lines\", m_lines->property_visible()));\n" "m_binding_lines_visible = Glib::Binding::bind_property(m_lines->property_visible(),\n" " m_lines_label->property_visible());\n" "\n" msgstr "" "add_action(Gio::PropertyAction::create(\"show-lines\", m_lines->property_visible()));\n" "m_binding_lines_visible = Glib::Binding::bind_property(m_lines->property_visible(),\n" " m_lines_label->property_visible());\n" "\n" #. (itstool) path: section/para #: C/index-in.docbook:8596 #, fuzzy msgid "" "We also need a function that counts the lines of the currently active tab, and updates the lines label. See the full source " "if you are interested in the details." msgstr "" "Vi behöver också en funktion som räknar raderna för den för närvarande aktiva fliken och uppdaterar etiketten lines. Se den " "fullständiga källkoden om du är intresserad av detaljerna." #. (itstool) path: section/para #: C/index-in.docbook:8601 msgid "This brings our example application to this appearance:" msgstr "Detta får vårt exempelprogram att se ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8608 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_properties.png' md5='46c52e09cc1b4ddbc095e12f763a4427'" msgstr "external ref='figures/buildapp_properties.png' md5='46c52e09cc1b4ddbc095e12f763a4427'" #. (itstool) path: section/para #: C/index-in.docbook:8612 msgid "Source Code" msgstr "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8617 C/index-in.docbook:8643 msgid "Header bar" msgstr "Rubrikrad" #. (itstool) path: section/para #: C/index-in.docbook:8619 #, fuzzy msgid "" "Our application already uses a Gtk::HeaderBar instead of a 'normal' window titlebar. The header bar is a direct child of " "the window, and its type is titlebar. This is set in the window.ui file." msgstr "" "Vårt program använder redan en Gtk::HeaderBar i stället för en ”vanlig” fönsternamnlist. Rubrikraden är en direkt " "underordnad till fönstret, och dess typ är titlebar. Detta ställs in i filen window.ui." #. (itstool) path: section/para #: C/index-in.docbook:8626 #, fuzzy msgid "" "Here we'll just make two small changes to the header bar. The decoration-layout property is set in the window.ui file, to show only the close button, and hide the minimize and maximize buttons. We also include an icon in the resource file, and " "set up this icon as the window icon. In ExampleAppWindow's constructor:" msgstr "" "Här gör vi bara två små ändringar till rubrikraden. Egenskapen decoration-layout ställs in i window.ui-" "filen så den endast visar stängningsknappen, och döljer knapparna för minimering och maximering. Vi inkluderar också en ikon i resursfilen, och " "konfigurerar denna ikon som fönsterikonen. I ExampleAppWindows konstruktor:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8633 #, fuzzy, no-wrap msgid "" "Gtk::IconTheme::get_for_display(get_display())->add_resource_path(\"/org/gtkmm/exampleapp\");\n" "set_icon_name(\"exampleapp\");\n" "\n" msgstr "" "Gtk::IconTheme::get_for_display(get_display())->add_resource_path(\"/org/gtkmm/exampleapp\");\n" "set_icon_name(\"exampleapp\");\n" "\n" #. (itstool) path: section/para #: C/index-in.docbook:8638 msgid "Here is how the application now looks:" msgstr "Här är hur programmet ser ut nu:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8645 #, fuzzy msgctxt "_" msgid "external ref='figures/buildapp_header_bar.png' md5='b2ab5d871b0deff13f04aac71700b1a0'" msgstr "external ref='figures/buildapp_header_bar.png' md5='b2ab5d871b0deff13f04aac71700b1a0'" #. (itstool) path: section/para #: C/index-in.docbook:8649 #, fuzzy msgid "" "The window.ui file sets a header bar title, but this title is not shown. That's because the stack switcher is a child of " "type title. The stack switcher becomes a custom title that hides the title label." msgstr "" "window.ui-filen ställer in en rubriksradstitel, men denna titel visas inte. Dett är för att stackväxlaren är en " "underordnad av typen title. Stackväxlaren blir en anpassad titel som döljer titeletiketten." #. (itstool) path: section/para #: C/index-in.docbook:8655 msgid "Source Code" msgstr "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:8662 msgid "Contributing" msgstr "Bidra" #. (itstool) path: chapter/para #: C/index-in.docbook:8664 #, fuzzy msgid "" "This document, like so much other great software out there, was created for free by volunteers. If you are at all knowledgeable about any " "aspect of gtkmm that does not already have documentation, please consider contributing to this document." msgstr "" "Detta dokument, som så mycket annan fantastisk programvara, skapades gratis av frivilliga. Om du är det minsta insatt i någon aspekt av " "gtkmm som inte redan har dokumentation kan du gärna bidra till detta dokument." #. (itstool) path: chapter/para #: C/index-in.docbook:8670 #, fuzzy msgid "" "Ideally, we would like you to provide a merge " "request to the docs/tutorial/C/index-in.docbook file. This file is in the gtkmm-documentation " "module in GNOME git." msgstr "" "Idealiskt skulle vi vilja att du tillhandahåller en " "merge-förfrågan till filen docs/tutorial/C/index-in.docbook. Denna fil finns i modulen gtkmm-" "documentation i GNOME git." #. (itstool) path: chapter/para #: C/index-in.docbook:8676 msgid "" "If you do decide to contribute, please post your contribution as an issue or merge request to GitLab. You can also discuss your ideas on GNOME's Discourse instance, under the Platform/Language bindings " "category with a cplusplus tag. Also, be aware that the entirety of this document is free, and any addition you provide must " "also be free. That is, people must be able to use any portion of your examples in their programs, and copies of this document (including your " "contribution) may be distributed freely." msgstr "" "Om du bestämmer dig för att bidra kan du skicka ditt bidrag som ett ärende eller en merge-förfrågan till GitLab. Du kan också diskutera dina idéer på GNOMEs Discourse-instans, under kategorin Platform/" "Language bindings med en cplusplus-tagg. Var också medveten om att hela detta dokument är fritt, och alla tillägg du " "gör också måste vara fria. Det vill säga att personer måste kunna använda alla delar av dina exempel i sina program, och kopior av detta " "dokument (med ditt bidrag) måste kunna spridas fritt." #. (itstool) path: appendix/title #: C/index-in.docbook:8691 msgid "The RefPtr smartpointer" msgstr "RefPtr-smartpekaren" #. (itstool) path: appendix/para #: C/index-in.docbook:8693 #, fuzzy msgid "" "Glib::RefPtr is a smartpointer. Specifically, it is a reference-counting smartpointer. You might be familiar with " "std::unique_ptr<> and std::shared_ptr<>, which are also smartpointers. In " "gtkmm-4.0 Glib::RefPtr<> is an alias for std::shared_ptr<>, which is reference-counting. Glib::RefPtr<> was introduced long before there was a reference-counting " "smartpointer in the C++ Standard Library." msgstr "" "Glib::RefPtr är en smartpekare. Mer specifikt är det en referensräknande smartpekare. Du kanske är bekant med " "std::unique_ptr<> och std::shared_ptr<> vilka också är smartpekare. I " "gtkmm-4.0 är Glib::RefPtr<> ett alias för std::shared_ptr<> som är referensräknande. Glib::RefPtr<> introducerades långt innan det fanns en referensräknande " "smartpekare i C++-standardbiblioteket." #. (itstool) path: appendix/para #: C/index-in.docbook:8704 #, fuzzy msgid "" "If you make your own Glib::ObjectBase-derived classes with create() methods that return a " "Glib::RefPtr, you must use Glib::make_refptr_for_instance() in your create() methods. This function creates a std::shared_ptr with a special deleter, which handles the reference-count " "for the wrapped C object." msgstr "" "Om du gör dina egna Glib::ObjectBase-härledda klasser med create()-metoder som returnerar en " "Glib::RefPtr måste du använda Glib::make_refptr_for_instance() i dina create()-metoder. Denna funktion skapar en std::shared_ptr med en speciell borttagare som hanterar referensräkningen " "för det omslutna C-objektet." #. (itstool) path: appendix/para #: C/index-in.docbook:8712 msgid "Reference" msgstr "Referens" #. (itstool) path: appendix/para #: C/index-in.docbook:8714 msgid "A smartpointer acts much like a normal pointer. Here are a few examples." msgstr "En smartpekare agerar i stort sett som en vanlig pekare. Här är några exempel." #. (itstool) path: section/title #: C/index-in.docbook:8717 msgid "Copying" msgstr "Kopiering" #. (itstool) path: section/para #: C/index-in.docbook:8718 #, fuzzy msgid "" "You can copy RefPtrs, just like normal pointers. But unlike normal pointers, you don't need to worry about deleting the " "underlying instance." msgstr "" "Du kan kopiera RefPtr-pekare, precis som vanliga pekare. Men till skillnad från vanliga pekare behöver du inte oroa dig " "om att ta bort den underliggande instansen." #. (itstool) path: section/programlisting #: C/index-in.docbook:8723 #, fuzzy, no-wrap msgid "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "auto refPixbuf2 = refPixbuf;\n" msgstr "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "auto refPixbuf2 = refPixbuf;\n" #. (itstool) path: section/para #: C/index-in.docbook:8727 #, fuzzy msgid "" "Of course this means that you can store RefPtrs in standard containers, such as std::vector or " "std::list." msgstr "" "Detta betyder förstås att du kan lagra RefPtr-pekare i standardbehållare, som std::vector eller " "std::list." #. (itstool) path: section/programlisting #: C/index-in.docbook:8731 #, fuzzy, no-wrap msgid "" "\n" "std::list<Glib::RefPtr<Gdk::Pixbuf>> listPixbufs;\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "listPixbufs.push_back(refPixbuf);\n" msgstr "" "\n" "std::list<Glib::RefPtr<Gdk::Pixbuf>> listPixbufs;\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "listPixbufs.push_back(refPixbuf);\n" #. (itstool) path: section/title #: C/index-in.docbook:8739 #, fuzzy msgid "Dereferencing" msgstr "Dereferering" #. (itstool) path: section/para #: C/index-in.docbook:8740 #, fuzzy msgid "You can dereference a smartpointer with the -> operator, to call the methods of the underlying instance, just like a normal pointer." msgstr "" "Du kan dereferera en smartpekare med operatorn -> för att anropa metoderna för den underliggande instansen, precis som en vanlig pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:8743 #, no-wrap msgid "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "auto width = refPixbuf->get_width();\n" msgstr "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "auto width = refPixbuf->get_width();\n" #. (itstool) path: section/para #: C/index-in.docbook:8747 #, fuzzy msgid "" "You can also use the * operator and the get() method to access the underlying instance, but it's usually a bad idea to " "do so. Unless you are careful, you can end up with a pointer or a reference which is not included in the reference count." msgstr "" "Du kan också använda *-operatorn och get()-metoden för att komma åt den underliggande instansen, men det är vanligen " "en dålig idé att göra det. Om du inte är försiktig kan du råka ut för en pekare eller referens som inte inkluderas i referensantalet." #. (itstool) path: section/programlisting #: C/index-in.docbook:8752 #, fuzzy, no-wrap msgid "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "auto& underlying = *refPixbuf; // Possible, but not recommended\n" msgstr "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "auto& underlying = *refPixbuf; // Möjligt, men rekommenderas inte\n" #. (itstool) path: section/title #: C/index-in.docbook:8759 msgid "Casting" msgstr "Typkonvertering" #. (itstool) path: section/para #: C/index-in.docbook:8760 msgid "You can cast RefPtrs to base types, just like normal pointers." msgstr "Du kan typkonvertera RefPtr-pekare till bastyper, precis som vanliga pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:8764 #, fuzzy, no-wrap msgid "" "\n" "auto refStore = Gtk::TreeStore::create(columns);\n" "Glib::RefPtr<Gtk::TreeModel> refModel = refStore;\n" msgstr "" "\n" "auto refStore = Gtk::TreeStore::create(columns);\n" "Glib::RefPtr<Gtk::TreeModel> refModel = refStore;\n" #. (itstool) path: section/para #: C/index-in.docbook:8768 #, fuzzy msgid "" "This means that any method which takes a const Glib::RefPtr<BaseType>& argument can also take a const Glib::" "RefPtr<DerivedType>&. The cast is implicit, just as it would be for a normal pointer." msgstr "" "Detta betyder att alla metoder som tar ett const Glib::RefPtr<BaseType>&-argument också kan ta en const Glib::" "RefPtr<DerivedType>&. Typkonverteringen är implicit, precis som den skulle vara för en vanlig pekare." #. (itstool) path: section/para #: C/index-in.docbook:8772 msgid "You can also cast to a derived type, but the syntax is a little different than with a normal pointer." msgstr "Du kan också typkonvertera till en härledd typ, men syntaxen är lite annars än med en vanlig pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:8775 #, no-wrap msgid "" "\n" "auto refStore = std::dynamic_pointer_cast<Gtk::TreeStore>(refModel);\n" "auto refStore2 = std::static_pointer_cast<Gtk::TreeStore>(refModel);\n" msgstr "" "\n" "auto refStore = std::dynamic_pointer_cast<Gtk::TreeStore>(refModel);\n" "auto refStore2 = std::static_pointer_cast<Gtk::TreeStore>(refModel);\n" #. (itstool) path: section/title #: C/index-in.docbook:8782 #, fuzzy msgid "Checking for nullptr" msgstr "Kontrollera nullptr" #. (itstool) path: section/para #: C/index-in.docbook:8783 #, fuzzy msgid "Just like normal pointers, you can check whether a RefPtr points to anything." msgstr "Precis som vanliga pekare kan du kontrollera om en RefPtr pekar på något." #. (itstool) path: section/programlisting #: C/index-in.docbook:8787 #, fuzzy, no-wrap msgid "" "\n" "auto refModel = m_TreeView.get_model();\n" "if (refModel)\n" "{\n" " auto cols_count = refModel->get_n_columns();\n" " ...\n" "}\n" msgstr "" "\n" "auto refModel = m_TreeView.get_model();\n" "if (refModel)\n" "{\n" " auto cols_count = refModel->get_n_columns();\n" " ...\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:8795 msgid "" "But unlike normal pointers, RefPtrs are automatically initialized to nullptr so you don't need to " "remember to do that yourself." msgstr "" "Men till skillnad från vanliga pekare så initieras RefPtr-pekare automatiskt till nullptr, så du " "behöver inte komma ihåg att göra det själv." #. (itstool) path: section/title #: C/index-in.docbook:8802 #, fuzzy msgid "Constness" msgstr "Const-het" #. (itstool) path: section/para #: C/index-in.docbook:8803 #, fuzzy msgid "" "The use of the const keyword in C++ is not always clear. You might not realize that const Something* declares a " "pointer to a const Something. The pointer can be changed, but not the Something that it points to." msgstr "" "Användningen av nyckelordet const i C++ är inte alltid tydlig. Du kanske inte inser att const Something* " "deklarerar en pekare till ett const Something. Pekaren kan ändras, men inte Something som den pekar på." #. (itstool) path: section/para #: C/index-in.docbook:8809 #, fuzzy msgid "" "Therefore, the RefPtr equivalent of Something* for a method parameter is const Glib::RefPtr<" "Something>&, and the equivalent of const Something* is const Glib::RefPtr<const Something>&." msgstr "" "Därför är RefPtr-motsvarigheten till Something* för en metodparameter const Glib::RefPtr<" "Something>&, och motsvarigheten för const Something* är const Glib::RefPtr<const Something>&." #. (itstool) path: section/para #: C/index-in.docbook:8816 #, fuzzy msgid "" "The const ... & around both is just for efficiency, like using const std::string& instead of " "std::string for a method parameter to avoid unnecessary copying." msgstr "" "const ... & runt båda är bara för effektivitet, som att använda const std::string& i stället " "för std::string för en metodparameter för att undvika onödig kopiering." #. (itstool) path: section/title #: C/index-in.docbook:8830 msgid "Connecting signal handlers" msgstr "Ansluta signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:8832 #, fuzzy msgid "" "gtkmm widget classes have signal accessor methods, such as Gtk::Button::signal_clicked(), " "which allow you to connect your signal handler. Thanks to the flexibility of libsigc++, the callback library used by " "gtkmm, the signal handler can be almost any kind of function, but you will probably want to use a class method. " "Among GTK C coders, these signal handlers are often named callbacks." msgstr "" "gtkmm-komponentklasser har åtkomstmetoder för signaler, som Gtk::Button::signal_clicked(), " "vilken låter dig ansluta din signalhanterare. Tack vare flexibiliteten hos libsigc++, återanropsbiblioteket som " "används av gtkmm, så kan signalhanteraren vara nästan vilken sorts funktion som helst, men du kommer troligen vilja " "använda en klassmetod. Bland GTK:s C-kodare kallas dessa signalhanterare ofta återanrop." #. (itstool) path: section/para #: C/index-in.docbook:8842 msgid "Here's an example of a signal handler being connected to a signal:" msgstr "Här är ett exempel på en signalhanterare som ansluts till en signal:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8846 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hello World\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " }\n" "private:\n" " Gtk::Button button {\"Hello World\"};\n" "};\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hej världen\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " }\n" "private:\n" " Gtk::Button button {\"Hej världen\"};\n" "};\n" #. (itstool) path: section/para #: C/index-in.docbook:8866 #, fuzzy msgid "There's rather a lot to think about in this (non-functional) code. First let's identify the parties involved:" msgstr "Det finns ganska mycket att fundera på i denna (ej fungerande) kod. Låt oss först identifiera de involverade parterna:" #. (itstool) path: listitem/para #: C/index-in.docbook:8874 msgid "The signal handler is on_button_clicked()." msgstr "Signalhanteraren är on_button_clicked()." #. (itstool) path: listitem/para #: C/index-in.docbook:8880 #, fuzzy msgid "We're hooking it up to the Gtk::Button object called button." msgstr "Vi kopplar ihop den med Gtk::Button-objektet kallat button." #. (itstool) path: listitem/para #: C/index-in.docbook:8887 msgid "When the Button emits its clicked signal, on_button_clicked() will be called." msgstr "När denna Button sänder ut sin clicked-signal kommer on_button_clicked() att anropas." #. (itstool) path: section/para #: C/index-in.docbook:8895 msgid "Now let's look at the connection again:" msgstr "Låt oss titta på anslutningen igen:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8899 #, fuzzy, no-wrap msgid "" "\n" " ...\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " ...\n" msgstr "" "\n" " ...\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " ...\n" #. (itstool) path: section/para #: C/index-in.docbook:8905 #, fuzzy msgid "" "Note that we don't pass a pointer to on_button_clicked() directly to the signal's connect() " "method. Instead, we call sigc::ptr_fun(), and pass the result to connect()." msgstr "" "Observera att vi inte skickar en pekare till on_button_clicked() direkt till signalens connect()-metod. I stället anropar vi sigc::ptr_fun() och skickar resultatet till connect()." #. (itstool) path: section/para #: C/index-in.docbook:8912 #, fuzzy msgid "" "sigc::ptr_fun() generates a sigc::slot. A slot is an object which looks and feels like a function, " "but is actually an object. These are also known as function objects, or functors. sigc::ptr_fun() generates a slot for a " "standalone function or static method. sigc::mem_fun() generates a slot for a member method of a particular instance." msgstr "" "sigc::ptr_fun() genererar en sigc::slot. Ett fack är ett objekt som ser ut och känns som en " "funktion, men faktiskt är ett objekt. Dessa är också kända som funktionsobjekt, eller funktorer. sigc::ptr_fun() genererar " "ett fack för en fristående funktion eller statisk metod. sigc::mem_fun() genererar ett fack för en medlemsmetod för en " "specifik instans." #. (itstool) path: section/para #: C/index-in.docbook:8921 #, fuzzy msgid "" "A C++ lambda expression is a functor which can be implicitly converted to a sigc::slot in the call to " "connect(). A lambda expression can be used instead of sigc::ptr_fun(). It's also possible to use " "a lambda expression instead of sigc::mem_fun(), but then you won't get automatic disconnection of the signal handler when " "a sigc::trackable-derived object goes out of scope." msgstr "" "Ett C++-lambdauttryck är en funktor som kan implicit konverteras till en sigc::slot i anropet till " "connect(). Ett lambdauttryck kan användas i stället för sigc::ptr_fun(). Det är också möjligt att " "använda ett lambdauttryck i stället för sigc::mem_fun(), men då kommer du inte få automatisk frånkoppling av " "signalhanteraren då ett sigc::trackable-härlett objekt lämnar sin räckvidd." #. (itstool) path: section/para #: C/index-in.docbook:8930 #, fuzzy msgid "Here's a slightly larger example of slots in action:" msgstr "Här är ett lite större exempel på användning av fack:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8934 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hello World\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " button.signal_clicked().connect(sigc::mem_fun(*this, &some_class::on_button_clicked));\n" " }\n" " void on_button_clicked();\n" "private:\n" " Gtk::Button button {\"Hello World\"};\n" "};\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hej världen\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " button.signal_clicked().connect(sigc::mem_fun(*this, &some_class::on_button_clicked));\n" " }\n" " void on_button_clicked();\n" "private:\n" " Gtk::Button button {\"Hej världen\"};\n" "};\n" #. (itstool) path: section/para #: C/index-in.docbook:8956 msgid "The first call to connect() is just like the one we saw last time; nothing new here." msgstr "Det första anropet till connect() är precis som det vi såg sist, inget nytt här." #. (itstool) path: section/para #: C/index-in.docbook:8959 #, fuzzy msgid "" "The next is more interesting. sigc::mem_fun() is called with two arguments. The first argument is *this, which is the object that our new slot will be pointing at. The second argument is a pointer to one of its methods. This particular " "version of sigc::mem_fun() creates a slot which will, when \"called\", call the pointed-to method of the specified object." msgstr "" "Nästa är mer intressant. sigc::mem_fun() anropas med två argument. Det första argumentet är *this " "som är objektet som vårt nya fack kommer peka på. Det andra argumentet är en pekare till en av dess metoder. Denna specifika version av " "sigc::mem_fun() skapar ett fack som, när det ”anropas”, anropar metoden som pekas på i det angivna objektet." #. (itstool) path: section/para #: C/index-in.docbook:8968 #, fuzzy msgid "" "Another thing to note about this example is that we made the call to connect() twice for the same signal object. This " "is perfectly fine - when the button is clicked, both signal handlers will be called." msgstr "" "En annan sak att observera om detta exempel är att vi gjort anropet till connect() två gånger för samma signalobjekt. " "Detta är fullständigt lugnt - när knappen klickas på så kommer båda signalhanterarna anropas." #. (itstool) path: section/para #: C/index-in.docbook:8975 #, fuzzy msgid "" "We just told you that the button's clicked signal is expecting to call a method with no arguments. All signals have " "requirements like this - you can't hook a function with two arguments to a signal expecting none (unless you use an adapter, such as " "sigc::bind(), of course). Therefore, it's important to know what type of signal handler you'll be expected to connect to a " "given signal." msgstr "" "Vi berättade just för dig att knappens clicked-signal förväntar sig att anropa en metod utan argument. Alla signaler har " "såna här krav - du kan inte kroka en funktion med två argument till en signal som inte förväntar sig något (om du förstås inte använder en " "adapter som sigc::bind()). Det är därför viktigt att veta vilken typ av signalhanterare som du förväntas ansluta till en " "given signal." #. (itstool) path: section/title #: C/index-in.docbook:8987 msgid "Writing signal handlers" msgstr "Skriva signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:8989 #, fuzzy msgid "" "To find out what type of signal handler you can connect to a signal, you can look it up in the reference documentation or the header file. " "Here's an example of a signal declaration you might see in the gtkmm headers:" msgstr "" "För att få reda på vilken typ av signalhanterare du kan ansluta till en signal kan du slå upp den i referensdokumentationen eller header-filen. " "Här är ett exempel på en signaldeklaration som du kan se i gtkmm-headerfilerna:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8995 #, no-wrap msgid "" "\n" "Glib::SignalProxy<bool(Gtk::DirectionType)> signal_focus()\n" msgstr "" "\n" "Glib::SignalProxy<bool(Gtk::DirectionType)> signal_focus()\n" #. (itstool) path: section/para #: C/index-in.docbook:8999 #, fuzzy msgid "" "Other than the signal's name (focus), the template arguments are important to note here. The first argument, bool, is the type that the signal handler should return; and the type within parentheses, Gtk::DirectionType, is the type of this " "signal's first, and only, argument. By looking at the reference documentation, you can see the names of the arguments too." msgstr "" "Förutom signalens namn (focus) är mallargumenten viktiga att notera här. Det första argumentet, bool, är typen " "som signalhanteraren ska returnera; och typen inom parenteser, Gtk::DirectionType, är typen på denna signals första, och enda, " "argument. Genom att titta på referensdokumentationen kan du även se namnen på argumenten." #. (itstool) path: section/para #: C/index-in.docbook:9008 #, fuzzy msgid "" "The same principles apply for signals which have more arguments. Here's one with three (taken from <gtkmm/textbuffer.h>):" msgstr "" "Samma principer gäller för signaler som har fler argument. Här är en med tre (tagen från <gtkmm/textbuffer.h>):" #. (itstool) path: section/programlisting #: C/index-in.docbook:9013 #, no-wrap msgid "" "\n" "Glib::SignalProxy<void(TextBuffer::iterator&, const Glib::ustrin&, int)> signal_insert();\n" msgstr "" "\n" "Glib::SignalProxy<void(TextBuffer::iterator&, const Glib::ustrin&, int)> signal_insert();\n" #. (itstool) path: section/para #: C/index-in.docbook:9017 #, fuzzy msgid "" "It follows the same form. The first type is void, so that should be our signal handler's return type. The following three types " "are the argument types, in order. Our signal handler's prototype could look like this:" msgstr "" "Det följer samma form. Den första typen är void, så det ska vara vår signalhanterares returtyp. De följande tre typerna är " "argumenttyperna i ordning. Vår signalhanterares prototyp skulle kunna se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9024 #, fuzzy, no-wrap msgid "" "\n" "void on_insert(TextBuffer::iterator& pos, const Glib::ustring& text, int bytes)\n" msgstr "" "\n" "void on_insert(TextBuffer::iterator& pos, const Glib::ustring& text, int bytes)\n" #. (itstool) path: section/title #: C/index-in.docbook:9030 msgid "Disconnecting signal handlers" msgstr "Koppla från signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:9032 msgid "Let's take another look at a Signal's connect method:" msgstr "Låt oss ta ännu en titt på en connect-metod för en Signal:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9036 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection signal<void(int)>::connect(const sigc::slot<void(int)>&);\n" msgstr "" "\n" "sigc::connection signal<void(int)>::connect(const sigc::slot<void(int)>&);\n" #. (itstool) path: section/para #: C/index-in.docbook:9040 #, fuzzy msgid "" "The returned sigc::connection can be used to control the connection. By keeping a connection object you can disconnect " "its associated signal handler using the sigc::connection::disconnect() method." msgstr "" "Den returnerade sigc::connection kan användas för att styra anslutningen. Genom att behålla ett anslutningsobjekt så kan " "du koppla från dess associerade signalhanterare med metoden sigc::connection::disconnect()." #. (itstool) path: section/title #: C/index-in.docbook:9048 msgid "Overriding default signal handlers" msgstr "Åsidosätta standardsignalhanterarna" #. (itstool) path: section/para #: C/index-in.docbook:9050 msgid "" "So far we've told you to perform actions in response to button-presses and the like by handling signals. That's certainly a good way to do " "things, but it's not the only way." msgstr "" "Så här långt har vi sagt till dig att utföra åtgärder som var till knapptryckningar och liknande genom att hantera signaler. Det är sannerligen " "ett bra sätt att göra saker, men inte det enda sättet." #. (itstool) path: section/para #: C/index-in.docbook:9057 #, fuzzy msgid "" "Instead of laboriously connecting signal handlers to signals, you can simply make a new class which inherits from a widget - say, a Button - " "and then override the default signal handler, such as Button::on_clicked(). This can be a lot simpler than hooking up signal handlers for " "everything." msgstr "" "I stället för att strävsamt ansluta signalhanterare till signaler kan du helt enkelt göra en ny klass som ärver från en komponent - exempelvis " "en Button - och sedan åsidosätta standardsignalhanteraren, som Button::on_clicked(). Detta kan vara mycket enklare än att koppla in " "signalhanterare för allt." #. (itstool) path: section/para #: C/index-in.docbook:9064 #, fuzzy msgid "" "Subclassing isn't always the best way to accomplish things. It is only useful when you want the widget to handle its own signal by itself. If " "you want some other class to handle the signal then you'll need to connect a separate handler. This is even more true if you want several " "objects to handle the same signal, or if you want one signal handler to respond to the same signal from different objects." msgstr "" "Underklassning är inte alltid bästa sättet att åstadkomma saker. Det är bara användbart när du vill att komponenten själv ska hantera sin egen " "signal. Om du vill att någon annan klass ska hantera signalen så kommer du behöva ansluta en separat hanterare. Detta är till och med mera sant " "om du vill att flera objekt ska hantera samma signal, eller om du vill att en signalhanterare ska svara på samma signal från olika objekt." #. (itstool) path: section/para #: C/index-in.docbook:9069 #, fuzzy msgid "" "gtkmm classes are designed with overriding in mind; they contain virtual member methods specifically intended to be " "overridden." msgstr "" "gtkmm-klasser designas med åsidosättning i åtanke; de innehåller virtuella medlemsmetoder specifikt avsedda att " "åsidosättas." #. (itstool) path: section/para #: C/index-in.docbook:9074 msgid "Let's look at an example of overriding:" msgstr "Låt oss titta på ett exempel på åsidosättning:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9078 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "\n" "class OverriddenButton : public Gtk::Button\n" "{\n" "protected:\n" " void on_clicked() override;\n" "}\n" "\n" "void OverriddenButton::on_clicked()\n" "{\n" " std::cout << \"Hello World\" << std::endl;\n" "\n" " // call the base class's version of the method:\n" " Gtk::Button::on_clicked();\n" "}\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "\n" "class OverriddenButton : public Gtk::Button\n" "{\n" "protected:\n" " void on_clicked() override;\n" "}\n" "\n" "void OverriddenButton::on_clicked()\n" "{\n" " std::cout << \"Hej världen\" << std::endl;\n" "\n" " // anropa basklassens version av metoden:\n" " Gtk::Button::on_clicked();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:9096 #, fuzzy msgid "" "Here we define a new class called OverriddenButton, which inherits from Gtk::Button. The only " "thing we change is the on_clicked() method, which is called whenever Gtk::Button emits the " "clicked signal. This method prints \"Hello World\" to stdout, and then calls the original, overridden " "method, to let Gtk::Button do what it would have done had we not overridden." msgstr "" "Här definierar vi en ny klass kallad OverriddenButton som ärver från Gtk::Button. Det enda vi " "ändrar är metoden on_clicked(), vilken anropas närhelst Gtk::Button sänder ut signalen " "clicked. Denna metod skriver ut ”Hej världen” till stdout, och anropar sedan den ursprungliga, åsidosatta " "metoden, för att låta Gtk::Button göra vad den skulle ha gjort om vi inte hade åsidosatt." #. (itstool) path: section/para #: C/index-in.docbook:9107 #, fuzzy msgid "" "You don't always need to call the parent's method; there are times when you might not want to. Note that we called the parent method " "after writing \"Hello World\", but we could have called it before. In this simple example, it hardly matters much, but " "there are times when it will. With connected signal handlers, it's not quite so easy to change details like this, and you can do something here " "which you can't do at all with connected signal handlers: you can call the parent method in the middle of your custom code." msgstr "" "Du behöver inte alltid anropa den överordnades metod, det finns tillfällen då du kan ske inte vill det. Observera att vi anropade den " "överordnade metoden efter vi skrivit ”Hej världen”, men vi kunde ha anropat det innan. I detta enkla exempel spelar det " "inte mycket roll, men det finns tillfällen då det kommer göra det. Med anslutna signalhanterare är det inte riktigt så lätt att ändra detaljer " "så här, och du kan göra något hör som du inte kan göra alls med anslutna signalhanterare: du kan anropa den överordnade metoden i " "mitten av din anpassade kod." #. (itstool) path: section/title #: C/index-in.docbook:9121 msgid "Binding extra arguments" msgstr "Binda extra argument" #. (itstool) path: para/programlisting #: C/index-in.docbook:9128 #, fuzzy, no-wrap msgid "" "\n" "m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &HelloWorld::on_button_clicked), \"button 1\"));\n" msgstr "" "\n" "m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &HelloWorld::on_button_clicked), \"knapp 1\"));\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:9135 #, no-wrap msgid "" "\n" "void on_button_clicked(const Glib::ustring& data);\n" msgstr "" "\n" "void on_button_clicked(const Glib::ustring& data);\n" #. (itstool) path: section/para #: C/index-in.docbook:9123 #, fuzzy msgid "" "If you use one signal handler to catch the same signal from several widgets, you might like that signal handler to receive some extra " "information. For instance, you might want to know which button was clicked. You can do this with sigc::bind(). Here's some " "code from the helloworld2 example. <_:programlisting-1/> This says that we want the signal to send an " "extra Glib::ustring argument to the signal handler, and that the value of that argument should be \"button 1\". Of " "course we will need to add that extra argument to the declaration of our signal handler: <_:programlisting-2/> Of course, a normal \"clicked\" " "signal handler would have no arguments." msgstr "" "Om du använder en signalhanterare för att fånga samma signal från flera komponenter kan du vilja att den signalhanteraren erhåller lite extra " "information. Till exempel kan du vilja veta vilken knapp som klickades på. Du kan göra detta med sigc::bind(). Här är lite " "kod från helloworld2-exemplet. <_:programlisting-1/> Detta säger att vi vill att signalen ska skicka " "ett extra Glib::ustring-argument till signalhanteraren, och att värdet på det argumentet ska vara ”button 1”. Vi kommer " "givetvis behöva lägga till det extra argumentet till deklarationen för vår signalhanterare: <_:programlisting-2/> En vanlig ”clicked”-" "signalhanterare skulle förstås inte ha några argument." #. (itstool) path: section/para #: C/index-in.docbook:9140 #, fuzzy msgid "" "sigc::bind() is not commonly used, but you might find it helpful sometimes. If you are familiar with GTK programming then you have probably noticed that this is similar to the extra gpointer data arguments which all " "GTK callbacks have. This is generally overused in GTK to pass information that should be stored as member data in a " "derived widget, but widget derivation is very difficult in C. We have far less need of this hack in gtkmm." msgstr "" "sigc::bind() används vanligen inte, men det kan ibland vara hjälpsamt. Om du är bekant med GTK-" "programmering så har du troligen märkta att detta är likt de extra gpointer data-argument som alla GTK-återanrop har. Detta " "överanvänds allmänt i GTK för att skicka information som ska lagras som medlemsdata i en härledd komponent, men " "komponenthärledning är väldigt svårt i C. Vi har mycket mindre behov av detta hack i gtkmm." #. (itstool) path: section/title #: C/index-in.docbook:9152 msgid "Event signals" msgstr "Händelsesignaler" #. (itstool) path: section/para #: C/index-in.docbook:9154 msgid "" "Event signals are emitted as a result of some user input, for instance a key press or a mouse motion. Usually you don't handle these events " "directly. Instead, you use a subclass of Gtk::EventController, such as Gtk::EventControllerKey or " "Gtk::GestureClick. Event controllers can be added to a widget with Gtk::Widget::add_controller()." msgstr "" "Händelsesignaler sänds ut som resultat av någon användarinmatning, exempelvis en tangenttryckning eller en musrörelse. Vanligen hanterar du " "inte dessa händelser direkt. I stället använder du en underklass till Gtk::EventController, som Gtk::" "EventControllerKey eller Gtk::GestureClick. Händelsekontroller kan läggas till i en komponent med " "Gtk::Widget::add_controller()." #. (itstool) path: section/para #: C/index-in.docbook:9161 #, fuzzy msgid "" "You might occasionally find it useful to handle events when there's something you can't accomplish with normal signals. Gtk::Button, for example, does not send mouse-pointer coordinates with its clicked signal, but you could handle " "Gtk::GestureClick::signal_pressed() if you needed this information. Gtk::EventControllerKey::" "signal_key_pressed() is often used to handle key-presses." msgstr "" "Du kan emellanåt finna det användbart att hantera händelse när det är något du inte kan åstadkomma med vanliga signaler. Gtk::" "Button skickar exempelvis inte muspekarkoordinater med sin clicked-signal, men du skulle kunna hantera " "Gtk::GestureClick::signal_pressed() om du behövde denna information. Gtk::EventControllerKey::" "signal_key_pressed() används ofta för att hantera tangenttryckningar." #. (itstool) path: section/para #: C/index-in.docbook:9171 #, fuzzy msgid "" "Some event controller signals behave slightly differently. The value returned from the signal handler indicates whether it has fully " "\"handled\" the event. If the value is false then gtkmm will pass the event on to the next signal " "handler. If the value is true then no other signal handlers will need to be called." msgstr "" "Vissa händelsekontrollsignaler beter sig lite annorlunda. Värdet som returneras från signalhanteraren indikerar huruvida den har ”hanterat” " "händelsen fullständigt. Om värdet är false så kommer gtkmm skicka händelsen vidare till nästa " "signalhanterare. Om värdet är true kommer inga andra signalhanterare behöva anropas." #. (itstool) path: section/para #: C/index-in.docbook:9179 #, fuzzy msgid "" "Handling an event doesn't affect the Widget's other signals. If you handle Gtk::GestureClick::signal_pressed() for " "Gtk::Button, you'll still be able to get the clicked signal. They are emitted at (nearly) the same " "time." msgstr "" "Att hantera en händelse påverkar inte vår Widgets andra signaler. Om du hanterar Gtk::GestureClick::signal_pressed() " "för Gtk::Button kommer du fortfarande kunna få clicked-signalen. De sänds ut (nästan) samtidigt." #. (itstool) path: section/programlisting #: C/index-in.docbook:9188 #, fuzzy, no-wrap msgid "" "\n" "void on_button_press(int n_press, double x, double y);\n" "Gtk::Button button(\"label\");\n" "auto controller = Gtk::GestureClick::create();\n" "controller->set_propagation_phase(Gtk::PropagationPhase::CAPTURE);\n" "controller->signal_pressed().connect(sigc::ptr_fun(&on_button_press));\n" "button.add_controller(controller);\n" msgstr "" "\n" "void on_button_press(int n_press, double x, double y);\n" "Gtk::Button button(\"label\");\n" "auto controller = Gtk::GestureClick::create();\n" "controller->set_propagation_phase(Gtk::PropagationPhase::CAPTURE);\n" "controller->signal_pressed().connect(sigc::ptr_fun(&on_button_press));\n" "button.add_controller(controller);\n" #. (itstool) path: section/para #: C/index-in.docbook:9196 msgid "When the mouse is over the button and a mouse button is pressed, on_button_press() will be called." msgstr "När musen är ovanför knappen och en musknapp trycks ned kommer on_button_press() att anropas." #. (itstool) path: section/para #: C/index-in.docbook:9200 #, fuzzy msgid "" "The call to set_propagation_phase() is necessary in this case because the GtkButton C class " "adds an event controller, handling button clicks in the capture phase. GtkButton claims the event, meaning that the " "event is not propagated in the bubble phase, where event controllers handle events by default." msgstr "" "Anropet till set_propagation_phase() är nödvändigt i detta fall eftersom C-klassen GtkButton " "lägger till en händelsekontroll som hanterar knapptryck i fångstfasen. GtkButton gör anspråk på händelsen, vilket " "betyder att händelsen inte sprids i bubbelfasen, där händelsekontroller hanterar händelser som standard." #. (itstool) path: section/title #: C/index-in.docbook:9209 msgid "Signal Handler sequence" msgstr "Signalhanterarsekvens" #. (itstool) path: section/para #: C/index-in.docbook:9211 #, fuzzy msgid "" "By default, signal handlers that return void are called after any previously-connected signal handlers. However, this can be a " "problem with event signals that can stop event propagation by returning true. For instance, the existing signal handlers, or " "the default signal handler, might return true to stop other signal handlers from being called. To specify that your signal " "handler should be called before the other signal handlers, you can specify false for the after parameter. " "This connect() parameter is optional, if the signal handler returns void. For instance," msgstr "" "Som standard anropas signalhanterare som returnerar void efter alla tidigare anslutna signalhanterare. Detta kan dock bli ett " "problem med händelsesignaler som kan stoppa händelsespridning genom att returnera true. De befintliga signalhanterarna eller " "standardsignalhanteraren kan exempelvis returnera true för att stoppa andra signalhanterare från att anropas. För att ange " "att din signalhanterare ska anropas innan de andra signalhanterarna kan du ange false för parametern after. Denna connect()-parameter är valfri om signalhanteraren returnerar void. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:9221 #, fuzzy, no-wrap msgid "" "\n" "key_controller->signal_key_pressed().connect(sigc::ptr_fun(&on_mywindow_key_pressed), false);\n" msgstr "" "\n" "key_controller->signal_key_pressed().connect(sigc::ptr_fun(&on_mywindow_key_pressed), false);\n" #. (itstool) path: section/para #: C/index-in.docbook:9224 #, fuzzy msgid "The event is propagated between widgets in 3 phases. <_:orderedlist-1/>" msgstr "Händelsen sprids mellan komponenter i tre faser. <_:orderedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:9231 #, fuzzy msgid "" "The Input Handling chapter in the GTK documentation describes user " "input handling in more detail." msgstr "" "Kapitlet Input Handling i GTK-dokumentationen beskriver hantering av " "användarinmatning mer detaljerat." #. (itstool) path: section/title #: C/index-in.docbook:9240 msgid "Exceptions in signal handlers" msgstr "Undantag i signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:9242 #, fuzzy msgid "" "When a program is aborted because of an unhandled C++ exception, it's sometimes possible to use a debugger to find the location where the " "exception was thrown. This is more difficult than usual if the exception was thrown from a signal handler." msgstr "" "När ett program avbryts på grund av ett ohanterat C++-undantag är det ibland möjligt att använda en felsökare för att hitta platsen där " "undantaget kastades. Detta är svårare än vanligt om undantaget kastades från en signalhanterare." #. (itstool) path: section/para #: C/index-in.docbook:9247 msgid "" "This section describes primarily what you can expect on a Linux system, when you use the " "gdb debugger." msgstr "" "Detta avsnitt beskriver främst vad du kan förvänta dig på ett Linux-system när du använder felsökaren gdb." #. (itstool) path: section/para #: C/index-in.docbook:9251 #, fuzzy msgid "First, let's look at a simple example where an exception is thrown from a normal function (no signal handler)." msgstr "Låt oss först titta på ett enkelt exempel där ett undantag kastas från en normal funktion (ingen signalhanterare)." #. (itstool) path: section/programlisting #: C/index-in.docbook:9255 #, fuzzy, no-wrap msgid "" "\n" "// without_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " throwSomething();\n" " auto app = Gtk::Application::create(\"org.gtkmm.without_signal\");\n" " return app->run();\n" "}\n" msgstr "" "\n" "// without_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " throwSomething();\n" " auto app = Gtk::Application::create(\"org.gtkmm.without_signal\");\n" " return app->run();\n" "}\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:9275 #, fuzzy, no-wrap msgid "" "\n" "> gdb without_signal\n" "(gdb) run\n" "terminate called after throwing an instance of 'char const*'\n" "\n" "Program received signal SIGABRT, Aborted.\n" "(gdb) backtrace\n" "#7 0x08048864 in throwSomething () at without_signal.cc:6\n" "#8 0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n" msgstr "" "\n" "> gdb without_signal\n" "(gdb) run\n" "terminate called after throwing an instance of 'char const*'\n" "\n" "Program received signal SIGABRT, Aborted.\n" "(gdb) backtrace\n" "#7 0x08048864 in throwSomething () at without_signal.cc:6\n" "#8 0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n" #. (itstool) path: section/para #: C/index-in.docbook:9272 #, fuzzy msgid "" "Here is an excerpt from a gdb session. Only the most interesting parts of the output are shown. <_:programlisting-1/" "> You can see that the exception was thrown from without_signal.cc, line 6 (throw \"Something\";)." msgstr "" "Här är ett utdrag från en gdb-session. Endast de mest intressanta delarna av utmatningen visas. <_:programlisting-1/" "> Du kan se att undantaget kastades från without_signal.cc, rad 6 (throw \"Something\";)." #. (itstool) path: section/para #: C/index-in.docbook:9288 #, fuzzy msgid "Now let's see what happens when an exception is thrown from a signal handler. Here's the source code." msgstr "Låt oss nu se vad som händer när ett undantag kastas från en signalhanterare. Här är källkoden." #. (itstool) path: section/programlisting #: C/index-in.docbook:9292 #, fuzzy, no-wrap msgid "" "\n" "// with_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n" " auto app = Gtk::Application::create(\"org.gtkmm.with_signal\");\n" " app->hold();\n" " return app->run();\n" "}\n" msgstr "" "\n" "// with_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n" " auto app = Gtk::Application::create(\"org.gtkmm.with_signal\");\n" " app->hold();\n" " return app->run();\n" "}\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:9312 #, fuzzy, no-wrap msgid "" "\n" "> gdb with_signal\n" "(gdb) run\n" "(with_signal:2703): glibmm-ERROR **:\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" "(gdb) backtrace\n" "#2 0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n" "#3 Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n" "#4 0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n" "#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n" "#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n" msgstr "" "\n" "> gdb with_signal\n" "(gdb) run\n" "(with_signal:2703): glibmm-ERROR **:\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" "(gdb) backtrace\n" "#2 0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n" "#3 Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n" "#4 0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n" "#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n" "#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n" #. (itstool) path: section/para #: C/index-in.docbook:9310 #, fuzzy msgid "" "And here's an excerpt from a gdb session. <_:programlisting-1/> The exception is caught in glibmm, and the program ends with a call to g_error(). Other exceptions may result in different behavior, but in any " "case the exception from a signal handler is caught in glibmm or gtkmm, and " "gdb can't see where it was thrown." msgstr "" "Och här kommer ett utdrag från en gdb-session. <_:programlisting-1/> Undantaget fångas i glibmm och programmet avslutas med ett anrop till g_error(). Andra undantag kan resultera i annat beteenden, men i " "vilket fall fångas undantaget från en signalhanterare i glibmm eller gtkmm, och " "gdb kan inte se var det kastades." #. (itstool) path: section/para #: C/index-in.docbook:9332 #, fuzzy msgid "To see where the exception is thrown, you can use the gdb command catch throw." msgstr "För att se var undantaget kastas kan du använda gdb-kommandot catch throw." #. (itstool) path: section/programlisting #: C/index-in.docbook:9336 #, fuzzy, no-wrap msgid "" "\n" "> gdb with_signal\n" "(gdb) catch throw\n" "Catchpoint 1 (throw)\n" "(gdb) run\n" "Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n" "(gdb) backtrace\n" "#0 0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n" "#1 0x08048bd4 in throwSomething () at with_signal.cc:6\n" "(gdb) continue\n" "Continuing.\n" "(with_signal:2375): glibmm-ERROR **\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" msgstr "" "\n" "> gdb with_signal\n" "(gdb) catch throw\n" "Catchpoint 1 (throw)\n" "(gdb) run\n" "Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n" "(gdb) backtrace\n" "#0 0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n" "#1 0x08048bd4 in throwSomething () at with_signal.cc:6\n" "(gdb) continue\n" "Continuing.\n" "(with_signal:2375): glibmm-ERROR **\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:9356 #, fuzzy, no-wrap msgid "" "\n" "(gdb) catch throw\n" "(gdb) commands\n" "(gdb) backtrace\n" "(gdb) continue\n" "(gdb) end\n" "(gdb) set pagination off\n" "(gdb) run\n" msgstr "" "\n" "(gdb) catch throw\n" "(gdb) commands\n" "(gdb) backtrace\n" "(gdb) continue\n" "(gdb) end\n" "(gdb) set pagination off\n" "(gdb) run\n" #. (itstool) path: section/para #: C/index-in.docbook:9352 #, fuzzy msgid "" "If there are many caught exceptions before the interesting uncaught one, this method can be tedious. It can be automated with the following " "gdb commands. <_:programlisting-1/> These commands will print a backtrace from each throw and continue. " "The backtrace from the last (or possibly the last but one) throw before the program stops, is the interesting one." msgstr "" "Om det finns många fångade undantag innan det intressanta ofångade så kan denna metod vara långrandig. Den kan automatiseras med följande " "gdb-kommandon. <_:programlisting-1/> Dessa kommandon kommer skriva ut ett bakåtspår från varje throw " "och fortsätta. Bakåtspåret från den sista (eller möjligen den näst sista) throw innan programmet stoppar är den som är intressant." #. (itstool) path: appendix/title #: C/index-in.docbook:9374 msgid "Creating your own signals" msgstr "Skapa dina egna signaler" #. (itstool) path: appendix/para #: C/index-in.docbook:9376 msgid "" "Now that you've seen signals and signal handlers in gtkmm, you might like to use the same technique to allow " "interaction between your own classes. That's actually very simple by using the libsigc++ library directly." msgstr "" "Nu då du sett signaler och signalhanterare i gtkmm kanske du vill använda samma teknik för att tillåta interaktion " "mellan dina egna klasser. Det är faktiskt väldigt enkelt genom att direkt använda libsigc++-biblioteket." #. (itstool) path: appendix/para #: C/index-in.docbook:9382 #, fuzzy msgid "" "This isn't purely a gtkmm or GUI issue. gtkmm uses libsigc++ " "to implement its proxy wrappers for the GTK signal system, but for new, non-GTK signals, you can create pure C++ " "signals, using the sigc::signal<> template." msgstr "" "Detta är inte ett rent gtkmm- eller GUI-problem. gtkmm använder libsigc++ för att implementera sina proxyomslag för GTK-signalsystemet, men för nya, icke-GTK-signaler kan du " "skapa rena C++-signaler med mallen sigc::signal<>." #. (itstool) path: appendix/para #: C/index-in.docbook:9389 msgid "" "For instance, to create a signal that sends 2 parameters, a bool and an int, just declare a sigc::signal, like so:" msgstr "" "För att exempelvis skapa en signal som skickar 2 parametrar, en bool och en int, deklarerar du bara en " "sigc::signal, så här:" #. (itstool) path: appendix/programlisting #: C/index-in.docbook:9394 #, fuzzy, no-wrap msgid "" "\n" "sigc::signal<void(bool, int)> signal_something;\n" msgstr "" "\n" "sigc::signal<void(bool, int)> signal_something;\n" #. (itstool) path: appendix/para #: C/index-in.docbook:9397 #, fuzzy msgid "" "You could just declare that signal as a public member variable, but some people find that distasteful and prefer to make it available via an " "accessor method, like so:" msgstr "" "Du skulle kunna helt enkelt deklarera den signalen som en offentlig medlemsvariabel, men vissa finner det oaptitligt och föredrar att göra den " "tillgänglig med en åtkomstmetod, så här:" #. (itstool) path: appendix/programlisting #: C/index-in.docbook:9402 #, fuzzy, no-wrap msgid "" "\n" "class Server\n" "{\n" "public:\n" " //signal accessor:\n" " using type_signal_something = sigc::signal<void(bool, int)>;\n" " type_signal_something signal_something();\n" "\n" "protected:\n" " type_signal_something m_signal_something;\n" "};\n" "\n" "Server::type_signal_something Server::signal_something()\n" "{\n" " return m_signal_something;\n" "}\n" msgstr "" "\n" "class Server\n" "{\n" "public:\n" " //signal accessor:\n" " using type_signal_something = sigc::signal<void(bool, int)>;\n" " type_signal_something signal_something();\n" "\n" "protected:\n" " type_signal_something m_signal_something;\n" "};\n" "\n" "Server::type_signal_something Server::signal_something()\n" "{\n" " return m_signal_something;\n" "}\n" #. (itstool) path: appendix/para #: C/index-in.docbook:9420 msgid "You can then connect to the signal using the same syntax used when connecting to gtkmm signals. For instance," msgstr "" "Du kan sedan ansluta till signalen med samma syntax som du använder när du ansluter till gtkmm-signaler. Till " "exempel," #. (itstool) path: appendix/programlisting #: C/index-in.docbook:9424 #, fuzzy, no-wrap msgid "" "\n" "server.signal_something().connect(\n" " sigc::mem_fun(client, &Client::on_server_something) );\n" msgstr "" "\n" "server.signal_something().connect(\n" " sigc::mem_fun(client, &Client::on_server_something) );\n" #. (itstool) path: section/para #: C/index-in.docbook:9432 msgid "This is a full working example that defines and uses custom signals." msgstr "Detta är ett fullt fungerande exempel som definierar och använder anpassade signaler." #. (itstool) path: section/para #: C/index-in.docbook:9436 msgid "Source Code" msgstr "Källkod" #. (itstool) path: appendix/title #: C/index-in.docbook:9444 msgid "Comparison with other signalling systems" msgstr "Jämförelse med andra signalsystem" #. (itstool) path: appendix/para #: C/index-in.docbook:9446 #, fuzzy msgid "" "(An aside: GTK calls this scheme \"signalling\"; the sharp-eyed reader with GUI toolkit experience will note that " "this same design is often seen under the name of \"broadcaster-listener\" (e.g., in Metrowerks' PowerPlant framework for the Macintosh). It " "works in much the same way: one sets up broadcasters, and then connects listeners to them; the " "broadcaster keeps a list of the objects listening to it, and when someone gives the broadcaster a message, it calls all of its objects in its " "list with the message. In gtkmm, signal objects play the role of broadcasters, and slots play the role of listeners " "- sort of. More on this later.)" msgstr "" "(Ett bispår: GTK kallar detta schema ”signalling”; den skarpögde läsaren med erfarenhet från GUI-verktygslådor " "kommer se att denna design ofta ses under namnet ”broadcaster-listener” (t.ex. i Metrowerks PowerPlant-ramverk för Macintosh). Det fungerar i " "stort på samma sätt: man konfigurerar broadcasters, och ansluter sedan listeners till dem; sändaren " "behåller en lista över objekten som lyssnar på den, och när någon ger sändaren ett meddelande anropar den alla sina objekt i sin lista med " "meddelandet. I gtkmm spelar signalobjekt rollen för sändare, och fack spelar rollen som lyssnare - på sätt och vis. " "Mer om detta senare.)" #. (itstool) path: appendix/para #: C/index-in.docbook:9460 #, fuzzy msgid "" "gtkmm signal handlers are strongly-typed, whereas GTK C code allows you to connect a " "callback with the wrong number and type of arguments, leading to a segfault at runtime. And, unlike Qt, " "gtkmm achieves this without modifying the C++ language." msgstr "" "gtkmm-signalhanterare är starkt typade, medan GTK:s C-kod låter dig ansluta ett återanrop " "med fel antal och typ av argument, vilket leder till ett segmenteringsfel vid körning. Till skillnad från Qt " "åstadkommer även gtkmm detta utan att C++-språket." #. (itstool) path: appendix/para #: C/index-in.docbook:9466 #, fuzzy msgid "" "Re. Overriding signal handlers: You can do this in the straight-C world of GTK too; that's what GTK's object system is for. But in GTK, you " "have to go through some complicated procedures to get object-oriented features like inheritance and overloading. In C++, it's simple, since " "those features are supported in the language itself; you can let the compiler do the dirty work." msgstr "" "Angående åsidosättning av signalhanterare: Du kan göra detta även i GTK:s rena C-värld; det är vad GTK:s objektsystem är till för. Men i GTK " "måste du gå igenom några komplicerade procedurer frå att få objektorienterade funktioner som arv och överlagring. I C++ är det enkelt, då dessa " "funktioner stöds i själva språket, du kan låta kompilatorn göra det tunga arbetet." #. (itstool) path: appendix/para #: C/index-in.docbook:9474 #, fuzzy msgid "" "This is one of the places where the beauty of C++ really comes out. One wouldn't think of subclassing a GTK widget simply to override its " "action method; it's just too much trouble. In GTK, you almost always use signals to get things done, unless you're writing a new widget. But " "because overriding methods is so easy in C++, it's entirely practical - and sensible - to subclass a button for that purpose." msgstr "" "Det här är en av platserna där skönheten i C++ verkligen visar sig. Ingen skulle tänka sig att underklassa en GTK-komponent för att helt enkelt " "åsidosätta dess åtgärdsmetod; det är för mycket jobb. I GTK skulle du nästan alltid använda signaler för att få saker gjorda om du inte skriver " "en ny komponent. Men eftersom det är så lätt att åsidosätta metoder i C++ så är det fullt praktiskt - och sansat - att underklassa en knapp för " "det syftet." #. (itstool) path: appendix/title #: C/index-in.docbook:9485 msgid "gtkmm and Win32" msgstr "gtkmm och Win32" #. (itstool) path: appendix/para #: C/index-in.docbook:9486 #, fuzzy msgid "" "One of the major advantages of gtkmm is that it is crossplatform. gtkmm programs written " "on other platforms such as GNU/Linux can generally be transferred to Windows (and vice versa) with few modifications to the source." msgstr "" "En av de stora fördelarna med gtkmm är att det är multiplattform. gtkmm-program som " "skrivits på andra plattformar som GNU/Linux kan allmänt överföras till Windows (och tvärtom) med få ändringar i källkoden." #. (itstool) path: appendix/para #: C/index-in.docbook:9491 #, fuzzy msgid "" "gtkmm currently works with the MinGW/GCC compiler with a compiler " "version that supports C++17, such as gcc 7 or 8. It also works with Microsoft Visual C++ 2017 15.7.x or later (including the freely available " "express/community editions) on the Windows platform. There is an installer available for gtkmm on Microsoft Windows, but as of this writing (October 2020) it has not " "been updated for a long time. Please be aware that although normally it is fine to mix builds done with Visual Studio 2017 and 2019, please do " "not do so when building gtkmm with its -mm dependencies." msgstr "" "gtkmm fungerar för närvarande med MinGW/GCC-kompilatorn med en " "kompilatorversion som stöder C++17, som gcc 7 eller 8. Det fungerar också med Microsoft Visual C++ 2017 15.7.x eller senare (inklusive de " "gratis tillgängliga express/community-utgåvorna) på Windows-plattformen. Det finns en installerare tillgänglig för gtkmm på Microsoft Windows, men i skrivande stund (oktober 2020) " "har den inte uppdaterats på länge. Var medveten om att även om det vanligen är lugnt att blanda byggen som gjorts med Visual Studio 2017 och " "2019, så gör inte det när du bygger gtkmm med dess -mm-beroenden." #. (itstool) path: appendix/para #: C/index-in.docbook:9504 msgid "" "Refer to the README.win32, as well as the README files in the gtkmm, " "pangomm and glibmm for instructions on how to build gtkmm on Windows." msgstr "" "Se README.win32 såväl som README-filerna i gtkmm, pangomm och glibmm för " "instruktioner om hur du bygger gtkmm på Windows." #. (itstool) path: appendix/title #: C/index-in.docbook:9511 msgid "Working with gtkmm's Source Code" msgstr "Arbeta med gtkmm:s källkod" #. (itstool) path: appendix/para #: C/index-in.docbook:9512 #, fuzzy msgid "" "If you are interested in helping out with the development of gtkmm, or fixing a bug in gtkmm, you'll probably need to build the development version of gtkmm. However, you should not install a " "development version over your stable version. Instead, you should install it alongside your existing gtkmm " "installation, in a separate path." msgstr "" "Om du är intresserad i att hjälpa till med utvecklingen av gtkmm eller vill fixa ett fel gtkmm, kommer du troligen behöva bygga utvecklingsversionen av gtkmm. Du bör dock inte installera en " "utvecklingsversion över din stabila version. I stället bör du installera den vid sidan om din befintliga gtkmm-" "installation i en separat sökväg." #. (itstool) path: appendix/para #: C/index-in.docbook:9519 #, fuzzy msgid "" "The easiest way to do this is using jhbuild. jhbuild is a program that makes building GNOME software much easier by calculating dependencies and building things in the correct order. " "This section will give a brief explanation of how to set up jhbuild to build and install gtkmm from the source repository (git). For up-to-date information on jhbuild, please refer to the jhbuild manual." msgstr "" "Det enklaste sättet att göra detta är att använda jhbuild. " "jhbuild är ett program som gör det mycket enklare att bygga GNOME-programvara genom att beräkna beroenden och bygga " "saker i rätt ordning. Detta avsnitt kommer kort förklara hur jhbuild kan konfigureras för att bygga och installera " "gtkmm från källarkivet (git). För uppdaterad information om jhbuild, se handboken för jhbuild." #. (itstool) path: note/para #: C/index-in.docbook:9529 #, fuzzy msgid "" "Note that to build gtkmm from git, you'll often need to build many of its dependencies from git as well. " "jhbuild makes this easier than it would normally be, but it will take quite a while to build and install them all. " "You will probably encounter build problems, though these will usually be corrected quickly if you report them." msgstr "" "Observera att för att bygga gtkmm från git behöver du ofta även bygga många av dess beroenden från git. " "jhbuild gör detta lättare än det vanligen skulle vara, men det kommer ta ett bra tag att bygga och installera dem " "alla. Du kommer troligen stöta på byggproblem, men dessa brukar vanligen rättas till snabbt om du rapporterar dem." #. (itstool) path: appendix/para #: C/index-in.docbook:9537 msgid "" "gnome-build-meta is an alternative to jhbuild. It is described at the Building system components wiki page, but here we concentrate on " "jhbuild." msgstr "" "gnome-build-meta är ett alternativ till jhbuild. Det beskrivs på wikisidan Bygga systemkomponenter, men här koncentrerar vi oss på " "jhbuild." #. (itstool) path: section/title #: C/index-in.docbook:9544 msgid "Setting up jhbuild" msgstr "Konfigurera jhbuild" #. (itstool) path: para/screen #: C/index-in.docbook:9553 #, no-wrap msgid "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc" msgstr "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc" #. (itstool) path: section/para #: C/index-in.docbook:9546 msgid "" "To set up jhbuild, follow the basic installation instructions from the jhbuild manual. After you have installed jhbuild, you should copy the sample " "jhbuild configuration file into your home directory by executing the following command from the " "jhbuild directory: <_:screen-1/>" msgstr "" "För att konfigurera jhbuild kan du följa de grundläggande installationsinstruktionerna från handboken för jhbuild. Efter att du har installerat jhbuild bör du kopiera jhbuild-exempelkonfigurationsfilen till din hemkatalog genom att exekvera följande " "kommando från jhbuild-katalogen: <_:screen-1/>" #. (itstool) path: section/para #: C/index-in.docbook:9555 msgid "" "The gtkmm module is defined in the gnome-suites-core-deps-latest.modules moduleset. So edit " "your jhbuildrc file and set your moduleset setting like so:" msgstr "" "gtkmm-modulen definieras i moduluppsättningen gnome-suites-core-deps-latest.modules. Så " "redigera din jhbuildrc-fil och ställ in din moduleset-inställning så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9560 #, no-wrap msgid "moduleset = 'gnome-suites-core-deps-latest'" msgstr "moduleset = 'gnome-suites-core-deps-latest'" #. (itstool) path: section/para #: C/index-in.docbook:9561 #, fuzzy msgid "" "After setting the correct moduleset, you need to tell jhbuild which module or modules to build. To build " "gtkmm and all of its dependencies, set modules like so:" msgstr "" "Efter att ha ställt in rätt moduluppsättning behöver du säga till jhbuild vilken eller vilka moduler som ska byggas. " "För att bygga gtkmm och alla dess beroenden ställer du in modules så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9567 #, no-wrap msgid "modules = [ 'gtkmm' ]" msgstr "modules = [ 'gtkmm' ]" #. (itstool) path: section/para #: C/index-in.docbook:9568 #, fuzzy msgid "" "You can build several modules by setting the modules variable to a meta-package, e.g. meta-gnome-core, or " "listing more than one module name. The modules variable specifies which modules will be built when you don't explicitly " "specify anything on the command line. You can always build a different moduleset later by specifying it on the commandline (e.g. " "jhbuild build gtkmm)." msgstr "" "Du kan bygga flera moduler genom att ställa in variabeln modules till ett metapaket, t.ex. meta-gnome-core, eller genom att lista mer än ett modulnamn. Variabeln modules anger vilka moduler som kommer byggas när du inte " "explicit anger något på kommandoraden. Du kan alltid bygga en annan moduluppsättning senare genom att ange den på kommandoraden (t.ex. " "jhbuild build gtkmm)." #. (itstool) path: important/title #: C/index-in.docbook:9578 msgid "Setting a prefix" msgstr "Sätta ett prefix" #. (itstool) path: important/para #: C/index-in.docbook:9579 #, fuzzy msgid "" "By default, jhbuild's configuration is configured to install all software built with jhbuild under the ~/jhbuild/install prefix. You can choose a different prefix, but it is recommended that you keep " "this prefix different from other software that you've installed (don't set it to /usr!) If you've followed the jhbuild " "instructions then this prefix belongs to your user, so you don't need to run jhbuild as root." msgstr "" "Som standard är jhbuilds konfiguration konfigurerad för att installera all programvara som byggts med " "jhbuild under prefixet ~/jhbuild/install. Du kan välja ett annat prefix, men det rekommenderas " "att du behåller detta prefix skilt från annan programvara som du har installerat (sätt det inte till /usr!) Om du har " "följt jhbuild-instruktionerna så hör detta prefix till din användare, så du behöver inte köra jhbuild som root." #. (itstool) path: section/para #: C/index-in.docbook:9591 #, fuzzy msgid "" "You should also set buildroot in jhbuildrc. jhbuild builds " "gtkmm and many of its dependencies with Meson. Meson does not allow building in the source tree. " "jhbuild's default action is to build in a build directory directly below the source root " "directory. Some modules have a build directory with files used when building with Autotools. Those files can be destroyed " "if you let jhbuild build in that directory." msgstr "" "Du bör även ställa in buildroot i jhbuildrc. jhbuild bygger " "gtkmm och många av dess beroenden med Meson. Meson tillåter inte bygge i källträdet. jhbuilds standardåtgärd är att bygga i en build-katalog just under källans rotkatalog. Vissa moduler har en " "build-katalog med filer som används vid bygge med Autotools. Dessa filer kan förstöras om du låter jhbuild bygga i den katalogen." #. (itstool) path: section/para #: C/index-in.docbook:9601 msgid "" "When you downloaded jhbuild from the git repository, you got a number of .modules files, " "specifying dependencies between modules. By default jhbuild does not use the downloaded versions of these files, but " "reads the latest versions in the git repository. This is usually what you want. If you don't want it, use the use_local_modulesets variable in jhbuildrc." msgstr "" "När du hämtade jhbuild från git-arkivet fick du ett antal .modules-filer som anger beroenden " "mellan moduler. Som standard använder jhbuild inte de hämtade versionerna av dessa filer, utan läser de senaste " "versionerna i git-arkivet. Detta är vanligen vad du vill. Om du inte vill det använder du variabeln use_local_modulesets i " "jhbuildrc." #. (itstool) path: section/title #: C/index-in.docbook:9612 msgid "Installing and Using the git version of gtkmm" msgstr "Installera och använda git-versionen av gtkmm" #. (itstool) path: para/screen #: C/index-in.docbook:9621 #, no-wrap msgid "" "$ jhbuild bootstrap\n" "$ jhbuild sanitycheck" msgstr "" "$ jhbuild bootstrap\n" "$ jhbuild sanitycheck" #. (itstool) path: section/para #: C/index-in.docbook:9614 #, fuzzy msgid "" "Once you've configured jhbuild as described above, building gtkmm should be relatively " "straightforward. The first time you run jhbuild, you should run the following sequence of commands to ensure that " "jhbuild has the required tools and verify that it is set up correctly: <_:screen-1/>" msgstr "" "När du konfigurerat jhbuild som beskrivet ovan bör det vara relativt okomplicerat att bygga gtkmm. Den första gången du kör jhbuild bör du köra följande sekvens kommandon för att säkerställa att " "jhbuild har verktygen som krävs och bekräfta att det konfigurerats riktigt: <_:screen-1/>" #. (itstool) path: section/title #: C/index-in.docbook:9625 msgid "Installing gtkmm with jhbuild" msgstr "Installera gtkmm med jhbuild" #. (itstool) path: section/para #: C/index-in.docbook:9627 msgid "" "If everything worked correctly, you should be able to build gtkmm and all of its dependencies from git by executing " "jhbuild build (or, if you didn't specify gtkmm in the modules variable, with " "the command jhbuild build gtkmm)." msgstr "" "Om allt fungerade korrekt bör du kunna bygga gtkmm och alla dess beroenden från git genom att köra jhbuild " "build (eller, om du inte angav gtkmm i variabeln modules, med kommandot " "jhbuild build gtkmm)." #. (itstool) path: section/para #: C/index-in.docbook:9634 #, fuzzy msgid "" "This command will build and install a series of modules and will probably take quite a long time the first time through. After the first time, " "however, it should go quite a bit faster since it only needs to rebuild files that changed since the last build. Alternatively, after you've " "built and installed gtkmm the first time, you can rebuild gtkmm by itself (without " "rebuilding all of its dependencies) with the command jhbuild buildone gtkmm." msgstr "" "Detta kommando kommer bygga och installera en serie moduler och kommer troligen ta ganska lång tid den första gången. Efter den första gången " "bör det dock gå ganska mycket snabbare då det bara behöver bygga om filer som ändrats sedan det senaste bygget. Alternativt kan du efter du " "byggt och installerat gtkmm för första gången, nu bygga om endast gtkmm (utan att bygga " "alla dess beroenden på nytt) med kommandot jhbuild buildone gtkmm." #. (itstool) path: section/title #: C/index-in.docbook:9645 msgid "Using the git version of gtkmm" msgstr "Använda git-versionen av gtkmm" #. (itstool) path: section/para #: C/index-in.docbook:9647 #, fuzzy msgid "" "After you've installed the git version of gtkmm, you're ready to start using and experimenting with it. In order to " "use the new version of gtkmm you've just installed, you need to set some environment variables so that your " "configure or meson.build script knows where to find the new libraries. Fortunately, " "jhbuild offers an easy solution to this problem. Executing the command jhbuild shell will start a " "new shell with all of the correct environment variables set. Now if you re-configure and build your project just as you usually do, it should " "link against the newly installed libraries. To return to your previous environment, simply exit the jhbuild shell." msgstr "" "Efter att du installerat git-versionen an gtkmm är du redo att börja använda och experimentera med det. För att " "använda den nya gtkmm-version som du just installerats behöver du ställa in några miljövariabler så att ditt " "configure- eller meson.build-skript vet var de kan hitta de nya biblioteken. Turligt nog erbjuder " "jhbuild en lätt lösning på detta problem. Att exekvera kommandot jhbuild shell kommer starta ett " "nytt skal med alla miljövariabler rätt inställda. Om du nu konfigurerar om och bygger ditt projekt som du brukar göra, så ska det helt enkelt " "länka mot de nyss installerade biblioteken. För att returnera till din tidigare miljö stänger du helt enkelt jhbuild-" "skalet." #. (itstool) path: section/para #: C/index-in.docbook:9661 #, fuzzy msgid "" "Once you've built your software, you'll need to run your program within the jhbuild environment as well. To do this, you can again use the " "jhbuild shell command to start a new shell with the jhbuild environment set up. Alternatively, " "you can execute a one-off command in the jhbuild environment using the following command: jhbuild run " "command-name. In this case, the command will be run with the correct environment variables set, but will return to your previous " "environment after the program exits." msgstr "" "När du har byggt din programvara kommer du behöva köra ditt program även i jhbuild-miljön. För att göra detta kan du åter igen använda " "kommandot jhbuild shell för att starta ett nytt skal med jhbuild-miljön konfigurerad. Alternativt " "kan du exekvera ett ensamt kommando i jhbuild-miljön med följande kommando: jhbuild run command-name. I detta fall kommer kommandot köras med rätt miljövariabler inställda, men kommer returnera till din föregående miljö efter " "programmet avslutas." #. (itstool) path: appendix/title #: C/index-in.docbook:9678 msgid "Wrapping C Libraries with gmmproc" msgstr "Omsluta C-bibliotek med gmmproc" #. (itstool) path: appendix/para #: C/index-in.docbook:9680 #, fuzzy msgid "" "gtkmm uses the gmmproc tool to generate most of its source code, using .defs files that define " "the APIs of GObject-based libraries. So it's quite easy to create additional gtkmm-style wrappers of other glib/GObject-" "based libraries." msgstr "" "gtkmm använder verktyget gmmproc för att generera det mesta av sin källkod, med .defs-filer som " "definierar API:erna för GObject-baserade bibliotek. Så det är ganska lätt att skapa ytterligare omslag i gtkmm-stil för " "andra glib/GObject-baserade bibliotek." #. (itstool) path: appendix/para #: C/index-in.docbook:9685 #, fuzzy msgid "This involves a variety of tools, some of them crufty, but at least they work, and has been used successfully by several projects." msgstr "Detta involverar en uppsjö verktyg, vissa av dem knepiga, men i alla fall fungerande, och har framgångsrikt använts av flera projekt." #. (itstool) path: section/title #: C/index-in.docbook:9690 msgid "The build structure" msgstr "Byggstrukturen" #. (itstool) path: section/para #: C/index-in.docbook:9692 #, fuzzy msgid "" "Generation of the source code for a gtkmm-style wrapper API requires use of tools such as gmmproc and " "generate_wrap_init.pl, which are included in glibmm. In theory you could write your own build " "files to use these appropriately, but a much better option is to make use of the build infrastructure provided by the mm-common module. To get started, it helps a lot to pick an existing binding module as an example to look at." msgstr "" "Generering av källkoden för ett omslags-API av gtkmm-stil kräver användning av verktyg som gmmproc och " "generate_wrap_init.pl som är inkluderade i glibmm. I teorin skulle du kunna skriva dina egna " "byggfiler för att lämpligt använda dessa, men ett mycket bättre alternativ är att använda bygginfrastrukturen som tillhandahålls av modulen " "mm-common. För att komma igång hjälper det mycket att välja en befintlig bindningsmodul som ett exempel att titta på." #. (itstool) path: section/para #: C/index-in.docbook:9700 #, fuzzy msgid "" "For instance, let's pretend that we are wrapping a C library called libsomething. It provides a GObject-based API with " "types named, for instance, SomeWidget and SomeStuff." msgstr "" "Låt oss exempelvis föreställa oss att vi omsluter ett C-bibliotek med namnet libsomething. Det tillhandahåller ett GObject-baserat API med typer som exempelvis har namnen SomeWidget och SomeStuff." #. (itstool) path: section/title #: C/index-in.docbook:9706 msgid "Copying the skeleton project" msgstr "Kopiera skelettprojektet" #. (itstool) path: section/para #: C/index-in.docbook:9708 #, fuzzy msgid "" "Typically our wrapper library would be called libsomethingmm. We can start by copying the skeleton source tree from the mm-common module. Starting with " "mm-common 1.0.0 this skeleton application is built with the Meson build " "system." msgstr "" "Typiskt skulle vårt omslagsbibliotek kallas något i stil med libsomethingmm. Vi kan börja med att kopiera skelettkällkodsträdet från modulen mm-common. Från och " "med mm-common 1.0.0 byggs detta skelettprogram med byggsystemet Meson." #. (itstool) path: section/programlisting #: C/index-in.docbook:9714 #, no-wrap msgid "" "\n" " $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n" " $ cp -a mm-common/skeletonmm libsomethingmm\n" msgstr "" "\n" " $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n" " $ cp -a mm-common/skeletonmm libsomethingmm\n" #. (itstool) path: listitem/para #: C/index-in.docbook:9723 msgid "libsomethingmm: The top-level directory." msgstr "libsomethingmm: Toppnivåkatalogen." #. (itstool) path: listitem/para #: C/index-in.docbook:9725 #, fuzzy msgid "libsomething: Contains the main include file and the pkg-config .pc file." msgstr "libsomething: Innehåller huvudinkluderingsfilen och .pc-filen för pkg-config." #. (itstool) path: listitem/para #: C/index-in.docbook:9727 msgid "src: Contains .hg and .ccg source files." msgstr "src: Innehåller .hg- och .ccg-källfiler." #. (itstool) path: listitem/para #: C/index-in.docbook:9728 msgid "libsomethingmm: Contains hand-written .h and .cc files." msgstr "libsomethingmm: Innehåller handskrivna .h- och .cc-filer." #. (itstool) path: section/para #: C/index-in.docbook:9718 #, fuzzy msgid "" "This provides a directory structure for the source .hg and .ccg files and the hand-written .h and .cc files, with meson.build files that can specify the various files in use, in terms of Meson variables. The directory structure usually looks like this, after " "we have renamed the directories appropriately: <_:itemizedlist-1/>" msgstr "" "Detta tillhandahåller en katalogstruktur för .hg- och .ccg-källfilerna och de handskrivna .h- och .cc-filerna, med meson.build-filer som kan ange de olika filerna som används i termer av Meson-variabler. Katalogstrukturen ser vanligen ut så här efter vi bytt " "namn på katalogerna på lämpligt sätt: <_:itemizedlist-1/>" #. (itstool) path: para/programlisting #: C/index-in.docbook:9739 #, no-wrap msgid "" "\n" "$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n" " d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n" " done\n" msgstr "" "\n" "$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n" " d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n" " done\n" #. (itstool) path: section/para #: C/index-in.docbook:9737 #, fuzzy msgid "" "As well as renaming the directories, we should rename some of the source files. For instance: <_:programlisting-1/> A number of the skeleton " "files must still be filled in with project-specific content later." msgstr "" "Såväl som att byta namn på katalogerna så bör vi byta namn på några av källfilerna. Till exempel: <_:programlisting-1/> Ett antal av " "skelettfilerna måste fortfarande fyllas i med projektspecifikt innehåll senare." #. (itstool) path: section/para #: C/index-in.docbook:9746 #, fuzzy msgid "" "Note that files ending in .in will be used to generate files with the same name but without the .in " "suffix, by replacing some variables with actual values during the configure stage." msgstr "" "Observera att filer som slutar med .in kommer användas för att generera filer med samma namn men utan ändelsen ." "in, genom att ersätta några variabler med faktiska värden under konfigurationssteget." #. (itstool) path: section/para #: C/index-in.docbook:9749 #, fuzzy msgid "" "Generated files are saved in the build tree, which is separated from the source tree when meson and ninja " "are used." msgstr "Genererade filer sparas i byggträdet, vilket separeras från källträdet när meson och ninja används." #. (itstool) path: section/title #: C/index-in.docbook:9754 msgid "Modifying build files" msgstr "Modifiera byggfiler" #. (itstool) path: section/para #: C/index-in.docbook:9756 #, fuzzy msgid "" "Now we edit the files to adapt them to our needs. You might prefer to use a multiple-file search-replace utility for this, such as " "regexxer. Note that nearly all of the files provided with the skeleton source tree contain placeholder text. Thus, the " "substitutions should be performed globally, and not be limited to the Meson files." msgstr "" "Nu redigerar vi filerna för att anpassa dem till våra behöv. Du kan föredra att använda ett sök-och-ersätt-verktyg för flera filer för detta, " "som regexxer. Observera att nästan alla filerna som tillhandahålls med skelettkällträdet innehåller platshållartext. Därmed " "bör ersättningarna utföras globalt, och inte begränsas till Meson-filerna." #. (itstool) path: section/para #: C/index-in.docbook:9760 #, fuzzy msgid "" "All mentions of skeleton should be replaced by the correct name of the C library you are wrapping, such as \"something\" or " "\"libsomething\". In the same manner, all instances of SKELETON should be replaced by \"SOMETHING\" or \"LIBSOMETHING\", and " "all occurrences of Skeleton changed to \"Something\"." msgstr "" "Alla omnämnanden av skeleton bör ersättas med rätt namn för C-biblioteket som du omsluter, som ”something” eller " "”libsomething”. På samma sätt bör alla instanser av SKELETON ersättas med ”SOMETHING” eller ”LIBSOMETHING”, och alla " "förekomster av Skeleton ändras till ”Something”." #. (itstool) path: section/para #: C/index-in.docbook:9764 #, fuzzy msgid "" "Likewise, replace all instances of Joe Hacker by the name of the intended copyright holder, which is probably you. Do the " "same for the joe@example.com email address." msgstr "" "Ersätt på samma sätt alla förekomster av Joe Hacker med namnet på den tänka upphovsrättsinnehavaren, vilken troligen är du. " "Gör samma sak för e-postadressen joe@example.com." #. (itstool) path: section/title #: C/index-in.docbook:9769 msgid "meson.build in the top-level directory" msgstr "meson.build i toppnivåkatalogen" #. (itstool) path: listitem/para #: C/index-in.docbook:9773 #, fuzzy msgid "" "It is common for binding modules to track the version number of the library they are wrapping. So, for instance, if the C library is at version " "1.23.4, then the initial version of the binding module would be 1.23.0. However, avoid starting with an even minor version number as that " "usually indicates a stable release." msgstr "" "Det är vanligt för bindningsmoduler att följa versionsnumret för biblioteket de omsluter. Så om exempelvis C-biblioteket är på version 1.23.4 " "så skulle den första versionen av bindningsmodulen vara 1.23.0. Undvik dock att starta med ett jämnt versionsnummer för mindre version då det " "vanligen indikerar en stabil utgåva." #. (itstool) path: listitem/para #: C/index-in.docbook:9778 msgid "In the project() function, change the license and the C++ version, if necessary." msgstr "Ändra licensen och C++-versionen i project()-funktionen om det behövs." #. (itstool) path: listitem/para #: C/index-in.docbook:9780 #, fuzzy msgid "" "You probably need to add more required modules than glibmm and skeleton " "(libsomething)." msgstr "" "Du behöver troligen lägga till fler moduler som krävs än glibmm och skeleton " "(libsomething)." #. (itstool) path: section/title #: C/index-in.docbook:9788 msgid "Other meson.build files" msgstr "Andra meson.build-filer" #. (itstool) path: listitem/para #: C/index-in.docbook:9792 #, fuzzy msgid "skeleton/meson.build: Perhaps not much to change here more than the global name substitutions." msgstr "skeleton/meson.build: Kanske inte mycket att ändra här förutom de globala namnsubstitutionerna." #. (itstool) path: listitem/para #: C/index-in.docbook:9795 msgid "skeleton/skeletonmm/meson.build" msgstr "skeleton/skeletonmm/meson.build" #. (itstool) path: varlistentry/term #: C/index-in.docbook:9798 #, fuzzy msgid "defs_basefiles" msgstr "defs_basefiles" #. (itstool) path: listitem/para #: C/index-in.docbook:9799 msgid "If we have more .defs and docs.xml files, we add them here." msgstr "Om vi har fler .defs- och docs.xml-filer så lägger vi till dem här." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9803 #, fuzzy msgid "hg_ccg_basenames" msgstr "hg_ccg_basenames" #. (itstool) path: listitem/para #: C/index-in.docbook:9804 msgid "We must mention all of our .hg and .ccg files here." msgstr "Vi måste nämna alla våra .hg- och .ccg-filer här." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9808 #, fuzzy msgid "extra_cc_files, extra_h_files" msgstr "extra_cc_files, extra_h_files" #. (itstool) path: listitem/para #: C/index-in.docbook:9809 #, fuzzy msgid "Any additional hand-written .h and .cc source files go here." msgstr "Alla ytterligare handskrivna .h- och .cc-källkodsfiler hamnar här." #. (itstool) path: section/para #: C/index-in.docbook:9790 #, fuzzy msgid "Next we must adapt the other meson.build files: <_:itemizedlist-1/>" msgstr "Härnäst måste vi anpassa de andra meson.build-filerna: <_:itemizedlist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:9819 msgid "Creating .hg and .ccg files" msgstr "Skapa .hg- och .ccg-filer" #. (itstool) path: section/para #: C/index-in.docbook:9821 #, fuzzy msgid "" "We should now create our first .hg and .ccg files, to wrap one of the objects in the C library. One " "pair of example source files already exists: skeleton.ccg and skeleton.hg. Create copies of these " "files as necessary." msgstr "" "Vi ska nu skapa våra första .hg- och .ccg-filer för att omsluta ett av objekten i C-biblioteket. Ett " "par av exempelkällkodsfiler finns redan: skeleton.ccg och skeleton.hg. Skapa kopior av dessa filer " "efter behov." #. (itstool) path: section/para #: C/index-in.docbook:9825 msgid "In the .hg and .ccg files section you can learn about the syntax used in these files." msgstr "I avsnittet .hg- och .ccg-filer kan du lära dig om syntaxen som används i dessa filer." #. (itstool) path: section/title #: C/index-in.docbook:9832 msgid "Generating the .defs files." msgstr "Generera .defs-filerna." #. (itstool) path: listitem/para #: C/index-in.docbook:9837 #, fuzzy msgid "objects (GObjects, widgets, interfaces, boxed-types and plain structs)" msgstr "objekt (GObject, komponenter, gränssnitt, boxed-type och vanliga structar)" #. (itstool) path: listitem/para #: C/index-in.docbook:9838 msgid "functions" msgstr "funktioner" #. (itstool) path: listitem/para #: C/index-in.docbook:9839 #, fuzzy msgid "enums" msgstr "uppräkningar" #. (itstool) path: listitem/para #: C/index-in.docbook:9840 msgid "signals" msgstr "signaler" #. (itstool) path: listitem/para #: C/index-in.docbook:9841 msgid "properties" msgstr "egenskaper" #. (itstool) path: listitem/para #: C/index-in.docbook:9842 #, fuzzy msgid "vfuncs" msgstr "vfunc-funktioner" #. (itstool) path: section/para #: C/index-in.docbook:9834 msgid "" "The .defs files are text files, in a lisp format, that describe the API of a C library, including its <_:itemizedlist-1/>" msgstr "" ".defs-filerna är textfiler i ett lisp-format som beskriver API:t för ett C-bibliotek, inklusive dess <_:itemizedlist-1/>" #. (itstool) path: varlistentry/term #: C/index-in.docbook:9851 msgid "gtk.defs" msgstr "gtk.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9852 msgid "Includes the other files." msgstr "Inkluderar de andra filerna." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9855 msgid "gtk_methods.defs" msgstr "gtk_methods.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9856 msgid "Objects and functions." msgstr "Objekt och funktioner." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9859 msgid "gtk_enums.defs" msgstr "gtk_enums.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9860 #, fuzzy msgid "Enumerations." msgstr "Uppräkningar." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9863 msgid "gtk_signals.defs" msgstr "gtk_signals.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9864 msgid "Signals and properties." msgstr "Signaler och egenskaper." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9867 msgid "gtk_vfuncs.defs" msgstr "gtk_vfuncs.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9868 #, fuzzy msgid "vfuncs (function pointer member fields in structs), written by hand." msgstr "vfunc (medlemsfält för funktionspekare i structar), handskrivna." #. (itstool) path: section/para #: C/index-in.docbook:9845 msgid "" "At the moment, we have separate tools for generating different parts of these .defs, so we split them up into separate " "files. For instance, in the gtk/src directory of the gtkmm sources, you will find these files: " "<_:variablelist-1/>" msgstr "" "För tillfället har vi olika verktyg för att generera olika delar av dessa .defs, så vi delar upp dem i separata filer. I " "gtk/src-katalogen för gtkmm-källkoden kommer du exempelvis hitta dessa filer: <_:variablelist-1/" ">" #. (itstool) path: section/para #: C/index-in.docbook:9872 #, fuzzy msgid "" "The skeletonmm/tools/generate_defs_and_docs.sh script generates all .defs files and the " "*_docs.xml file, described in the Documentation section." msgstr "" "Skriptet skeletonmm/tools/generate_defs_and_docs.sh genererar alla .defs-filer och *_docs." "xml-filen, beskriven i avsnittet Dokumentation." #. (itstool) path: section/title #: C/index-in.docbook:9878 #, fuzzy msgid "Generating the methods .defs" msgstr "Generera .defs för metoderna" #. (itstool) path: section/para #: C/index-in.docbook:9880 msgid "" "This .defs file describes objects and their functions. It is generated by the h2def.py script which you " "can find in glibmm's tools/defs_gen directory. For instance," msgstr "" "Denna .defs-fil beskriver objekt och deras funktioner. Den genereras av h2def.py-skriptet som du kan " "hitta i glibmm:s tools/defs_gen-katalog. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:9884 #, no-wrap msgid "" "\n" "$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h > gtk_methods.defs\n" msgstr "" "\n" "$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h > gtk_methods.defs\n" #. (itstool) path: section/title #: C/index-in.docbook:9890 #, fuzzy msgid "Generating the enums .defs" msgstr "Generera .defs för enumerationerna" #. (itstool) path: section/para #: C/index-in.docbook:9892 #, fuzzy msgid "" "This .defs file describes enum types and their possible values. It is generated by the enumextract.py " "script which you can also find in glibmm's tools/defs_gen directory. For instance," msgstr "" "Denna .defs-fil beskriver uppräkningstyper och deras möjliga värden. Den genereras av enumextract.py-" "skriptet som du också kan hitta i glibmm:s tools/defs_gen-katalog. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:9896 #, no-wrap msgid "" "\n" "$ ./enumextract.py /usr/include/gtk-4.0/gtk/*.h > gtk_enums.defs\n" msgstr "" "\n" "$ ./enumextract.py /usr/include/gtk-4.0/gtk/*.h > gtk_enums.defs\n" #. (itstool) path: section/title #: C/index-in.docbook:9902 #, fuzzy msgid "Generating the signals and properties .defs" msgstr "Generera .defs för signalerna och egenskaperna" #. (itstool) path: section/para #: C/index-in.docbook:9904 #, fuzzy msgid "" "This .defs file describes signals and properties. It is generated by the special generate_extra_defs " "utility that is in every wrapping project, such as gtkmm/tools/extra_defs_gen/. For instance" msgstr "" "Denna .defs-fil beskriver signaler och egenskaper. Den genereras av den speciella verktyget generate_extra_defs som finns i varje omslagsprojekt, som gtkmm/tools/extra_defs_gen/. Till exempel" #. (itstool) path: section/programlisting #: C/index-in.docbook:9909 #, no-wrap msgid "" "\n" "$ cd tools/extra_defs_gen\n" "$ ./generate_extra_defs > gtk_signals.defs\n" msgstr "" "\n" "$ cd tools/extra_defs_gen\n" "$ ./generate_extra_defs > gtk_signals.defs\n" #. (itstool) path: section/para #: C/index-in.docbook:9913 #, fuzzy msgid "" "You must edit the source code of your own generate_extra_defs tool in order to generate the .defs for " "the GObject C types that you wish to wrap. In the skeleton source tree, the source file is named tools/extra_defs_gen/" "generate_defs_skeleton.cc. If not done so already, the file should be renamed, with the basename of your new binding substituted for " "the skeleton placeholder. The tools/extra_defs_gen/meson.build file should also mention the new source " "filename." msgstr "" "Du måste redigera källkoden för ditt eget generate_extra_defs-verktyg för att generera .defs-filen " "för GObject C-typerna som du vill omsluta. I skelettkällkodsträdet har källfilen namnet tools/extra_defs_gen/generate_defs_skeleton." "cc. Om så inte redan gjorts ska filens namn bytas, så att basnamnet för din nya bindning ersätter platshållaren skeleton. Filen tools/extra_defs_gen/meson.build ska också nämna det nya källfilnamnet." #. (itstool) path: section/para #: C/index-in.docbook:9920 #, fuzzy msgid "" "Then edit the .cc file to specify the correct types. For instance, your main() function might look " "like this:" msgstr "" "Redigera sedan .cc-filen för att ange rätt typer. Till exempel kan din main()-funktion se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9923 #, no-wrap msgid "" "\n" "#include <glibmm_generate_extra_defs/generate_extra_defs.h>\n" "#include <libsomething.h>\n" "#include <iostream>\n" "\n" "int main(int, char**)\n" "{\n" " something_init();\n" "\n" " std::cout << get_defs(SOME_TYPE_WIDGET)\n" " << get_defs(SOME_TYPE_STUFF);\n" " return 0;\n" "}\n" msgstr "" "\n" "#include <glibmm_generate_extra_defs/generate_extra_defs.h>\n" "#include <libsomething.h>\n" "#include <iostream>\n" "\n" "int main(int, char**)\n" "{\n" " something_init();\n" "\n" " std::cout << get_defs(SOME_TYPE_WIDGET)\n" " << get_defs(SOME_TYPE_STUFF);\n" " return 0;\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:9940 #, fuzzy msgid "Writing the vfuncs .defs" msgstr "Skriva .defs-filer för vfunc" #. (itstool) path: section/para #: C/index-in.docbook:9942 #, fuzzy msgid "" "This .defs file describes virtual functions (vfuncs). It must be written by hand. There is the skeleton file " "skeleton/src/skeleton_vfunc.defs to start from. You can also look at gtkmm's gtk/src/" "gtk_vfuncs.defs file." msgstr "" "Denna .defs-fil beskriver virtuella funktioner (vfunc). Den måste skrivas för hand. Det finns en skelettfil " "skeleton/src/skeleton_vfunc.defs att börja från. Du kan också titta på gtkmm:s fil " "gtk/src/gtk_vfuncs.defs." #. (itstool) path: section/title #: C/index-in.docbook:9953 msgid "The .hg and .ccg files" msgstr ".hg- och .ccg-filerna" #. (itstool) path: section/para #: C/index-in.docbook:9954 msgid "" "The .hg and .ccg source files are very much like .h and .cc C++ source files, but they contain extra macros, such as " "_CLASS_GOBJECT() and _WRAP_METHOD(), from which gmmproc generates appropriate C++ " "source code, usually at the same position in the header. Any additional C++ source code will be copied verbatim into the corresponding .h or ." "cc file." msgstr "" ".hg- och .ccg-källfilerna är mycket som .h- och .cc-källfiler i C++, men de innehåller extra makron som _CLASS_GOBJECT() " "och _WRAP_METHOD() från vilka gmmproc genererar lämplig C++-källkod, vanligen på samma plats i huvudet. " "All ytterligare C++-källkod kommer kopieras som den är i motsvarande .h- eller .cc-fil." #. (itstool) path: section/para #: C/index-in.docbook:9962 #, fuzzy msgid "" "A .hg file will typically include some headers and then declare a class, using some macros to add API or behavior to this class. For instance, " "gtkmm's button.hg looks roughly like this:" msgstr "" "En .hg-fil kommer typiskt inkludera några huvuden och sedan deklarera en klass, men några makron för att lägga till API eller beteende till " "denna klass. Exempelvis ser gtkmms button.hg ut ungefär så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9967 #, no-wrap msgid "" "\n" "#include <gtkmm/widget.h>\n" "#include <gtkmm/actionable.h>\n" "_DEFS(gtkmm,gtk)\n" "_PINCLUDE(gtkmm/private/widget_p.h)\n" "\n" "namespace Gtk\n" "{\n" "\n" "class Button\n" " : public Widget,\n" " public Actionable\n" "{\n" " _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" " _IMPLEMENTS_INTERFACE(Actionable)\n" "public:\n" "\n" " _CTOR_DEFAULT\n" " explicit Button(const Glib::ustring& label, bool mnemonic = false);\n" "\n" " _WRAP_METHOD(void set_label(const Glib::ustring& label), gtk_button_set_label)\n" "\n" " ...\n" "\n" " _WRAP_SIGNAL(void clicked(), \"clicked\")\n" "\n" " ...\n" "\n" " _WRAP_PROPERTY(\"label\", Glib::ustring)\n" "};\n" "\n" "} // namespace Gtk\n" msgstr "" "\n" "#include <gtkmm/widget.h>\n" "#include <gtkmm/actionable.h>\n" "_DEFS(gtkmm,gtk)\n" "_PINCLUDE(gtkmm/private/widget_p.h)\n" "\n" "namespace Gtk\n" "{\n" "\n" "class Button\n" " : public Widget,\n" " public Actionable\n" "{\n" " _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" " _IMPLEMENTS_INTERFACE(Actionable)\n" "public:\n" "\n" " _CTOR_DEFAULT\n" " explicit Button(const Glib::ustring& label, bool mnemonic = false);\n" "\n" " _WRAP_METHOD(void set_label(const Glib::ustring& label), gtk_button_set_label)\n" "\n" " ...\n" "\n" " _WRAP_SIGNAL(void clicked(), \"clicked\")\n" "\n" " ...\n" "\n" " _WRAP_PROPERTY(\"label\", Glib::ustring)\n" "};\n" "\n" "} // namespace Gtk\n" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10003 msgid "_DEFS()" msgstr "_DEFS()" #. (itstool) path: listitem/para #: C/index-in.docbook:10004 #, fuzzy msgid "" "Specifies the destination directory for generated sources, and the name of the main .defs file that gmmproc should parse." msgstr "Anger målkatalogen för genererade källor, och namnet på den huvudsakliga .defs-filen som gmmproc ska tolka." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10007 msgid "_PINCLUDE()" msgstr "_PINCLUDE()" #. (itstool) path: listitem/para #: C/index-in.docbook:10008 #, fuzzy msgid "Tells gmmproc to include a header in the generated private/button_p.h file." msgstr "Säger till gmmproc att inkludera ett huvud i den genererade filen private/button_p.h." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10011 msgid "_CLASS_GTKOBJECT()" msgstr "_CLASS_GTKOBJECT()" #. (itstool) path: listitem/para #: C/index-in.docbook:10012 #, fuzzy msgid "" "Tells gmmproc to add some typedefs, constructors, and standard methods to this class, as appropriate when wrapping a widget." msgstr "" "Säger till gmmproc att lägga till typdefinitioner, konstruktorer och standardmetoder till denna klass, som lämpligt vid " "omslag av en komponent." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10015 msgid "_IMPLEMENTS_INTERFACE()" msgstr "_IMPLEMENTS_INTERFACE()" #. (itstool) path: listitem/para #: C/index-in.docbook:10016 msgid "Tells gmmproc to add initialization code for the interface." msgstr "Säger till gmmproc att lägga till initieringskod för gränssnittet." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10019 msgid "_CTOR_DEFAULT" msgstr "_CTOR_DEFAULT" #. (itstool) path: listitem/para #: C/index-in.docbook:10020 msgid "Adds a default constructor." msgstr "Lägger till en standardkonstruktor." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10023 msgid "_WRAP_METHOD(), _WRAP_SIGNAL(), and _WRAP_PROPERTY()" msgstr "_WRAP_METHOD(), _WRAP_SIGNAL() och _WRAP_PROPERTY()" #. (itstool) path: listitem/para #: C/index-in.docbook:10026 #, fuzzy msgid "Add methods to wrap parts of the C API." msgstr "Lägger till metoder för att omsluta delar av C-API:t." #. (itstool) path: section/para #: C/index-in.docbook:10000 msgid "The macros in this example do the following: <_:variablelist-1/>" msgstr "Makrona i detta exempel gör följande: <_:variablelist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:10030 #, fuzzy msgid "" "The .h and .cc files will be generated from the .hg and .ccg files by processing them with gmmproc like so, though this " "happens automatically when using the above build structure:" msgstr "" ".h- och .cc-filerna kommer genereras från .hg- och .ccg-filerna genom att bearbeta dem med gmmproc så här, men detta händer " "automatiskt när byggstrukturen ovan används:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10034 #, no-wrap msgid "" "\n" "$ cd gtk/src\n" "$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n" msgstr "" "\n" "$ cd gtk/src\n" "$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n" #. (itstool) path: section/para #: C/index-in.docbook:10038 #, fuzzy msgid "" "Notice that we provided gmmproc with the path to the .m4 convert files, the path to the .defs file, the name of a .hg file, " "the source directory, and the destination directory." msgstr "" "Observera att vi tillhandahöll gmmproc med sökvägen till .m4-konverteringsfilerna, sökvägen till .defs-filen, namnet på en ." "hg-fil, källkatalogen och målkatalogen." #. (itstool) path: section/para #: C/index-in.docbook:10041 #, fuzzy msgid "" "You should avoid including the C header from your C++ header, to avoid polluting the global namespace, and to avoid exporting unnecessary " "public API. But you will need to include the necessary C headers from your .ccg file." msgstr "" "Du bör undvika att inkludera C-huvudet från ditt C++-huvud, för att undvika att förorena den globala namnrymden, och för att undvika att " "exportera öppet API i onödan. Men du kommer behöva inkludera de nödvändiga C-huvudena från din .ccg-fil." #. (itstool) path: section/para #: C/index-in.docbook:10046 msgid "The macros are explained in more detail in the following sections." msgstr "Makrona förklaras mer i detalj i avsnitten som följer." #. (itstool) path: section/title #: C/index-in.docbook:10049 msgid "m4 Conversions" msgstr "m4-konverteringar" #. (itstool) path: section/para #: C/index-in.docbook:10051 #, fuzzy msgid "" "The macros that you use in the .hg and .ccg files often need to know how to convert a C++ type to a C type, or vice-versa. gmmproc takes this information from an .m4 file in your tools/m4/ or codegen/m4/ directory. This allows " "it to call a C function in the implementation of your C++ method, passing the appropriate parameters to that C function. For instance, this " "tells gmmproc how to convert a GtkTreeView pointer to a Gtk::TreeView pointer:" msgstr "" "Makrona som du använder i .hg- och .ccg-filerna behöver ofta veta hur de ska konvertera en C++-typ till en C-typ och omvänt. gmmproc tar denna information från en .m4-fil i din katalog tools/m4/ eller codegen/m4/. Detta låter det " "anropa en C-funktion i implementationen av din C++-metod, skickade de lämpliga parametrarna till den C-funktionen. Exempelvis säger det här " "till gmmproc hur en GtkTreeView-pekare konverteras till en Gtk::TreeView-" "pekare:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10059 #, no-wrap msgid "" "\n" "_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n" msgstr "" "\n" "_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n" #. (itstool) path: section/para #: C/index-in.docbook:10063 msgid "$3 will be replaced by the parameter name when this conversion is used by gmmproc." msgstr "$3 kommer ersättas av parameternamnet när denna konvertering används av gmmproc." #. (itstool) path: section/para #: C/index-in.docbook:10067 msgid "Some extra macros make this easier and consistent. Look in gtkmm's .m4 files for examples. For instance:" msgstr "Några extra makron gör detta lättare och mer konsekvent. Exempel kan ses i gtkmm:s .m4-filer. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10071 #, fuzzy, no-wrap msgid "" "\n" "_CONVERSION(`PrintSettings&',`GtkPrintSettings*',__FR2P)\n" "_CONVERSION(`const PrintSettings&',`GtkPrintSettings*',__FCR2P)\n" "_CONVERSION(`const Glib::RefPtr<Printer>&',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n" msgstr "" "\n" "_CONVERSION(`PrintSettings&',`GtkPrintSettings*',__FR2P)\n" "_CONVERSION(`const PrintSettings&',`GtkPrintSettings*',__FCR2P)\n" "_CONVERSION(`const Glib::RefPtr<Printer>&',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n" #. (itstool) path: section/title #: C/index-in.docbook:10079 msgid "m4 Initializations" msgstr "m4-initieringar" #. (itstool) path: section/para #: C/index-in.docbook:10081 #, fuzzy msgid "" "Often when wrapping methods, it is desirable to store the return of the C function in what is called an output parameter. In this case, the C++ " "method returns void but an output parameter in which to store the value of the C function is included in the argument list of the " "C++ method. gmmproc allows such functionality, but appropriate initialization macros must be included to tell " "gmmproc how to initialize the C++ parameter from the return of the C function." msgstr "" "Ofta är det vid omslag av metoder önskvärt att lagra returvärdet för C-funktionen i vad som kallas en utdataparameter. I detta fall returnerar " "C++-metoden void men en utdataparameter i vilken värdet för C-funktionen ska lagras inkluderas i argumentlistan för C++-metoden. " "gmmproc tillåter sådan funktionalitet, men lämpliga initieringsmakron måste inkluderas för att säga till gmmproc hur C++-parametern ska initieras från returvärdet på C-funktionen." #. (itstool) path: section/para #: C/index-in.docbook:10090 #, fuzzy msgid "" "For example, if there was a C function that returned a GtkWidget* and for some reason, instead of having the C++ method also " "return the widget, it was desirable to have the C++ method place the widget in a specified output parameter, an initialization macro such as " "the following would be necessary:" msgstr "" "Om det exempelvis fanns en C-funktion som returnerade en GtkWidget* och det av någon anledning i stället för att C++-metoden också " "returnerar komponenten var önskvärt att C++-metoden placerar komponenten i en angiven utdataparameter, skulle ett initieringsmakro som det " "följande vara nödvändigt:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10097 #, no-wrap msgid "" "\n" "_INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)')\n" msgstr "" "\n" "_INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)')\n" #. (itstool) path: section/para #: C/index-in.docbook:10101 #, fuzzy msgid "" "$3 will be replaced by the output parameter name of the C++ method and $4 will be replaced by the return " "of the C function when this initialization is used by gmmproc. For convenience, $1 will also be replaced " "by the C++ type without the ampersand (&) and $2 will be replaced by the C type." msgstr "" "$3 kommer ersättas med utdataparameternamnet för C++-metoden och $4 kommer ersättas med returvärdet för C-" "funktionen när denna initiering används av gmmproc. För bekvämlighets skulle kommer $1 också ersättas med " "C++-typen utan et-tecknet (&) och $2 kommer ersättas med C-typen." #. (itstool) path: section/title #: C/index-in.docbook:10111 msgid "Class macros" msgstr "Klassmakron" #. (itstool) path: section/para #: C/index-in.docbook:10113 #, fuzzy msgid "" "The class macro declares the class itself and its relationship with the underlying C type. It generates some internal constructors, the member " "gobject_, typedefs, the gobj() accessors, type registration, and the Glib::wrap() " "method, among other things." msgstr "" "Klassmakrot deklarerar själva klassen och dess relation med den underliggande C-typen. Det genererar några interna konstruktorer, medlemmarnas " "gobject_, typedef, gobj()-åtkommarna, typregistrering och metoden Glib::wrap() med " "mera." #. (itstool) path: section/para #: C/index-in.docbook:10118 msgid "" "Other macros, such as _WRAP_METHOD() and _WRAP_SIGNAL() may only be used after a call to a " "_CLASS_* macro." msgstr "" "Andra makron, som _WRAP_METHOD() och _WRAP_SIGNAL() kan endast användas efter ett anrop till ett " "_CLASS_*-makro." #. (itstool) path: section/title #: C/index-in.docbook:10123 msgid "_CLASS_GOBJECT" msgstr "_CLASS_GOBJECT" #. (itstool) path: section/para #: C/index-in.docbook:10125 #, fuzzy msgid "" "This macro declares a wrapper for a type that is derived from GObject, but whose wrapper is not derived from " "Gtk::Object." msgstr "" "Detta makro deklarerar ett omslag för en typ som härleds från GObject, men vars omslag inte härleds från Gtk::" "Object." #. (itstool) path: section/para #: C/index-in.docbook:10128 #, fuzzy msgid "_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base class, C base class )" msgstr "_CLASS_GOBJECT( C++-klass, C-klass, C-typkonverteringsmakro, C++-basklass, C-basklass )" #. (itstool) path: section/para #: C/index-in.docbook:10129 msgid "For instance, from adjustment.hg:" msgstr "Till exempel, från adjustment.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10130 #, no-wrap msgid "" "\n" "_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n" msgstr "" "\n" "_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n" #. (itstool) path: section/title #: C/index-in.docbook:10136 msgid "_CLASS_GTKOBJECT" msgstr "_CLASS_GTKOBJECT" #. (itstool) path: section/para #: C/index-in.docbook:10138 msgid "This macro declares a wrapper for a type whose wrapper is derived from Gtk::Object, such as a widget or dialog." msgstr "" "Detta makro deklarerar ett omslag för en typ vars omslag härleds från Gtk::Object, som en komponent eller dialogruta." #. (itstool) path: section/para #: C/index-in.docbook:10140 msgid "_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base class, C base class )" msgstr "_CLASS_GTKOBJECT( C++-klass, C-klass, C-typkonverteringsmakro, C++-basklass, C-basklass )" #. (itstool) path: section/para #: C/index-in.docbook:10141 C/index-in.docbook:10645 C/index-in.docbook:10750 msgid "For instance, from button.hg:" msgstr "Till exempel, från button.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10142 #, no-wrap msgid "" "\n" "_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" msgstr "" "\n" "_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" #. (itstool) path: section/para #: C/index-in.docbook:10145 #, fuzzy msgid "" "You will typically use this macro when the class already derives from Gtk::Object. For instance, you will use it when " "wrapping a GTK Widget, because Gtk::Widget derives from Gtk::Object." msgstr "" "Du kommer typiskt använda detta makro när klassen redan härleds från Gtk::Object. Du kommer exempelvis använda det när " "du omsluter en GTK-komponent, för Gtk::Widget härleds från Gtk::Object." #. (itstool) path: section/para #: C/index-in.docbook:10149 #, fuzzy msgid "" "You might also derive non-widget classes from Gtk::Object so they can be used without Glib::RefPtr. For instance, they could then be instantiated with Gtk::make_managed() or on the stack as a member variable. " "This is convenient, but you should use this only when you are sure that true reference-counting is not needed. We consider it useful for " "widgets." msgstr "" "Du kan också härled icke-komponentklasser från Gtk::Object så att de kan användas utan Glib::RefPtr. De kunde då exempelvis instansieras med Gtk::make_managed() eller på stacken som en medlemsvariabel. Detta är " "bekvämt, men du bör endast använda detta när du är säker att sann referensräkning inte behövs. Vi anser det vara användbart för komponenter." #. (itstool) path: section/title #: C/index-in.docbook:10159 msgid "_CLASS_BOXEDTYPE" msgstr "_CLASS_BOXEDTYPE" #. (itstool) path: section/para #: C/index-in.docbook:10161 #, fuzzy msgid "" "This macro declares a wrapper for a non-GObject struct, registered with g_boxed_type_register_static()." msgstr "" "Detta makro deklarerar ett omslag för en struct som inte är ett GObject, registrerat med " "g_boxed_type_register_static()." #. (itstool) path: section/para #: C/index-in.docbook:10164 #, fuzzy msgid "_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, free function )" msgstr "_CLASS_BOXEDTYPE( C++-klass, C-klass, new-funktion, copy-funktion, free-funktion )" #. (itstool) path: section/para #: C/index-in.docbook:10165 msgid "For instance, from Gdk::RGBA:" msgstr "Till exempel, från Gdk::RGBA:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10166 #, no-wrap msgid "" "\n" "_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n" msgstr "" "\n" "_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n" #. (itstool) path: section/title #: C/index-in.docbook:10172 msgid "_CLASS_BOXEDTYPE_STATIC" msgstr "_CLASS_BOXEDTYPE_STATIC" #. (itstool) path: section/para #: C/index-in.docbook:10174 #, fuzzy msgid "" "This macro declares a wrapper for a simple assignable struct such as GdkRectangle. It is similar to " "_CLASS_BOXEDTYPE, but the C struct is not allocated dynamically." msgstr "" "Detta makro deklarerar ett omslag för en enkel tilldelningsbar struct som GdkRectangle. Det liknar " "_CLASS_BOXEDTYPE, men C-structen allokeras inte dynamiskt." #. (itstool) path: section/para #: C/index-in.docbook:10178 msgid "_CLASS_BOXEDTYPE_STATIC( C++ class, C class )" msgstr "_CLASS_BOXEDTYPE_STATIC( C++-klass, C-klass )" #. (itstool) path: section/para #: C/index-in.docbook:10179 msgid "For instance, for Gdk::Rectangle:" msgstr "Till exempel, för Gdk::Rectangle:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10180 #, no-wrap msgid "" "\n" "_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n" msgstr "" "\n" "_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n" #. (itstool) path: section/title #: C/index-in.docbook:10186 msgid "_CLASS_OPAQUE_COPYABLE" msgstr "_CLASS_OPAQUE_COPYABLE" #. (itstool) path: section/para #: C/index-in.docbook:10188 #, fuzzy msgid "" "This macro declares a wrapper for an opaque struct that has copy and free functions. The new, copy and free functions will be used to " "instantiate the default constructor, copy constructor and destructor." msgstr "" "Detta makro deklarerar ett omslag för en ogenomskinlig struct som har copy- och free-funktioner. New-, copy- och free-funktionerna kommer " "användas för att instansiera standardkonstruktorn, konstruktor och destruktor för copy." #. (itstool) path: section/para #: C/index-in.docbook:10191 #, fuzzy msgid "_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy function, free function )" msgstr "_CLASS_OPAQUE_COPYABLE( C++-klass, C-klass, new-funktion, copy-funktion, free-funktion )" #. (itstool) path: section/para #: C/index-in.docbook:10192 msgid "For instance, from Glib::VariantType:" msgstr "Till exempel, från Glib::VariantType:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10193 #, no-wrap msgid "" "\n" "_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n" msgstr "" "\n" "_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n" #. (itstool) path: section/title #: C/index-in.docbook:10199 msgid "_CLASS_OPAQUE_REFCOUNTED" msgstr "_CLASS_OPAQUE_REFCOUNTED" #. (itstool) path: section/para #: C/index-in.docbook:10201 #, fuzzy msgid "" "This macro declares a wrapper for a reference-counted opaque struct. The C++ wrapper cannot be directly instantiated and can only be used with " "Glib::RefPtr." msgstr "" "Detta makro deklarerar ett omslag för en referensräknad ogenomskinlig struct. C++-omslaget kan inte instansieras direkt och kan endast användas " "med Glib::RefPtr." #. (itstool) path: section/para #: C/index-in.docbook:10204 #, fuzzy msgid "_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref function, unref function )" msgstr "_CLASS_OPAQUE_REFCOUNTED( C++-klass, C-klass, new-funktion, ref-funktion, unref-funktion )" #. (itstool) path: section/para #: C/index-in.docbook:10205 msgid "For instance, for Gtk::CssSection:" msgstr "Till exempel, för Gtk::CssSection:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10206 #, no-wrap msgid "" "\n" "_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n" msgstr "" "\n" "_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n" #. (itstool) path: section/title #: C/index-in.docbook:10212 msgid "_CLASS_GENERIC" msgstr "_CLASS_GENERIC" #. (itstool) path: section/para #: C/index-in.docbook:10214 #, fuzzy msgid "This macro can be used to wrap structs which don't fit into any specialized category." msgstr "Detta makro kan användas för att slå om structar som inte passar in i någon specialiserad kategori." #. (itstool) path: section/para #: C/index-in.docbook:10216 msgid "_CLASS_GENERIC( C++ class, C class )" msgstr "_CLASS_GENERIC( C++-klass, C-klass )" #. (itstool) path: section/para #: C/index-in.docbook:10217 msgid "For instance, for Gdk::TimeCoord:" msgstr "Till exempel, för Gdk::TimeCoord:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10218 #, no-wrap msgid "" "\n" "_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n" msgstr "" "\n" "_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n" #. (itstool) path: section/title #: C/index-in.docbook:10224 msgid "_CLASS_INTERFACE" msgstr "_CLASS_INTERFACE" #. (itstool) path: section/para #: C/index-in.docbook:10226 msgid "This macro declares a wrapper for a type that is derived from GTypeInterface." msgstr "Detta makro deklarerar ett omslag för en typ som härleds från GTypeInterface." #. (itstool) path: section/para #: C/index-in.docbook:10229 #, fuzzy msgid "" "_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface struct, Base C++ class (optional), Base C class (optional) )" msgstr "" "_CLASS_INTERFACE( C++-klass, C-klass, C-typkonverteringsmakro, C-gränssnittsstruct, C++-basklass (valfri), C-basklass (valfri) )" #. (itstool) path: section/para #: C/index-in.docbook:10230 msgid "For instance, from celleditable.hg:" msgstr "Till exempel, från celleditable.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10232 #, no-wrap msgid "" "\n" "_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n" msgstr "" "\n" "_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n" #. (itstool) path: section/para #: C/index-in.docbook:10235 #, fuzzy msgid "" "Two extra optional parameters were once added, for the case that the interface derives from another interface, which was believed to be the " "case when the GInterface has another GInterface as a prerequisite. This is a misunderstanding, though. When GInterface A has GInterface B as a " "prerequisite, it means that every class that implements A shall also implement B. For instance, from loadableicon.hg in " "glibmm-2.4:" msgstr "" "Två extra valfria parametrar lades till en gång, för fallet att gränssnittet härleds från ett annat gränssnitt, vilket antogs vara fallet när " "GInterface har ett annat GInterface som förkrav. Detta är dock ett missförstånd. När GInterface A har GInterface B som ett förkrav så betyder " "det att varje klass som implementerar A också ska implementera B. Exempelvis från loadableicon.hg i glibmm-2.4:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10241 #, no-wrap msgid "" "\n" "_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n" msgstr "" "\n" "_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n" #. (itstool) path: section/title #: C/index-in.docbook:10249 msgid "Constructor macros" msgstr "Konstruktormakron" #. (itstool) path: section/para #: C/index-in.docbook:10251 #, fuzzy msgid "" "The _CTOR_DEFAULT() and _WRAP_CTOR() macros add constructors, wrapping the specified " "*_new() C functions. These macros assume that the C object has properties with the same names as the function parameters, " "as is usually the case, so that it can supply the parameters directly to a g_object_new() call. These constructors never " "actually call the *_new() C functions, because gtkmm must actually instantiate derived GTypes, " "and the *_new() C functions are meant only as convenience functions for C programmers." msgstr "" "Makrona _CTOR_DEFAULT() och _WRAP_CTOR() lägger till konstruktorer som omsluter de angivna " "*_new()-funktionerna i C. Dessa makron antar att C-objektet har egenskaper med samma namn som funktionsparametrarna, som " "vanligen är fallet, så att det kan tillhandahålla parametrarna direkt till ett g_object_new()-anrop. Dessa konstruktorer " "anropar faktiskt *_new()-funktionerna i C, för gtkmm måste faktiskt instansiera härledda GType-" "typer, och *_new()-funktionerna i C är bara tänkta som bekvämlighetsfunktioner för C-programmerare." #. (itstool) path: section/para #: C/index-in.docbook:10261 #, fuzzy msgid "" "When using _CLASS_GOBJECT(), the constructors should be protected (rather than public) and each constructor should have a " "corresponding _WRAP_CREATE() in the public section. This prevents the class from being instantiated without using a " "RefPtr. For instance:" msgstr "" "När _CLASS_GOBJECT() används bör konstruktorerna vara protected (snarare än public) och varje konstruktor bör ha en " "motsvarande _WRAP_CREATE() i public-delen. Detta förhindrar klassen från att instansieras utan att använda en " "RefPtr. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10266 #, fuzzy, no-wrap msgid "" "\n" "class TextMark : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n" "\n" "protected:\n" " _WRAP_CTOR(TextMark(const Glib::ustring& name, bool left_gravity = true), gtk_text_mark_new)\n" "\n" "public:\n" " _WRAP_CREATE(const Glib::ustring& name, bool left_gravity = true)\n" msgstr "" "\n" "class TextMark : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n" "\n" "protected:\n" " _WRAP_CTOR(TextMark(const Glib::ustring& name, bool left_gravity = true), gtk_text_mark_new)\n" "\n" "public:\n" " _WRAP_CREATE(const Glib::ustring& name, bool left_gravity = true)\n" #. (itstool) path: section/title #: C/index-in.docbook:10279 msgid "_CTOR_DEFAULT" msgstr "_CTOR_DEFAULT" #. (itstool) path: section/para #: C/index-in.docbook:10281 msgid "This macro creates a default constructor with no arguments." msgstr "Detta makro skapar en standardkonstruktor utan argument." #. (itstool) path: section/title #: C/index-in.docbook:10286 msgid "_WRAP_CTOR" msgstr "_WRAP_CTOR" #. (itstool) path: section/para #: C/index-in.docbook:10288 #, fuzzy msgid "" "This macro creates a constructor with arguments, equivalent to a *_new() C function. It won't actually call the " "*_new() function, but will simply create an equivalent constructor with the same argument types. It takes a C++ " "constructor signature, and a C function name." msgstr "" "Detta makro skapar en konstruktor med argument, motsvarande en *_new()-funktion i C. Den kommer inte faktiskt anropa " "*_new()-funktionen, utan kommer helt enkelt skapa en motsvarande konstruktor med samma argumenttyper. Den tar en C++-" "konstruktorsignatur och ett C-funktionsnamn." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10298 C/index-in.docbook:10817 msgid "errthrow" msgstr "errthrow" #. (itstool) path: listitem/para #: C/index-in.docbook:10300 #, fuzzy msgid "" "This tells gmmproc that the C *_new() has a final GError** parameter which should be " "ignored." msgstr "" "Detta säger till gmmproc att *_new() i C har en slutgiltig GError**-parameter som ska " "ignoreras." #. (itstool) path: section/para #: C/index-in.docbook:10295 msgid "It also takes an optional extra argument: <_:variablelist-1/>" msgstr "Det tar också ett valfritt extra argument: <_:variablelist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:10309 msgid "Hand-coding constructors" msgstr "Koda konstruktorer för hand" #. (itstool) path: section/para #: C/index-in.docbook:10311 #, fuzzy msgid "" "When a constructor must be partly hand written because, for instance, the *_new() C function's parameters do not " "correspond directly to object properties, or because the *_new() C function does more than call g_object_new(), the _CONSTRUCT() macro may be used in the .ccg file to save some work. The _CONSTRUCT " "macro takes a series of property names and values. For instance, from button.ccg:" msgstr "" "När en konstruktor måste skrivas delvis för hand eftersom, exempelvis, *_new()-funktionens parametrar i C inte direkt " "motsvarar objektegenskaper, eller för att *_new()-funktionen i C gör mer än att anropa g_object_new(), så kan makrot _CONSTRUCT() användas i .ccg-filen för att spara lite arbete. Makrot _CONSTRUCT tar en serie egenskapsnamn och värden. Till exempel, från button.ccg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10319 #, fuzzy, no-wrap msgid "" "\n" "Button::Button(const Glib::ustring& label, bool mnemonic)\n" ":\n" " _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n" "{}\n" msgstr "" "\n" "Button::Button(const Glib::ustring& label, bool mnemonic)\n" ":\n" " _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n" "{}\n" #. (itstool) path: section/title #: C/index-in.docbook:10330 msgid "Macros that suppress generation of some code" msgstr "Makron som undertrycker generering av viss kod" #. (itstool) path: section/para #: C/index-in.docbook:10332 msgid "" "Some macros suppress the generation of some code when they are used after a _CLASS_* macro. Some suppress the definition " "in the generated .cc file, others suppress both the declaration in the .h file and the definition in the .cc file." msgstr "" "Några makron undertrycker genererandet av viss kod när de används efter ett _CLASS_*-makro. Vissa undertrycker " "definitionen i den genererade .cc-filen, andra undertrycker både deklarationen i .h-filen och definitionen i .cc-filen." #. (itstool) path: section/title #: C/index-in.docbook:10339 msgid "_CUSTOM_DEFAULT_CTOR" msgstr "_CUSTOM_DEFAULT_CTOR" #. (itstool) path: section/para #: C/index-in.docbook:10341 msgid "" "Suppresses declaration and definition of default constructor in _CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC and _CLASS_OPAQUE_COPYABLE." msgstr "" "Undertrycker deklaration och definition av standardkonstruktorn i _CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC och _CLASS_OPAQUE_COPYABLE." #. (itstool) path: section/title #: C/index-in.docbook:10348 msgid "_CUSTOM_CTOR_CAST" msgstr "_CUSTOM_CTOR_CAST" #. (itstool) path: section/para #: C/index-in.docbook:10350 #, fuzzy msgid "" "Suppresses declaration and definition of the constructor that takes a pointer to the wrapped C object in _CLASS_BOXEDTYPE " "and _CLASS_BOXEDTYPE_STATIC." msgstr "" "Undertrycker deklaration och definition av konstruktorn som tar en pekare till det omslutna C-objektet i _CLASS_BOXEDTYPE " "och _CLASS_BOXEDTYPE_STATIC." #. (itstool) path: section/para #: C/index-in.docbook:10354 #, fuzzy msgid "" "Suppresses definition of the constructor that takes a pointer to the wrapped C object in _CLASS_INTERFACE and " "_CLASS_OPAQUE_COPYABLE." msgstr "" "Undertrycker definition av konstruktorn som tar en pekare till det omslutna C-objektet i _CLASS_INTERFACE och " "_CLASS_OPAQUE_COPYABLE." #. (itstool) path: section/para #: C/index-in.docbook:10358 #, fuzzy msgid "" "Suppresses definition of the constructor that takes a pointer to the wrapped C object and the constructor that takes construct_params in " "_CLASS_GOBJECT and _CLASS_GTKOBJECT." msgstr "" "Undertrycker definition av konstruktorn som tar en pekare till det omslutna C-objektet och konstruktorn som tar construct_params i " "_CLASS_GOBJECT och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10365 msgid "_CUSTOM_DTOR" msgstr "_CUSTOM_DTOR" #. (itstool) path: section/para #: C/index-in.docbook:10367 msgid "Suppresses definition of destructor in _CLASS_GOBJECT and _CLASS_GTKOBJECT." msgstr "Undertrycker definition av destruktorn i _CLASS_GOBJECT och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10373 msgid "_CUSTOM_MOVE_OPERATIONS" msgstr "_CUSTOM_MOVE_OPERATIONS" #. (itstool) path: section/para #: C/index-in.docbook:10375 #, fuzzy msgid "" "Suppresses declaration and definition of move constructor and move assignment operator in _CLASS_GOBJECT and " "_CLASS_GTKOBJECT." msgstr "" "Undertrycker deklaration och definition av move-konstruktor och move-tilldelningsoperator i _CLASS_GOBJECT och " "_CLASS_GTKOBJECT." #. (itstool) path: section/para #: C/index-in.docbook:10379 msgid "For example:" msgstr "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10380 #, fuzzy, no-wrap msgid "" "\n" "class Derived : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(Derived, GDerived, G_DERIVED, Glib::Object, GObject)\n" "\n" " _CUSTOM_MOVE_OPERATIONS\n" "\n" "public:\n" " Derived(Derived&& src) noexcept;\n" " Derived& operator=(Derived&& src) noexcept;\n" " // ...\n" "};\n" msgstr "" "\n" "class Derived : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(Derived, GDerived, G_DERIVED, Glib::Object, GObject)\n" "\n" " _CUSTOM_MOVE_OPERATIONS\n" "\n" "public:\n" " Derived(Derived&& src) noexcept;\n" " Derived& operator=(Derived&& src) noexcept;\n" " // ...\n" "};\n" #. (itstool) path: section/title #: C/index-in.docbook:10396 msgid "_CUSTOM_WRAP_NEW" msgstr "_CUSTOM_WRAP_NEW" #. (itstool) path: section/para #: C/index-in.docbook:10398 msgid "Suppresses definition of Glib::wrap_new() function in _CLASS_GOBJECT." msgstr "Undertrycker definition av Glib::wrap_new()-funktionen i _CLASS_GOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10404 msgid "_CUSTOM_WRAP_FUNCTION" msgstr "_CUSTOM_WRAP_FUNCTION" #. (itstool) path: section/para #: C/index-in.docbook:10406 msgid "" "Suppresses definition of Glib::wrap() function in _CLASS_GOBJECT and _CLASS_GTKOBJECT." msgstr "" "Undertrycker definition av Glib::wrap()-funktionen i _CLASS_GOBJECT och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10412 msgid "_NO_WRAP_FUNCTION" msgstr "_NO_WRAP_FUNCTION" #. (itstool) path: section/para #: C/index-in.docbook:10414 msgid "" "Suppresses declaration and definition of Glib::wrap() function in _CLASS_GOBJECT, " "_CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC, _CLASS_OPAQUE_COPYABLE, " "_CLASS_INTERFACE and _CLASS_GTKOBJECT." msgstr "" "Undertrycker deklaration och definition av Glib::wrap()-funktionen i _CLASS_GOBJECT, " "_CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC, _CLASS_OPAQUE_COPYABLE, " "_CLASS_INTERFACE och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10424 msgid "Method macros" msgstr "Metodmakron" #. (itstool) path: section/title #: C/index-in.docbook:10427 msgid "_WRAP_METHOD" msgstr "_WRAP_METHOD" #. (itstool) path: section/para #: C/index-in.docbook:10429 #, fuzzy msgid "This macro generates the C++ method to wrap a C function." msgstr "Detta makro genererar C++-metoden som ska omsluta en C-funktion." #. (itstool) path: section/para #: C/index-in.docbook:10430 msgid "_WRAP_METHOD( C++ method signature, C function name)" msgstr "_WRAP_METHOD( C++-metodsignatur, C-funktionsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10431 msgid "For instance, from entry.hg:" msgstr "Till exempel, från entry.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10432 #, no-wrap msgid "" "\n" "_WRAP_METHOD(void set_text(const Glib::ustring& text), gtk_entry_set_text)\n" msgstr "" "\n" "_WRAP_METHOD(void set_text(const Glib::ustring& text), gtk_entry_set_text)\n" #. (itstool) path: section/para #: C/index-in.docbook:10435 #, fuzzy msgid "" "The C function (e.g. gtk_entry_set_text) is described more fully in the .defs file, and the convert*.m4 files contain the necessary conversion from the C++ parameter type to the C parameter type. This macro also generates doxygen " "documentation comments based on the *_docs.xml and *_docs_override.xml files." msgstr "" "C-funktionen (t.ex. gtk_entry_set_text) beskrivs mer fullständigt i .defs-filen, och convert*.m4-" "filerna innehåller den nödvändiga konverteringen från C++-parametertypen till C-parametertypen. Detta makro genererar också " "doxygendokumentationskommentarer baserade på filerna *_docs.xml och *_docs_override.xml." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10444 C/index-in.docbook:10682 C/index-in.docbook:10792 msgid "refreturn" msgstr "refreturn" #. (itstool) path: listitem/para #: C/index-in.docbook:10446 #, fuzzy msgid "Do an extra reference() on the return value, in case the C function does not provide a reference." msgstr "Gör en extra reference() på returvärdet ifall C-funktionen inte tillhandahåller en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10451 C/index-in.docbook:10582 msgid "errthrow [\"<exceptions>\"]" msgstr "errthrow [\"<undantag>\"]" #. (itstool) path: listitem/para #: C/index-in.docbook:10453 #, fuzzy msgid "" "Use the last GError** parameter of the C function to throw an exception. The optional \"<exceptions>\" is a comma-separated list of " "exceptions that can be thrown. It determines which @throws Doxygen commands are added to the documentation. Default value is Glib::" "Error. If you want a comma in the description of an exception, precede it by a backslash. Example: errthrow \"Glib::" "OptionError Hello\\, world, Glib::ConvertError\"" msgstr "" "Använd den sista GError**-parametern i C-funktionen för att kasta ett undantag. Den valfria \"<undantag>\" är en kommaseparerad lista " "över undantag som kan kastas. Det avgör vilka @throws-Doxygenkommandon som läggs till i dokumentationen. Standardvärdet är Glib::" "Error. Om du vill ha ett komma i beskrivningen av ett undantag föregår du det med ett bakstreck. Exempel: errthrow \"Glib::" "OptionError Hello\\, world, Glib::ConvertError\"" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10464 C/index-in.docbook:10690 C/index-in.docbook:10757 C/index-in.docbook:11000 msgid "deprecated [\"<text>\"]" msgstr "deprecated [\"<text>\"]" #. (itstool) path: listitem/para #: C/index-in.docbook:10466 C/index-in.docbook:10692 C/index-in.docbook:10759 C/index-in.docbook:11002 msgid "Puts the generated code in #ifdef blocks. Text about the deprecation can be specified as an optional parameter." msgstr "Stoppar den genererade koden i #ifdef-block. Text om föråldringen kan anges som en valfri parameter." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10472 msgid "ignore_deprecations" msgstr "ignore_deprecations" #. (itstool) path: listitem/para #: C/index-in.docbook:10474 msgid "" "Puts the generated code in the .cc file in a G_GNUC_BEGIN_IGNORE_DEPRECATIONS / G_GNUC_END_IGNORE_DEPRECATIONS block. (Only in glibmm >= " "2.70.1)" msgstr "" "Stoppar den genererade koden i .cc-filen i ett G_GNUC_BEGIN_IGNORE_DEPRECATIONS / G_GNUC_END_IGNORE_DEPRECATIONS-block. (Endast i glibmm >= " "2.70.1)" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10480 msgid "constversion" msgstr "constversion" #. (itstool) path: listitem/para #: C/index-in.docbook:10482 #, fuzzy msgid "Just call the non-const version of the same function, instead of generating almost duplicate code." msgstr "Anropa helt enkelt den icke-konstanta versionen av samma funktion i stället för att generera nästan identisk kod." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10487 C/index-in.docbook:10595 C/index-in.docbook:10697 C/index-in.docbook:10764 C/index-in.docbook:11007 msgid "newin \"<version>\"" msgstr "newin \"<version>\"" #. (itstool) path: listitem/para #: C/index-in.docbook:10489 C/index-in.docbook:10597 C/index-in.docbook:10699 C/index-in.docbook:10766 C/index-in.docbook:11009 #, fuzzy msgid "Adds a @newin Doxygen command to the documentation, or replaces the @newin command generated from the C documentation." msgstr "Lägger till ett @newin-Doxygenkommando till dokumentationen, eller ersätter @newin-kommandot som genererats från C-dokumentationen." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10494 C/index-in.docbook:10704 C/index-in.docbook:10839 C/index-in.docbook:10927 msgid "ifdef <identifier>" msgstr "ifdef <identifierare>" #. (itstool) path: listitem/para #: C/index-in.docbook:10496 C/index-in.docbook:10706 C/index-in.docbook:10841 C/index-in.docbook:10929 msgid "Puts the generated code in #ifdef blocks." msgstr "Stoppar den genererade koden i #ifdef-block." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10500 C/index-in.docbook:10845 msgid "slot_name <parameter_name>" msgstr "slot_name <parameternamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10502 C/index-in.docbook:10847 #, fuzzy msgid "" "Specifies the name of the slot parameter of the method, if it has one. This enables gmmproc to generate code to copy the " "slot and pass the copy on to the C function in its final gpointer user_data parameter. The slot_callback " "option must also be used to specify the name of the glue callback function to also pass on to the C function." msgstr "" "Anger namnet på fackparametern för metoden om den har någon. Detta låter gmmproc generera kod för att kopiera facket och " "skicka kopian till C-funktionen i dess sista gpointer user_data-parameter. Alternativet slot_callback " "måste också användas för att ange namnet på limåteranropsfunktionen att också skicka till C-funktionen." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10512 C/index-in.docbook:10857 msgid "slot_callback <function_name>" msgstr "slot_callback <funktionsnamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10514 C/index-in.docbook:10859 #, fuzzy msgid "" "Used in conjunction with the slot_name option to specify the name of the glue callback function that handles extracting the " "slot and then calling it. The address of this callback is also passed on to the C function that the method wraps." msgstr "" "Används tillsammans med alternativet slot_name för att ange namnet på limåteranropsfunktionen som hanterar extrahering av " "facket och sedan anropar det. Adressen för detta återanrop skickas också till C-funktionen som metoden omsluter." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10522 C/index-in.docbook:10867 msgid "no_slot_copy" msgstr "no_slot_copy" #. (itstool) path: listitem/para #: C/index-in.docbook:10524 C/index-in.docbook:10869 #, fuzzy msgid "" "Tells gmmproc not to pass a copy of the slot to the C function, if the method has one. Instead the slot itself is passed. " "The slot parameter name and the glue callback function must have been specified with the slot_name and " "slot_callback options respectively." msgstr "" "Säger till gmmproc att inte skicka en kopia av facket till C-funktionen, om metoden har en. I stället skickas facket självt. " "Fackparameternamnet och limåteranropsfunktionen måste ha angivits med alternativen slot_name respektive " "slot_callback." #. (itstool) path: section/para #: C/index-in.docbook:10441 C/index-in.docbook:10579 C/index-in.docbook:10652 C/index-in.docbook:10754 C/index-in.docbook:10789 #: C/index-in.docbook:10945 msgid "There are some optional extra arguments: <_:variablelist-1/>" msgstr "Det finns några valfria extra argument: <_:variablelist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:10537 #, fuzzy msgid "" "Objects used via RefPtr: Pass the RefPtr as a const reference. For instance, const Glib::" "RefPtr<Gtk::FileFilter>& filter." msgstr "" "Objekt använda via RefPtr: Skicka RefPtr som en const-referens. Till exempel, const Glib::" "RefPtr<Gtk::FileFilter>& filter." #. (itstool) path: listitem/para #: C/index-in.docbook:10541 #, fuzzy msgid "" "Const Objects used via RefPtr: If the object should not be changed by the function, then make sure that the object is " "const, even if the RefPtr is already const. For instance, const Glib::RefPtr<const Gtk::FileFilter>& " "filter." msgstr "" "Const-objekt som används via RefPtr: Om objektet inte ska ändras av funktionen ser du till att objektet är const, även " "om RefPtr-pekaren redan är const. Till exempel, const Glib::RefPtr<const Gtk::FileFilter>& filter." #. (itstool) path: listitem/para #: C/index-in.docbook:10546 #, fuzzy msgid "" "Wrapping GList* and GSList* parameters: First, you need to discover what objects are contained in " "the list's data field for each item, usually by reading the documentation for the C function. The list can then be wrapped by a std::" "vector type. For instance, std::vector<Glib::RefPtr<Gdk::Pixbuf>>. You may need to define a Traits type to " "specify how the C and C++ types should be converted." msgstr "" "Omsluta GList*- och GSList*-parametrar: Först behöver du upptäcka vilka objekt som innehålls i " "listans datafält för varje objekt, vanligen genom att läsa dokumentationen för C-funktionen. Listan kan sedan omslutas av en std::" "vector-typ. Till exempel, std::vector<Glib::RefPtr<Gdk::Pixbuf>>. Du kan behöva definiera en Traits-typ " "för att ange hur C- och C++-typerna ska konverteras." #. (itstool) path: para/programlisting #: C/index-in.docbook:10562 #, no-wrap msgid "#m4 _CONVERSION(`GSList*',`std::vector<Widget*>',`Glib::SListHandler<Widget*>::slist_to_vector($3, Glib::OWNERSHIP_SHALLOW)')" msgstr "#m4 _CONVERSION(`GSList*',`std::vector<Widget*>',`Glib::SListHandler<Widget*>::slist_to_vector($3, Glib::OWNERSHIP_SHALLOW)')" #. (itstool) path: listitem/para #: C/index-in.docbook:10554 #, fuzzy msgid "" "Wrapping GList* and GSList* return types: You must discover whether the caller should free the " "list and whether it should release the items in the list, again by reading the documentation of the C function. With this information you can " "choose the ownership (none, shallow or deep) for the m4 conversion rule, which you should probably put directly into the .hg file because the " "ownership depends on the function rather than the type. For instance: <_:programlisting-1/>" msgstr "" "Omsluta GList*- och GSList*-returtyper: Du måste upptäcka huruvida anroparen ska frigöra listan " "och huruvida den ska släppa objekten i listan, igen genom att läsa dokumentationen för C-funktionen. Med denna information kan du välja " "ägarskapet (none, shallow eller deep) för m4-konverteringsregeln, vilket du troligen ska stoppa direkt i .hg-filen för ägarskapet beror på " "funktionen snarare än typen. Till exempel: <_:programlisting-1/>" #. (itstool) path: section/para #: C/index-in.docbook:10533 #, fuzzy msgid "" "Selecting which C++ types should be used is also important when wrapping C API. Though it's usually obvious what C++ types should be used in " "the C++ method, here are some hints: <_:itemizedlist-1/>" msgstr "" "Att välja vilka C++-typer som ska användas är också viktigt när C-API omsluts. Även om det vanligen är uppenbart vilka C++-typer som ska " "användas i C++-metoden så kommer några tips här: <_:itemizedlist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:10568 msgid "_WRAP_METHOD_DOCS_ONLY" msgstr "_WRAP_METHOD_DOCS_ONLY" #. (itstool) path: section/para #: C/index-in.docbook:10570 #, fuzzy msgid "" "This macro is like _WRAP_METHOD(), but it generates only the documentation for a C++ method that wraps a C function. Use " "this when you must hand-code the method, but you want to use the documentation that would be generated if the method was generated." msgstr "" "Detta makro är som _WRAP_METHOD(), men genererar bara dokumentationen för en C++-metod som omsluter en C-funktion. Använd " "detta när du måste handkoda metoden, men vill använda dokumentationen som skulle genereras om metoden var genererad." #. (itstool) path: section/para #: C/index-in.docbook:10574 msgid "_WRAP_METHOD_DOCS_ONLY(C function name)" msgstr "_WRAP_METHOD_DOCS_ONLY(C-funktionsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10575 msgid "For instance, from recentinfo.hg:" msgstr "Till exempel, från recentinfo.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10576 #, no-wrap msgid "" "\n" "_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n" msgstr "" "\n" "_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n" #. (itstool) path: listitem/para #: C/index-in.docbook:10584 #, fuzzy msgid "" "Excludes documentation of the last GError** parameter of the C function. The optional \"<exceptions>\" is a comma-separated list of " "exceptions that can be thrown. It determines which @throws Doxygen commands are added to the documentation. Default value is Glib::" "Error. If you want a comma in the description of an exception, precede it by a backslash. Example: errthrow \"Glib::" "OptionError Hello\\, world, Glib::ConvertError\"" msgstr "" "Exkluderar dokumentationen för den sista GError**-parametern i C-funktionen. Den valfria \"<undantag>\" är en kommaseparerad lista över " "undantag som kan kastas. Det avgör vilka @throws-Doxygenkommandon som läggs till i dokumentationen. Standardvärdet är Glib::Error. Om du vill ha ett komma i beskrivningen av ett undantag föregår du det med ett bakstreck. Exempel: errthrow \"Glib::" "OptionError Hello\\, world, Glib::ConvertError\"" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10602 msgid "voidreturn" msgstr "voidreturn" #. (itstool) path: listitem/para #: C/index-in.docbook:10604 #, fuzzy msgid "" "Don't include a @return Doxygen command in the documentation. Useful if the wrapped C function returns a value, but the corresponding C++ " "method returns void." msgstr "" "Inkludera inte ett @return-Doxygenkommando i dokumentationen. Användbart om den omslutna C-funktionen returnerar ett värde, men den motsvarande " "C++-metoden returnerar void." #. (itstool) path: section/title #: C/index-in.docbook:10614 msgid "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY" msgstr "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY" #. (itstool) path: section/para #: C/index-in.docbook:10616 #, fuzzy msgid "" "gmmproc will warn you on stdout about functions, signals, properties and child properties that you have forgotten to wrap, " "helping to ensure that you are wrapping the complete API. But if you don't want to wrap some functions, signals, properties or child " "properties, or if you chose to hand-code some methods then you can use the _IGNORE(), _IGNORE_SIGNAL() or _IGNORE_PROPERTY() macro to make " "gmmproc stop complaining." msgstr "" "gmmproc kommer varna dig på standard ut om funktioner, signaler, egenskaper och underordnade egenskaper som du glömt bort " "att omsluta, vilket hjälper till att säkerställa att du omsluter hela API:t. Men om du inte vill omsluta några funktioner, signaler, egenskaper " "eller underordnade egenskaper, eller om du väljer att handkoda vissa metoder, så kan du använda makrona _IGNORE(), _IGNORE_SIGNAL() eller " "_IGNORE_PROPERTY() för att få gmmproc att sluta klaga." #. (itstool) path: para/literallayout #: C/index-in.docbook:10624 #, no-wrap msgid "" "_IGNORE(C function name 1, C function name 2, etc)\n" "_IGNORE_SIGNAL(C signal name 1, C signal name 2, etc)\n" "_IGNORE_PROPERTY(C property name 1, C property name 2, etc)" msgstr "" "_IGNORE(C-funktionsnamn 1, C-funktionsnamn 2, o.s.v.)\n" "_IGNORE_SIGNAL(C-signalnamn 1, C-signalnamn 2, o.s.v.)\n" "_IGNORE_PROPERTY(C-egenskapsnamn 1, C-egenskapsnamn 2, o.s.v.)" #. (itstool) path: section/para #: C/index-in.docbook:10628 msgid "For instance, from flowbox.hg:" msgstr "Till exempel, från flowbox.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10629 #, no-wrap msgid "" "\n" "_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n" "_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n" msgstr "" "\n" "_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n" "_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n" #. (itstool) path: section/title #: C/index-in.docbook:10636 msgid "_WRAP_SIGNAL" msgstr "_WRAP_SIGNAL" #. (itstool) path: section/para #: C/index-in.docbook:10638 #, fuzzy msgid "" "This macro generates the C++ libsigc++-style signal to wrap a C GObject signal. It actually generates a public accessor method, such as " "signal_clicked(), which returns a proxy object. gmmproc uses the .defs file to discover the C parameter " "types and the .m4 convert files to discover appropriate type conversions." msgstr "" "Detta makro genererar C++-signalen av libsigc++-stil som ska omsluta en C Gobjekt-signal. Det genererar faktiskt en publik åtkomstmetod, som " "signal_clicked() vilken returnerar ett proxyobjekt. gmmproc använder .defs-filen för att upptäcka C-" "parametertyperna och .m4-konverteringsfilerna för att upptäcka lämpliga typkonverteringar." #. (itstool) path: section/para #: C/index-in.docbook:10644 msgid "_WRAP_SIGNAL( C++ signal handler signature, C signal name)" msgstr "_WRAP_SIGNAL( C++-signalhanterarsignatur, C-signalnamn)" #. (itstool) path: section/programlisting #: C/index-in.docbook:10646 #, no-wrap msgid "" "\n" "_WRAP_SIGNAL(void clicked(),\"clicked\")\n" msgstr "" "\n" "_WRAP_SIGNAL(void clicked(),\"clicked\")\n" #. (itstool) path: section/para #: C/index-in.docbook:10649 #, fuzzy msgid "" "Signals usually have function pointers in the GTK struct, with a corresponding enum value and a g_signal_new() in the .c " "file." msgstr "" "Signaler har vanligen funktionspekare i GTK-structen, med ett motsvarande uppräkningsvärde och en g_signal_new() i .c-fil." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10655 msgid "no_default_handler" msgstr "no_default_handler" #. (itstool) path: listitem/para #: C/index-in.docbook:10657 msgid "" "Do not generate an on_something() virtual method to allow easy overriding of the default signal handler. Use this when " "adding a signal with a default signal handler would break the ABI by increasing the size of the class's virtual function table, and when adding " "a signal without a public C default handler." msgstr "" "Generera inte en virtuell metod on_something() för att tillåta enkel åsidosättning av standardsignalhanteraren. Använd " "detta när tillägg av en signal med en standardsignalhanterare skulle bryta ABI:t genom att öka storleken på klassens virtuella funktionstabell, " "och vid tillägg av en signal utan en öppen C-standardhanterare." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10666 msgid "custom_default_handler" msgstr "custom_default_handler" #. (itstool) path: listitem/para #: C/index-in.docbook:10668 #, fuzzy msgid "" "Generate a declaration of the on_something() virtual method in the .h file, but do not generate a " "definition in the .cc file. Use this when you must generate the definition by hand." msgstr "" "Generera en deklaration av den virtuella metoden on_something() i .h-filen, men generera inte någon " "definition i .cc-filen. Använd detta då du måste generera definitionen för hand." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10675 msgid "custom_c_callback" msgstr "custom_c_callback" #. (itstool) path: listitem/para #: C/index-in.docbook:10677 msgid "Do not generate a C callback function for the signal. Use this when you must generate the callback function by hand." msgstr "Generera inte en C-återanropsfunktion för signalen. Använd detta när du måste generera återanropsfunktionen för hand." #. (itstool) path: listitem/para #: C/index-in.docbook:10684 #, fuzzy msgid "" "Do an extra reference() on the return value of the on_something() virtual method, in case the C " "function does not provide a reference." msgstr "" "Gör en extra reference() på returvärdet för den virtuella metoden on_something(), ifall C-funktionen " "inte tillhandahåller en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10710 C/index-in.docbook:10893 msgid "exception_handler <method_name>" msgstr "exception_handler <metodnamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10712 C/index-in.docbook:10895 #, fuzzy msgid "" "Allows to use custom exception handler instead of default one. Exception might be rethrown by user-defined handler, and it will be caught by " "default handler." msgstr "" "Tillåter användning av anpassad undantagshanterare i stället för den som är standard. Undantag kan kastas igen av användardefinierade " "hanteraren och kommer fångas av standardhanteraren." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10718 msgid "detail_name <parameter_name>" msgstr "detail_name <parameternamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10720 #, fuzzy msgid "" "Adds a const Glib::ustring& parameter to the signal_something() method. Use it, if the signal accepts " "a detailed signal name, i.e. if the underlying C code registers the signal with the G_SIGNAL_DETAILED flag." msgstr "" "Lägger till en const Glib::ustring&-parameter till signal_something()-metoden. Använd det om signalen " "accepterar ett detaljerat signalnamn, det vill säga om den underliggande C-koden registrerar signalen med flaggan G_SIGNAL_DETAILED." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10727 msgid "two_signal_methods" msgstr "two_signal_methods" #. (itstool) path: listitem/para #: C/index-in.docbook:10729 #, fuzzy msgid "" "Used in conjunction with the detail_name option to generate two signal_something() methods, one " "without a parameter and one with a parameter without a default value. With only the detail_name option one method is " "generated, with a parameter with default value. Use the two_signal_methods option, if it's necessary in order to preserve " "ABI." msgstr "" "Används tillsammans med alternativet detail_name för att generera två signal_something()-metoder, " "en utan någon parameter och en med en parameter utan något standardvärde. Med endast alternativet detail_name genereras en " "metod, med en parameter med standardvärde. Använda alternativet two_signal_methods om det är nödvändigt för att bevara ABI." #. (itstool) path: section/title #: C/index-in.docbook:10743 msgid "_WRAP_PROPERTY" msgstr "_WRAP_PROPERTY" #. (itstool) path: section/para #: C/index-in.docbook:10745 #, fuzzy msgid "" "This macro generates the C++ method to wrap a C GObject property. You must specify the property name and the wanted C++ type for the property. " "gmmproc uses the .defs file to discover the C type and the .m4 convert files to discover appropriate type conversions." msgstr "" "Detta makro genererar C++-metoden som ska omsluta en C GObject-egenskap. Du måste ange egenskapsnamnet och den önskade C++-typen för " "egenskapen. gmmproc använder .defs-filen för att upptäcka C-typen och .m4-konverteringsfilerna för att upptäcka lämpliga " "typkonverteringar." #. (itstool) path: section/para #: C/index-in.docbook:10749 msgid "_WRAP_PROPERTY(C property name, C++ type)" msgstr "_WRAP_PROPERTY(C-egenskapsnamn, C++-typ)" #. (itstool) path: section/programlisting #: C/index-in.docbook:10751 #, no-wrap msgid "" "\n" "_WRAP_PROPERTY(\"label\", Glib::ustring)\n" msgstr "" "\n" "_WRAP_PROPERTY(\"label\", Glib::ustring)\n" #. (itstool) path: section/title #: C/index-in.docbook:10775 msgid "_WRAP_VFUNC" msgstr "_WRAP_VFUNC" #. (itstool) path: section/para #: C/index-in.docbook:10777 #, fuzzy msgid "This macro generates the C++ method to wrap a virtual C function." msgstr "Detta makro genererar C++-metoden som ska omsluta en virtuell C-funktion." #. (itstool) path: section/para #: C/index-in.docbook:10778 msgid "_WRAP_VFUNC( C++ method signature, C function name)" msgstr "_WRAP_VFUNC( C++-metodsignatur, C-funktionsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10779 msgid "For instance, from widget.hg:" msgstr "Till exempel, från widget.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10780 #, no-wrap msgid "" "\n" "_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n" msgstr "" "\n" "_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n" #. (itstool) path: section/para #: C/index-in.docbook:10783 #, fuzzy msgid "" "The C function (e.g. get_request_mode) is described more fully in the *_vfuncs.defs file, and the " "convert*.m4 files contain the necessary conversion from the C++ parameter type to the C parameter type. Conversions can " "also be written in the .hg file. Virtual functions often require special conversions that are best kept local to the .hg file where they are " "used." msgstr "" "C-funktionen (t.ex. get_request_mode) beskrivs mer fullständigt i filen *_vfuncs.defs, och " "convert*.m4-filerna innehåller den nödvändiga konverteringen från C++-parametertypen till C-parametertypen. Konverteringar " "kan också skrivas i .hg-filen. Virtuella funktioner kräver ofta speciella konverteringar som är bästa att hålla lokala till .hg-filen där de " "används." #. (itstool) path: listitem/para #: C/index-in.docbook:10794 #, fuzzy msgid "" "Do an extra reference() on the return value of the something_vfunc() function, in case the virtual C " "function does not provide a reference." msgstr "" "Gör en extra reference() på returvärdet för funktionen something_vfunc(), ifall den virtuella C-" "funktionen inte tillhandahåller en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10800 msgid "refreturn_ctype" msgstr "refreturn_ctype" #. (itstool) path: listitem/para #: C/index-in.docbook:10802 #, fuzzy msgid "" "Do an extra reference() on the return value of an overridden something_vfunc() function in the C " "callback function, in case the calling C function expects it to provide a reference." msgstr "" "Gör en extra reference() på returvärdet för en åsidosatt something_vfunc()-funktion i C-" "återanropsfunktionen, ifall den anropande C-funktionen förväntar sig att den ska tillhandahålla en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10809 msgid "keep_return" msgstr "keep_return" #. (itstool) path: listitem/para #: C/index-in.docbook:10811 #, fuzzy msgid "Keep a copy of the return value in the C callback function, in case the calling C function does not expect to get its own reference." msgstr "Behåll en kopia av returvärdet i C-återanropsfunktionen, ifall den anropande C-funktionen inte förväntar sig att få sin egen referens." #. (itstool) path: listitem/para #: C/index-in.docbook:10819 #, fuzzy msgid "Use the last GError** parameter of the C virtual function (if there is one) to throw an exception." msgstr "Använd den sista GError**-parametern i den virtuella C-funktionen (om det finns någon) för att kasta ett undantag." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10824 msgid "custom_vfunc" msgstr "custom_vfunc" #. (itstool) path: listitem/para #: C/index-in.docbook:10826 #, fuzzy msgid "Do not generate a definition of the vfunc in the .cc file. Use this when you must generate the vfunc by hand." msgstr "Generera inte en definition av vfunc i .cc-filen. Använd detta när du måste generera vfunc för hand." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10832 msgid "custom_vfunc_callback" msgstr "custom_vfunc_callback" #. (itstool) path: listitem/para #: C/index-in.docbook:10834 #, fuzzy msgid "Do not generate a C callback function for the vfunc. Use this when you must generate the callback function by hand." msgstr "Generera en C-återanropsfunktion för din vfunc. Använd denna när du måste generera återanropsfunktionen för hand." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10877 msgid "return_value <value>" msgstr "return_value <värde>" #. (itstool) path: listitem/para #: C/index-in.docbook:10879 msgid "Defines a non-default return value." msgstr "Definierar ett annat returvärde än standardvärdet." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10883 msgid "err_return_value <value>" msgstr "err_return_value <värde>" #. (itstool) path: listitem/para #: C/index-in.docbook:10885 #, fuzzy msgid "" "Defines a non-default return value, used only if the C++ something_vfunc() function throws an exception which is " "propagated to the C callback function. If return_value is specified, but err_return_value is not, then return_value is used also when an " "exception is propagated." msgstr "" "Definierar ett annat returvärde än standardvärdet, används endast om C++-funktionen something_vfunc() kastar ett undantag " "som sprids till C-återanropsfunktionen. Om return_value anges, men inte err_return_value, så kommer return_value användas även när ett undantag " "sprids." #. (itstool) path: section/para #: C/index-in.docbook:10902 #, fuzzy msgid "" "A rule to which there may be exceptions: If the virtual C function returns a pointer to an object derived from GObject, " "i.e. a reference-counted object, then the virtual C++ function shall return a Glib::RefPtr<> object. One of the " "extra arguments refreturn or refreturn_ctype is required." msgstr "" "En regel till vilken det kan finnas undantag: Om den virtuella C-funktionen returnerar en pekare till ett härlett från GObject, det vill säga ett referensräknat objekt så ska den virtuella C++-funktionen returnera ett Glib::RefPtr<>-objekt. Ett av de extra argumenten refreturn eller refreturn_ctype krävs." #. (itstool) path: section/title #: C/index-in.docbook:10913 msgid "Other macros" msgstr "Andra makron" #. (itstool) path: section/title #: C/index-in.docbook:10916 msgid "_IMPLEMENTS_INTERFACE" msgstr "_IMPLEMENTS_INTERFACE" #. (itstool) path: section/para #: C/index-in.docbook:10918 msgid "This macro generates initialization code for the interface." msgstr "Detta makro genererar initieringskod för gränssnittet." #. (itstool) path: section/para #: C/index-in.docbook:10919 msgid "_IMPLEMENTS_INTERFACE(C++ interface name)" msgstr "_IMPLEMENTS_INTERFACE(C++-gränssnittsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10920 msgid "For instance, from grid.hg:" msgstr "Till exempel, från grid.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10921 #, no-wrap msgid "" "\n" "_IMPLEMENTS_INTERFACE(Orientable)\n" msgstr "" "\n" "_IMPLEMENTS_INTERFACE(Orientable)\n" #. (itstool) path: section/para #: C/index-in.docbook:10924 msgid "There is one optional extra argument: <_:variablelist-1/>" msgstr "Det finns ett valfritt extra argument: <_:variablelist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:10937 msgid "_WRAP_ENUM" msgstr "_WRAP_ENUM" #. (itstool) path: section/para #: C/index-in.docbook:10939 #, fuzzy msgid "This macro generates a C++ enum to wrap a C enum. You must specify the desired C++ name and the name of the underlying C enum." msgstr "" "Detta makro genererar en C++-uppräkning för att omsluta en C-uppräkning. Du måste ange det önskade C++-namnet och namnet för den underliggande " "C-uppräkningen." #. (itstool) path: section/para #: C/index-in.docbook:10941 msgid "For instance, from enums.hg:" msgstr "Till exempel, från enums.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10942 #, no-wrap msgid "" "\n" "_WRAP_ENUM(Orientation, GtkOrientation)\n" msgstr "" "\n" "_WRAP_ENUM(Orientation, GtkOrientation)\n" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10948 msgid "NO_GTYPE" msgstr "NO_GTYPE" #. (itstool) path: listitem/para #: C/index-in.docbook:10950 #, fuzzy msgid "" "Use this option, if the enum is not a GType. This is the case when there is no *_get_type() " "function for the C enum, but be careful that you don't just need to include an extra header for that function. You should also file a bug " "against the C API, because all enums should be registered as GTypes." msgstr "" "Använd detta alternativ om uppräkningen inte är en GType. Detta är fallet när det inte finns någon " "*_get_type()-funktion för C-uppräkningen, men var försiktig så att du inte vara behöver inkludera ett extra huvud för den " "funktionen. Du bör också rapportera ett fel mot C-API:t, för alla uppräkningar ska registreras som GType-typer." #. (itstool) path: listitem/para #: C/index-in.docbook:10955 #, fuzzy msgid "" "If you specify NO_GTYPE, don't use that enum as the type in _WRAP_PROPERTY. It would cause a runtime error, when the " "generated property_*() method is called." msgstr "" "Om du anger NO_GTYPE, använd inte den uppräkningen som typen i _WRAP_PROPERTY. Det skulle orsaka ett körtidsfel, när den " "genererade property_*()-metoden anropas." #. (itstool) path: listitem/para #: C/index-in.docbook:10958 msgid "For example, from icontheme.hg:" msgstr "Till exempel, från icontheme.hg:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:10959 #, no-wrap msgid "" "\n" "_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n" " " msgstr "" "\n" "_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n" " " #. (itstool) path: varlistentry/term #: C/index-in.docbook:10965 msgid "gtype_func <function_name>" msgstr "gtype_func <funktionsnamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10967 #, fuzzy msgid "" "Specifies the name of the *_get_type() function for the C enum. Use this parameter if gmmproc can't " "deduce the correct function name from the name of the C enum type." msgstr "" "Anger namnet på *_get_type()-funktionen för C-uppräkningen. Använd denna parameter om gmmproc inte kan " "räkna ut det rätta funktionsnamnet från namnet för C-uppräkningstypen." #. (itstool) path: listitem/para #: C/index-in.docbook:10970 msgid "For example, from dbusproxy.hg in glibmm:" msgstr "Till exempel, från dbusproxy.hg i glibmm:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:10971 #, no-wrap msgid "" "\n" "_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n" " " msgstr "" "\n" "_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n" " " #. (itstool) path: varlistentry/term #: C/index-in.docbook:10977 msgid "CONV_TO_INT" msgstr "CONV_TO_INT" #. (itstool) path: listitem/para #: C/index-in.docbook:10979 #, fuzzy msgid "" "\"Convertible to int.\" Generates a plain enum (not an enum class) within a class. Such an enum is scoped like an enum class, but unlike an " "enum class, it can be implicitly converted to int." msgstr "" "\"Convertible to int.\" Genererar en vanlig uppräkning (inte en uppräkningsklass) i en klass. En sådan uppräckning har räckvidd som en " "uppräkningsklass, men till skillnad från en uppräkningsklass kan den implicit konverteras till int." #. (itstool) path: listitem/para #: C/index-in.docbook:10982 msgid "For example, from dialog.hg:" msgstr "Till exempel, från dialog.hg:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:10983 #, no-wrap msgid "" "\n" "_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n" " " msgstr "" "\n" "_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n" " " #. (itstool) path: varlistentry/term #: C/index-in.docbook:10989 #, fuzzy msgid "s#<from>#<to>#" msgstr "s#<från>#<till>#" #. (itstool) path: listitem/para #: C/index-in.docbook:10991 #, fuzzy msgid "Substitutes (part of) the name of one or more enum constants. You can add any number of substitutions." msgstr "Ersätter (en del av) namnet på en eller flera uppräkningskonstanter. Du kan lägga till valfritt antal ersättningar." #. (itstool) path: listitem/para #: C/index-in.docbook:10993 msgid "For example, from iochannel.hg in glibmm:" msgstr "Till exempel, från iochannel.hg i glibmm:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:10994 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n" " " msgstr "" "\n" "_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n" " " #. (itstool) path: section/title #: C/index-in.docbook:11018 msgid "_WRAP_ENUM_DOCS_ONLY" msgstr "_WRAP_ENUM_DOCS_ONLY" #. (itstool) path: section/para #: C/index-in.docbook:11020 #, fuzzy msgid "" "This macro just generates a Doxygen documentation block for the enum. This is useful for enums that can't be wrapped with " "_WRAP_ENUM() because they are complexly defined (maybe using C macros) but including the generated enum documentation is " "still desired. It is used with the same syntax as _WRAP_ENUM() and also processes the same options (though NO_GTYPE, " "gtype_func <function_name> and CONV_TO_INT are ignored because they make no difference when just generating the enum's documentation)." msgstr "" "Detta makro genererar bara ett Doxygen-dokumentationsblock för uppräkningen. Detta är användbart för uppräkningar som inte kan omslutas med " "_WRAP_ENUM() för att de är komplext definierade (kanske med C-makron) men att det fortfarande är önskvärt att inkludera " "den genererade uppräkningsdokumentationen. Det används med samma syntax som _WRAP_ENUM() och bearbetar även samma " "alternativ (även om NO_GTYPE, gtype_func <funktionsnamn> och CONV_TO_INT ignoreras för att de inte gör någon skillnad då bara " "uppräkningens dokumentation genereras)." #. (itstool) path: section/title #: C/index-in.docbook:11032 msgid "_WRAP_GERROR" msgstr "_WRAP_GERROR" #. (itstool) path: section/para #: C/index-in.docbook:11034 #, fuzzy msgid "" "This macro generates a C++ exception class, derived from Glib::Error, with a Code enum and a " "code() method. You must specify the desired C++ name, the name of the corresponding C enum, and the prefix for the C " "enum values." msgstr "" "Detta makro genererar en C++-undantagsklass, härledd från Glib::Error med en Code-uppräkning och en metod " "code(). Du måste ange det önskade C++-namnet, namnet på den motsvarande C-uppräkningen, och prefixet för C-" "uppräkningsvärdena." #. (itstool) path: section/para #: C/index-in.docbook:11037 #, fuzzy msgid "This exception can then be thrown by methods which are generated from _WRAP_METHOD() with the errthrow option." msgstr "Detta undantag kan sedan kastas av metoder som genereras från _WRAP_METHOD() med errthrow-alternativet." #. (itstool) path: section/para #: C/index-in.docbook:11039 msgid "For instance, from pixbuf.hg:" msgstr "Till exempel, från pixbuf.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11040 #, no-wrap msgid "" "\n" "_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n" msgstr "" "\n" "_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n" #. (itstool) path: section/para #: C/index-in.docbook:11043 #, fuzzy msgid "" "_WRAP_GERROR() accepts the same optional arguments as _WRAP_ENUM() (though CONV_TO_INT is ignored because all exception class enums are plain " "enums within a class)." msgstr "" "_WRAP_GERROR() accepterar samma valfria argument som _WRAP_ENUM() (även om CONV_TO_INT ignoreras för att alla undantagsklassuppräkningar är " "vanliga uppräkningar i en klass)." #. (itstool) path: section/title #: C/index-in.docbook:11049 msgid "_MEMBER_GET / _MEMBER_SET" msgstr "_MEMBER_GET / _MEMBER_SET" #. (itstool) path: section/para #: C/index-in.docbook:11050 #, fuzzy msgid "" "Use these macros if you're wrapping a simple struct or boxed type that provides direct access to its data members, to create getters and " "setters for the data members." msgstr "" "Använd dessa makron om du omsluter en ensam struct eller boxad typ som tillhandahåller direkt åtkomst till sina datamedlemmar, för att skapa " "get- och set-funktioner för datamedlemmarna." #. (itstool) path: section/para #: C/index-in.docbook:11054 msgid "_MEMBER_GET(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_GET(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11055 msgid "_MEMBER_SET(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_SET(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11056 msgid "For example, in rectangle.hg:" msgstr "Till exempel, i rectangle.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11059 #, no-wrap msgid "_MEMBER_GET(x, x, int, int)" msgstr "_MEMBER_GET(x, x, int, int)" #. (itstool) path: section/title #: C/index-in.docbook:11063 msgid "_MEMBER_GET_PTR / _MEMBER_SET_PTR" msgstr "_MEMBER_GET_PTR / _MEMBER_SET_PTR" #. (itstool) path: section/para #: C/index-in.docbook:11064 #, fuzzy msgid "" "Use these macros to automatically provide getters and setters for a data member that is a pointer type. For the getter function, it will create " "two methods, one const and one non-const." msgstr "" "Använd dessa makron för att automatiskt tillhandahålla get- och set-funktioner för en datamedlem som är en pekartyp. För get-funktionen kommer " "det skapa två metoder, en const och en icke-const." #. (itstool) path: section/para #: C/index-in.docbook:11069 msgid "_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_GET_PTR(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11070 msgid "_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_SET_PTR(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11071 msgid "For example, for Pango::Analysis in item.hg:" msgstr "Till exempel, för Pango::Analysis i item.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11073 #, no-wrap msgid "" "\n" "// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n" "// It's just a comment. It's difficult to find a real-world example.\n" msgstr "" "\n" "// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n" "// Det är bara en kommentar. Det är svårt att hitta ett exempel i verkligheten.\n" #. (itstool) path: section/title #: C/index-in.docbook:11080 msgid "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT" msgstr "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT" #. (itstool) path: section/para #: C/index-in.docbook:11081 #, fuzzy msgid "" "Use these macros to provide getters and setters for a data member that is a GObject type that must be referenced before " "being returned." msgstr "" "Använd dessa makron för att tillhandahålla get- och set-funktioner för en datamedlem som är en GObject-typ som måste " "refereras innan den returneras." #. (itstool) path: section/para #: C/index-in.docbook:11086 msgid "_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_GET_GOBJECT(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11087 msgid "_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_SET_GOBJECT(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11088 msgid "For example, in Pangomm, layoutline.hg:" msgstr "Till exempel, i Pangomm, layoutline.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11089 #, no-wrap msgid "" "\n" "_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n" msgstr "" "\n" "_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n" #. (itstool) path: section/title #: C/index-in.docbook:11097 msgid "gmmproc Parameter Processing" msgstr "Parameterbearbetning med gmmproc" #. (itstool) path: section/para #: C/index-in.docbook:11098 #, fuzzy msgid "" "gmmproc allows processing the parameters in a method signature for the macros that process method signatures (like " "_WRAP_METHOD(), _WRAP_CTOR() and _WRAP_CREATE()) in a variety of ways:" msgstr "" "gmmproc tillåter bearbetning av parametrarna i en metodsignatur för makrona som bearbetar metodsignaturer (som " "_WRAP_METHOD(), _WRAP_CTOR() och _WRAP_CREATE()) på ett antal sätt:" #. (itstool) path: section/title #: C/index-in.docbook:11105 msgid "Parameter Reordering" msgstr "Ändra ordning på parametrar" #. (itstool) path: para/programlisting #: C/index-in.docbook:11113 #, fuzzy, no-wrap msgid "" "\n" "void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n" " GdkEventMask events);\n" msgstr "" "\n" "void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n" " GdkEventMask events);\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11120 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n" " const Glib::RefPtr<const Gdk::Device>& device{device}),\n" " gtk_widget_set_device_events)\n" msgstr "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n" " const Glib::RefPtr<const Gdk::Device>& device{device}),\n" " gtk_widget_set_device_events)\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11130 #, no-wrap msgid "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{.},\n" " const Glib::RefPtr<const Gdk::Device>& device{.}),\n" " gtk_widget_set_device_events)\n" msgstr "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{.},\n" " const Glib::RefPtr<const Gdk::Device>& device{.}),\n" " gtk_widget_set_device_events)\n" #. (itstool) path: section/para #: C/index-in.docbook:11107 #, fuzzy msgid "" "For all the macros that process method signatures, it is possible to specify a different order for the C++ parameters than the existing order " "in the C function, virtual function or signal. For example, say that the following C function were being wrapped as a C++ method for the " "Gtk::Widget class: <_:programlisting-1/> However, changing the order of the C++ method's two parameters is necessary. " "Something like the following would wrap the function as a C++ method with a different order for the two parameters: <_:programlisting-2/> The " "{c_param_name} following the method parameter names tells gmmproc to map the C++ parameter to the " "specified C parameter within the {}. Since the C++ parameter names correspond to the C ones, the above could be re-written " "as: <_:programlisting-3/>" msgstr "" "För alla makron som bearbetar metodsignaturer är det möjligt att ange en annan ordning för C++-parametrarna än den befintliga ordningen i C-" "funktionen, virtuella funktionen eller signalen. Säg exempelvis att följande C-funktion omslöts som en C++-metod för Gtk::Widget-klassen: <_:programlisting-1/> Att ändra ordningen på C++-metodens parametrar är dock nödvändigt. Något liknande det följande skulle " "omsluta funktionen som en C++-metod med en annan ordning för de två parametrarna: <_:programlisting-2/> {c_param_name} som " "följer metodparameternamnen säger till gmmproc att mappa C++-parametern till den angivna C-parametern i {}. Eftersom C++-parameternamn motsvarar de i C kommer det ovan skrivas om som: <_:programlisting-3/>" #. (itstool) path: warning/para #: C/index-in.docbook:11137 #, fuzzy msgid "" "Please note that when reordering parameters for a _WRAP_SIGNAL() method signature, the C parameter names would always be " "p0, p1, etc. because the generate_extra_defs utility uses those parameter names no " "matter what the C API's parameter names may be. It's how the utility is written presently." msgstr "" "Observera att vid ändring av ordning för parametrar för en _WRAP_SIGNAL()-metodsignatur skulle C-parameternamnen alltid " "vara p0, p1 och så vidare för verktyget generate_extra_defs använder dessa " "parameternamn oavsett vad C-API:ts parameternamn är. Det är hur verktyget är skrivet för tillfället." #. (itstool) path: section/title #: C/index-in.docbook:11149 msgid "Optional Parameter Processing" msgstr "Valfri parameterbearbetning" #. (itstool) path: para/programlisting #: C/index-in.docbook:11159 #, no-wrap msgid "" "\n" "GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n" msgstr "" "\n" "GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11168 #, no-wrap msgid "" "\n" "_WRAP_CTOR(ToolButton(Widget& icon_widget, const Glib::ustring& label{?}),\n" " gtk_tool_button_new)\n" msgstr "" "\n" "_WRAP_CTOR(ToolButton(Widget& icon_widget, const Glib::ustring& label{?}),\n" " gtk_tool_button_new)\n" #. (itstool) path: section/para #: C/index-in.docbook:11151 #, fuzzy msgid "" "For all macros processing method signatures except _WRAP_SIGNAL() and _WRAP_VFUNC() it is also " "possible to make the parameters optional so that extra C++ methods are generated without the specified optional parameter. For example, say " "that the following *_new() function were being wrapped as a constructor in the Gtk::ToolButton " "class: <_:programlisting-1/> Also, say that the C API allowed NULL for the function's label parameter so that that " "parameter is optional. It would be possible to have gmmproc generate the original constructor (with all the parameters) " "along with an additional constructor without that optional parameter by appending a {?} to the parameter name like so: <_:" "programlisting-2/> In this case, two constructors would be generated: One with the optional parameter and one without it." msgstr "" "För alla makron som bearbetar metodsignaturer förutom _WRAP_SIGNAL() och _WRAP_VFUNC() är det också " "möjligt att göra parametrarna valfria så att extra C++-metoder genereras utan den angivna valfria parametern. Om vi exempelvis säger att " "följande *_new()-funktion omslöts som en konstruktor i klassen Gtk::ToolButton: <_:programlisting-1/" "> Säg också att C-API:t tillät NULL för funktionens parameter label så att den parametern är valfri. Det skulle vara " "möjligt att få gmmproc att generera den ursprungliga konstruktorn (med alla parametrar) tillsammans med ytterligare en " "konstruktor utan den valfria parametern genom att lägga till ett {?} till parameternamnet så här: <_:programlisting-2/> I " "detta fall skulle två konstruktorer genereras: En med den valfria parametern och en utan den." #. (itstool) path: section/title #: C/index-in.docbook:11178 #, fuzzy msgid "Output Parameter Processing" msgstr "Parameterbearbetning av utdata" #. (itstool) path: para/programlisting #: C/index-in.docbook:11189 #, no-wrap msgid "" "\n" "GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n" msgstr "" "\n" "GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11195 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_METHOD(void get_request_mode(SizeRequestMode& mode{OUT}) const,\n" " gtk_widget_get_request_mode)\n" msgstr "" "\n" "_WRAP_METHOD(void get_request_mode(SizeRequestMode& mode{OUT}) const,\n" " gtk_widget_get_request_mode)\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11204 #, no-wrap msgid "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n" msgstr "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11208 #, no-wrap msgid "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = ($1)($4)')\n" msgstr "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = ($1)($4)')\n" #. (itstool) path: section/para #: C/index-in.docbook:11180 #, fuzzy msgid "" "With _WRAP_METHOD() it is also possible for the return of the wrapped C function (if it has one) to be placed in an output " "parameter of the C++ method instead of having the C++ method also return a value like the C function does. To do that, simply include the " "output parameter in the C++ method parameter list appending a {OUT} to the output parameter name. For example, if " "gtk_widget_get_request_mode() is declared as the following: <_:programlisting-1/> And having the C++ method set an output " "parameter is desired instead of returning a SizeRequestMode, something like the following could be used: <_:programlisting-2/> The " "{OUT} appended to the name of the mode output parameter tells gmmproc to place the " "return of the C function in that output parameter. In this case, however, a necessary initialization macro like the following would also have " "to be specified: <_:programlisting-3/> Which could also be written as: <_:programlisting-4/>" msgstr "" "Med _WRAP_METHOD() är det också möjligt för returvärdet av den omslutna C-funktionen (om den har något) att placeras i en " "utdataparameter för C++-metoden i stället för att även C++-metoden också ska returnera ett värde som C-funktionen gör. För att göra det " "inkluderar du helt enkelt utdataparametern i C++-metodens parameterlista och lägger till ett {OUT} till utdataparameterns " "namn. Om exempelvis gtk_widget_get_request_mode() deklareras enligt följande: <_:programlisting-1/> och det är önskvärt " "att låta C++-metoden ställa in en utdataparameter i stället för att returnera ett SizeRequestMode, så kan något i stil med " "följande användas: <_:programlisting-2/> {OUT} som läggs till namnet på utdataparametern mode säger " "till gmmproc att placera C-funktionens returvärde i den utdataparametern. I detta fall kommer dock ett nödvändigt " "initieringsmakro som det följande också behöva anges: <_:programlisting-3/> Vilket också skulle kunna skrivas som: <_:programlisting-4/>" #. (itstool) path: para/programlisting #: C/index-in.docbook:11218 #, no-wrap msgid "" "\n" "GInputStream* gdk_clipboard_read_finish(GdkClipboard* clipboard,\n" " GAsyncResult* result, const char** out_mime_type, GError** error)\n" msgstr "" "\n" "GInputStream* gdk_clipboard_read_finish(GdkClipboard* clipboard,\n" " GAsyncResult* result, const char** out_mime_type, GError** error)\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11225 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_METHOD(Glib::RefPtr<Gio::InputStream> read_finish(\n" " const Glib::RefPtr<Gio::AsyncResult>& result,\n" " Glib::ustring& out_mime_type{>>}), gdk_clipboard_read_finish, errthrow)\n" msgstr "" "\n" "_WRAP_METHOD(Glib::RefPtr<Gio::InputStream> read_finish(\n" " const Glib::RefPtr<Gio::AsyncResult>& result,\n" " Glib::ustring& out_mime_type{>>}), gdk_clipboard_read_finish, errthrow)\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11240 #, no-wrap msgid "" "\n" "_INITIALIZATION(`Glib::ustring&',`const char*',`$3 = Glib::convert_const_gchar_ptr_to_ustring($4)')\n" msgstr "" "\n" "_INITIALIZATION(`Glib::ustring&',`const char*',`$3 = Glib::convert_const_gchar_ptr_to_ustring($4)')\n" #. (itstool) path: section/para #: C/index-in.docbook:11212 #, fuzzy msgid "" "_WRAP_METHOD() also supports setting C++ output parameters from C output parameters if the C function being wrapped has " "any. Suppose, for example, that we want to wrap the following C function that returns a value in its C output parameter " "out_mime_type: <_:programlisting-1/> To have gmmproc place the value returned in the C++ " "out_mime_type output parameter, something like the following _WRAP_METHOD() macro could be used: <_:" "programlisting-2/> The {>>} following the out_mime_type parameter name indicates that the C++ " "output parameter should be set from the value returned in the C parameter from the C function. gmmproc will generate a " "declaration of a temporary variable in which to store the value of the C output parameter and a statement that sets the C++ output parameter " "from the temporary variable. In this case it may be necessary to have an _INITIALIZATION() describing how to set a " "Glib::ustring& from a const char** such as the following: <_:programlisting-3/>" msgstr "" "_WRAP_METHOD() stöder också att sätta C++-utdataparametrar från C- utdataparametrar om den omslutna C-funktionen har " "några. Anta till exempel att vi vill omsluta följande C-funktion som returnerar ett värde i sin C-utdataparameter out_mime_type: <_:programlisting-1/> För att gmmproc ska placera det returnerade värdet i C++-utdataparametern " "out_mime_type ska något i stil med följande _WRAP_METHOD()-makro användas: <_:programlisting-2/> " "Den {>>} som följer parameternamnet out_mime_type indikerar att C++-utdataparametern ska " "ställas in från värdet som returneras i C-parametern från C-funktionen. gmmproc kommer att generera en deklaration av en " "temporär variabel i vilken värdet av C-utdataparametern och en sats som sätter C++-utdataparametern från temporärvariabeln. I detta fall kan " "det vara nödvändigt att ha en _INITIALIZATION() som beskriver hur en Glib::ustring& ska sättas " "från en const char** som i det följande: <_:programlisting-3/>" #. (itstool) path: section/title #: C/index-in.docbook:11247 #, fuzzy msgid "String Parameter Processing" msgstr "Parameterbearbetning av strängar" #. (itstool) path: section/para #: C/index-in.docbook:11249 #, fuzzy msgid "" "A string-valued input parameter in a C++ method is usually a const Glib::ustring& or a const std::string&. In " "C code it's a const gchar*. When an empty string is converted to const gchar*, it can be converted either to " "nullptr or to a pointer to an empty string (with c_str()). Some parameters in some C functions " "accept a nullptr, and interpret it in a special way. Other parameters must not be nullptr." msgstr "" "En strängvärd indataparameter i en C++-metod är vanligen en const Glib::ustring& eller en const std::string&. " "I C-kod är det en const gchar*. När en tom sträng konverteras till const gchar* kan den konverteras antingen till " "nullptr eller till en pekare till en tom sträng (med c_str()). Några parametrar i vissa C-" "funktioner accepterar en nullptr och tolkar den på ett speciellt sätt. Andra parametrar får inte vara nullptr." #. (itstool) path: listitem/para #: C/index-in.docbook:11262 #, fuzzy msgid "for mandatory parameters (with or without default values): empty string to empty string," msgstr "för obligatoriska parametrar (med eller utan standardvärden): tom sträng till tom sträng," #. (itstool) path: listitem/para #: C/index-in.docbook:11264 #, fuzzy msgid "for optional parameters (with appended {?}): empty string to nullptr." msgstr "för valfria parametrar (med tillagd {?}): tom sträng till nullptr." #. (itstool) path: section/para #: C/index-in.docbook:11258 #, fuzzy msgid "" "The default conversion in _WRAP_METHOD() and similar macros is <_:itemizedlist-1/> If the default conversion is not the " "best conversion, append {NULL} to a mandatory parameter or {?!NULL} to an optional parameter (!" "NULL = not NULL). If you append both a C parameter name and NULL, separate them with a space: " "{c_param_name NULL}." msgstr "" "Standardkonverteringen i _WRAP_METHOD() och liknande makron är <_:itemizedlist-1/> Om standardkonverteringen inte är den " "bästa konverteringen lägger du till {NULL} till en obligatorisk parameter eller {?!NULL} till en valfri " "parameter (!NULL = not NULL). Om du lägger till både ett C-parameternamn och NULL " "separerar du dem med ett blanksteg: {c_param_name NULL}." #. (itstool) path: section/title #: C/index-in.docbook:11278 msgid "Basic Types" msgstr "Grundläggande typer" #. (itstool) path: section/para #: C/index-in.docbook:11279 msgid "" "Some of the basic types that are used in C APIs have better alternatives in C++. For example, there's no need for a gboolean type " "since C++ has bool. The following list shows some commonly-used types in C APIs and what you might convert them to in a C++ " "wrapper library." msgstr "" "Vissa av de grundläggande typerna som används i C-API:er har bättre alternativ i C++. Exempelvis finns inget behov av en gboolean-" "typ eftersom C++ har bool. Följande lista visar några vanligt använda typer i C-API:er och vad du kanske konverterar dem till i " "ett C++-omslagsbibliotek." #. (itstool) path: segmentedlist/segtitle #: C/index-in.docbook:11286 msgid "C type" msgstr "C-typ" #. (itstool) path: segmentedlist/segtitle #: C/index-in.docbook:11287 msgid "C++ type" msgstr "C++-typ" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11288 msgid "gboolean" msgstr "gboolean" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11288 msgid "bool" msgstr "bool" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11289 msgid "gint" msgstr "gint" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11289 msgid "int" msgstr "int" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11290 msgid "guint" msgstr "guint" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11291 msgid "gdouble" msgstr "gdouble" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11291 msgid "double" msgstr "double" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11292 msgid "gunichar" msgstr "gunichar" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11293 msgid "gchar*" msgstr "gchar*" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11293 msgid "Glib::ustring (or std::string for filenames)" msgstr "Glib::ustring (eller std::string för filnamn)" #. (itstool) path: section/title #: C/index-in.docbook:11299 msgid "Hand-coded source files" msgstr "Handkodade källkodsfiler" #. (itstool) path: section/para #: C/index-in.docbook:11301 #, fuzzy msgid "" "You might want to include additional source files that will not be generated by gmmproc from .hg and " ".ccg files. You can simply place these in your libsomething/libsomethingmm directory and mention them " "in the meson.build in the extra_h_files and extra_cc_files variables." msgstr "" "Du kan vilja inkludera ytterligare källkodsfiler som inte kommer genereras av gmmproc från .hg- och " ".ccg-filer. Du kan helt enkelt placera dessa i din katalog libsomething/libsomethingmm och nämna dem " "i meson.build i variablerna extra_h_files och extra_cc_files." #. (itstool) path: section/title #: C/index-in.docbook:11311 msgid "Initialization" msgstr "Initiering" #. (itstool) path: section/para #: C/index-in.docbook:11313 #, fuzzy msgid "" "Your library must be initialized before it can be used, to register the new types that it makes available. Also, the C library that you are " "wrapping might have its own initialization function that you should call. You can do this in an init() function that you " "can place in hand-coded init.h and init.cc files. This function should initialize your dependencies " "(such as the C function, and gtkmm) and call your generated wrap_init() function. For instance:" msgstr "" "Ditt bibliotek måste initieras innan det kan användas för att registrera de nya typer som det gör tillgängligt. C-biblioteket som du omsluter " "kan också ha sin egen initieringsfunktion som du ska anropa. Du kan göra detta i en init()-funktion som du kan placera i " "handkodade init.h- och init.cc-filer. Denna funktion ska initiera dina beroenden (som C-funktionen " "och gtkmm) och anropa din genererade wrap_init()-funktion. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11321 #, fuzzy, no-wrap msgid "" "\n" "void init()\n" "{\n" " Gtk::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n" " wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n" "}\n" msgstr "" "\n" "void init()\n" "{\n" " Gtk::init_gtkmm_internals(); //Konfigurerar g type-systemet och Glib::wrap()-tabellen.\n" " wrap_init(); //Säger till Glib::wrap()-tabellen om libsomethingmm-klasserna.\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:11328 #, fuzzy msgid "" "The implementation of the wrap_init() method in wrap_init.cc is generated by " "generate_wrap_init.pl, but the declaration in wrap_init.h is hand-coded, so you will need to adjust " "wrap_init.h so that the wrap_init() function appears in the correct C++ namespace." msgstr "" "Implementationen av wrap_init()-metoden i wrap_init.cc genereras av generate_wrap_init.pl, men deklarationen i wrap_init.h är handkodad, så du kommer behöva justera wrap_init.h så " "att wrap_init()-funktion dyker upp i rätt C++-namnrymd." #. (itstool) path: section/title #: C/index-in.docbook:11337 msgid "Problems in the C API." msgstr "Problem i C-API:t." #. (itstool) path: section/para #: C/index-in.docbook:11339 #, fuzzy msgid "" "You are likely to encounter some problems in the library that you are wrapping, particularly if it is a new project. Here are some common " "problems, with solutions." msgstr "" "Du kommer troligen stöta på några problem i biblioteket som du omsluter, särskilt om det är ett nytt projekt. Här är några vanliga problem, med " "lösning." #. (itstool) path: section/title #: C/index-in.docbook:11341 #, fuzzy msgid "Unable to predeclare structs" msgstr "Kan inte fördeklarera struct" #. (itstool) path: section/para #: C/index-in.docbook:11343 #, fuzzy msgid "By convention, structs are declared in glib/GTK-style headers like so:" msgstr "Enligt sedvänja deklareras structar i huvuden av glib/GTK-stil så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11344 #, fuzzy, no-wrap msgid "" "\n" "typedef struct _ExampleWidget ExampleWidget;\n" "\n" "struct _ExampleWidget\n" "{\n" " ...\n" "};\n" msgstr "" "\n" "typedef struct _ExampleWidget ExampleWidget;\n" "\n" "struct _ExampleWidget\n" "{\n" " ...\n" "};\n" #. (itstool) path: section/para #: C/index-in.docbook:11352 #, fuzzy msgid "" "The extra typedef allows the struct to be used in a header without including its full definition, simply by predeclaring it, by repeating that " "typedef. This means that you don't have to include the C library's header in your C++ header, thus keeping it out of your public API. " "gmmproc assumes that this technique was used, so you will see compiler errors if that is not the case." msgstr "" "Denna extra typedef låter structen användas i ett huvud utan att inkludera dess fullständiga definition genom att helt enkelt fördeklarera den, " "genom att repetera denna typedef. Detta betyder att du inte behöver inkludera C-bibliotekets header i din C++-header, och därmed hålla den " "utanför ditt publika API. gmmproc antar att denna teknik användes, så du kommer se kompileringsfel om så inte är fallet." #. (itstool) path: para/programlisting #: C/index-in.docbook:11359 #, no-wrap msgid "" "\n" "example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n" "../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n" "make[4]: *** [example-widget.lo] Error 1\n" msgstr "" "\n" "example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n" "../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n" "make[4]: *** [example-widget.lo] Error 1\n" #. (itstool) path: para/programlisting #: C/index-in.docbook:11365 #, no-wrap msgid "" "\n" "example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n" "../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct _ExampleWidget ExampleWidget'\n" msgstr "" "\n" "example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n" "../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct _ExampleWidget ExampleWidget'\n" #. (itstool) path: section/para #: C/index-in.docbook:11357 msgid "This compiler error might look like this: <_:programlisting-1/> or this: <_:programlisting-2/>" msgstr "Detta kompileringsfel kan se ut så här: <_:programlisting-1/> eller så här: <_:programlisting-2/>" #. (itstool) path: section/para #: C/index-in.docbook:11370 #, fuzzy msgid "This is easy to correct in the C library, so do send a patch to the relevant maintainer." msgstr "Detta är lätt att rätta till i C-biblioteket, så skicka en programfix till rätt utvecklare." #. (itstool) path: section/title #: C/index-in.docbook:11374 msgid "Lack of properties" msgstr "Avsaknad av egenskaper" #. (itstool) path: section/para #: C/index-in.docbook:11376 #, fuzzy msgid "" "By convention, glib/GTK-style objects have *_new() functions, such as example_widget_new() that do " "nothing more than call g_object_new() and return the result. The input parameters are supplied to " "g_object_new() along with the names of the properties for which they are values. For instance," msgstr "" "Enligt konvention har objekt av glib/GTK-stil *_new()-funktioner, som example_widget_new() som inte " "gör något mera än att anropa g_object_new() och returnera resultatet. Indataparametrarna tillhandahålls till " "g_object_new() tillsammans med namnen på egenskaperna för vilka de är värden. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:11382 #, fuzzy, no-wrap msgid "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n" "}\n" msgstr "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:11388 #, fuzzy msgid "" "This allows language bindings to implement their own equivalents (such as C++ constructors), without using the *_new() " "function. This is often necessary so that they can actually instantiate a derived GType, to add their own hooks for signal handlers and vfuncs." msgstr "" "Detta låter språkbindningar implementera sina egna motsvarigheter (som C++-konstruktorer), utan att använda *_new()-" "funktionen. Detta är ofta nödvändigt så att de faktiskt kan instansiera en härledd GType, för att lägga till deras egna krokar för " "signalhanterare och vfunc-funktioner." #. (itstool) path: section/para #: C/index-in.docbook:11392 #, fuzzy msgid "" "At the least, the _new() function should not use any private API (functions that are only in a .c file). Even when there " "are no functions, we can sometimes reimplement 2 or 3 lines of code in a _new() function as long as those lines of code " "use API that is available to us." msgstr "" "Åtminstone ska _new()-funktionen inte använda något privat API (funktioner som bara finns i en .c-fil). Även då det inte " "finns några funktioner kan vi ibland implementera om 2 eller 3 rader kod i en _new()-funktion så länge som dessa rader kod " "använder API som är tillgängliga för oss." #. (itstool) path: section/para #: C/index-in.docbook:11397 #, fuzzy msgid "" "Another workaround is to add a *_construct() function that the C++ constructor can call after instantiating its own type. " "For instance," msgstr "" "En annan lösning är att lägga till en *_construct()-funktion som C++-konstruktorn kan anropa efter att ha instansierat sin " "egen typ. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:11400 #, fuzzy, no-wrap msgid "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " ExampleWidget* widget;\n" " widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n" " example_widget_construct(widget, \"something\", something, \"thing\", thing);\n" "}\n" "\n" "void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n" "{\n" " //Do stuff that uses private API:\n" " widget->priv->thing = thing;\n" " do_something(something);\n" "}\n" msgstr "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " ExampleWidget* widget;\n" " widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n" " example_widget_construct(widget, \"something\", something, \"thing\", thing);\n" "}\n" "\n" "void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n" "{\n" " //Gör saker som använder privat API:\n" " widget->priv->thing = thing;\n" " do_something(something);\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:11415 #, fuzzy msgid "" "Adding properties, and ensuring that they interact properly with each other, is relatively difficult to correct in the C library, but it is " "possible, so do file a bug and try to send a patch to the relevant maintainer." msgstr "" "Att lägga till egenskaper och försäkra sig om att de interagerar korrekt med varandra är relativt svårt att rätta till i C-biblioteket, men det " "är möjligt, så skriv en felrapport och försök skicka in en programfix till rätt utvecklare." #. (itstool) path: section/title #: C/index-in.docbook:11423 msgid "Documentation" msgstr "Dokumentation" #. (itstool) path: section/para #: C/index-in.docbook:11425 msgid "" "In general, gtkmm-style projects use Doxygen, which reads specially formatted C++ comments and generates HTML documentation. You may write " "these doxygen comments directly in the header files." msgstr "" "Allmänt använder projekt av gtkmm-stil sig av Doxygen, som läser speciellt formaterade C++-kommentarer och genererar HTML-dokumentation. Du kan " "skriva dessa doxygen-kommentarer direkt i header-filerna." #. (itstool) path: section/title #: C/index-in.docbook:11428 msgid "Reusing C documentation" msgstr "Återanvända C-dokumentation" #. (itstool) path: section/para #: C/index-in.docbook:11430 #, fuzzy msgid "" "You might wish to reuse documentation that exists for the C library that you are wrapping. GTK-style C libraries typically use gtk-doc or gi-" "docgen and therefore have source code comments formatted for gtk-doc or gi-docgen and some extra documentation in .sgml and .xml files. The " "docextract_to_xml.py script, from glibmm's tools/defs_gen directory, can read these files and generate an .xml file that " "gmmproc can use to generate doxygen comments. gmmproc will even try to transform the documentation to " "make it more appropriate for a C++ API." msgstr "" "Du kan vilja återanvända befintlig dokumentation för C-biblioteket som du omsluter. C-bibliotek av GTK-stil använder vanligen gtk-doc eller gi-" "docgen och har därför källkodskommentarer formaterade för gtk-doc eller gi-docgen och viss extra dokumentation i .sgml- och .xml-filer. " "Skriptet docextract_to_xml.py från glibmm:s tools/defs_gen-katalog kan läsa dessa filer och generera en .xml-fil som " "gmmproc kan använda för att generera doxygen-kommentarer. gmmproc kommer till och med försöka " "transformera dokumentationen för att göra den mer lämplig för ett C++-API." #. (itstool) path: section/programlisting #: C/index-in.docbook:11440 #, no-wrap msgid "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ > gtk_docs.xml\n" msgstr "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ > gtk_docs.xml\n" #. (itstool) path: section/para #: C/index-in.docbook:11442 #, fuzzy msgid "" "Because this automatic transformation is not always appropriate, you might want to provide hand-written text for a particular method. You can " "do this by copying the XML node for the function from your something_docs.xml file to the " "something_docs_override.xml file and changing the contents. Alternatively you can write your own documentation in the " ".hg file." msgstr "" "Eftersom denna automatiskt transformering inte alltid är lämplig kan du vilja tillhandahålla handskriven text för en viss metod. Du kan göra " "detta genom att kopiera XML-noden för funktionen från din fil something_docs.xml till filen " "something_docs_override.xml och ändra innehållet. Alternativt kan du skriva din egen dokumentation i .hg-filen." #. (itstool) path: section/title #: C/index-in.docbook:11452 msgid "Documentation build structure" msgstr "Byggstruktur för dokumentation" #. (itstool) path: section/para #: C/index-in.docbook:11454 #, fuzzy msgid "" "If you copied the skeleton source tree in mm-common and substituted the placeholder text, then you will already have " "suitable meson.build and Doxyfile.in files in the doc/reference/ directory. You " "probably need to modify the tag_file_modules variable in meson.build, though. With the mm-" "common build setup, the list of Doxygen input files is not defined in the Doxygen configuration file, but passed along from " "meson/ninja to the standard input of doxygen." msgstr "" "Om du kopierade skelettkällkodsträdet i mm-common och ersatte platshållartexten kommer du troligen redan ha lämpliga " "meson.build- och Doxyfile.in-filer i katalogen doc/reference/. Du behöver dock " "troligen ändra variabeln tag_file_modules i meson.build. Med byggkonfigurationen för mm-" "common är listan över Doxygen-indatafiler inte definierad i Doxygen-konfigurationsfilen, utan skickas från meson/ninja till standard in för doxygen."